用途:Pysam 是面向 NGS 数据处理的 Python 模块,用于读取、操作和写入基因组数据集,底层封装 htslib,可处理比对、变异和序列文件,适合构建生物信息学分析流程。
主要能力:使用 AlignmentFile 读写 SAM/BAM/CRAM,按区域 fetch 读段、按质量或标记过滤、计算覆盖度与 pileup;使用 VariantFile 读写 VCF/BCF,查询区域变异、访问 INFO/FORMAT 与基因型、过滤和子集化样本;使用 FastaFile 随机访问参考序列,FastxFile 读取 FASTQ,并支持 tabix 索引文件(BED/GTF/GFF)。还可调用 samtools/bcftools 命令,如 pysam.samtools.sort("-o", "sorted.bam", "input.bam")。
使用方式:安装命令为 uv pip install pysam。随机访问需先建索引:BAM 用 pysam.index(),FASTA 用 pysam.faidx(),VCF.gz 用 pysam.tabix_index()。注意坐标系统:Pysam 用 0 基半开区间,而 fetch 的区域字符串按 samtools 约定为 1 基。无索引时可用 fetch(until_eof=True) 顺序读取。
适用场景:比对结果质控、覆盖度与读深分析、变异注释与过滤、参考序列提取、原始 FASTQ 处理及多文件整合流程。
限制:部分操作依赖索引文件;fetch 返回与区域边界重叠的读段而非完全包含者;pileup 迭代器需保持引用;修改 query_sequence 后不能原地改 query_qualities;流式仅支持 stdin/stdout;线程安全尚未完全验证。官方文档见 https://pysam.readthedocs.io/。