使用Freebayes生成VCF时如何忽略样本信息实现伪批量变异检测
解决Freebayes伪批量变异检测样本列合并问题
针对同一个体的1000+单细胞RNA-seq BAM合并后做伪批量变异检测时,Freebayes生成多样本列而非单个合并样本列的问题,提供两种可行方案:
方案一:预处理BAM统一读段组
Freebayes基于读段组(Read Group)的SM字段识别样本,因此先将所有BAM的读段组信息统一为同一个样本名,再合并分析:
- 使用
picard AddOrReplaceReadGroups修改每个BAM的读段组,将RGSM设为COMBINED_SAMPLE,其他读段组字段同步统一:
picard AddOrReplaceReadGroups \ I=single_cell.bam \ O=single_cell_rg.bam \ RGID=COMBINED_RG \ RGLB=COMBINED_LIB \ RGPL=ILLUMINA \ RGPU=COMBINED_UNIT \ RGSM=COMBINED_SAMPLE
- 批量处理所有BAM后,用
samtools merge合并为单个BAM:
samtools merge merged_combined.bam *.rg.bam
- 用修改后的合并BAM运行Freebayes,生成的VCF会直接仅包含
COMBINED_SAMPLE一列:
freebayes -f reference_genome.fasta merged_combined.bam > combined_variant.vcf
方案二:后处理多样本VCF合并列
如果已生成多样本VCF,可通过bcftools将所有样本列合并为单个样本列:
# 若已生成多样本VCF可跳过此步 freebayes -f reference_genome.fasta merged.bam > multi_sample.vcf # 合并所有样本信息为COMBINED_SAMPLE列 bcftools view multi_sample.vcf | \ bcftools +fill-tags -- -t GT,AD,DP -S ^ | \ bcftools reheader -s <(echo "COMBINED_SAMPLE") > combined_variant.vcf
注:-S ^表示合并所有样本的信息,fill-tags用于整合基因型、等位基因深度、总深度等核心字段,reheader负责修改样本名为COMBINED_SAMPLE。
内容的提问来源于stack exchange,提问作者Amp
相关产品推荐
相关产品推荐

