简介
有人问我,这个curatedMetagenomicData有什么作用?对于我们这些research parasite(出处请见NEJM社论)来说,这样庞大的数据集当然是用来挖信息或者是测试算法了:
作为validation cohort来验证已发现的结论。如我们的这篇文章都使用了2014年Oh et al发表于Nature的数据来佐证我们发现的Staphylococcus特异性突变。
用来测试新方法,发现新的生物问题。如这篇文章中我们也用了Oh et al的数据来观测Malessezia在人体皮肤的分布。
因为数据中有大量健康人的微生物组(不同研究中的control),我们也可以用它们补充我们的对照组(当然在机器学习中要注意数据不平衡问题)。
当然最基础的操作,就是要从数据库中提取数据。
演示
我们从curatedMetagenomicData中提取健康人的粪便及皮肤微生物组。
加载R package
suppressMessages(library(curatedMetagenomicData))
suppressMessages(library(foreach))
下载并合并所有粪便、皮肤数据(下载数据缓存于~/.ExperimentHub中,第二次以后会直接读取缓存)
## download all stool samples
stoolData <- curatedMetagenomicData("*.metaphlan_bugs_list.stool", dryrun=FALSE)
## Warning in strptime(x, fmt, tz = "GMT"): unknown timezone 'zone/tz/2017c.
## 1.0/zoneinfo/Asia/Singapore'
skinData <- curatedMetagenomicData("*.metaphlan_bugs_list.skin", dryrun=FALSE)
## merge
stoolDataMerged <- mergeData(stoolData)
skinDataMerged <- mergeData(skinData)
验证元数据与样本对应关系
table(rownames(pData(stoolDataMerged)) == colnames(exprs(stoolDataMerged)))
##
## TRUE
## 4810
table(rownames(pData(skinDataMerged)) == colnames(exprs(skinDataMerged)))
##
## TRUE
## 466
通过元数据来提取健康样本的数据
顺便过滤掉整行、整列为0的数据
stoolDataHealthy <- exprs(stoolDataMerged)[, which(pData(stoolDataMerged)$disease=='healthy')] %>%
data.frame() %>%
select(which(colSums(.)!=0))
skinDataHealthy <- exprs(skinDataMerged)[, which(pData(skinDataMerged)$disease=='healthy')] %>%
data.frame() %>%
select(which(colSums(.)!=0))
存储数据
write.table(stoolDataHealthy[rowSums(stoolDataHealthy)!=0,], '~/Desktop/curatedMetagenomicData_stool_healthy.tsv', quote=F, sep='\t', col.names = FALSE, row.names = TRUE)
write.table(skinDataHealthy[rowSums(skinDataHealthy)!=0,], '~/Desktop/curatedMetagenomicData_skin_healthy.tsv', quote=F, sep='\t', col.names = FALSE, row.names = TRUE)
最重要一点,记录版本号,记录版本号,记录版本号!
sessionInfo('curatedMetagenomicData')
## R version 3.4.2 (2017-09-28)
## Platform: x86_64-apple-darwin15.6.0 (64-bit)
## Running under: macOS High Sierra 10.13.2
##
## Matrix products: default
## BLAS: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRblas.0.dylib
## LAPACK: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRlapack.dylib
##
## locale:
## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
##
## attached base packages:
## character(0)
##
## other attached packages:
## [1] curatedMetagenomicData_1.7.92
##
## loaded via a namespace (and not attached):
## [1] Rcpp_0.12.14 BiocInstaller_1.28.0
## [3] compiler_3.4.2 AnnotationHub_2.9.22
## [5] bindr_0.1 iterators_1.0.8
## [7] methods_3.4.2 utils_3.4.2
## [9] tools_3.4.2 grDevices_3.4.2
## [11] digest_0.6.13 bit_1.1-12
## [13] evaluate_0.10.1 RSQLite_2.0
## [15] memoise_1.1.0 tibble_1.3.4
## [17] pkgconfig_2.0.1 rlang_0.1.4
## [19] foreach_1.4.3 shiny_1.0.5
## [21] DBI_0.7 yaml_2.1.16
## [23] parallel_3.4.2 blogdown_0.3
## [25] bindrcpp_0.2 dplyr_0.7.4
## [27] stringr_1.2.0 httr_1.3.1
## [29] knitr_1.18 IRanges_2.10.5
## [31] graphics_3.4.2 S4Vectors_0.14.7
## [33] datasets_3.4.2 stats_3.4.2
## [35] stats4_3.4.2 rprojroot_1.2
## [37] bit64_0.9-7 glue_1.2.0
## [39] base_3.4.2 Biobase_2.37.2
## [41] R6_2.2.2 AnnotationDbi_1.38.2
## [43] rmarkdown_1.7 bookdown_0.5
## [45] purrr_0.2.4 tidyr_0.7.2
## [47] ExperimentHub_1.3.9 blob_1.1.0
## [49] magrittr_1.5 codetools_0.2-15
## [51] backports_1.1.1 htmltools_0.3.6
## [53] BiocGenerics_0.22.1 assertthat_0.2.0
## [55] mime_0.5 interactiveDisplayBase_1.14.0
## [57] xtable_1.8-2 httpuv_1.3.5
## [59] stringi_1.1.5