您的位置:

samtoolsmpileup使用详解

一、samtoolsmpileup概述

samtoolsmpileup是SAMtools软件包中的一个命令行工具,主要用于处理来自高通量测序技术的序列数据,可以从多种文件格式中提取序列信息,并通过这些信息计算出每个碱基在各个样本中的深度,变异和SNP等信息。

samtoolsmpileup的结果格式可以方便地用于其他序列分析软件的输入。这篇文章将从多个方面详细介绍samtoolsmpileup的使用。

二、samtoolsmpileup的输入参数

当我们调用samtoolsmpileup命令时,需要指定输入文件和一些参数。一般来说,输入文件包括BAM、CRAM、SAM等格式的序列数据文件,下面是一些常见的参数:

  • -f:参考基因组文件,可以通过fasta格式或者sam格式提供
  • -q:最低质量值阈值,可以用于过滤低质量序列
  • -Q:最低read mapping质量阈值,可以过滤低mapping质量的read
  • -d:最大深度阈值,可以过滤读数太高的位点以节省内存
  • -L:区间列表文件,可以对指定的区间进行操作
# 示例代码
samtools mpileup -f reference.fa -q 20 -d 5000 -L interval.bed input.bam > output.vcf

三、基于samtoolsmpileup的变异检测

samtoolsmpileup可以便捷地实现SNP和Indel的检测。

我们可以使用bcftools工具根据mpileup的输出结果进行SNP和Indel的检测。下面是一些常见的bcftools参数:

  • -c:当输入文件很大时,先处理利用缓存机制,通常使用时不加该参数
  • -v:除去参考序列中的SNVs
  • -m:仅输出多态性(SNVs和Indels)
  • -M:仅输出单核苷酸变异(SNVs)
  • -g:输出各个样本的变异结果
# 示例代码
samtools mpileup -f reference.fa input.bam | bcftools call -mv -Ov -o output.vcf

四、samtoolsmpileup的过滤选项

由于mpileup输出的结果可能会包含许多false positives或false negatives,我们可以针对特定的实验设计或分析需求设置过滤选项,以获得更高质量和可靠性的分析结果。

根据使用场景的不同,我们可以设置最低等位基因频率、最小深度、最大深度和最低质量等过滤选项。下面是一些常见的过滤选项:

  • DP:最小深度筛选,过滤在给定样本中深度太浅的位点
  • DP4:最低等位基因频率筛选,过滤未达到给定频率的位点
  • MQ:最低mapping质量筛选,过滤特定mapping质量的read
  • FQUAL:最低等位基因质量值筛选,过滤特定的等位基因质量值
# 示例代码
samtools mpileup -f reference.fa -q 20 -C 50 --no-BAQ input.bam | bcftools call -mv -Oz -f GQ -o output.vcf.gz
bcftools filter -i 'GQ>20' -s LowQual -Oz -o good_variants.vcf.gz output.vcf.gz

五、samtoolsmpileup用于CNV检测

samtoolsmpileup也可以用于拟合比例模型(PWM)来进行拷贝数变异(CNV)检测。BAM文件中的每个read会被映射到目标基因组上的一个或多个位置。我们需要为每个位点计算在所有样本中read的深度,并计算read的比例分布。

我们可以使用R语言的poRe软件包来进行CNV检测。

# 示例代码
samtools mpileup -q 10 -Q 15 -f reference.fa input.bam | cut -f 1,2,4- | Rscript cnv.R -o output.txt

六、samtoolsmpileup与其他工具的结合

samtoolsmpileup可以与其他工具结合使用来实现更复杂的序列分析任务。下面是一些常用的结合方法:

  • samtoolsmpileup与vcftools:可以通过vcftools进一步筛选变异结果,例如对指定的单个核苷酸变异或者Indel进行选择,或以不同的方式组合多个过滤条件
  • samtoolsmpileup与bedtools:可以使用bedtools对mpileup的输出结果进行基因注释和可视化
  • samtoolsmpileup和GATK:可以通过引入GATK中的过滤方法对mpileup的结果进行更细致的处理
# 示例代码
samtools mpileup -f reference.fa input.bam | bgzip -c > output.vcf.gz
tabix output.vcf.gz
vcftools --gzvcf output.vcf.gz --remove-filtered-all --remove-indels --max-alleles 2 --min-alleles 2 --recode --stdout | bgzip -c > output.filtered.vcf.gz
tabix output.filtered.vcf.gz

七、总结

samtoolsmpileup是一款功能强大的工具,对于对序列数据的多任务处理提供了便利。在使用过程中,我们建议根据特定需求调整参数和过滤选项,以获得更高质量和可靠性的结果。此外,samtoolsmpileup与其他工具的结合使用可以更好地发挥其功能,为我们的分析提供更多的参考。