{"id":310,"date":"2022-03-01T20:10:07","date_gmt":"2022-03-01T12:10:07","guid":{"rendered":"https:\/\/linguopeng.top\/?p=310"},"modified":"2022-03-06T23:13:26","modified_gmt":"2022-03-06T15:13:26","slug":"%e4%bb%a3%e8%b0%a2%e5%9b%be","status":"publish","type":"post","link":"https:\/\/linguopeng.top\/?p=310","title":{"rendered":"\u4ee3\u8c22\u56fe"},"content":{"rendered":"\n<pre class=\"wp-block-code\"><code>######################################\u5b89\u88c5\u5305#########################\n#~\/MetaboAnalyst\uff0cMetaboAnalyst\/cq\n# # install.packages('devtools')\n# # options(BioC_mirror=\"https:\/\/mirrors.tuna.tsinghua.edu.cn\/bioconductor\/\")\n# # options(\"repos\" = c(CRAN=\"http:\/\/mirrors.cloud.tencent.com\/CRAN\/\"))\n# # options(download.file.method = 'libcurl')\n# # options(url.method='libcurl')\n# package_list &lt;- c(\"tidyverse\",\"readxl\",\n#                   \"MetaboAnalystR\",\"FELLA\",\n#                   \"ropls\",\"ggrepel\",\n#                   \"ggforce\",\"httr\",\n#                   \"Hmisc\",\"tidytext\",\n#                   \"psych\",\"corrplot\")\n# for(p in package_list){\n#   if(!suppressWarnings(suppressMessages(require(p, character.only = TRUE, quietly = TRUE, warn.conflicts = FALSE)))){\n#     install.packages(p,  warn.conflicts = FALSE)\n#     suppressWarnings(suppressMessages(library(p, character.only = TRUE, quietly = TRUE, warn.conflicts = FALSE)))\n#   }\n# }\n# # library(devtools)\n# # install.packages(\"digest\")\n# # devtools::install_github(\"xia-lab\/MetaboAnalystR\", build = TRUE, build_vignettes = FALSE)\n# # BiocManager::install(\"FELLA\")\n# # BiocManager::install(\"ropls\")\n#######################################################################\nlibrary(readxl)\nlibrary(tidyverse)\nlibrary(MetaboAnalystR)\n# setwd(\"~\/Desktop\/2021b\/article_metirials\/metabolomics\/serum\/\")\n#PreparePDFReport(mSetObj = mSet_neg_serum, usrName = \"wangluyao\")\npos_serum &lt;- read_xlsx(\".\/p_n_2.xlsx\",sheet = 1)\nneg_serum &lt;- read_xlsx(\".\/p_n_2.xlsx\",sheet = 2)\nserum_metadata &lt;- read_xlsx(\".\/metadata.xlsx\")\nneg_serum &lt;- neg_serum %>% select(Name, starts_with(\"s\"), starts_with(\"QC\"))\npos_serum &lt;- pos_serum %>% select(Name, starts_with(\"s\"), starts_with(\"QC\"))\nGroup &lt;- c(\"Group\",serum_metadata$Group)\nserum &lt;- rbind(select(neg_serum, -starts_with(\"QC\")),\n               select(pos_serum, -starts_with(\"QC\"))) %>%  \n  group_by(Name) %>% summarise_all(mean) %>% rbind(Group,.)\n\nGroup &lt;- c(\"Group\",serum_metadata$Group,rep(\"QC\",9))\nneg_serum_QC &lt;- neg_serum %>% group_by(Name) %>% summarise_all(mean) %>% rbind(Group,.)\nGroup &lt;- c(\"Group\",serum_metadata$Group,rep(\"QC\",9))\npos_serum_QC &lt;- pos_serum %>% group_by(Name) %>% summarise_all(mean) %>% rbind(Group,.)\nGroup &lt;- c(\"Group\",serum_metadata$Group,rep(\"QC\",9))\nserum_QC &lt;- rbind(select(neg_serum, starts_with(\"Name\"),starts_with(\"s\"),starts_with(\"QC\")),\n               select(pos_serum, starts_with(\"Name\"),starts_with(\"s\"),starts_with(\"QC\"))) %>%  \n  group_by(Name) %>% summarise_all(mean) %>% rbind(Group,.)\n\nwrite_csv(neg_serum_QC,\"neg_serum_QC.csv\")\nwrite_csv(pos_serum_QC,\"pos_serum_QC.csv\")\nwrite_csv(serum_QC,\"serum_QC.csv\")\n\n\n# Standardization and PCA analysis for ESI- and ESI+ respectively\nmSet_neg_serum &lt;- InitDataObjects(data.type = \"pktable\", anal.type = \"stat\", paired = FALSE)\nmSet_neg_serum &lt;- Read.TextData(mSet_neg_serum, \"neg_serum_QC.csv\", format = \"colu\", lbl.type = \"disc\")\nmSet_neg_serum &lt;- SanityCheckData(mSet_neg_serum)\nmSet_neg_serum &lt;- ReplaceMin(mSet_neg_serum);\nmSet_neg_serum &lt;- SanityCheckData(mSet_neg_serum)\nmSet_neg_serum &lt;- FilterVariable(mSet_neg_serum, \"none\", \"F\", 25)\nmSet_neg_serum &lt;- PreparePrenormData(mSet_neg_serum)\nmSet_neg_serum &lt;- Normalization(mSet_neg_serum, \"MedianNorm\", \"LogNorm\", \"NULL\", ratio=FALSE, ratioNum=20)\nmSet_neg_serum &lt;- PlotNormSummary(mSet_neg_serum, \"norm_neg_serum\", \"png\", 300, width=NA)\nmSet_neg_serum &lt;- PlotSampleNormSummary(mSet_neg_serum, \"snorm_neg_serum\", \"png\", 300, width=NA)\nneg_serum_norm &lt;- mSet_neg_serum$dataSet$norm\nmSet_neg_serum &lt;- PCA.Anal(mSet_neg_serum)\nmSet_neg_serum &lt;- PlotPCA2DScore(mSet_neg_serum, \"pca_neg_serum\", \"png\", 300,\n                                 width=NA, pcx = 1, pcy = 2, reg = 0.95, show = 0, grey.scale = 0)\n\nmSet_pos_serum &lt;- InitDataObjects(data.type = \"pktable\", anal.type = \"stat\", paired = FALSE)\nmSet_pos_serum &lt;- Read.TextData(mSet_pos_serum, \"pos_serum_QC.csv\", format = \"colu\", lbl.type = \"disc\")\nmSet_pos_serum &lt;- SanityCheckData(mSet_pos_serum)\nmSet_pos_serum &lt;- ReplaceMin(mSet_pos_serum);\nmSet_pos_serum &lt;- SanityCheckData(mSet_pos_serum)\nmSet_pos_serum &lt;- FilterVariable(mSet_pos_serum, \"none\", \"F\", 25)\nmSet_pos_serum &lt;- PreparePrenormData(mSet_pos_serum)\nmSet_pos_serum &lt;- Normalization(mSet_pos_serum, \"MedianNorm\", \"LogNorm\", \"NULL\", ratio=FALSE, ratioNum=20)\nmSet_pos_serum &lt;- PlotNormSummary(mSet_pos_serum, \"norm_pos_serum\", \"png\", 300, width=NA)\nmSet_pos_serum &lt;- PlotSampleNormSummary(mSet_pos_serum, \"snorm_pos_serum\", \"png\", 300, width=NA)\npos_serum_norm &lt;- mSet_pos_serum$dataSet$norm\nmSet_pos_serum &lt;- PCA.Anal(mSet_pos_serum)\nmSet_pos_serum &lt;- PlotPCA2DScore(mSet_pos_serum, \"pca_pos_serum\", \"png\", 300,\n                                 width=NA, pcx = 1, pcy = 2, reg = 0.95, show = 0, grey.scale = 0)\n\n# Standardization and differential analysis for concatenated table\nmSet_serum &lt;- InitDataObjects(data.type = \"pktable\", anal.type = \"stat\", paired = FALSE)\nmSet_serum &lt;- Read.TextData(mSet_serum, \"serum_QC.csv\", format = \"colu\", lbl.type = \"disc\")\nmSet_serum &lt;- SanityCheckData(mSet_serum)\nmSet_serum &lt;- ReplaceMin(mSet_serum);\nmSet_serum &lt;- SanityCheckData(mSet_serum)\nmSet_serum &lt;- FilterVariable(mSet_serum, \"none\", \"F\", 25)\nmSet_serum &lt;- PreparePrenormData(mSet_serum)\nmSet_serum &lt;- Normalization(mSet_serum, \"MedianNorm\", \"LogNorm\", \"NULL\", ratio=FALSE, ratioNum=20)\nmSet_serum &lt;- PlotNormSummary(mSet_serum, \"norm_serum\", \"png\", 300, width=NA)\nmSet_serum &lt;- PlotSampleNormSummary(mSet_serum, \"snorm_serum\", \"png\", 300, width=NA)\nmSet_serum &lt;- PCA.Anal(mSet_serum)\nmSet_serum &lt;- PlotPCA2DScore(mSet_serum, \"pca_serum\", \"png\", 300,\n                             width=NA, pcx = 1, pcy = 2, reg = 0.95, show = 0, grey.scale = 0)\n\n# comparisons &lt;- unique(serum_metadata$Group)\n# for(comp in 1:length(comparisons)){\n#   tmp_tab &lt;- serum&#91;,-which(str_detect(serum&#91;1,],comparisons&#91;comp]))]\n#   tmp_grp &lt;- unique(as.character(tmp_tab&#91;1,-1]))\n#   tmp_comp &lt;- paste(tmp_grp&#91;1],tmp_grp&#91;2],sep = \"vs\")\n#   write_csv(tmp_tab,paste(tmp_comp,\"csv\",sep = \".\"))\n# } \n###########mSet_CH,CONvsCCFM161########\n# mSet_CH &lt;- PlotOPLS.Permutation(mSet_CH, \"opls_perm_1_\", \"png\", 72, width=NA)\n# mSet&lt;-PlotCmpdSummary(mSet, \"L-Threonic acid\",\"NA\", 1, \"png\", 72, width=NA)\n#######################CONvsI##################\nCONvsI &lt;- serum&#91;,c(1,5:8,13:16)]\nwrite_csv(CONvsI,\"CONvsI.csv\")\nmSet_CI &lt;- InitDataObjects(data.type = \"pktable\", anal.type = \"stat\", paired = FALSE)\nmSet_CI &lt;- Read.TextData(mSet_CI, \"CONvsI.csv\", format = \"colu\", lbl.type = \"disc\")\nmSet_CI &lt;- SanityCheckData(mSet_CI)\nmSet_CI &lt;- ReplaceMin(mSet_CI)\nmSet_CI &lt;- SanityCheckData(mSet_CI)\nmSet_CI &lt;- FilterVariable(mSet_CI, \"none\", \"F\", 25)\nmSet_CI &lt;- PreparePrenormData(mSet_CI)\nmSet_CI &lt;- Normalization(mSet_CI, \"MedianNorm\", \"LogNorm\", \"NULL\", ratio=FALSE, ratioNum=20)\n\nmSet_CI &lt;- Ttests.Anal(mSet_CI, nonpar = FALSE, paired = FALSE, equal.var = TRUE,\n                       pvalType = \"fdr\", all_results = TRUE, threshp = 0.05)\nmSet_CI &lt;- FC.Anal(mSet_CI, fc.thresh = 2, cmp.type = 0, paired = FALSE)\nmSet_CI &lt;- Volcano.Anal(mSet_CI, paired = FALSE, fcthresh = 2.0, cmpType = 0, \n                        nonpar = FALSE, threshp = 0.05, equal.var = TRUE, pval.type = \"raw\")\nmSet_CI &lt;- PlotVolcano(mSet_CI , \"volcano_CI\", 1, 0, \"png\", 300, width=NA)\n\nmSet_CI &lt;- OPLSR.Anal(mSetObj = mSet_CI, reg = TRUE)\nmSet_CI &lt;- PlotOPLS2DScore(mSet_CI, \"opls_CI\", \"png\", 300, width=NA, 1, 2, 0.95, 0, 0)\n#######################CONvsT##################\nCONvsT &lt;- serum&#91;,c(1,5:8,22:24)]\nwrite_csv(CONvsT,\"CONvsT.csv\")\nmSet_CT &lt;- InitDataObjects(data.type = \"pktable\", anal.type = \"stat\", paired = FALSE)\nmSet_CT &lt;- Read.TextData(mSet_CT, \"CONvsT.csv\", format = \"colu\", lbl.type = \"disc\")\nmSet_CT &lt;- SanityCheckData(mSet_CT)\nmSet_CT &lt;- ReplaceMin(mSet_CT)\nmSet_CT &lt;- SanityCheckData(mSet_CT)\nmSet_CT &lt;- FilterVariable(mSet_CT, \"none\", \"F\", 25)\nmSet_CT &lt;- PreparePrenormData(mSet_CT)\nmSet_CT &lt;- Normalization(mSet_CT, \"MedianNorm\", \"LogNorm\", \"NULL\", ratio=FALSE, ratioNum=20)\n\nmSet_CT &lt;- Ttests.Anal(mSet_CT, nonpar = FALSE, paired = FALSE, equal.var = TRUE,\n                       pvalType = \"fdr\", all_results = TRUE, threshp = 0.05)\nmSet_CT &lt;- FC.Anal(mSet_CT, fc.thresh = 2, cmp.type = 0, paired = FALSE)\nmSet_CT &lt;- Volcano.Anal(mSet_CT, paired = FALSE, fcthresh = 2.0, cmpType = 0, \n                        nonpar = FALSE, threshp = 0.05, equal.var = TRUE, pval.type = \"raw\")\nmSet_CT &lt;- PlotVolcano(mSet_CT , \"volcano_CT\", 1, 0, \"png\", 300, width=NA)\n\nmSet_CT &lt;- OPLSR.Anal(mSetObj = mSet_CT, reg = TRUE)\nmSet_CT &lt;- PlotOPLS2DScore(mSet_CT, \"opls_T\", \"png\", 300, width=NA, 1, 2, 0.95, 0, 0)\n\n\nsig_ci &lt;- as.data.frame(mSet_CI$analSet$volcano$sig.mat)\nsig_ct &lt;- as.data.frame(mSet_CT$analSet$volcano$sig.mat)\n\nvip_ci &lt;- as.data.frame(mSet_CI$analSet$oplsda$vipVn)\nvip_ci &lt;- vip_ci&#91;rownames(sig_ci),]\nsig_ci &lt;- cbind(sig_ci,vip_ci)\n\nvip_ct &lt;- as.data.frame(mSet_CT$analSet$oplsda$vipVn)\nvip_ct &lt;- vip_ct&#91;rownames(sig_ct),]\nsig_ct &lt;- cbind(sig_ct,vip_ct)\n\n# metadata &lt;- read_xlsx(\"~\/Desktop\/2021b\/article_metirials\/pheno_data.xlsx\")\n# metadata$Age &lt;- as.numeric(metadata$Age)\n# metadata$BMI &lt;- as.numeric(metadata$BMI)\n# impute &lt;- function(x,x.impute){\n#   ifelse(is.na(x),x.impute,x)\n# }\n# metadata$Age &lt;- impute(metadata$Age,mean(na.omit(metadata$Age)))\n# metadata$BMI &lt;- impute(metadata$BMI,mean(na.omit(metadata$BMI)))\n# write_csv(x = metadata %>% filter(ID %in% colnames(serum)),file = \"metadata.csv\")\n# \n# mSet_cov &lt;- InitDataObjects(\"pktable\",\"ts\",FALSE)\n# mSet_cov &lt;- SetDesignType(mSet_cov,\"multi\")\n# mSet_cov &lt;- Read.TextDataTs(mSet_cov,\"serum.csv\",\"colts\")\n# mSet_cov &lt;- ReadMetaData(mSet_cov,metafilename = \".\/metadata.csv\")\n# mSet_cov &lt;- SanityCheckData(mSet_cov)\n# mSet_cov &lt;- ReplaceMin(mSet_cov)\n# mSet_cov &lt;- SanityCheckMeta(mSet_cov, 1)\n# mSet_cov &lt;- SetDataTypeOfMeta(mSet_cov)\n# mSet_cov &lt;- SanityCheckData(mSet_cov)\n# mSet_cov &lt;- FilterVariable(mSet_cov, \"none\", \"F\", 25)\n# mSet_cov &lt;- PreparePrenormData(mSet_cov)\n# mSet_cov &lt;- Normalization(mSet_cov, \"SumNorm\", \"LogNorm\", \"NULL\", ratio=FALSE, ratioNum=20)\n# adj.vec &lt;- c(\"Gender\",\"BMI\",\"Age\")\n# mSet_cov &lt;- CovariateScatter.Anal(mSet_cov, \"covariate_plot_0_dpi72.png\", \"png\", 72, \"default\", \"Group\", \"Health\", \"NA\" , 0.05, FALSE)\n# maaslin &lt;- as.data.frame(mSet_cov$analSet$cov$sig.mat)\n\ndiff_ct &lt;- sig_ct %>% rownames_to_column(var = \"Name\") %>% \n  filter(., abs(`log2(FC)`)>1, raw.pval&lt;0.05, vip_ct>1) %>% \n  pull(Name)\ndiff_ci &lt;- sig_ci %>% rownames_to_column(var = \"Name\") %>% \n  filter(., abs(`log2(FC)`)>1, raw.pval&lt;0.05, vip_ci>1) %>% \n  pull(Name)\n\ndiff_cp_data &lt;- serum %>% filter(Name %in% c(\"Group\",unique(c(diff_ct,diff_ci))))\n\n# Enrichment analysis\nlibrary(httr)\ncall &lt;- \"http:\/\/api.xialab.ca\/mapcompounds\"\ntoSend = list(queryList = diff_cp_data$Name, inputType = \"name\")\nquery_results &lt;- httr::POST(call, body = toSend, encode = \"json\")\nquery_results$status_code==200\nquery_results_text &lt;- content(query_results, \"text\", encoding = \"UTF-8\")\nquery_results_json &lt;- rjson::fromJSON(query_results_text,simplify = TRUE)\nquery_results_table &lt;- cbind.data.frame(query_results_json$Query,query_results_json$Match,\n                                        as.character(query_results_json$KEGG)) %>% \n  rename(query=colnames(.)&#91;1],match=colnames(.)&#91;2],kegg=colnames(.)&#91;3])\n\n# diff_cp_data$Name&#91;which(diff_cp_data$Name %in% c(\"2-Methyl-4,6-dinitrophenol\",\"D-(-)-Quinic acid\",\n#                                                  \"Dodecyl sulfate\",\"L-Threonic acid\"))] &lt;-\n#   c(\"4,6-Dinitro-o-cresol\",\"Quinate\",\"Erythromycin estolate\",\"Threonate\")\n\ntmp_query &lt;- query_results_table %>% \n  filter(kegg!=\"NA\",kegg!=\"NULL\")\n# diff_cp_data &lt;- diff_cp_data %>% filter(Name %in% c(\"Group\",\"4,6-Dinitro-o-cresol\",\"Quinate\",\n#                                                     \"Erythromycin estolate\",\"Threonate\",tmp_query$query))\ndiff_cp_data &lt;- diff_cp_data %>% filter(Name %in% c(\"Group\",tmp_query$query))\nwrite_csv(diff_cp_data,file = \"diff_cp_data.csv\")\n\nmSet_en &lt;- InitDataObjects(\"conc\",\"msetqea\",FALSE)\nmSet_en &lt;- Read.TextData(mSet_en,\"diff_cp_data.csv\",\"colu\",\"disc\")\nmSet_en &lt;- SanityCheckData(mSet_en)\nmSet_en &lt;- ReplaceMin(mSet_en)\nmSet_en &lt;- CrossReferencing(mSet_en, \"name\")\nmSet_en &lt;- CreateMappingResultTable(mSet_en)\nmSet_en &lt;- PreparePrenormData(mSet_en)\nmSet_en &lt;- Normalization(mSet_en, \"MedianNorm\", \"LogNorm\", \"NULL\", ratio=FALSE, ratioNum=20)\nmSet_en &lt;- SetMetabolomeFilter(mSet_en, F)\nmSet_en &lt;- SetCurrentMsetLib(mSet_en, \"kegg_pathway\", 2)\nmSet_en &lt;- CalculateGlobalTestScore(mSet_en)\nmSet_en &lt;- PlotQEA.Overview(mSet_en, \"qea_bar\", \"net\", \"png\", 300, width=NA)\nmSet_en &lt;- PlotEnrichDotPlot(mSet_en, \"qea\", \"qea_dot\", \"png\", 300, width=NA)\nmSet_en &lt;- PlotQEA.MetSet(mSet_en, \"Biosynthesis of unsaturated fatty acids\", \"png\", 300, width=NA)\n\nmSet_pw &lt;- InitDataObjects(\"conc\", \"pathora\", FALSE)\ncmpd_vec &lt;- diff_cp_data$Name&#91;-1]\nmSet_pw &lt;- Setup.MapData(mSet_pw, cmpd_vec)\nmSet_pw &lt;- CrossReferencing(mSet_pw, \"name\")\nmSet_pw &lt;- CreateMappingResultTable(mSet_pw)\nmSet_pw &lt;- SetKEGG.PathLib(mSet_pw, \"hsa\", \"current\")\nmSet_pw &lt;- SetMetabolomeFilter(mSet_pw, F)\nmSet_pw &lt;- CalculateOraScore(mSet_pw, \"dgr\", \"hyperg\")\nmSet_pw &lt;- PlotPathSummary(mSet_pw, F, \"pathway\", \"png\", 300, width=NA,NA,NA)\n\n# mSet_nea &lt;- InitDataObjects(\"conc\", \"msetora\", FALSE)\n# mSet_nea &lt;- Setup.MapData(mSet_nea, diff_cp_data$Name&#91;-1])\n# mSet_nea &lt;- CrossReferencing(mSet_nea, \"name\")\n# mSet_nea &lt;- CreateMappingResultTable(mSet_nea)\n# mSet_nea &lt;- SetMetabolomeFilter(mSet_nea, F)\n# mSet_nea &lt;- SetCurrentMsetLib(mSet_nea, \"kegg_pathway\", 2)\n# mSet_nea &lt;- CalculateHyperScore(mSet_nea)\n# mSet_nea &lt;- PlotORA(mSet_nea, \"bar_nea\", \"net\", \"png\", 300, width=NA)\n# mSet_nea &lt;- PlotEnrichDotPlot(mSet_nea, \"ora\", \"dot_nea\", \"png\", 300, width=NA)\n###### FC vs. CT ######\n# diff_ch&#91;which(diff_ch==\"2-Methyl-4,6-dinitrophenol\")] &lt;- \"4,6-Dinitro-o-cresol\"\n# diff_ch&#91;which(diff_ch==\"D-(-)-Quinic acid\")] &lt;- \"Quinate\"\n# diff_ch&#91;which(diff_ch==\"Dodecyl sulfate\")] &lt;- \"Erythromycin estolate\"\n# diff_ch&#91;which(diff_ch==\"L-Threonic acid\")] &lt;- \"Threonate\"\n# mSet_en_ch &lt;- InitDataObjects(\"conc\", \"msetora\", FALSE)\n# mSet_en_ch &lt;- Setup.MapData(mSet_en_ch, diff_ch)\n# mSet_en_ch &lt;- CrossReferencing(mSet_en_ch, \"name\")\n# mSet_en_ch &lt;- CreateMappingResultTable(mSet_en_ch)\n# mSet_en_ch &lt;- SetMetabolomeFilter(mSet_en_ch, F)\n# mSet_en_ch &lt;- SetCurrentMsetLib(mSet_en_ch, \"kegg_pathway\", 2)\n# mSet_en_ch &lt;- CalculateHyperScore(mSet_en_ch)\n# mSet_en_ch &lt;- PlotORA(mSet_en_ch, \"bar_en_ch\", \"net\", \"png\", 300, width=NA)\n# mSet_en_ch &lt;- PlotEnrichDotPlot(mSet_en_ch, \"ora\", \"dot_en_ch\", \"png\", 300, width=NA)\n\n###### FC vs. IBS-C ######\n# diff_ci&#91;which(diff_ci==\"2-Methyl-4,6-dinitrophenol\")] &lt;- \"4,6-Dinitro-o-cresol\"\n# diff_ci&#91;which(diff_ci==\"D-(-)-Quinic acid\")] &lt;- \"Quinate\"\n# diff_ci&#91;which(diff_ci==\"Dodecyl sulfate\")] &lt;- \"Erythromycin estolate\"\n# diff_ci&#91;which(diff_ci==\"L-Threonic acid\")] &lt;- \"Threonate\"\nmSet_en_ci &lt;- InitDataObjects(\"conc\", \"msetora\", FALSE)\nmSet_en_ci &lt;- Setup.MapData(mSet_en_ci, diff_ci)\nmSet_en_ci &lt;- CrossReferencing(mSet_en_ci, \"name\")\nmSet_en_ci &lt;- CreateMappingResultTable(mSet_en_ci)\nmSet_en_ci &lt;- SetMetabolomeFilter(mSet_en_ci, F)\nmSet_en_ci &lt;- SetCurrentMsetLib(mSet_en_ci, \"kegg_pathway\", 2)\nmSet_en_ci &lt;- CalculateHyperScore(mSet_en_ci)\nmSet_en_ci &lt;- PlotORA(mSet_en_ci, \"bar_en_ci\", \"net\", \"png\", 300, width=NA)\nmSet_en_ci &lt;- PlotEnrichDotPlot(mSet_en_ci, \"ora\", \"dot_en_ci\", \"png\", 300, width=NA)\n\n###### IBS-C vs. HC ######\n# diff_ih&#91;which(diff_ih==\"2-Methyl-4,6-dinitrophenol\")] &lt;- \"4,6-Dinitro-o-cresol\"\n# diff_ih&#91;which(diff_ih==\"D-(-)-Quinic acid\")] &lt;- \"Quinate\"\n# diff_ih&#91;which(diff_ih==\"Dodecyl sulfate\")] &lt;- \"Erythromycin estolate\"\n# diff_ih&#91;which(diff_ih==\"L-Threonic acid\")] &lt;- \"Threonate\"\n\nmSet_en_ct &lt;- InitDataObjects(\"conc\", \"msetora\", FALSE)\nmSet_en_ct &lt;- Setup.MapData(mSet_en_ct, diff_ct)\nmSet_en_ct &lt;- CrossReferencing(mSet_en_ct, \"name\")\nmSet_en_ct &lt;- CreateMappingResultTable(mSet_en_ct)\nmSet_en_ct &lt;- SetMetabolomeFilter(mSet_en_ct, F)\nmSet_en_ct &lt;- SetCurrentMsetLib(mSet_en_ct, \"kegg_pathway\", 2)\nmSet_en_ct &lt;- CalculateHyperScore(mSet_en_ct)\nmSet_en_ct &lt;- PlotORA(mSet_en_ct, \"bar_en_ct\", \"net\", \"png\", 300, width=NA)\nmSet_en_ct &lt;- PlotEnrictDotPlot(mSet_en_ct, \"ora\", \"dot_en_ct\", \"png\", 300, width=NA)\n\n### volcano plot visulization ###\nlibrary(ggrepel)\nlibrary(ggforce)\nlibrary(Hmisc)\n\nvolcano_ct &lt;- cbind(mSet_CT$analSet$volcano$fc.all,mSet_CT$analSet$volcano$fc.log,\n                    mSet_CT$analSet$volcano$p.log,mSet_CT$analSet$oplsda$vipVn) %>% \n  as.data.frame() %>% \n  rownames_to_column(\"name\") %>% \n  rename(fc=V1,log_fc=V2,log_p=V3,vip=V4) %>% \n  mutate(cp_tp=if_else(\n    log_p &lt; 1.30103,\"NoDiff\",if_else(\n      abs(log_fc) &lt; 1,\"NoDiff\",\n      if_else(log_fc >=1,\"Upward\",\"Downward\"))),\n    comparison=\"Control vs. T\")\nvol_num_ct &lt;- volcano_ct %>% group_by(cp_tp) %>% summarise(count=n())\n\nvolcano_ci &lt;- cbind(mSet_CI$analSet$volcano$fc.all,mSet_CI$analSet$volcano$fc.log,\n                    mSet_CI$analSet$volcano$p.log,mSet_CI$analSet$oplsda$vipVn) %>% \n  as.data.frame() %>%\n  rownames_to_column(\"name\") %>% \n  rename(fc=V1,log_fc=V2,log_p=V3,vip=V4) %>% \n  mutate(cp_tp=if_else(\n    log_p &lt; 1.30103,\"NoDiff\",if_else(\n      abs(log_fc) &lt; 1,\"NoDiff\",\n      if_else(log_fc >=1,\"Upward\",\"Downward\"))),\n    comparison=\"Control vs. I\")\nvol_num_ci &lt;- volcano_ci %>% group_by(cp_tp) %>% summarise(count=n())\n\nvolcano &lt;- rbind(volcano_ci,volcano_ct)\nvolcano$cp_tp &lt;- factor(volcano$cp_tp,levels = c(\"Upward\",\"NoDiff\",\"Downward\"))\nvolcano$name &lt;- capitalize(volcano$name)\nvolcanolabeld&lt;-volcano&#91;volcano$cp_tp==\"Downward\",]\nvolcanolabelu&lt;-volcano&#91;volcano$cp_tp==\"Upward\",]\nvolcanolabel&lt;-rbind(volcanolabeld,volcanolabelu)\np1 &lt;- ggplot(volcano,aes(log_fc,log_p)) + \n  geom_point(aes(color=cp_tp,size=abs(vip)),alpha=0.8)+\n  geom_hline(yintercept = -log10(0.05),linetype =\"dashed\") + \n  geom_vline(xintercept = c(-1,1),linetype = \"dashed\")+\n  # geom_mark_circle(data=volcano %>% \n  #                    filter(name %in% mSet_en$analSet$qea.hits$`Biosynthesis of unsaturated fatty acids`),\n  #                  aes(fill = name,\n  #                      label = name),\n  #                  expand = unit(1.5, \"mm\"),\n  #                  alpha = 0,\n  #                  con.cap = 0,\n  #                  label.lineheight = 0.1,\n  #                  label.fontsize = c(5, 4),\n  #                  show.legend = FALSE)+\n  geom_label_repel(data=volcano %>%\n                     filter(name %in% mSet_en$analSet$qea.hits$`Biosynthesis of unsaturated fatty acids`),\n                   size=2,\n                   box.padding = 1, #\u5b57\u5230\u70b9\u7684\u8ddd\u79bb\n                   point.padding = 0.1, #\u5b57\u5230\u70b9\u7684\u8ddd\u79bb\uff0c\u70b9\u5468\u56f4\u7684\u7a7a\u767d\u5bbd\u5ea6\n                   min.segment.length = 0, #\u77ed\u7ebf\u6bb5\u53ef\u4ee5\u7701\u7565\n                   segment.color = \"black\", #segment.colour = NA, \u4e0d\u663e\u793a\u7ebf\u6bb5\n                   aes(label=name,color=cp_tp),\n                   arrow = arrow(length=unit(0.01, \"npc\")),\n                   show.legend = FALSE)+\n  facet_wrap(.~comparison,nrow=1,scales = \"free_y\")+\n  scale_color_manual(values = c(\"Upward\"=\"#DC0000FF\",\"NoDiff\"=\"grey\",\"Downward\"=\"#00A087FF\"))+\n  scale_size(range = c(0.5,3),breaks = c(0.5,1,2,3))+\n  guides(color=guide_legend(title = \"Regulation\",order = 1),\n         size=guide_legend(title = \"VIP\",order = 2))+\n  labs(x=\"log2(Fold Change)\",\n       y=\"-log10(pvalue)\")+\n  theme_bw()\np1\nggsave(\"diff_serum_volcano.pdf\",p1,path = \".\/\",units = \"mm\",width = 210,height = 99)\n\n### Enrichment analysis ###\nlibrary(tidytext)\nendot_ct &lt;- as.data.frame(mSet_en_ct$analSet$ora.mat) %>% \n  rownames_to_column(\"name\") %>% \n  mutate(ratio=hits\/expected,\n         comparison=\"C vs. T\",\n         log_p=-log10(`Raw p`))\n# endot_ih &lt;- as.data.frame(mSet_en_ih$analSet$ora.mat) %>% \n#   rownames_to_column(\"name\") %>% \n#   mutate(ratio=hits\/expected,\n#          comparison=\"IBS-C vs. HC\",\n#          log_p=-log10(`Raw p`))\n# endot_ci &lt;- as.data.frame(mSet_en_ci$analSet$ora.mat) %>% \n#   rownames_to_column(\"name\") %>% \n#   mutate(ratio=hits\/expected,\n#          comparison=\"FC vs. IBS-C\",\n#          log_p=-log10(`Raw p`))\n# endot &lt;- rbind(endot_ch&#91;1:10,],endot_ci&#91;1:10,],endot_ih&#91;1:10,])\nendot &lt;- endot_ct\nendot$name &lt;- capitalize(endot$name)\n\np2 &lt;- ggplot(endot,aes(x=log_p,y=reorder_within(name,log_p,comparison)))+\n  geom_point(aes(color=`Raw p`,size=ratio))+\n  geom_vline(xintercept = -log10(0.05),linetype = \"dashed\")+\n  facet_wrap(.~comparison,nrow = 3,strip.position = \"right\",scales = \"free_y\")+\n  labs(x=\"-log10(pvalue)\")+\n  scale_y_reordered()+\n  #scale_color_gradientn(colors = color_vector_use,trans=\"reverse\")+\n  guides(color=guide_colorbar(title = \"P value\"),\n         size=guide_legend(title = \"Enrichmenr ratio\"))+\n  theme_bw()+\n  theme(panel.grid.minor = element_blank(),\n        axis.line.x = element_line(size = 0.3, colour = \"black\"),#x\u8f74\u8fde\u7ebf\n        axis.ticks.length.x = unit(-0.20, \"cm\"),#\u4fee\u6539x\u8f74\u523b\u5ea6\u7684\u9ad8\u5ea6\uff0c\u8d1f\u53f7\u8868\u793a\u5411\u4e0a\n        axis.text.x = element_text(margin = margin(t = 0.3, unit = \"cm\")),#\u7ebf\u4e0e\u6570\u5b57\u4e0d\u8981\u91cd\u53e0\n        axis.ticks.x = element_line(colour = \"black\",size = 0.3),#\u4fee\u6539x\u8f74\u523b\u5ea6\u7684\u7ebf                         \n        axis.ticks.y = element_blank(),\n        axis.title.y  = element_blank())\np2\nggsave(\"serum_enrichment.pdf\",p2,path = \".\/\",units = \"mm\",width = 210,height = 139)\n\n### Unsaturated fatty acids ###\nlibrary(ggpubr)\n\nmypal &lt;- c(\"#0072B5FF\",\"#BC3C29FF\",\"#E18727FF\",\"#20854EFF\")\ncomparisons &lt;- list(c(\"CON\", \"I\"),\n                    c(\"CON\",\"T\"),\n                    c(\"I\",\"T\"))\n\ndiff_usfa &lt;- cbind(mSet_en$dataSet$url.smp.nms,mSet_en$dataSet$orig.cls,mSet_en$analSet$msea.data) %>%\n  rename(ID=colnames(.)&#91;1],Group=colnames(.)&#91;2]) %>% \n  select(ID,Group,mSet_en$analSet$qea.hits$`Biosynthesis of unsaturated fatty acids`) %>% \n  gather(key = \"USFAs\",value = \"Abundance\",3)\ndiff_usfa$Group &lt;- factor(diff_usfa$Group,levels = c(\"CON\", \"I\",\"T\"))\ndiff_usfa &lt;- diff_usfa %>% \n  filter(Group!=\"NA\")\np3 &lt;- ggboxplot(diff_usfa,x=\"Group\",y=\"Abundance\",color = \"Group\",\n                add = \"jitter\",width = .3,size = .7,palette = mypal)+\n  labs(x=\"Group\",y=\"Normalized intensity\")+\n  geom_signif(comparisons = comparisons,\n              map_signif_level=F,vjust=0.5,color=\"black\",\n              textsize=5,test=wilcox.test,step_increase=0.1,tip_length = 0.015)+\n  facet_wrap(.~USFAs,scales = \"free_y\")+\n  theme_bw()+\n  theme(axis.text.x=element_blank(), # remove the x axis scale\n        axis.ticks.x=element_blank(),\n        axis.title.x = element_blank(),\n        legend.title = element_blank(),\n        legend.key=element_blank(),\n        legend.text = element_text(color=\"black\",size=8),\n        legend.spacing.x=unit(0,'cm'),\n        legend.spacing.y = unit(0,'cm'),\n        legend.background=element_blank(),\n        legend.box.background=element_rect(colour = \"black\"),\n        legend.box.margin = margin(1,1,1,1),\n        legend.position = c(0.95,0.55),legend.justification = c(0.95,0.1))\np3\nggsave(\"diff_usfas.pdf\",p3,path = \".\/\",units = \"in\",width = 4.34,height = 3.22)\ndev.off()\n\n###### exercise for FELLA ######\nlibrary(FELLA)\n# A database built from KEGG has to be regenerated for once\nfella_graph &lt;- buildGraphFromKEGGREST(organism = \"hsa\")\nbuildDataFromGraph(keggdata.graph = fella_graph,\n                   databaseDir = \".\/fella_database\",\n                   internalDir = FALSE,\n                   matrices = \"diffusion\",\n                   normality = \"diffusion\",\n                   niter = 50)\n\nfella_data &lt;- loadKEGGdata(databaseDir = \".\/fella_database\",\n                           internalDir = FALSE,\n                           loadMatrix = \"diffusion\")\ncat(getInfo(fella_data))\n# A database built from KEGG has to be regenerated for once\nfella_df &lt;- tmp_query$kegg\nfella_df\n\nfella_anal &lt;- defineCompounds(compounds = fella_df,\n                              data = fella_data)\ngetExcluded(fella_anal)\n\nfella_anal &lt;- runDiffusion(object = fella_anal,\n                           data = fella_data,\n                           approx = \"normality\")\nFELLA::plot(fella_anal,\n            method = \"diffusion\",\n            data = fella_data,\n            nlimit = 150,\n            vertex.label.cex = 0.5)\nexportResults(format = \"csv\",\n              file = \".\/ella_res.csv\",\n              method = \"diffusion\",\n              object = fella_anal,\n              data = fella_data)\n########################################################################################\n###### exercise for FELLA ######\n\n# ## Correlation analysis\n# # Pheno_data \n# library(psych)\n# library(corrplot)\n# cor_cp &lt;- mSet_en$dataSet$norm\n# colnames(cor_cp) &lt;- capitalize(colnames(cor_cp))\n# colnames(cor_cp)&#91;which(str_detect(colnames(cor_cp),\"icosapentaenoic acid\"))] &lt;- \"Eicosapentaenoic acid\"\n# cor_cp &lt;- cor_cp %>% \n#   select(mSet_en$analSet$qea.hits$`Biosynthesis of unsaturated fatty acids`,everything())\n# pheno_data &lt;- metadata %>% \n#   filter(ID %in% rownames(cor_cp)) %>% \n#   column_to_rownames(\"ID\") %>% select(SBM,BSFS,API)\n# \n# cor_list &lt;- corr.test(pheno_data, cor_cp, method = \"spearman\", adjust = \"BH\", alpha = 0.05)\n# r_mat &lt;- cor_list$r\n# p_mat &lt;- cor_list$p.adj\n# \n# corrplot(corr = r_mat,p.mat = p_mat, insig = \"label_sig\",\n#          sig.level = c(.001, .01, .05), pch.cex = .6, pch.col = \"Black\", col = color_vector_use,\n#          tl.col = \"black\",tl.cex = 0.5,tl.srt = 45,diag = TRUE, cl.cex = 0.5, cl.length = 5,\n#          outline = \"Black\")\n# \n# # differential taxa\n# diff_16S &lt;- readRDS(\"~\/Desktop\/2021b\/article_metirials\/microbiome\/diff_16S.rds\")\n# diff_16S &lt;- diff_16S %>% column_to_rownames(\"ID\") %>% select(-group)\n# diff_16S &lt;- log1p(diff_16S)\n# d &lt;- merge(cor_cp, diff_16S, by = \"row.names\", all = FALSE) %>% \n#   column_to_rownames(\"Row.names\")\n# dat1 &lt;- d&#91;,1:47]\n# dat2 &lt;- d&#91;,48:54]\n# \n# cor_list &lt;- corr.test(dat1, dat2, method = \"spearman\", adjust = \"BH\", alpha = 0.05)\n# r_mat &lt;- cor_list$r\n# p_mat &lt;- cor_list$p.adj\n# \n# corrplot(corr = r_mat,p.mat = p_mat, insig = \"label_sig\",\n#          sig.level = c(.001, .01, .05), pch.cex = .6, pch.col = \"Black\", col = color_vector_use,\n#          tl.col = \"black\",tl.cex = 0.6,tl.srt = 45,diag = TRUE, cl.cex = 0.5, outline = \"Black\")\n# \n# d2 &lt;- pheno_data&#91;rownames(d),]\n# \n# cor_list &lt;- corr.test(d2, d, method = \"spearman\", adjust = \"BH\", alpha = 0.05)\n# r_mat &lt;- cor_list$r\n# p_mat &lt;- cor_list$p.adj\n# \n# corrplot(corr = r_mat,p.mat = p_mat, insig = \"label_sig\",\n#          sig.level = c(.001, .01, .05), pch.cex = .6, pch.col = \"Black\", col = color_vector_use,\n#          tl.col = \"black\",tl.cex = 0.6,tl.srt = 45,diag = TRUE, cl.cex = 0.5, cl.length = 5,\n#          outline = \"Black\")\n# \n# save(diff_cp_data,file = \"~\/Desktop\/2021b\/article_metirials\/diff_serum_cmp.rds\")\n# serum_norm &lt;- mSet_serum$dataSet$norm\n# save(serum_norm,file = \"~\/Desktop\/2021b\/article_metirials\/serum_norm.rds\")\n# \n# # ggClusterNet\n# library(phyloseq)\n# library(igraph)\n# library(network)\n# library(sna)\n# library(ggClusterNet)\n# \n# ps_16S &lt;- readRDS(\"~\/Desktop\/2021b\/article_metirials\/ps_16S.rds\")\n# ps_16S &lt;- prune_samples(rownames(d), ps_16S)\n# ps_16S &lt;- filter_OTU_ps(ps_16S, Top = 200)\n# net_grp &lt;- as.data.frame(rep(\"serum_metabolites\",24))\n# rownames(net_grp) &lt;- colnames(dat1)\n# colnames(net_grp)&#91;1] &lt;- \"group\"\n# dat1 &lt;- as.data.frame(dat1) %>% rownames_to_column(\"ID\")\n# cor_net &lt;- corBiostripe(data = dat1, group = net_grp, ps = ps_16S, method = \"spearman\")\n# \n# tmp_otu = as.data.frame(vegan_otu(ps_16S))\n# tmp_cor &lt;- (dat1&#91;-1])\n# row.names(tmp_cor) = dat1&#91;&#91;1]]\n# tmp_cor &lt;- t(tmp_cor)\n# finaldata &lt;- rbind(tmp_otu,tmp_cor)\n# occor = corr.test(dat1,tmp_otu,use=\"pairwise\",method= \"spearman\",adjust=\"fdr\",alpha=.05,)\n# occor.r = occor$r\n# occor.p = t(occor$p.adj)\n# occor.r&#91;occor.p > 0.05|abs(occor.r)&lt;0.6] = 0\n# \n# ######################### Abolished case #######################################\n# # # PCA\n# # library(FactoMineR)\n# # library(ggsci)\n# # library(scales)\n# # \n# # show_col(pal_nejm(palette = \"default\")(8))\n# # mypal &lt;- c(\"#0072B5FF\",\"#BC3C29FF\",\"#E18727FF\",\"#20854EFF\")\n# # \n# # pca_neg_serum &lt;- PCA(neg_serum_norm,graph = FALSE)\n# # pca_neg_serum$eig #\u663e\u793a\u7279\u5f81\u503c\u3001\u65b9\u5dee\u8d21\u732e\u7387\u548c\u7d2f\u8ba1\u65b9\u5dee\u8d21\u732e\u7387\n# # dat_1 &lt;- as.data.frame(pca_neg_serum$ind$coord) #dat_1\u4e3a\u4e3b\u6210\u5206\u5f97\u5206\uff08\u6837\u672c\u5750\u6807\uff09\n# # name &lt;- rownames(dat_1)\n# # Group_neg_serum &lt;- c(serum_metadata$Group,rep(\"QC\",20))\n# # dat_1 &lt;- cbind(dat_1,name,Group_neg_serum) %>% select(-Dim.3,-Dim.4,-Dim.5)\n# # colnames(dat_1) &lt;- c(\"x\",\"y\",\"ID\",\"Group\")\n# # #dat_2 &lt;- as.data.frame(pca$var$coord) #dat_2\u4e3a\u4e3b\u6210\u5206\u8f7d\u8377\uff08\u53d8\u91cf\u5750\u6807\uff09\n# # dat_1$Group &lt;- factor(dat_1$Group,levels = c(\"Health\",\"Constipation\",\"IBS-C\",\"QC\"))\n# # dat_1$x&lt;-as.numeric(dat_1$x)\n# # dat_1$y&lt;-as.numeric(dat_1$y)\n# # \n# # p1 &lt;- ggplot(dat_1, aes(x, y,color = Group)) + #\u6620\u5c04PC1,PC2\n# #   geom_point(size = 3, alpha=.7) + #\u7ed8\u5236\u5f97\u5206\u6563\u70b9\u56fe\n# #   labs(title = \"PCA biplot\") + #\u56fe\u8868\u6807\u9898\n# #   xlab(paste(\"PC1\", paste(round(pca_neg_serum$eig&#91;1,2], 2), \"%\", sep = \"\"), sep = \"  \")) + #x\u8f74\u6807\u9898\n# #   ylab(paste(\"PC2\", paste(round(pca_neg_serum$eig&#91;2,2], 2), \"%\", sep = \"\"), sep = \"  \")) + #y\u8f74\u6807\u9898\n# #   stat_ellipse( geom = \"polygon\", alpha = 0.1, level = 0.95, show.legend = F,\n# #                 col=\"black\",size=1)+\n# #   stat_ellipse(aes(x,y,color=Group),level = .68,inherit.aes = FALSE,size=.8)+#\u52a0\u7f6e\u4fe1\u692d\u5706\n# #   geom_vline(xintercept=mean(dat_1$x),lty=1,col=\"black\",lwd=0.5)+#\u6dfb\u52a0\u6a2a\u7ebf\n# #   geom_hline(yintercept =mean(dat_1$y),lty=1,col=\"black\",lwd=0.5)+#\u6dfb\u52a0\u7ad6\u7ebf\n# #   theme_bw()+ scale_color_manual(values = mypal)+\n# #   theme( plot.background = element_rect(fill=\"white\"),\n# #          panel.background = element_rect(fill='white', colour='gray'),          \n# #          text=element_text(family=\"sans\", size=12),\n# #          plot.title = element_text(hjust = .5))\n# # p1\n# #  \n# # pca_pos_serum &lt;- PCA(pos_serum_norm,graph = FALSE)\n# # dat_2 &lt;- as.data.frame(pca_pos_serum$ind$coord) #dat_2\u4e3a\u4e3b\u6210\u5206\u5f97\u5206\uff08\u6837\u672c\u5750\u6807\uff09\n# # name &lt;- rownames(dat_2)\n# # Group_pos_serum &lt;- c(serum_metadata$Group,rep(\"QC\",13))\n# # dat_2 &lt;- cbind(dat_2,name,Group_pos_serum) %>% select(-Dim.3,-Dim.4,-Dim.5)\n# # colnames(dat_2) &lt;- c(\"x\",\"y\",\"ID\",\"Group\")\n# # #dat_2 &lt;- as.data.frame(pca$var$coord) #dat_2\u4e3a\u4e3b\u6210\u5206\u8f7d\u8377\uff08\u53d8\u91cf\u5750\u6807\uff09\n# # dat_2$Group &lt;- factor(dat_2$Group,levels = c(\"Health\",\"Constipation\",\"IBS-C\",\"QC\"))\n# # dat_2$x&lt;-as.numeric(dat_2$x)\n# # dat_2$y&lt;-as.numeric(dat_2$y)\n# # \n# # p2 &lt;- ggplot(dat_2, aes(x, y,color = Group)) + #\u6620\u5c04PC1,PC2\n# #   geom_point(size = 3, alpha=.7) + #\u7ed8\u5236\u5f97\u5206\u6563\u70b9\u56fe\n# #   labs(title = \"PCA biplot\") + #\u56fe\u8868\u6807\u9898\n# #   xlab(paste(\"PC1\", paste(round(pca_pos_serum$eig&#91;1,2], 2), \"%\", sep = \"\"), sep = \"  \")) + #x\u8f74\u6807\u9898\n# #   ylab(paste(\"PC2\", paste(round(pca_pos_serum$eig&#91;2,2], 2), \"%\", sep = \"\"), sep = \"  \")) + #y\u8f74\u6807\u9898\n# #   stat_ellipse( geom = \"polygon\", alpha = 0.1, level = 0.95, show.legend = F,\n# #                 col=\"black\",size=1)+\n# #   stat_ellipse(aes(x,y,color=Group),level = .68,inherit.aes = FALSE,size=.8)+#\u52a0\u7f6e\u4fe1\u692d\u5706\n# #   geom_vline(xintercept=mean(dat_2$x),lty=1,col=\"black\",lwd=0.5)+#\u6dfb\u52a0\u6a2a\u7ebf\n# #   geom_hline(yintercept =mean(dat_2$y),lty=1,col=\"black\",lwd=0.5)+#\u6dfb\u52a0\u7ad6\u7ebf\n# #   theme_bw()+ scale_color_manual(values = mypal)+\n# #   theme(plot.background = element_rect(fill=\"white\"),\n# #         panel.background = element_rect(fill='white', colour='gray'),          \n# #         text=element_text(family=\"sans\", size=12),\n# #         plot.title = element_text(hjust = .5))\n# # p2\n# # \n# # # OPLS-DA\n# # library(ropls)\n# # # library(o2plsda)\n# # # o2plsda makes no sense, not recommended.\n# # # detach(\"package:o2plsda\",unload = TRUE)\n# # ###### exercise for o2pls-da ######\n# # # cv &lt;- o2cv(X = opl_neg_serum, Y = opl_pos_serum, \n# # #            nc = 1:5, nx = 1:3, ny = 1:3, group = Group_neg_serum, nr_folds = 10)\n# # # fit_serum &lt;- o2pls(X = opl_neg_serum, Y = opl_pos_serum, nc = 5, nx = 2, ny = 3)\n# # # summary(fit_serum)\n# # # Xl &lt;- loadings(fit_serum,loading=\"Xjoint\")\n# # # Xs &lt;- scores(fit_serum,score=\"Xjoint\")\n# # # plot(fit_serum,type=\"score\",var=\"Xjoint\", group=Group_serum,repel = FALSE)\n# # # plot(fit_serum,type=\"loading\",var=\"Xjoint\", group=Group_serum,repel=F,rotation=TRUE)\n# # # res_serum &lt;- oplsda(fit_serum, Group_serum, nc=5)\n# # # plot(res_serum, type=\"score\", group=Group_serum)\n# # # vip &lt;- vip(res_serum)\n# # # plot(res_serum,type=\"vip\", group = Group_serum, repel = FALSE, order=TRUE)\n# # ###### exercise for o2pls-da ######\n# # \n# # \n# # \n# # Group_serum &lt;- c(serum_metadata$Group)\n# # comparisons &lt;- data.frame(c(\"Health\",\"Constipation\",\"IBS-C\"), \n# #                           c(\"Constipation\",\"IBS-C\",\"Health\"))\n# # \n# # for(comp in 1:nrow(comparisons)){\n# #     comp_name &lt;- paste(comparisons&#91;comp, 1], \n# #                      comparisons&#91;comp, 2], \n# #                      sep = \"vs\")\n# #     tmp_tab &lt;- serum\n# #     tmp_tab$Group &lt;- Group_serum\n# #     tmp_tab &lt;- tmp_tab %>% filter(Group %in% c(comparisons&#91;comp,1],comparisons&#91;comp,2]))\n# #     tmp_grp &lt;- tmp_tab$Group\n# #     tmp_tab &lt;- tmp_tab %>% select(-Group)\n# #   \n# #     comp_name &lt;- opls(tmp_tab, tmp_grp, predI = 1, orthoI = 1, crossvalI =10,\n# #                       scaleC=\"none\")\n# #     \n# #     VIP&lt;-comp_name@vipVn\n# #     t1&lt;-comp_name@orthoScoreMN\n# #     to1&lt;-comp_name@scoreMN\n# #     \n# #     j&lt;-data.frame(t1,to1,colnames(scaledata&#91;,-which(str_detect(colnames(scaledata), \"QC\"))]),rep(c(\"A\",\"B\"),each=3))\n# #     colnames(j)&lt;-c(\"o1\",\"p1\",\"name\",\"group\")\n# #     ggplot(j, aes(p1, o1,group = group,col=group)) + #\u6620\u5c04PC1,PC2\n# #       geom_point(size = 7) + #\u7ed8\u5236\u5f97\u5206\u6563\u70b9\u56fe\n# #       labs(title = \"PCA - biplot\") + #\u56fe\u8868\u6807\u9898\n# #       xlab(paste(\"to1\")) + #x\u8f74\u6807\u9898\n# #       ylab(paste(\"t1\")) + #y\u8f74\u6807\u9898\n# #       stat_ellipse( geom = \"polygon\", alpha = 0.1, level = 0.95, show.legend = F,\n# #                     size=1)+#\u52a0\u7f6e\u4fe1\u692d\u5706\n# #       geom_vline(xintercept=mean(j$p1),lty=1,col=\"black\",lwd=0.5) +#\u6dfb\u52a0\u6a2a\u7ebf\n# #       geom_hline(yintercept =mean(j$o1),lty=1,col=\"black\",lwd=0.5)+#\u6dfb\u52a0\u7ad6\u7ebf\n# #       theme( plot.background = element_rect(fill=\"white\"),\n# #              panel.background = element_rect(fill='white', colour='gray'),          \n# #              strip.text.x=element_text(size=rel(1.2), family=\"serif\", angle=-90),\n# #              strip.text.y=element_text(size=rel(1.2),  family=\"serif\") ,\n# #              axis.text.x = element_text(size = 14,color=\"black\"),\n# #              axis.text.y = element_text(size = 20,color=\"black\"),axis.ticks.x=element_blank()\n# #       )\n# # }<\/code><\/pre>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full is-resized\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/linguopeng.top\/wp-content\/uploads\/2022\/03\/snorm_serumdpi300-1.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" data-original=\"https:\/\/linguopeng.top\/wp-content\/uploads\/2022\/03\/snorm_serumdpi300-1.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-316\" width=\"368\" height=\"436\"\/><\/div><\/figure><\/div>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full is-resized\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/linguopeng.top\/wp-content\/uploads\/2022\/03\/cf65d625-9901-4423-8ef6-58d4d99731d5-1.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" data-original=\"https:\/\/linguopeng.top\/wp-content\/uploads\/2022\/03\/cf65d625-9901-4423-8ef6-58d4d99731d5-1.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-325\" width=\"413\" height=\"413\"  sizes=\"auto, (max-width: 413px) 100vw, 413px\" \/><\/div><\/figure><\/div>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/linguopeng.top\/wp-content\/uploads\/2022\/03\/serum_enrichment-01-scaled.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"2560\" height=\"1695\" data-original=\"https:\/\/linguopeng.top\/wp-content\/uploads\/2022\/03\/serum_enrichment-01-scaled.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-331\"  sizes=\"auto, (max-width: 2560px) 100vw, 2560px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/linguopeng.top\/wp-content\/uploads\/2022\/03\/diff_serum_volcano-01.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"7438\" height=\"3500\" data-original=\"https:\/\/linguopeng.top\/wp-content\/uploads\/2022\/03\/diff_serum_volcano-01.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-321\"  sizes=\"auto, (max-width: 7438px) 100vw, 7438px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/linguopeng.top\/wp-content\/uploads\/2022\/03\/diff_usfas-01.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"3900\" height=\"2888\" data-original=\"https:\/\/linguopeng.top\/wp-content\/uploads\/2022\/03\/diff_usfas-01.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-327\"  sizes=\"auto, (max-width: 3900px) 100vw, 3900px\" \/><\/div><\/figure>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-310","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/linguopeng.top\/index.php?rest_route=\/wp\/v2\/posts\/310","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/linguopeng.top\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/linguopeng.top\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/linguopeng.top\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/linguopeng.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=310"}],"version-history":[{"count":9,"href":"https:\/\/linguopeng.top\/index.php?rest_route=\/wp\/v2\/posts\/310\/revisions"}],"predecessor-version":[{"id":347,"href":"https:\/\/linguopeng.top\/index.php?rest_route=\/wp\/v2\/posts\/310\/revisions\/347"}],"wp:attachment":[{"href":"https:\/\/linguopeng.top\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=310"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/linguopeng.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=310"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/linguopeng.top\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=310"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}