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 质量的 readFQUAL
:最低等位基因质量值筛选,过滤特定的等位基因质量值 示例代码:
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
与其他工具的结合使用可以更好地发挥其功能,为我们的分析提供更多的参考。