1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
| PCAFun <- function(dataset = ExprSet_LOG2Impute ){ require(convert) metadata <- pData(dataset) profile <- exprs(dataset) pca <- prcomp(scale(t(profile), center = T, scale = T)) require(factoextra) eig <- get_eig(pca) explains <- paste0(paste0("PC", seq(2)), "(", paste0(round(eig[1:2, 2], 2), "%"), ")") score <- inner_join(pca$x %>% data.frame() %>% dplyr::select(c(1:2)) %>% rownames_to_column("SampleID"), metadata %>% rownames_to_column("SampleID"), by = "SampleID") %>% mutate(Group=factor(Group, levels = grp)) require(vegan) set.seed(123) if(any(profile < 0)){ res_adonis <- adonis(vegdist(t(profile), method = "manhattan") ~ metadata$SubGroup, permutations = 999) }else{ res_adonis <- adonis(vegdist(t(profile), method = "bray") ~ metadata$SubGroup, permutations = 999) } adn_pvalue <- res_adonis[[1]][["Pr(>F)"]][1] adn_rsquared <- round(res_adonis[[1]][["R2"]][1],3) signi_label <- paste(cut(adn_pvalue,breaks=c(-Inf, 0.001, 0.01, 0.05, Inf), label=c("***", "**", "*", "."))) adn_res_format <- bquote(atop(atop("PERMANOVA",R^2==~.(adn_rsquared)), atop("p-value="~.(adn_pvalue)~.(signi_label), phantom()))) pl <- ggplot(score, aes(x=PC1, y=PC2))+ geom_point(aes(fill=SubGroup), size=3.5, shape=21, stroke = .8, color = "black")+ stat_ellipse(aes(color=SubGroup), level = 0.95, linetype = 1, size = 1.5)+ labs(x=explains[1], y=explains[2])+ scale_color_manual(values = grp.col)+ scale_fill_manual(name = "Condition", values = grp.col)+ annotate("text", x = max(score$PC1) - 8, y = min(score$PC1), label = adn_res_format, size = 6)+ guides(color=F)+ theme_classic()+ theme(axis.title = element_text(size = 10, color = "black", face = "bold"), axis.text = element_text(size = 9, color = "black"), text = element_text(size = 8, color = "black", family = "serif"), strip.text = element_text(size = 9, color = "black", face = "bold"), panel.grid = element_blank(), legend.title = element_text(size = 11, color = "black", family = "serif"), legend.text = element_text(size = 10, color = "black", family = "serif"), legend.position = c(0, 0), legend.justification = c(0, 0), legend.background = element_rect(color = "black", fill = "white", linetype = 2, size = 0.5)) return(pl) }
PCA_LOG2Impute <- PCAFun(dataset = ExprSet_LOG2Impute) PCA_LOG2Impute ggsave("Mass_ProteinsLOG2Impute_PCA.pdf", PCA_LOG2Impute, width = 5, height = 5, dpi = 300)
|