samtoolsmpileup使用详解

发布时间:2023-05-18

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 可以与其他工具结合使用来实现更复杂的序列分析任务。下面是一些常用的结合方法:

  • samtoolsmpileupvcftools:可以通过 vcftools 进一步筛选变异结果,例如对指定的单个核苷酸变异或者 Indel 进行选择,或以不同的方式组合多个过滤条件
  • samtoolsmpileupbedtools:可以使用 bedtools 对 mpileup 的输出结果进行基因注释和可视化
  • samtoolsmpileupGATK:可以通过引入 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 与其他工具的结合使用可以更好地发挥其功能,为我们的分析提供更多的参考。