本课程的材料要求R版本3.2和Bioconductor版本3.2
stopifnot(getRversion() >= '3.2' && getRversion() < '3.3', BiocInstaller::biocVersion() == "3.2")
本节重点介绍类、方法和包,目标是学习如何导航帮助系统和交互式发现工具。
序列分析是专门的
额外的注意事项
解决方案:使用定义良好的类表示复杂数据;方法操作类以执行有用的功能。类和方法放在一起并作为包这样我们就可以从其他人的辛勤工作和测试代码中受益。
VariantAnnotation | v GenomicFeatures | v BSgenome | v rtracklayer | v GenomicAlignments | | v v summarizeexperimental Rsamtools ShortRead | | | | v v v v v v v v GenomicRanges Biostrings | | v v GenomeInfoDb (XVector) | | v v IRanges | v (S4Vectors)
的IRangesPackage定义了一个用于指定整数范围的重要类,例如:
- IRanges(start=c(10,20,30), width=5
长度3 ##开始结束宽度## [1]10 14 5 ## [2]20 24 5 ## [3]30 34 5
在范围上可以执行许多有趣的操作,例如,侧面()
识别相邻范围
侧面(ir, 3)
长度3 ##开始结束宽度## [1]7 9 3 ## [2]17 19 3 ## [3]27 29 3
的IRanges
类是类层次结构的一部分。要看到这个,向R询问类红外
类的类定义IRanges
类
类(红外)
# #[1]“IRanges”# # attr(“包”)# #[1]“IRanges”
getClass(类(ir))
##类“IRanges”[包“IRanges”]## ##槽位:## ##名称:起始宽度NAMES elementType elementMetadata ##类:整数整数characterORNULL字符DataTableORNULL ## ##名称:元数据##类:列表## ##扩展:##类“范围”,直接##类“IntegerList”,由类“范围”,距离2 ##类“RangesORmissing”,由类“范围”,距离2 ##类“AtomicList”,由类“范围”,距离3 ##类“列表”,由类“范围”,距离4 ##类“矢量”,由类“范围”,距离5 ##类“注解”,由类“范围”,距离6 ## ##已知子类:“NormalIRanges”
请注意,IRanges
扩展了范围
类。显示
现在试着进入?旁边
(如不使用RStudio,输入?”旁边,<选项卡> "
在哪里<选项卡>
意思是按TAB键要求TAB补全)。你可以看到有帮助页面侧面
操作几个不同的类。选择补全
?”旁边,Ranges-method”
并验证您所处的页面描述的方法与IRanges
实例。探索其他基于范围的操作。
的GenomicRangesPackage扩展了范围的概念,以包括与序列分析中范围应用相关的特性,特别是将范围与序列名(例如,染色体)和链相关联的能力。创建一个农庄
实例,该实例基于IRanges
实例,如下所示
库(GenomicRanges) gr < -农庄(c(“chr1”、“chr1”,“chr2”),红外光谱、链= c ("+", "-", "+")) gr
## seqnames ranges strand ## ## [1] chr1 [10,14] + ## [2] chr1 [20,24] - ## [3] chr2 [30,34] + ## ------- ## seqinfo:来自未指定基因组的2个序列;没有seqlengths
侧翼序列的概念在生物学上有更微妙的含义。特别是我们可能期望侧翼序列在+
链在值域之前,负链在值域之后。验证侧面
适用于农庄
对象具有此行为。
侧面(gr, 3)
## seqnames ranges strand ## ## [1] chr1 [7,9] + ## [2] chr1 [25,27] - ## [3] chr2 [27,29] + ## ------- ## seqinfo:来自未指定基因组的2个序列;没有seqlengths
发现哪些类农庄
扩展,找到记录的行为的帮助页侧面
当应用于农庄
对象,
似乎有一些有用的方法可以用于基因组范围的研究;我们可以从命令行中发现其中一些,这表明这些方法应该是当前的search ()
路径
方法(class = "农庄”)
# #总anyNA [1] <= < ## [ 5 ] == >= > != ## [ 9)追加。字符为。complex as。data.frame ## [13] as。env。因式为。integer为。列出##[17]为。逻辑。数字。[37] elementMetadata<- elementMetadata end<- end ## [41] eval expand export extractROWS ## [45] extractUpstreamSeqs findOverlaps side follow ## [49] gap [<- [$<- # [53] $ getPromoterSeq granges head ## [57] high2low %in% intersect isDisjoint ## [61] length length liftOver mapCoords ## [65]mapfromalments mapFromTranscripts mapToAlignments mapToTranscripts ## [69] match mcols<- mcols metadata<- # [73] metadata mstack names<- names ## [77] narrow nearest NROW Ops ## [81] order overlapsAny parallelSlotNames parallelVectorNames ## [85] pgap pintersect pmapcods pmapfromalments ## [89] pmapFromTranscripts pmapToAlignments pmapToTranscripts precede ## [93] promoters psetdiff punion range ## [101] ranges<- ranges rank reduce ## relistToClass relist rename rep.int ## [105]replaceROWS rep resize restrict ## [109] rev ROWNAMES rowRanges<- ScanBamParam ## [113] ScanBcfParam scanFa scanTabix score<- ## [117] score seqinfo<- seqinfo seqlevelsInUse ## [121] seqnames<- seqnames setdiff shiftApply ## [125] shift showAsCell show sort ## [129] split split<- start<- start ## [133] strand<- strand subsetByOverlaps子集## [137]summarizeOverlaps表尾tapply ## [141] tile trim union unique ## [145] update updateObject values<- values ## [149] width<- width window<-窗口##[153]与XTFRM ##见'?方法' for accessing help and source code
注意可用的侧面()
方法中定义的方法进行了扩展GenomicRanges包,包括那些(通过继承)与农庄类。
grep("侧翼",方法(类="GRanges"),值=TRUE)
##[1] "侧翼,基因组范围-方法"
验证帮助页是否记录了我们刚刚观察到的行为。
?”旁边,GenomicRanges-method”
使用帮助()
中列出帮助页GenomicRanges
包,小插曲()
查看和访问可用的小插图;这些也可以在Rstudio的“帮助”选项卡中找到。
帮助(包=“基因组范围”)小插图(包=“基因组范围”)小插图(包=“基因组范围”,“基因组范围”)
农庄
而且GRangesList
类另外:“TxDb”包提供了基因模型的R表示
txdb <- txdb . hsapiens . ucsc .hg19. knowngene . library(txdb . hsapiens . ucsc .hg19. knowngene
外显子()
:农庄
外显子(txdb)
## seqnames ranges strand | exon_id ## | ## [1] chr1 [11874, 12227] + | 1 ## [2] chr1 [12595,12721] + | 2 ## [3] chr1 [126136,12721] + | 3 ## [4] chr1 [12646,12697] + | 4 ## [5] chr1 [13221, 14409] + | 5 ## ... ... ... ... ... ...## [289965] chrUn_gl000241 [35706, 35859] - | 289965 ## [289966] chrUn_gl000241 [36711, 36875] - | 289966 ## [289967] chrUn_gl000243 [11501, 11530] + | 289967 ## [289968] chrUn_gl000243 [13608, 13637] + | 289968 ## [289969] chrUn_gl000247 [5787, 5816] - | 289969 ## ------- # seqinfo: hg19基因组93个序列(1个循环)
exonsBy ()
:GRangesList
exonsBy (txdb tx)
## seqnames ranges strand | exon_id exon_name exon_rank ## | ## [1] chr1 [11874,12227] + | 1 1 ## [2] chr1 [12613,12721] + | 3 2 ## [3] chr1 [13221, 14409] + | 5 3 ## ## $2 ## # GRanges对象有3个范围和3个元数据列:# # seqnames范围链| exon_id exon_name exon_rank # # [1] chr1(11874、12227)+ | 1 < NA > 1 # # [2] chr1(12595、12721)+ | 2 < NA > 2 # # [3] chr1(13403、14409)+ | 6 < NA > 3 # # # # # # 3美元农庄对象与范围和3元数据列:# # seqnames范围链| exon_id exon_name exon_rank # # [1] chr1(11874、12227)+ | 1 < NA > 1 # # [2] chr1(12646、12697)+ | 4 < NA > 2 # # [3] chr1(13221、14409)+ | 5 < NA > 3 ## ## ...## <82957更多元素> ## ------- ## seqinfo: 93个序列(1个循环)来自hg19基因组
农庄/GRangesList非常有用
许多生物学上有趣的问题代表了范围上的运算
GenomicRanges: summarizeOverlaps ()
GenomicRanges::最近的()
[ChIPseeker] []农庄代数
转变()
,狭窄的()
,侧面()
,发起人()
,调整()
,限制()
,削减()
" ? intra-range-methods
range ()
,reduce ()
,空白()
,分离()
覆盖()
(!)" ? inter-range-methods
findOverlaps ()
,countOverlaps ()
、……% / %
,%在%
,% %外
;联盟()
,相交()
,setdiff ()
,punion ()
,pintersect ()
,psetdiff ()
类
方法- - - - - -
reverseComplement ()
letterFrequency ()
matchPDict ()
,matchPWM ()
相关的包
例子
全基因组序列由ENSEMBL、NCBI和其他机构以FASTA文件的形式分发;模式生物全基因组序列被包装成更用户友好的BSgenome
包。下面计算跨chr14的GC内容。
库(BSgenome.Hsapiens.UCSC.hg19) chr14_range = GRanges("chr14", IRanges(1, seqlength (Hsapiens)["chr14"])) chr14_dna <- getSeq(Hsapiens, chr14_range) letterFrequency(chr14_dna, "GC", as.prob=TRUE)
## g | c ## [1,] 0.336276
类——像基因组一样的行为
方法
readGAlignments ()
,readGAlignmentsList ()
summarizeOverlaps ()
例子
在14号染色体的19653707 + 66M = 19653773位置找到支持上述连接的reads
library(GenomicRanges) library(GenomicAlignments) library(Rsamtools) ##我们的“感兴趣的区域”roi <- GRanges(“chr14”,IRanges(19653773, width=1)) ##样本数据库('RNAseqData.HNRNPC.bam.chr14') bf <- BamFile(RNAseqData.HNRNPC.bam。chr14_BAMFILES[[1]], asMates=TRUE) ##对齐,连接,重叠我们的roi paln <- readGAlignmentsList(bf) j <- summarizejoins (paln, with.revmap=TRUE) j_overlap <- j[j %over% roi] ##支持读取paln[j_overlap$revmap[[1]]]
##长度为8的GAlignmentsList对象:## [[1]]## GAlignments对象,2对齐和0元数据列:## seqnames strand cigar qwidth开始结束宽度njunc# # [1] chr14 - 66M120N6M 72 19653707 19653898 192 1 ## [2] chr14 + 7m1270n65m72 19652348 19653689 1342 1 ## ## [[2]] ## GAlignments对象,2对齐和0元数据列:## seqnames绞线雪茄qwidth开始结束宽度njunc# # [1] chr14 - 66M120N6M 72 19653707 19653898 192 1 ## [2] chr14 + 72M 72 19653686 19653757 72 0 ## ## [[3]] ## GAlignments对象2对齐和0元数据列:## seqnames绞线雪茄qwidth开始结束宽度njunc# # [1] chr14 + 72M 72 19653675 19653746 72 0 ## [2] chr14 - 65M120N7M 72 19653708 19653899 192 1 ## ##…## <5个更多的元素> ## ------- ## seqinfo:来自未知基因组的93个序列
类——类似基因组范围的行为
函数和方法
readVcf ()
,readGeno ()
,readInfo ()
,readGT ()
,writeVcf ()
,filterVcf ()
locateVariants ()
(变量重叠范围),predictCoding ()
,summarizeVariants ()
genotypeToSnpMatrix ()
,snpSummary ()
例子
从VCF文件中读取变体,并对已知的基因模型进行注释
##输入变量库(VariantAnnotation) fl <-系统。file("extdata", "chr22. vcfens .gz", package="VariantAnnotation") vcf <- readVcf(fl, "hg19") seqlevels(vcf) <- "chr22" ##已知基因模型库(TxDb.Hsapiens.UCSC.hg19. knowngene) coding <- locateVariants(rowRanges(vcf), TxDb.Hsapiens.UCSC.hg19. hg19. hg19. hg19. vcf)knownGene, codingvariations())头(编码)
GRanges对象有6个范围和9个元数据列:# # seqnames范围链|位置LOCSTART LOCEND QUERYID TXID # # < Rle > < IRanges > < Rle > | <因素> <整数> <整数> <整数> <人物> # # 1 chr22(50301422、50301422)- |编码939 939 24 75253 # # 2 chr22(50301476、50301476)25 - |编码885 885 75253 # # 3 chr22(50301488、50301488)26 - |编码873 873 75253 # # 4 chr22(50301494、50301494)27 - |编码867 867 75253 # # 5 chr22(50301584、50301584)28 - |编码777 777 75253 # # 6 chr22 (50302962,50302962] - |编码698 698 57 75253 ## CDSID GENEID preferdeid FOLLOWID ## ## 1 218562 79087 ## 2 218562 79087 ## 3 218562 79087 ## 4 218562 79087 ## 5 218562 79087 ## 6 218563 79087 ## ------- ## seqinfo: 1个来自未指定基因组的序列;没有seqlengths
相关的包
参考
进口()
: BED, GTF, WIG, 2bit等export ()
: GRanges to BED, GTF, WIG,…函数和方法
分析()
/分析()
,rowData ()
/rowRanges ()
,colData ()
,元数据()
subsetByOverlaps ()
GenomicAlignments
召回:整体工作流程
对齐读取的BAM文件
头
@HD VN:1.0 SO:坐标@SQ SN:chr1 LN:249250621 @SQ SN:chr10 LN:135534747 @SQ SN:chr11 LN:135006516…@SQ号:chrY LN:59373566 @PG ID:TopHat VN:2.0.8b CL:/home/hpages/ TopHat -2.0.8b。Linux_x86_64/tophat——match -inner-dist 150——solexa-quals——max-multihits 5——no- disdant——no-mixed——covere -search——microexon-search——libraries -type fr- un——num-threads 2——output-dir tophat2_out/ERR127306 /home/hpages/ bowtib2 -2.1.0/indexes/hg19 fastq/ERR127306_1。fastq fastq / ERR127306_2.fastq
ID,旗帜,对中和同伴
ERR127306.7941162 403 chr14 19653689 3 72M = 19652348 -1413…ERR127306.22648137 145 chr14 19653692 1 72M = 19650044 -3720…
顺序与质量
...GAATTGATCAGTCTCATCTGAGAGTAACTTTGTACCCATCACTGATTCCTTCTGAGACTGCCTCCACTTCCC *'%%%%%#&&%''#'&%%%)&&%%$%%'%%'&*****$))$)'')'%)))&)%%%%$'%%%%&"))'')%)) ...TTGATCAGTCTCATCTGAGAGTAACTTTGTACCCATCACTGATTCCTTCTGAGACTGCCTCCACTTCCCCAG '**)****)*'*&*********('&)****&***(**')))())%)))&)))*')&***********)****
标签
...AS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 NM:i:0 MD:Z:72 YT:Z:UU NH:i:2 CC:Z:chr22 CP:i:16189276 HI:i:0…AS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 NM:i:0 MD:Z:72 YT:Z:UU NH:i:3 CC:Z:= CP:i:19921600 HI:i:0
通常情况下,排序(按位置)和索引('。白的文件)
使用一个示例BAM文件(fl
可以是您自己的BAM文件的路径)
##示例BAM数据库(RNAseqData.HNRNPC.bam.chr14)让R知道这是一个BAM文件,而不仅仅是一个字符向量库(Rsamtools) bfl <- BamFile(fl)
将数据输入R
aln <- readGAlignments(bfl) aln . aln
与800484年# # GAlignments对象对齐和0元数据列:# # seqnames链雪茄qwidth开始结束宽度njunc # # < Rle > < Rle > <人物> <整数> <整数> <整数> <整数> <整数> # # [1]chr14 + 72 72 19069583 19069654 72 0 # # [2] chr14 + 72 72 19363738 19363809 72 0 # # [3] chr14 - 72 72 19363755 19363826 72 0 # # [4] chr14 + 72 72 19369799 19369870 72 0 # # [5] chr14 - 72 72 19369828 19369899 72 0 ## ... ... ... ... ... ... ... ... ...[800480] chr14 - 72M 72 106989780 106989851 72 0 ## [800481] chr14 + 72M 72 106994763 106994834 72 0 ## [800482] chr14 - 72M 72 106994819 106994890 72 0 ## [800483] chr14 + 72M 72 107003080 107003151 72 0 ## [800484] chr14 - 72M 72 107003171 107003242 72 0 ## ------- # seqinfo:来自未知基因组的93个序列
readGAlignmentPairs ()
/readGAlignmentsList ()
如果对端数据方法(类=类(aln))
# #总anyNA [1] <= < ## [ 5 ] == >= > != ## [ 9)追加。字符为。complex as。data.frame ## [13] as。Env as.integer as。列表。逻辑## [17]as。数字。[37] grglist head high2low %in% ##[41]结点长度长度mapCoords ## [45] mapFromAlignments mapToAlignments匹配mcols< # [49] mcols元数据<-元数据mstack ## [53] names<- names narrow njunc ## [57] NROW overlapsAny parallelSlotNames pintersect ## [61]pmapcods pmapfromalments pmapToAlignments qnarrow ## [65] qwidth ranges rank relistToClass ## [69] relist rename rep.int replaceROWS ## [73] rep rev rglist rname<- ## [77] rname ROWNAMES seqinfo<- seqinfo ## [81] seqlevelsInUse seqnames<- seqnames shiftApply ## [85] showAsCell show sort split ## [89] split<- start strand<- strand ## [93] subsetByOverlaps子集summarizeOverlaps表## [101]updateObject values<- values [<- ## [105] [width window<-窗口##[109]与XTFRM ##见'?方法' for accessing help and source code
购者自慎: BAM文件过大。通常你会限制输入特定的基因组范围,或迭代通过BAM文件。关键Bioconductor函数(例如,GenomicAlignments: summarizeOverlaps ()
为您执行此数据管理步骤。请参阅下一节!
确认
核心(西雅图):Sonali Arora, Marc Carlson, Nate Hayden, Jim Hester, Valerie Obenchain, Hervé Pagès, Paul Shannon, Dan Tenenbaum。
本报告中报告的研究得到了美国国家癌症研究所和美国国立卫生研究院国家人类基因组研究所的支持,奖励编号为U24CA180996和U41HG004059,以及美国国家科学基金会的支持,奖励编号为1247813。内容仅为作者的责任,并不一定代表美国国立卫生研究院或国家科学基金会的官方观点。
sessionInfo ()
sessionInfo ()
## R版本3.2.2(2015-08-14)##平台:x86_64-pc-linux-gnu(64位)##运行在Debian GNU/Linux stretch/sid ## ##语言环境:## [1]LC_CTYPE=en_US。UTF-8 LC_NUMERIC=C LC_TIME=en_US。UTF-8 ## [4] LC_COLLATE=en_US。utf - 8 LC_MONETARY = en_US。utf - 8 LC_MESSAGES = en_US。UTF-8 ## [7] LC_PAPER=en_US。UTF-8 LC_NAME=C LC_ADDRESS= c# # [10] lc_phone =C LC_MEASUREMENT=en_US。UTF-8 LC_IDENTIFICATION=C ## ##附加的基本包:## [1]stats4并行统计图形grDevices utils数据集方法基础## ##其他附加包:# # # # [1] VariantAnnotation_1.15.34 RNAseqData.HNRNPC.bam.chr14_0.7.0 [3] GenomicAlignments_1.5.18 Rsamtools_1.21.21 # # [5] ALL_1.11.0 org.Hs.eg.db_3.2.3 # # [7] RSQLite_1.0.0 DBI_0.3.1 # # [9] ggplot2_1.0.1 airway_0.103.1 # # [11] limma_3.25.18 DESeq2_1.9.51 # # [13] RcppArmadillo_0.6.100.0.0 Rcpp_0.12.1 # # [15] BSgenome.Hsapiens.UCSC.hg19_1.4.0 BSgenome_1.37.6 # # [17] rtracklayer_1.29.28 TxDb.Hsapiens.UCSC.hg19.knownGene_3.2.2 # # [19] GenomicFeatures_1.21.33 AnnotationDbi_1.31.19 # # [21][23] genome icranges_1 .21.32 GenomeInfoDb_1.5.16 ## [25] microbenchmark_1.4-2 Biostrings_2.37.8 ## [27] XVector_0.9.4 IRanges_2.3.26 ## [29] S4Vectors_0.7.23 BiocGenerics_0.15.11 ## [31] BiocStyle_1.7.9 ## ##通过命名空间加载(并且没有附加):[1] splines_3.2.2 Formula_1.2-1 latticeExtra_0.6-26 yaml_2.1.13 ## [5] lattice_0.20-33 digest_0.6.8 RColorBrewer_1.1-2 colorspace_1.2-6 ## [9] sandwich_2.3-4 htmltools_0.2.6 plyr_1.8.3 XML_3.98-1.3 ## [13] biomaRt_2.25.3 genefilter_1.51.1 zlibbioc_1.15.0 xtable_1.7-4 ## [17] mvtnorm_1.0-3 scales_0.3.0 BiocParallel_1.3.54 annotate_1.47.4 ## [21] TH.data_1.0-6 nnet_7.3-11 proto_0.3-10 survival_2.38-3 ## [29] magrittr_1. 1.5 evaluate_0.8 MASS_7.3-44 foreign_0.8-66 ## [29] BiocInstaller_1.19.14tools_3.2.2 formatR_1.2.1 multcomp_1. 1-1 ## [33] stringplotter_1 .0.0 munsell_0.4.2 locfit_1. 1- 9.1 cluster_2.0.3 ## [37] lambda.r_1.1.7 futile.logger_1.4.1 grid_3.2.2 RCurl_1.95-4.7 ## [41] labeling_0.3 bitops_1.0-6 rmarkdown_0.8.1 gtable_0.1.2 ## [45] codetools_0.2-14 reshape2_1.4.1 gridExtra_2.0.0 zoo_1. 12 ## [49] knitr_1.11 Hmisc_3.17-0 futile.options_1.0.0 stringi_0.5-5 ## [53] geneplotter_1.47.0 rpart_1 .1-10 acepack_1. 3.3