vcfR简介

布莱恩·克瑙斯

2023-12-07

vcfR是一个旨在帮助可视化、操作和质量的包过滤VCF文件中的数据。

有关vcfR的更多文档,请访问真空断路器文档网站。

前期工作

输入文件经常给分析带来挑战。一个普通的我遇到的问题是,染色体名称在VCF、FASTA和GFF文件。这为分析师提供了工作。我建议将这些文件读入R,同步R中的名称,然后继续进行下游分析。我看到的另一个选项是创建一组文件,其中的数据与初始文件相同,但名称已同步。稍后的选择将导致创建大部分文件都是冗余的,我觉得没有必要。

使用vcfR时,内存使用是另一个重要考虑因素。A类R的优点在于,它通常用于读取整个数据集放入内存。这允许可视化、操作和立即对整个数据集执行分析。的大小基因组数据集,尤其是VCF数据,在这方面提出了挑战它们可能太大,无法在R中实际使用。这为我们提供了将足够的数据读入内存以探索数量很大,但不会超过现有数量资源。根据我的经验,当内存使用接近1GB的RAM,因此只需投资一个工作站使用大量内存可能不是解决方案。(这可能会发生变化R的未来正在持续发展。)我的查找解决方案这种平衡作用于单个的巧克力。事实上在我的项目中,“染色体”通常是超染色体、支架或连体画。这是一种没有完整染色体的情况实际上可能是一个优势。

数据输入

vcfR包设计用于处理来自VCF(沃尔沃汽车金融公司)文件夹。这个序列文件的使用(FASTA格式)和注释文件(全球金融论坛格式)可以提供有用的上下文,但不是必需的。我们会的从定位包中的数据文件开始我们的示例“pinfsc50。”

包装<- “pinfsc50”
vcf文件<- system.file(系统文件)(“外部数据”,“pinf_sc50.vcf.gz”,包装=包装)
dna_文件<- system.file(系统文件)(“外部数据”,“pinf_sc50.fasta”,包装=包装)
gff文件<- system.file(系统文件)(“外部数据”,“pinf_sc50.gff”,包装=包装)

然后用vcfR读取VCF文件。

图书馆(vcfR)
真空断路器<- 读取.vcfR(vcf文件,冗长的= 错误的)

功能读取.vcfR()采用指定的文件名并将其读入R,在R中存储为真空断路器对象。这个真空断路器对象是具有的S4类对象包含元数据、固定数据和基因型的三个插槽数据。有关VCF数据的更多信息,请参阅vignette“VCF数据。'此对象为数据提供了一个已知的组织,以便下游功能可以很容易地访问它。

基因组参考序列文件通常是FASTA格式的文件。这些可以用ape包读入。

dna<-::阅读.dna(dna_文件,格式= “法斯塔”)

注释文件(我们目前支持全球金融论坛),包含注释(如开始和结束)坐标的文件基因点是表格形式的,可以用典型的R读出功能。

绿色荧光粉<- 可读表格(gff_file,9月="\t吨",报价="")

根据我的经验,GFF文件通常不会环绕文本引用。这可能会给将这些文件读入R带来挑战。在调用中禁用引号读取.table()通常情况下有助于处理此问题。

数据读入内存后,可以对染色体名称或任何其他不一致,可以继续。

vcfR被设计用于单个染色体、超级染色体或contig,这取决于你的基因组状态。读取整个基因组当存在大量数据。例如,当基因组较大或样品。尝试将内存中的数据集读取到内存中可能会耗尽所有可用内存并导致计算机无响应。正在处理染色体似乎是分解这个问题的自然方式。一次您已将对象读取到R中(例如,注释或序列文件)如果出现以下情况,您可能需要将其子集为单个染色体的数据必要的。

创建chromR对象

一旦数据存储在内存中,我们就可以使用它创建一个色度R带有函数的对象创建.chromR(). The创建.chromR()功能创建一个新的chromR对象并用您提供的数据填充它它。

图书馆(vcfR)
<- 创建.chromR(姓名=“超级链接”,vcf公司=vcf、,序列=dna,安=gff)
##vcf中的名称:
##超连续_1.50
##序列名称:
##致病疫霉T30-4的超连续_1.50
##create.chrmR中的警告(name=“超导”,vcf=vcf,seq=dna,ann=gff):##变量数据和序列数据中的名称不完全匹配。##如果您选择继续,我们将尽力匹配数据。##但要为意外的结果做好准备。
##注释中的名称:
##超连续_1.50
##正在初始化var.info插槽。
##var.info插槽已初始化。

请注意,我们三个数据源的名称并不相同。这个导致警告。当我们检查输出时,我们看到VCF文件是“Supercontig_1.50”,而FASTA中的名称是“致病疫霉T30-4的超连续_1.50。”我们知道是同义词,因此我们可以忽略警告并继续。

参数“name”是可以指定给对象的名称。这个绘制chromR对象时使用信息。vcfR对象应该是vcfR类,很可能是用函数创建的读取.vcfR()。此对象被插入chrom对象使用函数vcfR2chromR()。参数“seq”应是一个DNAbin对象(参见R包ape),其中有一个序列。这个序列将使用函数插入chromR对象seq2chromR().如果未提供序列,seq2chromR()将根据vcfR对象中的最大位置。参数“ann”应为全球金融论坛并且属于data.frame类。这些通常可以用基数R读入功能,如读取.table()。此表将通过插入chromR对象ann2chromR().这个函数将检查第4列和第5列(“开始”和“结束”)是否数字。如果没有,它将试图重新塑造它们。

正在处理chromR对象

创建chromR对象后,需要执行以下几个处理步骤需要。首先,您可能想快速查看一些数据。这可以通过plot函数完成。

情节(色度)

读取深度(DP)的分布非常突出。大概有每个基因组的大部分测序的基本倍体水平。这里我们看到一个峰值,它可能代表基本倍体区域,但我们也看到一条可能代表拷贝数变体的长尾。因为基因分型者通常期望一个恒定的倍性水平,变异调用拷贝数变异可能是可疑的。我们可以看到映射质量(MQ)均在60左右达到峰值。因此,如果我们希望筛选此参数,我们现在知道必须采用窄门槛。质量解释(QUAL)看起来不太直接,可能从零值开始倾斜。可以得出结论,这不是一个理想的筛选参数。没有SNP在这一点上发现了密度,因为这些数据来自窗口分析由执行处理色度(_chrorR)(见下文)。对其他参数进行过滤可能会显示出更直接的路径。

请注意,由不同的变体调用软件创建的VCF数据可能或者可能没有这些字段,或者它们的范围可能不同。对于例如,这里映射质量的峰值为60。其他软件可能创建映射质量最高值为20或其他值的文件。这就是为什么可视化数据分布很重要的原因所以你了解它的属性。

我们可以使用掩码()尝试筛选的函数我们不太信任的数据。masker()函数使用质量、深度和绘图质量,努力选择高质量变体。请参见?蒙面师默认值。使用时屏蔽器,被视为低质量的变体不会从数据集。相反,会创建一个逻辑向量来指示哪些变量已过滤或未过滤。这样可以保持数据的几何结构矩阵贯穿整个分析过程,并允许用户轻松撤销任何变化。

<- 面具制造者(色度,最小质量= 1,最小_DP= 300,最大_DP= 700,最小质量= 59.9,最大质量= 60.1)
情节(色度)

一旦我们对要考虑的变体感到满意我们可以用高质量处理chromR对象程序色度R()。此函数调用多个助手函数处理变量、序列和注释数据可视化。

功能regex.win()定义矩形,其中出现所谓的序列(A、C、G和T)以及不明确的地方核苷酸出现(N),稍后用于绘图。此函数还为带注释的功能定义矩形,这些功能也用于绘制。

功能变量win()对执行窗口分析数据。目前,它总结了每个窗口的变量计数以及每个窗口的G/C内容。

<- 过程色(色度,冗长的=真的)
##核苷酸区域完成。
##运行时间:0.341
##N个区域完成。
##运行时间:0.312
##填充摘要完成。
##经过时间:0.238
##window_init完成。
##运行时间:0.001
##windowize_fasta完成。
##运行时间:0.09
##windowize_annotations完成。
##运行时间:0.014
##windowize_variants完成。
##运行时间:0.001
情节(色度)

现在我们已经处理了chromR对象,我们有了变量计数每个窗口。我们还准备继续进行更复杂的情节。

可视化数据

此时,我们输入了三种类型的数据(变量、序列和注释),将它们插入chromR对象,掩盖我们感觉到的变体质量不高,并处理了这些数据的一些摘要。我们现在可以继续可视化这些数据。

功能色卡()使用R函数布局()绘制数据的合成图。这些绘图可以包括具有染色体的条形图和散点图协调。

色度控制(色度,dp.阿尔法=20)

我们还可以使用xlim公司参数。

色卡(色度,xlim公司=c(c)(5e+05年,6e+05年))

数据的输出

vcfR包的目标之一是帮助调查人员理解并探索他们的数据。一旦他们了解了根据这些数据,他们可能会想采取行动这种理解是利用他们对数据的理解把它过滤到他们觉得质量足够的地方。

输出到VCF文件

在包vcfR的框架内被确定为具有足够质量的变体可以通过以下方式实现函数写入.vcf()。此函数接受vcfR对象并可以选择使用前面步骤中创建的掩码对其进行子集,以及将其输出到(gzipped)VCF文件。此文件应可供所有人使用用于下游分析的VCF兼容软件。

转换为其他R对象

将vcfR和chromR转换为其他R中支持的对象小插曲“转换数据”中涵盖了软件包