对bam文件做downsample

微信公众号:生物信息学习

如果各个样本测的数据量相差较大,想把这些样本downsample到相同的reads,可用以下方法:
目标reads数为15000000,需要先计算出需要downsample的比例,因为我用的downsample工具samtools无法downsample到特定reads数,只能downsample到一定的比例,因此想要downsample到固定reads,则需要先用目标reads数/总reads数作为downsample的比例,再用samtools提取reads,代码如下:

#samtools无法直接downsample到一个固定数目的reads
frac=$( samtools idxstats input.bam | cut -f3 | awk 'BEGIN {total=0} {total += $1} END {frac=15000000/total; if (frac > 1) {print 1} else {print frac}}' )

samtools view -s $frac input.bam > subsample.bam

最终就可以得到我们的目标reads数很接近的reads了。

你可能感兴趣的:(对bam文件做downsample)