查看原文
其他

CS9: GEO数据挖掘

2017-12-13 Y叔 biobabble

ChIPseeker系列文章已经介绍了很多内容,包括注释的方方面面,也包括强大的可视化功能(《CS6: ChIPseeker的可视化方法(中秋节的视觉饕餮)》)。

今天要介绍一下数据挖掘,从大量已有的数据来产生新的hypothesis。正如我在ChIPseeker的文章里写的:

There are increasing evidences shown that combinations of TFs are important for regulating gene expression (Perez-Pinera et al., 2013; Zhu et al., 2008). However, systematically identification of TF interactions by ChIP-seq is still not available. Even if a specific TF binding is essential for a particular regulation was known, we do not have prior knowledge of all its co-factors. There are no systematic strategies available to identified un-known co-factors by ChIP- seq.

并没有方法可以大规模地预测未知的共同调控因子,而数据挖掘就是要给我们这种预测的能力。

我当年在写ChIPseeker的时候,我有纠结是写篇Bioinformatics的application note呢,还是写篇长文灌水NAR,毕竟NAR影响因子高一点,最后还是发了Bioinformatics,因为我没钱,囧,Bioinformatics不要版面费啊。然后限于篇幅,ChIPseeker有大量可视化的函数,我在文章中一张图都没放!!!如果当时决定发NAR的话,这个数据挖掘这一块我就会写多点。

做注释在Windows上有个软件CisGenome,是Hongkai Ji课题组做的,他们还做了一个hmChIP的database:


这个hmChIP可以说是先行者,它只支持人和鼠,收集了一些GEO的数据,这个数据库做得比较早,当年GEO上的ChIPseq数据并不多,当由于搞得早,也发了一篇Bioinformatics,当然灌水之后,就不维护了,数据没更新,而基因组版本号还停留在hg18和mm8之上,所以即使它还能用,我想也不会有人去用了。这个数据库做一个事情,你可以上传自己的数据,然后它会和数据库中的数据进行比较,给你报道出你的数据和数据库中的数据overlap了多少,仅此而已。

可以说这是一个雏形,我一直在想overlap了多少,不是很能说明问题,多少算多?能不能算个p值出来,overlap了这么多,随机情况下是不太可能产生的。思来想去,没办法直接算啊,于是求助于permutation,没有枪没有炮,我们自己造。

写了一个shuffle函数,也就是传说中的洗牌,你给基因位置信息,随机给你返回等长的片段,但位置改变了。

p <- GRanges(seqnames=c("chr1", "chr3"),             ranges=IRanges(start=c(1, 100), end=c(50, 130))) shuffle(p, TxDb=txdb) ## GRanges object with 2 ranges and 0 metadata columns: ##       seqnames                 ranges strand ##          <Rle>              <IRanges>  <Rle> ##   [1]     chr1 [239651460, 239651509]      * ##   [2]     chr3 [163562934, 163562964]      * ##   ------- ##   seqinfo: 2 sequences from an unspecified genome; no seqlengths

有了这个函数,我们可以对数据洗牌洗它一千次、一万次,那么就可以计算一千一万个overlap,来形成背景分布,实际数据的overlap在这一背景分布中产生的概率就可以计算出来。

enrichPeakOverlap(queryPeak     = files[[5]],                  targetPeak    = unlist(files[1:4]),                  TxDb          = txdb,                  pAdjustMethod = "BH",                  nShuffle      = 50,                  chainFile     = NULL,                  verbose       = FALSE) ##                                                       qSample ## ARmo_0M    GSM1295077_CBX7_BF_ChipSeq_mergedReps_peaks.bed.gz ## ARmo_1nM   GSM1295077_CBX7_BF_ChipSeq_mergedReps_peaks.bed.gz ## ARmo_100nM GSM1295077_CBX7_BF_ChipSeq_mergedReps_peaks.bed.gz ## CBX6_BF    GSM1295077_CBX7_BF_ChipSeq_mergedReps_peaks.bed.gz ##                                                       tSample qLen tLen N_OL ## ARmo_0M                       GSM1174480_ARmo_0M_peaks.bed.gz 1663  812    0 ## ARmo_1nM                     GSM1174481_ARmo_1nM_peaks.bed.gz 1663 2296    8 ## ARmo_100nM                 GSM1174482_ARmo_100nM_peaks.bed.gz 1663 1359    3 ## CBX6_BF    GSM1295076_CBX6_BF_ChipSeq_mergedReps_peaks.bed.gz 1663 1331  968 ##                pvalue  p.adjust ## ARmo_0M    0.90196078 0.9019608 ## ARmo_1nM   0.25490196 0.4444444 ## ARmo_100nM 0.33333333 0.4444444 ## CBX6_BF    0.05882353 0.2352941

函数里有一个chainFile的参数,如果你提供了,数据的比较可以跨基因组版本,甚至于可以跨物种比较。

有了这个函数,那么我再打通GEO,让用户可以检索下载GEO的数据,如此一来,你就可以用自己的数据去和GEO的数据做比较,或者就可能挖出overlap非常significant但没被报道到的co-factor呢!

ChIPseeker已经收集了超过90个物种,超过2万个BED文件的信息。你可以用getGEOgenomeVersion列出所有支持的基因组及相应的BED文件数目。

getGEOgenomeVersion() ##                         organism genomeVersion Freq ## 1            Anolis carolinensis       anoCar2    5 ## 2                     Bos taurus       bosTau4    2 ## 3                     Bos taurus       bosTau6   24 ## 4                     Bos taurus       bosTau7    2 ## 5         Caenorhabditis elegans          ce10    4 ## 6         Caenorhabditis elegans           ce6   64 ## 7                    Danio rerio       danRer6    6 ## 8                    Danio rerio       danRer7   61 ## 9        Drosophila melanogaster           dm3  502 ## 10                 Gallus gallus       galGal3   32 ## 11                 Gallus gallus       galGal4   15 ## 12                  Homo sapiens          hg18 2512 ## 13                  Homo sapiens          hg19 6876 ## 14                  Homo sapiens          hg38   43 ## 15                  Mus musculus          mm10  214 ## 16                  Mus musculus           mm8  507 ## 17                  Mus musculus           mm9 6289 ## 18         Monodelphis domestica       monDom5    8 ## 19               Pan troglodytes       panTro3   48 ## 20               Pan troglodytes       panTro4   42 ## 21                Macaca mulatta       rheMac2   81 ## 22                Macaca mulatta       rheMac3   31 ## 23             Rattus norvegicus           rn5    3 ## 24      Saccharomyces cerevisiae       sacCer2  141 ## 25      Saccharomyces cerevisiae       sacCer3  227 ## 26                    Sus scrofa       susScr2   17 ## 27 Xenopus (Silurana) tropicalis       xenTro3    3

比如说斑马鱼,文件也就几十个,你大可全部下载下来。

downloadGEObedFiles(genome="danRer7", destDir="danRer7")

而比如人鼠这些明显特种,实在太多,一般来说全部下载也不太现实。ChIPseeker可以给你列出信息,连pubmed ID都给出来了,也方便翻阅文献,如果simplify=FALSE的话,还会给出protocal和data processing等信息哦。

hg19 <- getGEOInfo(genome="hg19", simplify=TRUE) head(hg19) ##     series_id        gsm     organism ## 111  GSE16256  GSM521889 Homo sapiens ## 112  GSE16256  GSM521887 Homo sapiens ## 113  GSE16256  GSM521883 Homo sapiens ## 114  GSE16256 GSM1010966 Homo sapiens ## 115  GSE16256  GSM896166 Homo sapiens ## 116  GSE16256  GSM910577 Homo sapiens ##                                                                                                       title ## 111          Reference Epigenome: ChIP-Seq Analysis of H3K27me3 in IMR90 Cells; renlab.H3K27me3.IMR90-02.01 ## 112            Reference Epigenome: ChIP-Seq Analysis of H3K27ac in IMR90 Cells; renlab.H3K27ac.IMR90-03.01 ## 113            Reference Epigenome: ChIP-Seq Analysis of H3K14ac in IMR90 Cells; renlab.H3K14ac.IMR90-02.01 ## 114                      polyA RNA sequencing of STL003 Pancreas Cultured Cells; polyA-RNA-seq_STL003PA_r1a ## 115          Reference Epigenome: ChIP-Seq Analysis of H4K8ac in hESC H1 Cells; renlab.H4K8ac.hESC.H1.01.01 ## 116 Reference Epigenome: ChIP-Seq Analysis of H3K4me1 in Human Spleen Tissue; renlab.H3K4me1.STL003SX.01.01 ##                                                                                                     supplementary_file ## 111         ftp://ftp.ncbi.nlm.nih.gov/geo/samples/GSM521nnn/GSM521889/suppl/GSM521889_UCSD.IMR90.H3K27me3.SK05.bed.gz ## 112          ftp://ftp.ncbi.nlm.nih.gov/geo/samples/GSM521nnn/GSM521887/suppl/GSM521887_UCSD.IMR90.H3K27ac.YL58.bed.gz ## 113          ftp://ftp.ncbi.nlm.nih.gov/geo/samples/GSM521nnn/GSM521883/suppl/GSM521883_UCSD.IMR90.H3K14ac.SK17.bed.gz ## 114 ftp://ftp.ncbi.nlm.nih.gov/geo/samples/GSM1010nnn/GSM1010966/suppl/GSM1010966_UCSD.Pancreas.mRNA-Seq.STL003.bed.gz ## 115              ftp://ftp.ncbi.nlm.nih.gov/geo/samples/GSM896nnn/GSM896166/suppl/GSM896166_UCSD.H1.H4K8ac.AY17.bed.gz ## 116       ftp://ftp.ncbi.nlm.nih.gov/geo/samples/GSM910nnn/GSM910577/suppl/GSM910577_UCSD.Spleen.H3K4me1.STL003.bed.gz ##     genomeVersion pubmed_id ## 111          hg19  19829295 ## 112          hg19  19829295 ## 113          hg19  19829295 ## 114          hg19  19829295 ## 115          hg19  19829295 ## 116          hg19  19829295

然后经过你的过滤,你就可以选择性地下载部分文件来分析了。

gsm <- hg19$gsm[sample(nrow(hg19), 10)] downloadGSMbedFiles(gsm, destDir="hg19")


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存