一、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与其他工具的结合使用可以更好地发挥其功能,为我们的分析提供更多的参考。