使用bcftools合并vcf过程中遇到的问题与解决方案

首先因为我的vcf并不是标准的vcf,我用的这些vcf是通过python拼凑了几个call snp软件的结果,所以遇到了各种问题,开帖记录一下。

要对多个vcf文件进行合并,就是标准的压缩,做索引,然后merge:

bcftools view sample.vcf -Oz -o sample.vcf.gz
bcftools index sample.vcf.gz
bcftools merge sample1.vcf.gz sample2.vcf.gz sample3.vcf.gz ... -o merged.vcf

但是第一步就报错了:

[E::vcf_parse_format] Invalid character '.' in 'PL' FORMAT field at chrY:2730114
[E::vcf_parse_format] Invalid character '.' in 'PL' FORMAT field at chrY:2730134
Error: VCF parse error

在这里插入图片描述
提示格式有问题,于是把这两行拿出来看了一下
在这里插入图片描述
在这里插入图片描述
vcf里PL字段用的小数,但是header里却写的整数,于是把表头改改:

sed 's/ID=PL,Number=G,Type=Integer/ID=PL,Number=G,Type=Float/' sample.vcf > sample.vcf.new
bcftools view sample.vcf.new -Oz -o sample.vcf.gz

这下压缩时就没有报错了,接下来进行index

bcftools index sample.vcf.gz

[E::hts_idx_push] Unsorted positions on sequence #1: 59033730 followed by 2730114
index: failed to create index for "ERR3378452.vcf.gz"

在这里插入图片描述
然后说我的位置信息没排过序,于是再加上位置的排序:

grep "#" sample.vcf | sed 's/ID=PL,Number=G,Type=Integer/ID=PL,Number=G,Type=Float/' > sample.header
grep -v "#" sample.vcf | sort -k 2 -n > sample.body
cat sample.header sample.body > sample.new.vcf

./bcftools view sample.new.vcf -Oz -o sample.vcf.gz
./bcftools index sample.vcf.gz

然后就可以进行index了,把需要合并的样本名写到sample.list,加上合并其他样本的功能:

#/bin/bash

ls *.vcf | sed 's/.vcf//g' > sample.list

merge_sample=""    

for sampleid in $(cat sample.list)
do
    grep "#" $sampleid\.vcf | sed 's/ID=PL,Number=G,Type=Integer/ID=PL,Number=G,Type=Float/' > $sampleid\.header	
    grep -v "#" $sampleid\.vcf | sort -k 2 -n > $sampleid\.body
    cat $sampleid\.header $sampleid\.body > $sampleid\.new.vcf

    bcftools view $sampleid\.new.vcf -Oz -o $sampleid\.vcf.gz
    bcftools index $sampleid\.vcf.gz
    
	merge_sample=$merge_sample" "$sampleid".vcf.gz"
    rm $sampleid\.header
    rm $sampleid\.body
done

bcftools merge $merge_sample -o merged.vcf

然后运行sheel,以为完美运行,结果总有意想不到的事情发生:

sh merge_vcf.sh
Error: The INFO field is not defined in the header: AB

在这里插入图片描述
在merge时提示info里的AB字段在header中没有定义,我并不需要info字段里的东西,于是粗暴点,直接将info列填充了,在提取vcf内容时,将info列都打印小数点:

#/bin/bash

ls *.vcf | sed 's/.vcf//g' > sample.list

merge_sample=""    

for sampleid in $(cat sample.list)
do
    grep "#" $sampleid\.vcf | sed 's/ID=PL,Number=G,Type=Integer/ID=PL,Number=G,Type=Float/' > $sampleid\.header	
    grep -v "#" $sampleid\.vcf | sort -k 2 -n | awk '{print $1"\t"$2"\t"$3"\t"$4"\t"$5"\t"$6"\t"$7"\t.\t"$9"\t"$10}' > $sampleid\.body
    cat $sampleid\.header $sampleid\.body > $sampleid\.new.vcf

    bcftools view $sampleid\.new.vcf -Oz -o $sampleid\.vcf.gz
    bcftools index $sampleid\.vcf.gz
    
	merge_sample=$merge_sample" "$sampleid".vcf.gz"
    rm $sampleid\.header
    rm $sampleid\.body
done

bcftools merge $merge_sample -o merged.vcf

终于完美解决这种拼凑的vcf文件合并。

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
### 回答1: bcftools是一个广泛使用的命令行工具,用于处理VCF格式的变异调用数据。它支持检查,过滤,转换和合并VCF文件。利用bcftools可以生成高保真度和高质量的系统发育树。 构建系统发育树必须先生成一个vcf文件。在vcf文件,包含了每个样品在每个位置上的碱基。然后,可以使用bcftools进行变异的过滤和筛选,以过滤掉低质量的碱基以及不太可靠的变异。 在变异筛选之后,可以使用bcftools将过滤后的vcf文件转换为phylip格式。phylip是一种用于构建系统发育树的标准格式。然后,利用phylip格式的文件和其他的支持文件,可以使用常规的系统发育树软件,如RAxML和PhyML,构建系统发育树。 总之,bcftools是一个非常有用的工具,能够对VCF格式的变异调用数据进行全面处理,并可以生成高质量的系统发育树。它对于分子生物学和生物信息学研究都是非常重要的工具。 ### 回答2: BCFTools是一个非常流行的工具,可以用于处理VCF文件并构建系统发育树。使用BCFTools处理VCF文件有很多好处,例如可以过滤VCF文件无用的信息,筛选出感兴趣的位点等。 要使用BCFTools构建系统发育树,我们需要先将VCF文件的数据转换成BCF文件。这可以通过使用bcftools view命令将VCF文件转换成BCF文件来完成。然后,我们需要使用bcftools query命令从BCF文件提取需要的信息,例如基因型、SNP位点等。可以使用bcftools filter命令在提取信息的同时进行一些筛选操作,例如过滤掉低质量的位点、过滤掉缺失值等。 最后,在得到所需的信息后,我们可以使用构建系统发育树所需的软件,例如PHYLIP等,将提取的信息输入到软件进行分析和构建系统发育树。 总之,使用BCFTools处理VCF文件可以大大简化系统发育树的构建过程,提高分析效率和准确性。但是,需要注意保证数据质量和正确性,以避免结果出错。 ### 回答3: BCFtools是一种用于处理VCFBCF文件的工具集,可以用于构建系统发育树。通过将多个样品的VCF文件合并以构建总体样本的VCF文件,可以使用BCFtools执行操作,例如基因型过滤、缺失数据的填充以及变异注释。 构建系统发育树需要将样品的遗传差异映射到树形结构,以显示它们的亲缘关系。一种构建方法是使用多序列比对将DNA序列对齐,然后执行基于序列比较的树形建构分析。另一种方法是使用变异的相对频率或一些组合遗传标志,例如单倍体基因型的分布来建构系统发育树。这种数据分析方法称为分子系统学。 使用BCFtools进行VCF文件处理时,可以考虑以下步骤: 1)使用bcftools merge命令将多个样本的VCF文件合并成一个总体VCF文件。 2)使用bcftools view命令执行过滤,例如基因型和质量过滤,以减少噪音和杂质信号。 3)使用bcftools stats命令生成统计信息,例如变异密度、每个样本的基因型频率和分布的质量值等。 4)使用vcftools或其他变异注释工具添加有关变异和功能信息,例如GenBank注释、GO注释、KEGG通路注释等。 5)使用获得的信息对变异进行系统发育推断,以判断样本之间的亲缘关系、进化史和分化历史。常见的分化历史分析方法包括最大简约树、相似度矩阵分析、邻接成对绘制等分子系统学方法。 综上所述,BCFtools是一种有用的工具集,可以处理VCF文件和构建系统发育树,并帮助科学家了解样本之间的遗传相似性和进化历史。

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值