BAM 文件(Binary Alignment/Map file)是一种常用于存储测序数据的二进制格式。它主要用于存储 DNA测序 数据的比对(alignment)信息。以下是 BAM 文件的主要结构和组成部分:
BAM 文件采用二进制格式,因此它通常相对较小,同时能够存储大量的测序数据。由于 BAM 文件是二进制的,要查看其中的内容通常需要使用专门的工具,比如 samtools
。
在使用 BAM 文件时,常用的工具包括 samtools
、Picard
等,它们提供了各种功能,如文件格式转换、信息查询、统计分析等。
查看bam文件上的总reads可以用idxstats命令,要求 BAM 文件有一个索引文件(.bai):
samtools idxstats your_file.bam
输出将是一个包含每个参考序列的名称、长度、mapped reads 数目和unmapped reads 数目的表格。
如果只关心总 reads 数量,你可以使用 awk
命令从输出中提取相应的信息:
# only mapped
samtools idxstats your_file.bam | awk '{s+=$3} END {print s}'
# mapped + unmapped
samtools idxstats your_file.bam | awk '{s+=$3+$4} END {print s}'
{s+=$3+$4}
: 对于每一行,将第三列(mapped reads)和第四列(unmapped reads)的值相加,然后将结果累加到变量 s
中。
若想查看特定染色体区段的reads数量,如chrM:
samtools view -c -F 256 your_file.bam chrM
使用 -F 256
选项排除非主对齐的 reads(如辅助比对),然后通过指定 chrM
来统计线粒体 reads 的数量。但是我觉得也可以不用设置-F这一参数。
提取特定区段:
# 替换文件名
bam_file="your_file.bam"
# 使用 samtools view 和 grep 提取线粒体 reads 信息
samtools view -h "$bam_file" | grep -E "^@|^\S+\s[0-9]+\schrM\s" > "chrM_reads.sam"
# 使用 samtools view 和 grep 提取线粒体 reads 信息,并保存为 BAM 文件
samtools view -h "$bam_file" | grep -E "^@|^\S+\s[0-9]+\schrM\s" | samtools view -bS - > "chrM_reads.bam"
因篇幅问题不能全部显示,请点此查看更多更全内容