hiAnnotator
包含一组函数,允许用户使用自定义的注释集注释GRanges对象。这个包的基本原理是获取两个GRanges对象(query & subject),它们具有共同的空间/序列名集(即染色体),并从匹配空间/序列名的查询中返回每个空间/序列名和来自主题的行(即基因或cpg岛)的相关注释。
这个包带有三种类型的注释函数,用于计算查询中的位置是:在一个特征内,在一个特征附近,还是在定义的窗口大小中计算特征。此外,每个功能都配备了并行后端来利用foreach
包中。该包还配备了包装器函数,用于从公共数据帧中查找生成GRanges对象所需的适当列。
执行大部分计算的工作马函数来自GenomicRanges
包来自Bioconductor存储库。中的大多数函数hiAnnotator
Package是以下功能的包装器:最近的()
,findOverlaps ()
.
下面是让你开始的几个简单步骤。
首先加载这个包和选择的并行后端。更多选择请参见页面底部的加载并行后端部分。
库(hiAnnotator)
##加载所需软件包:GenomicRanges
##加载所需的包:stats4
##加载所需的包:BiocGenerics
##加载所需的包:并行
## ##附加包:“BiocGenerics”
以下对象将从'package:parallel'中屏蔽:## ## clusterApply, clusterApplyLB, clusterCall, clusterEvalQ, ## clusterExport, clusterMap, parApply, parCapply, parApply, ## parapplylb, parRapply, parSapply, parSapplyLB
以下对象从'package:stats'中屏蔽:## ## IQR, mad, sd, var, xtabs
##以下对象从'package:base'中屏蔽:## ## Filter, Find, Map, Position, Reduce, anyduplication, append, ## as.data.frame, basename, cbind, colnames, dirname, do。Call, ## duplicate, eval, evalq, get, grep, grepl, intersect, ## is。Unsorted, lapply, mapply, match, mget, order, paste, pmax, ## pmax.int, pmin, pmin.int, rank, rbind, rownames, sapply, ## setdiff, sort, table, tapply, union, unique, unsplit, which, ## which。马克斯,which.min
##加载所需的包:S4Vectors
## ##附加包:“S4Vectors”
以下对象从'package:base'中屏蔽:## ## expand.grid
##加载所需的包:IRanges
##加载所需包:GenomeInfoDb
该包附带了示例数据框架:网站
而且基因
.在本教程的其余部分,我们将使用网站作为查询和基因作为主题。使用makeGRanges ()
函数提供的包,一个可以很容易地从一个数据帧到GRanges对象没有太多的麻烦。
data(sites) ## sites对象没有开始和停止列来表示基因组范围,因此soloStart参数必须为TRUE,否则将抛出一个严重的错误!alldata。rd <- makeGRanges(sites, soloStart = TRUE) data(genes) ##添加冻结填充GRanges对象的SeqInfo插槽。基因。rd <- makeGRanges(基因,冻结= "hg18")
##有效的警告。seqinfo (x,建议。GRanges对象包含一个位于序列## chr6_cox_hap1上的超出边界范围。注意,位于长度##未知(NA)的序列或位于循环序列上的范围不会被认为是##越界(使用seqlength()和isCircular()来获得底层序列的长度##和循环标志)。您可以使用## trim()来修剪这些范围。参见“trim,GenomicRanges-method”获取更多信息。
该软件包还带有包装器功能,可以下载UCSC基因组浏览器使用的注释轨道rtracklayer
包中。
refflat <- getUCSCtable(" refflat ", "RefSeq基因")基因<- makeGRanges(refflat)
加载并格式化数据后,接下来的一系列函数将突出显示对数据进行注释的各种方式。有一件事要记住,只有相交
查询和主题之间的空格/染色体/序列名将被注释,其余将被忽略,并在输出中有NAs。
给定一个查询对象,该函数从主题中检索最近的特征及其属性,然后将它们作为新列添加到查询对象中。当在基因组环境中使用时,该函数可用于检索相对于感兴趣的基因组位置最近的基因5'或3'端。默认情况下,计算到任意边界的最近距离,除非使用一边
参数。
nearestGenes <- getNearestFeature(alldata. properties)理查德·道金斯,基因。理查德·道金斯,“NearestGene”)
## ##附加包:'dplyr'
“package:GenomicRanges”屏蔽了以下对象:## ## intersect, setdiff, union
以下对象从'package:GenomeInfoDb'中屏蔽:## ## intersect
##以下对象从'package:IRanges'中屏蔽:## ## collapse, desc, intersect, setdiff, slice, union
以下对象从'package:S4Vectors'中屏蔽:## ## first, intersect, rename, setdiff, setequal, union
以下对象从'package:BiocGenerics'中屏蔽:## ## combine, intersect, setdiff, union
以下对象从'package:stats'中屏蔽:## ## filter, lag
以下对象从'package:base'中屏蔽:## ## intersect, setdiff, setequal, union
头(nearestGenes)
GRanges对象有6个范围和8个元数据列:# # seqnames范围链|序列位置# # < Rle > < IRanges > < Rle > | <人物> <数字> # # [1]chr7 1511435——| Burgess-MLV-HeLa-nj09f06 1511435 # # [2] chr7 1572700——| Burgess-MLV-HeLa-nj12h11 1572700 # # [3] chr7 11048891 + | Burgess-HIV-HeLa-01a12 11048891 # # [4] chr7 12167895 + | Burgess-MLV-HeLa-nj08f04 12167895 # # [5] chr7 12503464——| Burgess-MLV-HeLa-nj15c02 12503464 # # [6] chr7 12726532 + | Burgess-MLV-HeLa-nj19e04 12726532 # #杆支持病毒NearestGeneDist NearestGene # #<字符> <字符> <字符> <字符> [1]chr7 - MLV 794 PSMG3 ## [3] chr7 + HIV -60916 PHF14 ## [4] chr7 + MLV -49477 tmem106b# # [5] chr7 - MLV -73263 SCIN ## [6] chr7 + MLV 29449 ARL4A ##最近的基因ort ## <字符> ## [1]- ## [2]- ## [3]+ ## [4]+ ## [5]+ ## [6]+ ## ------- # seqinfo:来自未指定基因组的27个序列;没有seqlengths
# nearestGenes <- getNearestFeature(alldata.rd,基因。rd,"NearestGene", parallel=TRUE) ##获取最近的5'基因nearestGenes <- getNearestFeature(alldata. txt)理查德·道金斯,基因。rd, "NearestGene", side = "5p") head(nearestGenes)
GRanges对象有6个范围和8个元数据列:# # seqnames范围链|序列位置# # < Rle > < IRanges > < Rle > | <人物> <数字> # # [1]chr7 1511435——| Burgess-MLV-HeLa-nj09f06 1511435 # # [2] chr7 1572700——| Burgess-MLV-HeLa-nj12h11 1572700 # # [3] chr7 11048891 + | Burgess-HIV-HeLa-01a12 11048891 # # [4] chr7 12167895 + | Burgess-MLV-HeLa-nj08f04 12167895 # # [5] chr7 12503464——| Burgess-MLV-HeLa-nj15c02 12503464 # # [6] chr7 12726532 + | Burgess-MLV-HeLa-nj19e04 12726532 # #杆支持病毒X5pNearestGeneDist # # <人物><人物> <人物> <整数> # # [1]chr7 - MLV -891 # # [2] chr7 - MLV 3455 # # [3] chr7 +艾滋病毒68851 # # [4]chr7 + MLV -49477 # # [5] chr7 - MLV -73263 # # [6] chr7 + MLV 33047 # # X5pNearestGene X5pNearestGeneOrt # # <人物> <人物> # # [1]INTS1 - # # [2] PSMG3 - # # [3] PHF14 + # # [4] TMEM106B + # # [5] SCIN + # # [6] ARL4A + ## ------- ## seqinfo: 27因基因组序列;没有seqlengths
##获取最近的3'基因nearestGenes <- getNearestFeature(alldata。理查德·道金斯,基因。rd, "NearestGene", side = "3p") head(nearestGenes)
GRanges对象有6个范围和8个元数据列:# # seqnames范围链|序列位置# # < Rle > < IRanges > < Rle > | <人物> <数字> # # [1]chr7 1511435——| Burgess-MLV-HeLa-nj09f06 1511435 # # [2] chr7 1572700——| Burgess-MLV-HeLa-nj12h11 1572700 # # [3] chr7 11048891 + | Burgess-HIV-HeLa-01a12 11048891 # # [4] chr7 12167895 + | Burgess-MLV-HeLa-nj08f04 12167895 # # [5] chr7 12503464——| Burgess-MLV-HeLa-nj15c02 12503464 # # [6] chr7 12726532 + | Burgess-MLV-HeLa-nj19e04 12726532 # #杆支持病毒X3pNearestGeneDist # # <人物><人物> <人物> <整数> # # [1]chr7 - MLV -34997 # # [2] chr7 - MLV 794 # # [3] chr7 +艾滋病毒-60916 # # [4]chr7 + MLV -75519 # # [5] chr7 - MLV -156289 # # [6] chr7 + MLV 29449 # # X3pNearestGene X3pNearestGeneOrt # # <人物> <人物> # # [1]INTS1 - # # [2] PSMG3 - # # [3] PHF14 + # # [4] TMEM106B + # # [5] SCIN + # # [6] ARL4A + ## ------- ## seqinfo: 27因基因组序列;没有seqlengths
##获取基因的中点nearestGenes <- getNearestFeature(alldata。理查德·道金斯,基因。rd, "NearestGene", side = "中点")head(nearestGenes)
GRanges对象有6个范围和8个元数据列:# # seqnames范围链|序列位置# # < Rle > < IRanges > < Rle > | <人物> <数字> # # [1]chr7 1511435——| Burgess-MLV-HeLa-nj09f06 1511435 # # [2] chr7 1572700——| Burgess-MLV-HeLa-nj12h11 1572700 # # [3] chr7 11048891 + | Burgess-HIV-HeLa-01a12 11048891 # # [4] chr7 12167895 + | Burgess-MLV-HeLa-nj08f04 12167895 # # [5] chr7 12503464——| Burgess-MLV-HeLa-nj15c02 12503464 # # [6] chr7 12726532 + | Burgess-MLV-HeLa-nj19e04 12726532 # #杆支持病毒midpointNearestGeneDist # # <人物><人物> <人物> <整数> # # [1]chr7 - MLV -17944 # # [2] chr7 - MLV 2124 # # [3] chr7 +艾滋病毒3968 # # [4]chr7 + MLV -62498 # # [5] chr7 - MLV -114776 # # [6] chr7 + MLV 31248 # # midpointNearestGene midpointNearestGeneOrt # # <人物> <人物> # # [1]INTS1 - # # [2] PSMG3 - # # [3] PHF14 + # # [4] TMEM106B + # # [5] SCIN + # # [6] ARL4A + ## ------- ## seqinfo: 27因基因组序列;没有seqlengths
###获得两个最近的上游和下游基因相对查询nearestTwoGenes <- get2NearestFeature(alldata。理查德·道金斯,基因。理查德·道金斯,“NearestGene”)
u =上游,d =下游
# #思想概念:u2 u1……intSite(+)…d1, d2
# #思想概念:d2 d1……intSite(-)…u1, u2
# # u1
# # u2
# # d1
# # d2
头(nearestTwoGenes)
GRanges对象有6个范围和17个元数据列:链|序列位置# # # # seqnames范围< Rle > < IRanges > < Rle > | <人物> <数字> # # [1]chr7 1511435——| Burgess-MLV-HeLa-nj09f06 1511435 # # [2] chr7 1572700——| Burgess-MLV-HeLa-nj12h11 1572700 # # [3] chr7 11048891 + | Burgess-HIV-HeLa-01a12 11048891 # # [4] chr7 12167895 + | Burgess-MLV-HeLa-nj08f04 12167895 # # [5] chr7 12503464——| Burgess-MLV-HeLa-nj15c02 12503464 # # [6] chr7 12726532 + | Burgess-MLV-HeLa-nj19e04 12726532 # #支持病毒从而向# # <人物> <人物> <人物>## [1] chr7 - MLV ## [2] chr7 - MLV ## [3] chr7 + HIV ## [4] chr7 + MLV ## [5] chr7 - MLV ## [6] chr7 + MLV ## any . nearestgene . upstream1。Dist Either.NearestGene。upStream1 ## ## [1] -891 INTS1 ## [2] 794 PSMG3 ## [3] -60916 PHF14 ## [4] -49477 tmem106b# # [5] -73263 SCIN ## [6] 29449 ARL4A ##任意。支持Either.NearestGene.upStream2。区域## <字符> <整数> ##[1]- 36961 ##[2]- 249253 ##[3]+ 1406919 ##[4]+ -49477 ##[5]+ -92208 ##[6]+ 29449 ##任一个nearestgene。upStream2 Either.NearestGene.upStream2。TMEM184A - ## [2] MAD1L1 - ## [3] PER4 + ## [5] SCIN + ## [6] ARL4A + ## any . nearestgene . downstream1。Dist Either.NearestGene。downStream1 ## ## [1] -45800 MICALL2 ## [2] 794 PSMG3 ## [3] 68851 PHF14 ## [4] -49477 tmem106b# # [5] 260050 tmem106b# # [6] 29449 ARL4A ##任意。支持# # <人物> # # # # [1]- [2]- + # # # # [3][4]+ + # # # # [5][6]+ # # Either.NearestGene.downStream2。Dist Either.NearestGene。-1168481 tmem106b# # [2] -408832 SCIN ## [5] 260050 tmem106b# # [6] 29449 ARL4A ##任意。支持# # <人物> # # # # [1]- [2]- # # [3]+ + # # # # [4][5]+ [6 # # ] + ## ------- ## seqinfo: 27因基因组序列;没有seqlengths
给定一个查询对象和窗口大小(s),该函数查找subject中距离<=窗口大小/2的所有行。如果将权重分配给主题中的每个位置,则计数将相应地乘以。如果注释对象很大,跨度超过1亿行,则getFeatureCountsBig ()
使用,它使用中点并删除指定的任何权重列以完成工作。这个函数的时间复杂度可以在findOverlaps ?
.
geneCounts <- getfeatucounts (alldata. geneCounts。理查德·道金斯,基因。rd, "NumOfGene") head(geneCounts)
GRanges对象有6个范围和8个元数据列:# # seqnames范围链|序列位置# # < Rle > < IRanges > < Rle > | <人物> <数字> # # [1]chr7 1511435——| Burgess-MLV-HeLa-nj09f06 1511435 # # [2] chr7 1572700——| Burgess-MLV-HeLa-nj12h11 1572700 # # [3] chr7 11048891 + | Burgess-HIV-HeLa-01a12 11048891 # # [4] chr7 12167895 + | Burgess-MLV-HeLa-nj08f04 12167895 # # [5] chr7 12503464——| Burgess-MLV-HeLa-nj15c02 12503464 # # [6] chr7 12726532 + | Burgess-MLV-HeLa-nj19e04 12726532 # #杆NumOfGene支持病毒。1 kb NumOfGene。10Kb ## <字符> <字符> <字符> ## [1] chr7 - MLV 0 1 ## [2] chr7 - MLV 0 5 ## [3] chr7 + HIV 2 2 ## [4] chr7 + MLV 0 0 ## [5] chr7 - MLV 0 0 ## [6] chr7 + MLV 0 0 ## NumOfGene。1Mb ## ## [1] 24 ## [2] 22 ## [3] 4 ## [4] 6 ## [5] 8 ## [6] 8 ## ------- ## seqinfo:来自未指定基因组的27个序列;没有seqlengths
# geneCounts <- getfeatucounts (alldata. # alldata. #理查德·道金斯,基因。rd, "NumOfGene", parallel=TRUE)
如果处理非常大的输入对象集,则该函数可以使用chunkSize
参数。这在尝试在普通笔记本电脑/机器上注释ChipSeq数据时非常方便。也有getFeatureCountsBig ()
函数,该函数使用另一种方法来获取使用的计数findInterval
.
geneCounts <- getfeatucounts (alldata. geneCounts。理查德·道金斯,基因。rd, "NumOfGene", doInChunks = TRUE, chunkSize = 100) head(geneCounts) geneCounts <- getfeatuenumtsbig (alldata. size = 100)理查德·道金斯,基因。rd, "NumOfGene") head(geneCounts)
当在基因组上下文中使用时,该函数用信息注释感兴趣的基因组位置,例如它们是否在基因或cpg岛中,或在主题中提供的任何注释。
##显示在哪个特征中找到了一个位置。InGenes <- getSitesInFeature(alldata。理查德·道金斯,基因。rd, "InGene")头(InGenes)
GRanges对象,包含6个范围和7个元数据列:# # seqnames范围链|序列位置# # < Rle > < IRanges > < Rle > | <人物> <数字> # # [1]chr7 1511435——| Burgess-MLV-HeLa-nj09f06 1511435 # # [2] chr7 1572700——| Burgess-MLV-HeLa-nj12h11 1572700 # # [3] chr7 11048891 + | Burgess-HIV-HeLa-01a12 11048891 # # [4] chr7 12167895 + | Burgess-MLV-HeLa-nj08f04 12167895 # # [5] chr7 12503464——| Burgess-MLV-HeLa-nj15c02 12503464 # # [6] chr7 12726532 + | Burgess-MLV-HeLa-nj19e04 12726532 # #杆支持病毒InGene InGeneOrt # # <人物><字符> <字符> <字符> <字符> ## [1]chr7 - MLV FALSE ## [2] chr7 - MLV FALSE ## [3] chr7 + HIV PHF14 + ## [4] chr7 + MLV FALSE ## [5] chr7 - MLV FALSE ## [6] chr7 + MLV FALSE ## ------- # seqinfo:来自未指定基因组的27个序列;没有seqlengths
##简单地显示TRUE/FALSE InGenes <- getSitesInFeature(alldata。理查德·道金斯,基因。rd, "InGene", asBool = TRUE) head(InGenes)
GRanges对象,包含6个范围和6个元数据列:# # seqnames范围链|序列位置# # < Rle > < IRanges > < Rle > | <人物> <数字> # # [1]chr7 1511435——| Burgess-MLV-HeLa-nj09f06 1511435 # # [2] chr7 1572700——| Burgess-MLV-HeLa-nj12h11 1572700 # # [3] chr7 11048891 + | Burgess-HIV-HeLa-01a12 11048891 # # [4] chr7 12167895 + | Burgess-MLV-HeLa-nj08f04 12167895 # # [5] chr7 12503464——| Burgess-MLV-HeLa-nj15c02 12503464 # # [6] chr7 12726532 + | Burgess-MLV-HeLa-nj19e04 12726532 # #杆支持病毒InGene # # <人物> <人物><字符> <逻辑> [1]chr7 - MLV错误## [2]chr7 - MLV错误## [3]chr7 + HIV TRUE ## [4] chr7 + MLV错误## [5]chr7 - MLV错误## [6]chr7 + MLV错误## ------- ## seqinfo:来自未知基因组的27个序列;没有seqlengths
# InGenes <- getSitesInFeature(alldata。理查德·道金斯,基因。rd, "InGene", asBool=TRUE, parallel=TRUE)
这是一个包装器函数,它根据注释类型参数调用上面所示的函数之一:within、nearest、twoonearest、counts、countsBig。您还可以传递任何函数,以便对结果对象进行任何后期处理步骤的调用。
doAnnotation(注释类型= "within", alldata.)理查德·道金斯,基因。rd, "InGene") doAnnotation(注释类型= "counts", alldata。理查德·道金斯,基因。rd, "NumOfGene") doAnnotation(注释类型= "countsBig", alldata. d)理查德·道金斯,基因。rd, "ChipSeqCounts") doAnnotation(注释类型= "最近的",alldata。理查德·道金斯,基因。doAnnotation(注释类型= "两个最近的基因",alldata. d, "最近的基因")理查德·道金斯,基因。rd, "TwoNearestGenes") geneCheck <- function(x, wanted) {x$isWantedGene <- x$InGene %in% wanted;return(x)} doAnnotation(注释类型= "within", alldata. return(x)} doAnnotation(注释类型= "within", alldata.)理查德·道金斯,基因。rd, "InGene", postProcessFun = geneCheck, postProcessFunArgs = list("wanted" = c("FOXJ3", "SEPT9", "RPTOR"))))
hiAnnotator
附带一个方便的绘图功能plotdisFeature
总结并绘制新标注数据的分布。函数可以用来方便地可视化诸如基因TSS周围整合位点的分布,不同窗口大小的基因密度等。
res <- doAnnotation(注释类型= "within", alldata. res <- doAnnotation(注释类型= "within", alldata. res)理查德·道金斯,基因。rd, "InGene", asBool = TRUE) plotdisFeature(res, "病毒","InGene")
##执行布尔值汇总
res <- doAnnotation(注释类型= "最近的",alldata. res <- doAnnotation(注释类型= "最近的",alldata. res)理查德·道金斯,基因。rd, "最近的基因",side = '5p') plotdisFeature(res, "病毒"," x5p最近的基因dist ")
##警告:因素“距离”包含隐式NA,请考虑使用##“forcats::fct_explicit_na”
Data (sites.ctrl) sites$type <- "expr" sites <- rbind(sites,sites.ctrl) alldata。rd <- makeGRanges(sites, soloStart = TRUE) res <- doAnnotation(annotType = "within", alldata. rd <- makeGRanges(sites, soloStart = TRUE)理查德·道金斯,基因。rd, "InGene", asBool = TRUE) plotdisFeature(res, "病毒","InGene")
##执行布尔值汇总
plotdisFeature(res, "病毒","InGene", typeRatio = TRUE)
##执行布尔值汇总
1)根据机器/操作系统加载以下库之一:doMC
,doSMP
,doSNOW
,doMPI
2)注册并行后端使用registerDoXXXX ()
函数,取决于库。请看下面的例子:
##示例1:library(doSMP) w <- startWorkers(2) registerDoSMP(w) getNearestFeature(…例2:library(doMC) registerDoMC(2) getNearestFeature(…,平行= TRUE)## Example 3: library(doSNOW) cl <- makeCluster(2, type = "SOCK") registerDoSNOW(cl) getNearestFeature(..., parallel = TRUE) ## Example 4: library(doParallel) cl <- makeCluster(2) registerDoParallel(cl) getNearestFeature(..., parallel = TRUE)
3)很少有后端会在后台启动工作进程,所以一定要关闭它们。阅读相应的文档做*
软件包以获取更多信息。下面给出了几个例子。
对于doSMP库,使用stopWorkers (w)
对于doSNOW和dopar列库,使用stopCluster (cl)