240124学习记录:查看/提取bam文件的reads

BAM 文件(Binary Alignment/Map file)是一种常用于存储测序数据的二进制格式。它主要用于存储 DNA测序 数据的比对(alignment)信息。以下是 BAM 文件的主要结构和组成部分:

  1. 文件头(Header): BAM 文件的开头包含一个文件头,其中包含有关该文件的元信息,如测序平台信息、参考基因组信息、测序参数等。文件头以 @HD 开始,后跟 @SQ(参考序列信息)、@RG(测序样本组信息)等不同的记录类型。

    @HD     VN:1.6 
    @SQ     SN:chr1 LN:248956422 
    @SQ     SN:chr2 LN:242193529 
    ... 
    @RG     ID:sample1     SM:sample1
  2. 比对数据(Alignment Data): BAM 文件的主要部分包含测序数据的比对信息。每个比对记录包括了测序 reads 的信息、比对位置、质量值等。比对记录以二进制形式存储,具体的字段和信息可以通过工具(例如 samtools view)来查看。

  3. 索引(Index): 为了快速访问 BAM 文件中的数据,通常会有一个对应的索引文件(.bai)。索引文件允许根据位置快速检索 BAM 文件中的比对记录,而不必遍历整个文件。

BAM 文件采用二进制格式,因此它通常相对较小,同时能够存储大量的测序数据。由于 BAM 文件是二进制的,要查看其中的内容通常需要使用专门的工具,比如 samtools

在使用 BAM 文件时,常用的工具包括 samtoolsPicard 等,它们提供了各种功能,如文件格式转换、信息查询、统计分析等。

查看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"

你可能感兴趣的:(dyouya的生信相关,小D的Linux日记,linux)