SuperAPI AI 工具集

pysam

数据与分析

查看项目

更新于 10-15 20:34

技能介绍

用途:Pysam 是面向 NGS 数据处理的 Python 模块,用于读取、操作和写入基因组数据集,为 htslib 提供 Python 接口,并可在 Python 中调用 samtools/bcftools 命令。

主要能力:

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

使用方式:安装命令为 uv pip install pysam。基本用法包括用 pysam.AlignmentFile("example.bam", "rb") 打开 BAM 并 fetch 区域,用 pysam.VariantFile("variants.vcf") 迭代变异,用 pysam.FastaFile("reference.fasta") 提取序列。文件模式如 "rb" 读 BAM、"r" 读 SAM、"rc" 读 CRAM、"wb" 写 BAM 等。命令行工具示例:pysam.samtools.sort("-o", "sorted.bam", "input.bam")、pysam.samtools.index("sorted.bam")、pysam.bcftools.view("-O", "z", "-o", "output.vcf.gz", "input.vcf"),错误可用 pysam.SamtoolsError 捕获。

适用场景:测序比对文件分析、遗传变异分析、参考序列或基因区域提取、原始 FASTQ 处理、覆盖度或读段深度计算、生信分析流程实现、测序数据质控、变异检测与注释工作流。

限制与注意事项:坐标系统需注意,Pysam 使用 0 基半开区间,而 fetch() 的区域字符串遵循 samtools 的 1 基约定;VCF 文件格式用 1 基坐标,但 VariantRecord.start 为 0 基。随机访问需索引文件:BAM 需 .bai,CRAM 需 .crai,FASTA 需 .fai,VCF.gz 需 .tbi,BCF 需 .csi;无索引时可用 fetch(until_eof=True) 顺序读取。fetch() 返回与区域边界重叠的读段,而非仅完全包含者。pileup 迭代器需保持引用存活,否则报错。修改 query_sequence 后不能就地修改 query_qualities,需先复制。流式仅支持 stdin/stdout。线程安全尚未完全验证。性能上建议使用索引、用 pileup() 做列式分析、用 count() 计数、并行处理独立区域并显式关闭文件。官方文档:https://pysam.readthedocs.io/