首页 > 解决方案 > 如何从 Python 脚本读取和更改 BAM 文件?

问题描述

我打算使用 Python 脚本来更改不同的 BAM(二进制对齐图)文件头。现在我只是在测试一个 bam 文件的输出,但每次我想检查我的输出时,stdout它都不是人类可读的。如何查看脚本的输出?我应该samtools view bam.file在我的脚本上使用吗?这是我的代码。

#!/usr/bin/env python

import os
import subprocess


if __name__=='__main__':
    for file in os.listdir(os.getcwd()):
        if file == "SRR4209928.bam":
            with open("SRR4209928.bam", "r") as input:
                content = input.readlines()
                for line in content:
                    print(line)

标签: python

解决方案


由于BAM是 的二进制类型SAM,因此您需要编写一些知道如何处理压缩数据的内容,然后才能从中提取有意义的内容。不幸的是,您不能只open()readlines()那种类型的文件中提取。

如果您要自己编写模块,则需要阅读Sequence Alignment/Map Format Specification

幸运的是,有人已经这样做并创建了一个 Python 模块:您可以继续检查pysam。它肯定会让你的生活更轻松。

我希望它有所帮助。


推荐阅读