VCF
对象。一个闪亮的网络应用,闪亮的变种浏览器(tSVE),提供了一个方便的界面,以展示在一个无需编程的环境中集成的功能。TVTB 1.24.0
VCF工具箱(TVTB)提供S4类和方法来筛选、总结和可视化存储在VCF文件中的遗传变异数据整体变异效应预测器(VEP)(McLaren et al. 2010).一个RStudio /闪亮的web应用程序、Shiny Variant Explorer (tSVE),提供了一个方便的界面,以展示在一个无需编程的环境中集成的功能。
的主要功能TVTB包包括:
存储遗传分析循环参数的一类
基因型计数和等位基因频率
ExpandedVCF
对象(即。bi-allelic记录)VCF过滤规则的类
固定
槽位号VCF
对象信息
槽位号VCF
对象VCF
使用上述筛选规则的对象中的大部分功能TVTB需要经常性的信息,例如:
<表型> _ <水平> _ <后缀>
,> <后缀
.为了减少编程过程中的重复负担,并便于使用一致的参数集进行分析,TVTB实现了TVTBparam
类。的TVTBparam
类提供了一个容器,用于在包中循环使用的参数。一个TVTBparam
对象可以按如下方式初始化:
tparam <- TVTBparam(基因型(ref = "0|0", het = c("0|1", "1|0", "0|2", "2|0", "1|2", "2|1"), alt = c("1|1", "2|2")), ranges = GenomicRanges::GRangesList(SLC24A5 = GenomicRanges::GRanges(seqnames = "15", IRanges::IRanges(start = 48413170, end = 48434757))))
TVTBparam
对象有一个方便的摘要视图和访问方法:
tparam
##类:TVTBparam ## @genos:类:基因型## @ref (homm。ref):“ref”{0 | 0}# # @het(叫):“HET”{0 | 1 | 0,0 | 2,2 | 0,1 | 2,2 | 1}# # @alt(轨。alt.): " alt "{1| 1,2 |2} ## @范围:1 GRanges on 1 sequence(s) ## @aaf (alt.等位基因频率):"AAF" ## @maf(次要等位基因频率):"MAF" ## @vep (Ensembl VEP key): "CSQ" ## @svp: ## @bp:
在这个例子中:
基因族群(x)
基因型
“| 0”
.“REF”
.“0 | 1”
,“1 | 0”
,“0 | 2”
,“2 | 0”
,“1 | 2”
,“2 | 1”
.“HET”
.“1 | 1”
.“ALT”
.范围(x)
GRangesList
“15”
.空军联队(x)
“空军联队”
.加器(x)
“加”
.vep (x)
“CSQ”
.英国石油公司(x)
BiocParallelParam
高级副总裁(x)
ScanVcfParam
哪一个
自动填充的槽减少(unlist(范围(x)))
除了基因型外,所有插槽都提供了默认值,因为这些值在不同数据集之间可能会更频繁地变化(如。有阶段的,无阶段的,估算的)。
功能在TVTB支持CollapsedVCF
而且ExpandedVCF
对象(两者都扩展了虚类VCF
)的VariantAnnotation包中。
通常情况下,CollapsedVCF
对象由VariantAnnotationreadVcf
方法,以及ExpandedVCF
对象的结果VariantAnnotation扩大
应用于CollapsedVCF
对象。
用户认为与分析相关的任何信息都可以从VCF文件导入并存储在VCF
传递给TVTB方法。但是,要启用关键功能的包,插槽的一个VCF
对象应至少包括以下信息:
固定(x)
“REF”
而且“ALT”
.信息(x)
< vep >
:< vep >
表示INFO键,其中Ensembl VEP预测存储在VCF
对象。基因族群(x)
GT
:基因型。colData (x)
:表型。在不久的将来,TVTB预计功能将产生汇总统计数据和由元特征组成的图,每个元特征都可能由多个基因组范围组成。
例如,可以对一组转录本进行负担测试,只考虑其各自外显子集中的变体。的GenomicRangesGRangesList
类是示例中的理想容器,如每个农庄
在GRangesList
将代表一个文本,而每个元素在农庄
代表一个外显子。
此外,TVTBparam
对象可以作为参数
的参数VariantAnnotationreadVcf
.在这种情况下,TVTBparam
对象仅用于导入与相关基因组区域重叠的变体。此外,readVcf
方法也保证了vep
槽位号TVTBparam
对象出现在VCF文件的头文件中。
svp <- as(tparam, "ScanVcfParam") svp
##类:ScanVcfParam ## vcfWhich: 1个元素## vcfFixed: character()[所有]## vcfInfo: ## vcfGeno: ## vcfSamples: ## vcfSamples:
虽然VCF
对象可以在没有附加表型数据的情况下构建,表型信息对于解释和比较样本组之间的遗传变异至关重要(如。不同表型水平的损伤变异负担)。
VCF
对象接受表型信息(如S4VectorsDataFrame
)在colData
槽。这种做法的关键优势是保持表型和遗传信息同步,通过操作,如子集和重新排序,限制工作空间熵和混乱。
一个ExpandedVCF
对象,该对象包含其余小插图所需的最小数据,可以如下所示创建:
步骤1:进口表型
phenoFile <- system. txt。file("extdata", "integrated_samples.txt", package = "TVTB")表型<- S4Vectors::DataFrame(read. txt)table(file = phenoFile, header = TRUE, row.names = 1))
步骤2:定义要解析的VCF文件
vcfFile <- system. txtfile("extdata", "chr15. phase3_integrative .vcf.gz", package = "TVTB") tabixVcf <- Rsamtools::TabixFile(file = vcfFile)
步骤3:定义VCF导入参数
VariantAnnotation::vcfInfo(svp(tparam)) <- vep(tparam) VariantAnnotation::vcfGeno(svp(tparam)) <- "GT" svp(tparam)
##类:ScanVcfParam ## vcfWhich: 1 elements ## vcfFixed: character()[所有]## vcfInfo: CSQ ## vcfGeno: GT ## vcfSamples:
在上面的代码块中特别有趣的是:
TVTBparam
构造函数之前填充了哪一个
槽的高级副总裁
“减少”(即。非重叠的)基因组范围定义范围
槽。vep
插槽将被导入步骤4:导入和预处理变量
#将变量作为折叠dvcf对象导入vcf <- VariantAnnotation::readVcf(tabixVcf, param = tparam, colData = phenotypes) #扩展为一个ExpandedVCF对象(双基因记录)vcf <- VariantAnnotation:: Expand (x = vcf, row.names = TRUE)
在上面的代码块中特别有趣的是readVcf
给出方法:
TVTBparam
参数,调用相应的方法签名rownames
这些表型之一定义了从VCF文件中查询的样本标识符。colData
产生的槽VCF
对象。结果是ExpandedVCF
包括目标基因组范围内的变体和样本的对象:
## class: ExpandedVCF ## dim: 481 2504 ## rowRanges(vcf): ## GRanges with 5个元数据列:paramRangeID, REF, ALT, QUAL, FILTER ## info(vcf): ## DataFrame with 1列:CSQ ## info(header(vcf)): ## Number Type Description ## CSQ。来自Ensembl VEP的字符串结果注释。格式:等位基因…## geno(vcf): ##长度列表1:GT ## geno(header(vcf)): ##编号类型描述## GT 1字符串基因型
虽然有趣的数字和汇总表可以很快得到第一个ExpandedVCF
对象被创建(请参阅第总结整体VEP预测),这些方法可以从数据导入后添加到附加INFO键的信息中获益,这些信息可以由用户手动添加,也可以通过在TVTB包中。
例如,方法addOverallFrequencies
使用参考同形结子(裁判)、杂合子(HET),纯合子交替(ALT)基因型定义在TVTBparam
对象存储在VCF
元数据,以获得每个基因型在一个ExpandedVCF
对象。紧接着,该方法使用这些计数来计算交替等位基因频率(空军联队)和较小的等位基因频率(加).最后,该方法存储五个计算值(裁判,HET,ALT,空军联队,加中声明的后缀所定义的INFO键TVTBparam
对象。
initialInfo <- colnames(info(vcf)) vcf <- addOverallFrequencies(vcf = vcf) setdiff(colnames(info(vcf)), initialInfo)
##[1]“ref”“het”“alt”“aaf”“maf”
值得注意的是,addOverallFrequencies
方法的同义词addFrequencies
方法缺少参数。把
:
vcf <- addFrequencies(vcf = vcf, force = TRUE)
类似地,这个方法addPhenoLevelFrequencies
获得与给定表型的给定水平相关的样本中每种基因型的计数,并将计算值存储在定义为的INFO键中<把> _ <水平> _ <后缀>
类中定义的后缀TVTBparam
对象存储在VCF
元数据。
initialInfo <- colnames(info(vcf)) vcf <- addPhenoLevelFrequencies(vcf = vcf, pheno = "super_pop", level = "AFR") setdiff(colnames(info(vcf)), initialInfo)
## [1] "super_pop_AFR_REF" "super_pop_AFR_HET" "super_pop_AFR_ALT" ## [4] "super_pop_AFR_AAF" "super_pop_AFR_MAF"
值得注意的是,addPhenoLevelFrequencies
方法的同义词addFrequencies
方法把
给出一个列表的名字
是表现型,还是价值观字符
在每个表型中要处理的水平向量:
initialInfo <- colnames(info(vcf)) vcf <- addFrequencies(vcf, list(super_pop = c("EUR", "SAS", "EAS", "AMR")) setdiff(colnames(info(vcf)), initialInfo)
[1]“超级pop_eur_ref”“超级pop_eur_het”“超级pop_eur_alt”##[4]“超级pop_eur_aaf”“超级pop_sas_ref”“超级pop_sas_aaf”##[10]“超级pop_sas_maf”“超级pop_eas_ref”“超级pop_eas_het”##[13]“超级pop_eas_alt”“超级pop_eas_aaf”“超级pop_eas_maf”##[16]“超级pop_amr_ref”“超级pop_amr_het”“超级pop_amr_alt”##[19]“超级pop_amr_aaf”“超级pop_amr_alt”##[19]“超级pop_amr_aaf”“超级pop_amr_maf”##[19]“超级pop_amr_aaf”“超级pop_amr_maf”
此外,addFrequencies
方法可以给出一个字符
表型的载体为把
参数,在这种情况下计算频率所有给定表型的水平:
vcf <- addFrequencies(vcf, "pop") head(grep("^pop_[[:alpha:]]+_REF", colnames(info(vcf)), value = TRUE))
# #[1]“pop_GBR_REF”“pop_FIN_REF”“pop_CHS_REF”“pop_PUR_REF”“pop_CDX_REF”# #[6]“pop_CLM_REF”
虽然VCF
对象可以直接使用索引和行名(因为它们继承自SummarizedExperimentRangedSummarizedExperiment
类)时,用户可能希望识别基于类中的信息传递条件组合的变量固定
槽,信息
槽,和Ensembl VEP预测,一个非平凡的任务,因为这些信息被存储在不同的槽VCF
对象,而1: N变体与ensemble blvep预测之间的关系。
便于定义VCF过滤规则,并将其应用到VCF
对象,TVTB扩展了S4VectorsFilterRules
类中的四个新的过滤规则类:
类 | 动机 |
---|---|
VcfFixedRules |
对象应用的筛选规则固定 a槽位VCF 对象。 |
VcfInfoRules |
对象应用的筛选规则信息 a槽位VCF 对象。 |
VcfVepRules |
的给定INFO键中存储的集成VEP预测应用的过滤规则VCF 对象。 |
VcfFilterRules |
的组合VcfFixedRules ,VcfInfoRules ,VcfVepRules 适用于VCF 对象。 |
请注意,FilterRules
对象本身适用于VCF
对象,与上述专用类有两个重要区别:
VCF
槽VCF
插槽,例如:S4Vectors::FilterRules(list(mixed = function(x){VariantAnnotation::fixed(x)[,"FILTER"] == "PASS" & VariantAnnotation::info(x)[,"MAF"] >= 0.05}))
长度为1的FilterRules(1):混合
这些类的实例可以按如下方式初始化:
VcfFixedRules
- VcfFixedRules(list(pass = expression(FILTER == " pass "), qual = expression(qual > 20)))
##长度为2的vcffixerules (2)
VcfInfoRules
infoR <- VcfInfoRules(exprs = list(rare = expression(MAF < 0.01 & MAF > 0), common = expression(MAF > 0.05), mac_ge3 = expression(HET + 2*ALT >= 3)), active = c(TRUE, TRUE, FALSE)) infoR
VcfInfoRules长度为3 ## names(3):罕见常见mac_ge3
上面的代码块说明了的有用特性FilterRules
:
FilterRules
默认情况下在活动状态下初始化(计算一个不活跃的规则的回报真正的
所有项目)的活跃的
参数可用于初始化处于非活动状态的特定筛选规则。表达式
(或函数
的相关槽位的多个列VCF
对象。VCF
对象。VcfVepRules
vepR <- VcfVepRules(exprs = list(missense = expression(Consequence %in% c("missense_variant")), CADD_gt15 = expression(CADD_PHRED > 15)))
长度为2的VcfVepRules(2):错误理解CADD_gt15
VcfFilterRules
VcfFilterRules
将不同类型的VCF过滤规则组合在一个对象中。
vcfRules <- VcfFilterRules(fixedR, infoR, vepR) vcfRules
长度为7的VcfFilterRules (7): pass qual rare common mac_ge3 missense CADD_gt15
这个小插图只提供了VCF过滤器规则的实用性和灵活性的简要介绍。更多(复杂的)示例将在单独的小插图中给出,包括使用函数和模式匹配的筛选规则。的文件S4Vectors包——父类所在的位置FilterRules
也可以是灵感的来源。
如上类的VCF滤波规则继承S4VectorsFilterRules
类,它们也受益于它的访问器和方法。例如,VCF过滤器规则可以很容易地在激活和非激活状态之间切换:
active(vcfRules)["CADD_gt15"] <- FALSE active(vcfRules)
## pass qual稀有常见mac_ge3 missense CADD_gt15 ## TRUE TRUE TRUE TRUE TRUE FALSE TRUE FALSE
一个单独的小插图更详细地描述了包含的类的使用VCF滤波规则.
定义之后,上面的筛选规则就可以应用于ExpandedVCF
对象,以同样的方式FilterRules
在给定的环境中进行评估(请参阅S4Vectors文档):
(expr = infoR, envir = vcf))
##模式错误##逻辑481
(eval(expr = vcfRules, envir = vcf))
##模式错误##逻辑481
概要(evalseparate (expr = vcfRules, envir = vcf))
## pass qual rare common mac_ge3 ##模式:逻辑模式:逻辑模式:逻辑模式:逻辑模式:逻辑模式:逻辑模式:逻辑## TRUE:481 TRUE:481 FALSE:45 FALSE:453 TRUE:481 ## TRUE: 436 TRUE: 28 ## missense CADD_gt15 ##模式:逻辑模式:逻辑## FALSE:454 TRUE:481 ## TRUE: 27
让我们显示在每个超级种群中估计的常见变体的交替等位基因频率(AAF),在转录本覆盖感兴趣的区域的背景下。
在加
跟踪:
plotInfo(subsetByFilter(vcf, vcfRules["common"]), "AAF", range(GenomicRanges::granges(vcf)), EnsDb.Hsapiens.v75::EnsDb.Hsapiens. v75::EnsDb.Hsapiens. vcf)。V75,“super_pop”,零。rm = FALSE)
或者,错义变体的小等位基因频率(MAF)(从整个数据集估计)可以以同样的方式可视化。然而,由于这些变体的性质,zero.rm
参数可以设置为真正的
来隐藏显示MAF为的所有数据点0
;因此,在每个超级种群中实际检测到的变异即使在低频率也会被强调。
plotInfo(subsetByFilter(vcf, vcfRules["missense"]), "MAF", range(GenomicRanges::granges(vcf)), EnsDb.Hsapiens.v75::EnsDb.Hsapiens. v75::EnsDb.Hsapiens. vcf)。V75,“super_pop”,零。rm = TRUE)
使用GGallyggpairs
方法,让我们制作一个常见变体的图表矩阵,显示:
pairsInfo(subsetByFilter(vcf, vcfRules["common"]), "AAF", "super_pop")
注意省略号...
允许高度的自定义,因为它将额外的参数传递给底层ggpairs
方法。
本节介绍即将推出的功能。
一旦遗传和表型信息被输入ExpandedVCF
对象,或在对象扩展了附加信息后,数据的科学价值可以通过各种汇总统计和图形表示来揭示。本节将很快介绍几个观点正在实施在TVTB,例如:
Stefan博士Gräf和Matthias Haimel先生就VCF文件格式和Ensembl VEP脚本提供建议。感谢马丁·威尔金斯教授的信任和支持。Michael Lawrence博士提供的有用的代码审查和建议。
最后但并非最不重要的是,惊人的合作努力代表(“很多”,n)
Bioconductorbob电竞体育官网通过此包的依赖关系来显示其辛勤工作的开发人员。
这是的输出sessionInfo ()
在编译本文件的系统上:
## R版本4.2.2(2022-10-31)##平台:x86_64-pc-linux-gnu(64位)##运行在Ubuntu 20.04.5 LTS ## ##矩阵产品:默认## BLAS: /home/biocbuild/bbs-3.16-bioc/R/lib/libRblas。/home/biocbuild/bbs-3.16-bioc/R/lib/libRlapack。所以## ## locale: ## [1] LC_CTYPE=en_US。UTF-8 LC_NUMERIC= c# # [3] LC_TIME=en_GB LC_COLLATE= c# # [5] LC_MONETARY=en_US。utf - 8 LC_MESSAGES = en_US。UTF-8 ## [7] LC_PAPER=en_US。UTF-8 LC_NAME= c# # [9] LC_ADDRESS=C lc_phone = c# # [11] LC_MEASUREMENT=en_US。UTF-8 LC_IDENTIFICATION=C ## ##附加的基本包:## [1]stats graphics grDevices utils datasets methods基础## ##其他附加包:## [1]TVTB_1.24.0 knitr_1.41 BiocStyle_2.26.0 ## ##通过命名空间加载(且未附加):# # # # [1] colorspace_2.0-3 rjson_0.2.21 [3] deldir_1.0-6 ellipsis_0.3.2 # # [5] htmlTable_2.4.1 biovizBase_1.46.0 # # [7] XVector_0.38.0 GenomicRanges_1.50.1 # # [9] base64enc_0.1-3 dichromat_2.0 - 0.1 # # [11] rstudioapi_0.14 farver_2.1.1 # # [13] bit64_4.0.5 AnnotationDbi_1.60.0 # # [15] fansi_1.0.3 xml2_1.3.3 # # [17] codetools_0.2-18 splines_4.2.2 # # [19] cachem_1.0.6 Formula_1.2-4 # # [21] jsonlite_1.8.4 Rsamtools_2.14.0 # # [23] cluster_2.1.4 dbplyr_2.2.1 # # [25] png_0.1-8 BiocManager_1.30.19 # # [27]compiler_4.2.2 httr_1.4.4 ## [29] backports_1.4.1 assertthat_0.2.1 ## [31] Matrix_1.5-3 fastmap_1.1.0 ## [33] lazyeval_0.2.2 limma_3.54.0 ## [35] cli_3.4.1 htmltools_0.5.4 ## [37] prettyunits_1.1.1 tools_4.2.2 ## [39] gtable_0.3.1 glue_1.6.2 ## [41] GenomeInfoDbData_1.2.9 reshape2_1.4.4 ## [43] dplyr_1.0.10 rappdirs_0.3.3 ## [45] Rcpp_1.0.9 Biobase_2.58.0 ## [47] jquerylib_0.1.4 vctrs_0.5.1 ## [49] Biostrings_2.66.0 rtracklayer_1.58.0 ## [51] xfun_0.35 stringr_1.5.0 ## [53] ensemblVEP_1.40.0 lifecycle_1.0.3 ## [55] ensembldb_2.22.0 restfulr_0.0.15 ## [57] XML_3.99-0.13 zlibbioc_1.44.0 ## [59] scales_1.2.1 BSgenome_1.66.1 ## [61] VariantAnnotation_1.44.0 ProtGenerics_1.30.0 ## [63] hms_1.1.2 MatrixGenerics_1.10.0 ## [65] parallel_4.2.2 SummarizedExperiment_1.28.0 ## [67] AnnotationFilter_1.22.0 RColorBrewer_1.1-3 ## [69] yaml_2.3.6 curl_4.3.3 ## [71] gridExtra_2.3 memoise_2.0.1 ## [73] ggplot2_3.4.0 pander_0.6.5 ## [75] sass_0.4.4 rpart_4.1.19 ## [77] biomaRt_2.54.0 reshape_0.8.9 ## [79] latticeExtra_0.6-30 stringi_1.7.8 ## [81] RSQLite_2.2.19 highr_0.9 ## [83] S4Vectors_0.36.1 BiocIO_1.8.0 ## [85] checkmate_2.1.0 GenomicFeatures_1.50.3 ## [87] BiocGenerics_0.44.0 filelock_1.0.2 ## [89] BiocParallel_1.32.4 GenomeInfoDb_1.34.4 ## [91] rlang_1.0.6 pkgconfig_2.0.3 ## [93] matrixStats_0.63.0 bitops_1.0-7 ## [95] evaluate_0.18 lattice_0.20-45 ## [97] labeling_0.4.2 htmlwidgets_1.5.4 ## [99] GenomicAlignments_1.34.0 bit_4.0.5 ## [101] tidyselect_1.2.0 GGally_2.1.2 ## [103] plyr_1.8.8 magrittr_2.0.3 ## [105] bookdown_0.30 R6_2.5.1 ## [107] magick_2.7.3 IRanges_2.32.0 ## [109] generics_0.1.3 Hmisc_4.7-2 ## [111] DelayedArray_0.24.0 DBI_1.1.3 ## [113] withr_2.5.0 pillar_1.8.1 ## [115] foreign_0.8-84 survival_3.4-0 ## [117] KEGGREST_1.38.0 RCurl_1.98-1.9 ## [119] nnet_7.3-18 tibble_3.1.8 ## [121] crayon_1.5.2 interp_1.1-3 ## [123] utf8_1.2.2 BiocFileCache_2.6.0 ## [125] rmarkdown_2.18 jpeg_0.1-10 ## [127] progress_1.2.2 grid_4.2.2 ## [129] data.table_1.14.6 blob_1.2.3 ## [131] digest_0.6.30 EnsDb.Hsapiens.v75_2.99.0 ## [133] stats4_4.2.2 munsell_0.5.0 ## [135] Gviz_1.42.0 bslib_0.4.1
麦克拉伦,W., B.普里查德,D.里奥斯,Y.陈,P.弗利克和F.坎宁安,2010。“用集成API和SNP效应预测器推导基因组变异的后果。”期刊文章。生物信息学26(16): 2069-70。https://doi.org/10.1093/bioinformatics/btq330.