SuperAPI AI 工具集

pysam

数据与分析

查看项目

更新于 10-15 21:34

技能介绍

用途:pysam 是面向 NGS 数据处理的 Python 基因组文件工具箱,用于读取、操作和写入测序比对、变异与序列文件,并可通过 Python 调用 samtools/bcftools 命令。

主要能力:

  1. 比对文件(SAM/BAM/CRAM):用 AlignmentFile 打开读取,按区域 fetch 读段,按质量或 flag 过滤,写入比对结果,统计覆盖度,做 pileup 分析,访问序列、质量值与比对信息。
  2. 变异文件(VCF/BCF):用 VariantFile 读写,按区域查询变异,访问位置、等位基因、质量,提取样本基因型,按条件过滤、注释与子集化。
  3. 序列文件(FASTA/FASTQ):FastaFile 按坐标随机访问参考序列,FastxFile 读取带质量值的原始测序数据,校验变异参考等位基因,转换 FASTA/FASTQ,访问 tabix 索引的 BED/GTF/GFF 文件。
  4. 整合工作流:结合比对、变异与参考序列,做覆盖度统计、变异校验与注释、变异位点周边序列提取、多数据类型质控与覆盖度轨迹生成。

必要用法:安装命令为 uv pip install pysam。打开文件需指定模式,如 "rb" 读 BAM、"r" 读 SAM、"rc" 读 CRAM、"wb" 写 BAM、"w" 写 SAM、"wc" 写 CRAM。区域随机访问需预先建索引:BAM 用 .bai(pysam.index()),CRAM 用 .crai,FASTA 用 .fai(pysam.faidx()),VCF.gz 用 .tbi(pysam.tabix_index()),BCF 用 .csi。无索引时可用 fetch(until_eof=True) 顺序读取。

限制与注意:坐标系统混用,Python 接口为 0 基半开区间,fetch() 的区域字符串遵循 samtools 的 1 基约定,VCF 文件格式为 1 基而 VariantRecord.start 为 0 基。fetch() 返回与区域边界部分重叠的读段,不只完全包含的读段。修改 query_sequence 后不能就地改 query_qualities,需先复制。迭代器需保持存活,否则会出现 PileupProxy accessed after iterator finished。流式仅支持 stdin/stdout,不支持任意 Python 文件对象。线程安全尚未完全验证。官方文档:https://pysam.readthedocs.io/