实操 | 合并VCF文件的几种方法及注意事项

背 景

  在基因组分析领域的很多不同场景中,需要合并VCF文件。

  VCF文件。简单来说,就是记录样本基因型的文件。但多数VCF文件不只记录了基因型,也包含有关该基因型的来源的细节。

  其它文件。VCF文件的上游是BAM文件,主要记录Reads与参考基因组的比对信息;更上游的,就是FASTQ测序数据,以及物种的参考基因组

  不同类型的VCF文件。VCF文件有单样本的、多样本的;也有普通VCF文件 (只记录变异,未测到的、野生型的都不记录),及GVCF文件 (野生型的、变异的都记录,未测到的不记录)。

c166072964721229957eb31e3a6ef1c6.png

一个典型的GVCF文件

  因此,本篇文章的使用者,需要首先了解GVCF文件与普通VCF文件的不同。因为二者对应的生信处理方法也非常不同。但具体有哪些不同,这里不再继续讲,可自行在网络资源上按照相应的关键词检索。

  合并VCF文件需要注意的问题。VCF文件有时是多个样本、多个个体、或多个病例的合并;有时是不同染色体区域的VCF合并。上述每个场景都涉及不同的软件、程序,甚至算法,需要非常小心、谨慎地操作。

合并:不同样本的GVCF文件

  GATK的CombineGVCFs  GenotypeGVCFs

  上面2个程序是一套组合,不可拆分,不可单独使用。

  那为什么GATK开发者将二者分开呢,推测有两个原因:① 二者分别有些特定的参数;② 第1个程序非常耗时,第2个程序相对较快、但算法复杂。这个问题对使用者也无关紧要。

# 合并队列中每个样本的每一个变异 (GVCF文件)
gatk CombineGVCFs \
    -R $ref \
    $(for i in `tail -n +2 metadata.txt | cut -f 1 `; do echo "--variant ${i}.hg38.raw.g.vcf " ;done) \
    -O cohort.g.vcf.gz
# 获取具体基因型,完成变异Calling
gatk  GenotypeGVCFs \
     -R $ref \
     --dbsnp ${dbSNP} \
     --variant cohort.g.vcf.gz \
     -O Genotype.cohort.dbSNP.g.vcf

  当样本很多、数据量也大时,CombineGVCF程序很消耗内存,并且一旦中断(文件不全)就得重新来。其"-L"参数 (如"-L chr1:1-10000") 也不推荐使用 (否则GenotypeGVCFs步骤可能报错),但"-L chr1"没问题。

  解决方法:① 限制内存:用"--java-option Xmx20g"等;② 分染色体,用"-L chrX"等。③ 组合使用①和②。

  需要了解的是,GenomicsDB可以替代:CombineGVCFs  + GenotypeGVCFs,将多个样本GVCF处理生成一起的工作空间。两种方案各有各的优缺点。

  根据GATK官网的描述,GenomicsDB更适用于几百个样本以上的情形。

合并:不同染色体区域的VCF文件

cat chr.list.25 
# chr1
# chr2
# chr3
# ...
# chr22
# chrX
# chrY
# chrM
gatk MergeVcfs \
   $(for i in `cat chr.list.25 | cut -f 1 `; do echo "-I Genotype.cohort.${i}.dbSNP.g.vcf " ;done) \
   -O Genotype.cohort.dbSNP.g.vcf

  MergeVcfs与CombineGVCFs不同。前者用于单纯地合并:样本相同、位点独立的VCF文件。如:同一个(或一组)样本的不同染色体的结果。

  不像CombineGVCFs,MergeVcfs不做"gVCF block"的计算。此外MergeVcfs会检测两个VCF文件里的样本名是否相互"match"。

  如果只查看MergeVcfs程序的介绍,根本看不出来它的用法的特点 (例如:对GVCF文件的合并可能无效),那么必然容易踩坑:

MergeVcfs (Picard) - Combines multiple variant files into a single variant file. 

  事实上,MergeVcfs及其等价的程序 (GatherVcfs不可用于合并不同样本的GVCF文件。但用来合并不同基因组区域的文件非常方便。

  此场景除了MergeVcfs、GatherVcfs外的其它程序

vcf-concat      sample1.chr1.vcf sample.chr2.vcf ... > sample1.chrAll.vcf
bcftools concat sample1.chr1.vcf sample.chr2.vcf ... -o sample1.chrAll.vcf

  其中,通过conda安装的vcftools,可能不带vcf-concat等程序。从这一点看,bcftools更方便

  1个经验是:既然有GATK的MergeVcfs可用,那就尽量不用vcftools或bcftools,否则可能踩到另一个坑:不同程序对VCF文件的索引格式的要求不同、VCF的"FORMAT"列等也可能改变。

合并:不同样本的普通VCF文件

  普通VCF文件只记录变异,即:① 无0/0基因型 (测序测到了、但未变异,即"Wild type") ;② 无"./."基因型 (即"缺失",测序未测到,即"No call") 。

  对不同样本的⽂件合并,共有位点会合并统计;非共有位点若在某1个样本中无变异,则会⾃动记为缺失 ("./.") 。

ce258488e75aeba49bc391f27b38e72e.png

1个典型的普通VCF文件 (只查看了第9、10列)

vcftools和bcftools在使用之前一般都需要对VCF文件:压缩、索引 (略)。

vcf-merge # 略 (对于连软件安装都麻烦的程序)
bcftools sample1.vcf sample2.vcf ... -o sample.all.vcf

ba608f9e788c8a508ae9e7109835447f.png

vcf-merge重新计算了AC、AN等指标的值

合并分型质量 ("QUAL"列) 时,vcf-merge取了平均取值,bcftools取了最⼤值, (下图的)gatk CombineVariants (不是CombineGVCFs,也不是MergeVcfs/GatherVcfs)取了最⼩值 (gatk4)

图片来源:https://wenku.baidu.com/view/a0ecad5602f69e3143323968011ca300a7c3f643.html

9fa80f50b766e6bc935dfc5ff64a7faa.png

gatk CombineVariants (GATK4已无此程序)

# 压缩、索引单个VCF文件
ls sorted.*.vcf | while read id;do
 bcftools view $id -Oz -o $id.gz
 bcftools index $id.gz
done
# 合并
bcftools merge --threads 8 -m id -O z sorted.*.vcf.gz \
  -o bcftools.merged.103samps.vcf.gz
 # -m, --merge (关于多等位基因)Allow multiallelic records for <snps|indels|both|all|none|id>, see man page for details [both]
 # -O, --output-type <b|u|z|v> 'b' compressed BCF; 'u' uncompressed BCF; 'z' compressed VCF; 'v' uncompressed VCF [v]
  # gVCF参数(可能不适用于gVCF文件):
  # -g, --gvcf <-|ref.fa> merge gVCF blocks, INFO/END tag is expected. Implies -i QS:sum,MinDP:min,I16:sum,IDV:max,IMF:max
# 测试某个位点
  # zcat bcftools.merged.103samps.vcf.gz | grep '1        12626   '
  # 有返回结果。但无DP等信息
# 索引合并后的文件
bcftools index bcftools.merged.103samps.vcf.gz &

  bcftools merge虽然有"--gvcf"参数,但根据之前的测试,可能不适用于对gVCF文件的合并。

总 结

  总之,① 合并VCF文件要区分其文件类型,如:是否为gVCF文件,是否为基因组的不同区域,其内部的样本名称等;② 考虑到整个流程的兼容性和流畅性,建议当GATK有相应的工具时,优先使用之;③ 其它场景可依次考虑:bcftools、vcftools。

往期精品(点击图片直达文字对应教程)

72d898344aaae99696ddbd85edbdad51.jpeg

a09f53a7a45de365b8abbf857c7cb80b.jpeg

8b9170e65cab7440d7b45abbf9262c38.jpeg

ecfa1a46c2408678426ef164b8049321.jpeg

9ce1b02d3ae49bdb82a0c924ce9a6d32.jpeg

255ee036c1b54de1adb845cc6bc9600c.jpeg

f200150f9c0830806223e63750855eae.jpeg

1a7573ce06829fd032667829be4efbc3.jpeg

10710152e18dae525279d159b5227d49.jpeg

66cd874e25e1b068c4ec4fc8ced785c8.jpeg

e930f49b139c6031317a1fe029b17d9f.jpeg

8efeed3d0360011e6546f1a50b04d679.jpeg

bfb8c75f43bec7ec4134140bbddf3bf2.png

50fe6867972a8b6bbdc4b1b59d8caa28.png

1fce479208cced58a4839ce81325512d.png

27b25cd1381fa196e5308b596346b88d.png

a1c483de7b999cb0cc6132238494763f.jpeg

79cd2f2e45233af43cb4360a3059f04c.jpeg

0f54b314d037d2b725ed5d9067daee87.jpeg

eb2675d32fcd94ed46bc3758e9eedcb9.jpeg

14a0c0056b4292ae592a24cf8ef781f0.png

b9cf70a2a37aa1400c3cab7b0a5cc740.png

3061b982af9f92aaead44aa88172a8bb.jpeg

7d11d77c72c75b70dc2b362cbef23e7c.png

1bd859106787ec497f7b62b60ac31f94.png

185a52034ea9771f9919667dfe96fbee.jpeg

4d6909490d36bf9d02d95f7990cc9bd9.png

7871f55eec121ae19fa5904b84870ccc.png

机器学习

后台回复“生信宝典福利第一波”或点击阅读原文获取教程合集

8f240795a3e4879bb5e6e3f0c9f3e548.jpeg

a4a1d5961688a576dcacdef123523c16.jpeg

fa4876f4c1a37c0b72db14f69f66dfba.png

生信宝典
关注 关注
  • 6
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
多个vcf文件合并
Cassiel60的博客
03-29 1万+
看起来用vcftools中的vcf-merge 1.vcf 2.vcf >out.vcf 很简单,但是在使用过程中遇到很多问题: 1.安装vcftools时,https://vcftools.github.io/index.html。里面有多种方法下载,首先常规方法是https://sourceforge.net/projects/vcftools/files/,安装后,执行不出来结果,...
变异检测:vcf文件合并
xiaoji的博客
08-05 6992
vcf文件储存的是样本的变异信息文件,在同一批次分析中,如果不是采用joint calling的方式进行分析,最终会获得单个样本的变异数据。这种文件很难对同组不同样本进行差异SNP分析,此处就需要对文件进行合并vcf文件合并有很多的软件可以做,主要的就是GATK、vcftools和bcftools三种,但是具体的合并方法需要根据不同vcf文件中的信息来判断。 1. 样本相同、位点独立的vcf文件合并 样本相同、位点独立指的是在不同文件中包含的样本一致,但是位点批次质检没有交集,分染色体call变异的结果
多个VCF文件合并处理方法
06-01
多个VCF文件合并成一个VCF文件的处理方法,此方法必定可以解决您的烦恼
gatk gvcf合并之CombineGVCF
jinning3825的博客
03-03 616
我发现CombineGVCF很慢,每次都加几个样本,我都是从头再合并,忽然想到为啥我不用合并后的60个样本,再去合并新添的10个呢!肯定省钱省力省时间!
多个VCF合并为一个VCF
01-31
多个VCF合并为一个VCF方法!请大家严格执行命令!最好用复制的!输入错误可能导致失败!
vcf文件合并
weixin_44524361的博客
01-28 4401
vcf文件合并大致分为两个部分,相同样本合并和不同样本合并
C2-关于VCF文件合并几种方法
weixin_43748815的博客
06-30 3040
VCF文件合并方法
记录---提取合并VCF文件
cfc424的博客
03-03 2548
记录—提取合并VCF文件 最近有个需求,需要合并两个VCF集合,两个文件中材料名完全不同,SNP名部分相同,想要合并为相同SNP下不同Sample的一个VCF文件。 整体思路是: (1)找到两个VCF文件的共有SNP (2)合并两个VCF文件(SNP相同,Sample列不同) 0. 简化GATK结果生成的VCF文件 生成的GATK的VCF文件中包含很多信息,文件特别大,想要简化一下,保留基因型信息,剔除不想要的信息: import os,sys inf=sys.argv[1] # input file o
git如何合并单个文件_如何利用公共位点合并VCF文件
weixin_39925959的博客
12-01 478
欢迎阅读本文,敬请批评指正。如有问题请邮箱联系(chenshh@shanghaitech.edu.cn)。VCF(variant calling format)是一种文件格式,可以存储生物信息学研究中多个样本的SNP/indel/SV等信息。有时候,我们想同时分析来自多个数据集的样本,此时便需要合并存储了样本信息的VCF文件。我们希望合并文件中包含所有需要的样本,以及这些样本共有的位点...
php简单读取.vcf格式文件方法示例
10-19
主要介绍了php简单读取.vcf格式文件方法,结合具体实例形式分析了php自定义函数读取vcf格式文件的具体实现方法与相关注意事项,需要的朋友可以参考下
GLnexus:可扩展的gVCF合并和联合变体,要求进行人口测序项目
05-10
葛兰素史克 来自DNAnexus的研发:可扩展的gVCF合并和联合变异,要求进行人口测序项目。 (GL,基因型可能性) 读 与和合作者合作的详细介绍了GLnexus的设计和科学验证,使用了多达240,000个人类外显子组和22,600个基因组。 与用于此类大型项目的DNAnexus云原生部署相比,此开源版本产生相同的科学成果,但缺乏某些可伸缩性和面向生产的功能。 2020年的新功能: (由Google Health团队提供)进行包括带有1000个Genomes Project产品的。 Wiki页面上有针对初学者的教程。 对于每个标记的修订,“页面都有适合大多数Linux x86-64主机的静态可执行文件。 只需下载它,然后使用chmod +x glnexus_cli 。 每个版本还提供包装了glnexus_cli的轻量级Docker映像。 构建和测试 GLnexus的构建过程具有许多
.vcf 文件合并
08-28
就是简单的vcf 文件合并, 去掉重复 . 学习笔记..
python通用读取vcf文件的类(复制粘贴即可用)
09-17
主要介绍了python通用读取vcf文件的类(可以直接复制粘贴使用) ,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
多样本GVCF文件合并
weixin_59587425的博客
09-07 1786
在千人基因组下载了几百个中国人的GVCF文件,每个样本3个G,用CombineGVCFs合并会报错,后来用bcftool挺好的。个警告,不知道为什么。
Leecode---347:输出前k个高频元素(使用unordered_map)
最新发布
qq_41920323的博客
05-30 197
unordered_map实现输出前k个高频元素
算法每日一题(python,2024.05.24) day.6
L613Z的博客
05-27 437
数字比较型可以用双指针法寻找数字相同(或构成其他关系)的俩个数值(或其他类型),涉及到与数值有关的列表问题可以思考到sort()排序方法加以辅助。
一千题,No.0037(组个最小数)
2301_76783671的博客
05-29 538
给定数字 0-9 各若干个。你可以以任意顺序排列这些数字,但必须全部使用。目标是使得最后得到的数尽可能小(注意 0 不能做首位)。例如:给定两个 0,两个 1,三个 5,一个 8,我们得到的最小的数就是 10015558。输入在一行中给出 10 个非负整数,顺序表示我们拥有数字 0、数字 1、……整数间用一个空格分隔。10 个数字的总个数不超过 50,且至少拥有 1 个非 0 的数字。现给定数字,请编写程序输出能够组成的最小的数。在一行中输出能够组成的最小的数。
并查集拓展(扩展域并查集)
Qlarkstar的博客
05-29 903
事实证明,扩展域并查集应该在带权并查集前面讲的,因为比较好理解,而且回过头看带权并查集可能也会更轻松一些。
利用vcf文件如何进行pca分析及用r语言可视化
05-04
PCA(主成分分析)是一种常用的数据降维方法,可以用于探索数据之间的相关性和结构。在生物信息学中,我们可以利用VCF(Variant Call Format)文件中的单核苷酸多态性(SNP)数据进行PCA分析,以探索基因组间的遗传关系。 以下是利用R语言进行PCA分析和可视化的步骤: 1. 读取VCF文件并提取SNP数据 ``` library(vcfR) vcf <- read.vcfR("example.vcf") geno <- extract.gt(vcf) ``` 2. 对SNP数据进行PCA分析 ``` pca <- prcomp(geno, scale = TRUE) ``` 3. 可视化PCA结果 ``` library(ggplot2) library(ggrepel) pca_df <- data.frame(pca$x[,1:2], group = vcf$INFO$SAMPLE) ggplot(pca_df, aes(x = PC1, y = PC2, color = group)) + geom_point(size = 2) + geom_text_repel(aes(label = group), size = 3) + xlab(paste0("PC1 (", round(summary(pca)$importance[2,1]*100, 1), "%)")) + ylab(paste0("PC2 (", round(summary(pca)$importance[2,2]*100, 1), "%)")) ``` 这样就可以得到一个基于PCA分析的散点图,其中每个样本根据其遗传差异在二维空间中的位置进行了可视化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
756
原创
2996
点赞
1万+
收藏
7455
粉丝
关注
私信
写文章

热门文章

  • 一招解决Conda安装卡在solving environment这一步! 169114
  • 2018美日科学家因免疫治疗得诺贝尔生理医学奖|动图展示历年生理学奖 91016
  • QuillBot:又一个值得拥有的论文润色工具 64957
  • Airflow使用入门指南 62685
  • 超详细的热图绘制教程(5000余字),真正的保姆级教程 55717

分类专栏

  • 生物网站 1篇
  • C语言 12篇
  • LINUX 83篇
  • linuxToy 5篇
  • Python 31篇
  • 出国留学 5篇
  • 励志文章 5篇
  • 奇文逸事 1篇
  • 数典 1篇
  • 6篇
  • 求职简历 1篇
  • 生活随想 2篇
  • 科研经验 32篇
  • 算法 10篇
  • 经典文章 24篇
  • 经济
  • 英语 1篇
  • 资源 18篇
  • airflow 1篇
  • Bioinfo 58篇
  • 生物信息 103篇
  • 转录组 17篇
  • R 14篇
  • mysql 1篇
  • UCSC 1篇
  • GEO 3篇
  • 单细胞 6篇

最新评论

  • Plant Biotechnology Journal │ 中国中医科学院黄璐琦/袁媛团队等揭示引种西洋参根形和人参皂苷变异机制...

    普通网友: 干货满满,实用性强,博主的写作风格简洁明了,让人一目了然。文章涵盖了很多实用的知识点。【我也写了一些相关领域的文章,希望能够得到博主的指导,共同进步!】

  • 一文学会网络分析——Co-occurrence网络图在R中的实现

    多巴胺81: 网络 请求otu_table.txt源文件格式

  • scATAC-seq建库原理,质控方法和新R包Signac的使用

    2301_78491303: 老师您好,请问这个signac安装包如何下载呢?并且相关的数据包能不能导入到Rstudio里面进行分析啊?

  • ​新加坡国立大学癌症研究所,陈蕾蕾课题组招收生物信息学博士后

    MR. Paw: 月薪才六千新币起? 表情包

  • R包reshape2,轻松实现长、宽数据表格转换

    是海绵宝宝吖: 博主好,dcast功能图示的图没有显示欸

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • 国家生物信息中心标识征集启事
  • 再版到第14版,连续25年美国统计类教材首选,这本统计学神书中文版来啦!
  • 直接写和放在函数中不同的R语言用法
2024
05月 73篇
04月 78篇
03月 50篇
02月 36篇
01月 47篇
2023年558篇
2022年457篇
2021年475篇
2020年379篇
2019年63篇
2018年75篇
2017年59篇
2016年1篇
2010年69篇

目录

目录

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

聚圣源新生儿起取名大全男孩甜蜜电视剧演员表全部属虎2020年运势及运程车队起名吉祥字大全金乌鲗和蔼的意思给钻戒指起名字ps2金手指何足道哉魔鬼爱上天使压缩文件修复mimyaimba梓字怎么起名何氏起名有涵养的名字长沙住房张若昀的家世城市农家饭起名学电脑多少钱赵起个名字男孩香薰店起名商学院起名字大全集合作社起个名字功夫熊猫国语版民贷天下起名姓曹起名禾字旁的字那个好王名字起名干饭店起名起个王者名字天津移动网上营业厅淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男孩疑遭霸凌 家长讨说法被踢出群国产伟哥去年销售近13亿网友建议重庆地铁不准乘客携带菜筐雅江山火三名扑火人员牺牲系谣言代拍被何赛飞拿着魔杖追着打月嫂回应掌掴婴儿是在赶虫子山西高速一大巴发生事故 已致13死高中生被打伤下体休学 邯郸通报李梦为奥运任务婉拒WNBA邀请19岁小伙救下5人后溺亡 多方发声王树国3次鞠躬告别西交大师生单亲妈妈陷入热恋 14岁儿子报警315晚会后胖东来又人满为患了倪萍分享减重40斤方法王楚钦登顶三项第一今日春分两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?周杰伦一审败诉网易房客欠租失踪 房东直发愁男子持台球杆殴打2名女店员被抓男子被猫抓伤后确诊“猫抓病”“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火男孩8年未见母亲被告知被遗忘恒大被罚41.75亿到底怎么缴网友洛杉矶偶遇贾玲杨倩无缘巴黎奥运张立群任西安交通大学校长黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发妈妈回应孩子在校撞护栏坠楼考生莫言也上北大硕士复试名单了韩国首次吊销离岗医生执照奥巴马现身唐宁街 黑色着装引猜测沈阳一轿车冲入人行道致3死2伤阿根廷将发行1万与2万面值的纸币外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万手机成瘾是影响睡眠质量重要因素春分“立蛋”成功率更高?胖东来员工每周单休无小长假“开封王婆”爆火:促成四五十对专家建议不必谈骨泥色变浙江一高校内汽车冲撞行人 多人受伤许家印被限制高消费

聚圣源 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化