用途:Pysam 是 htslib 的 Python 封装,用于读取、操作和写出基因组数据文件,包括 SAM/BAM/CRAM 比对文件、VCF/BCF 变异文件和 FASTA/FASTQ 序列文件,并提供基于索引的区域随机访问;同时把 samtools 和 bcftools 暴露为可调用的 Python 函数。
主要能力:使用 AlignmentFile 读取或写出 BAM/SAM/CRAM 并按区域 fetch,按 mapping quality 与 flag 过滤 reads,用 count 快速统计区域内 reads 数;用 pileup 获取逐碱基深度与 read 级细节,用 count_coverage 快速计算 A/C/G/T 逐位覆盖度;使用 VariantFile 遍历和过滤 VCF/BCF,访问样本基因型 GT、INFO 与 FILTER;使用 FastaFile 从带 .fai 索引的 FASTA 提取参考序列,使用 FastxFile 顺序读取 FASTQ;从 BAM header 的 RG 条目提取 read group 与样本信息,并按 RG 筛选 reads。
使用方式:安装命令为 pip install pysam。区域查询等随机访问需索引文件,可用 pysam.index()、pysam.tabix_index()(preset="vcf" 等)与 pysam.faidx() 生成 .bai、.tbi、.fai 等;无索引时用 fetch(until_eof=True) 顺序读取。可通过 pysam.sort、pysam.view、pysam.bcftools.view 等调用对应 CLI。注意坐标体系:Python API 为 0-based 半开区间,samtools 区域字符串为 1-based,VCF 的 pos 为 1-based。pileup 默认不截断,会包含超出请求区域的重叠 read,需用 truncate=True 限制。
适用场景:BAM/CRAM 区域提取与 read 过滤、VCF/BCF 基因型读取与变异过滤注释、参考序列提取、逐碱基覆盖度与 pileup 统计、NGS 质控(比对质量、flag、覆盖度)、多样本 BAM 的 read group 处理,以及组合比对、变异、序列数据的自定义流程。
限制:Pysam 不负责从 FASTQ 做 read mapping,也不负责从 BAM 做变异检测,相关资料建议分别使用 STAR/BWA/minimap2 和 GATK/DeepVariant。部分 Linux 系统可能需要 libhts-dev 等依赖。按 read group 全文件提取会顺序扫描整个 BAM,大文件可能很慢,建议优先区域过滤或使用 samtools view -b -r <rg_id>。未提供的收费、价格与效果信息暂未提供。