[ PROMPT_NODE_27166 ]
pysam
[ SKILL_DOCUMENTATION ]
# Pysam
## 概述
Pysam 是一个用于读取、操作和写入基因组数据集的 Python 模块。它通过 Python 接口调用 htslib,支持读写 SAM/BAM/CRAM 比对文件、VCF/BCF 变异文件和 FASTA/FASTQ 序列。支持查询 tabix 索引文件、执行堆叠 (pileup) 分析以计算覆盖度,并执行 samtools/bcftools 命令。
## 何时使用此技能
当需要进行以下操作时使用此技能:
- 处理测序比对文件 (BAM/CRAM)
- 分析遗传变异 (VCF/BCF)
- 提取参考序列或基因区域
- 处理原始测序数据 (FASTQ)
- 计算覆盖度或读取深度
- 实现生物信息学分析工作流
- 测序数据质量控制
- 变异检测与注释工作流
## 快速入门
### 安装
bash
uv pip install pysam
### 基础示例
**读取比对文件:**
python
import pysam
# 打开 BAM 文件并获取区域内的 reads
samfile = pysam.AlignmentFile("example.bam", "rb")
for read in samfile.fetch("chr1", 1000, 2000):
print(f"{read.query_name}: {read.reference_start}")
samfile.close()
**读取变异文件:**
python
# 打开 VCF 文件并遍历变异
vcf = pysam.VariantFile("variants.vcf")
for variant in vcf:
print(f"{variant.chrom}:{variant.pos} {variant.ref}>{variant.alts}")
vcf.close()
**查询参考序列:**
python
# 打开 FASTA 并提取序列
fasta = pysam.FastaFile("reference.fasta")
sequence = fasta.fetch("chr1", 1000, 2000)
print(sequence)
fasta.close()
## 核心能力
### 1. 比对文件操作 (SAM/BAM/CRAM)
使用 `AlignmentFile` 类处理比对后的测序 reads。适用于分析比对结果、计算覆盖度、提取 reads 或进行质量控制。
**常见操作:**
- 打开并读取 BAM/SAM/CRAM 文件
- 从特定基因组区域获取 reads
- 按比对质量、标志位或其他标准过滤 reads
- 写入过滤或修改后的比对结果
- 计算覆盖度统计信息
- 执行堆叠分析 (pileup)(逐碱基覆盖度)
- 访问 read 序列、质量分数和比对信息
**参考:** 请参阅 `references/alignment_files.md` 获取详细文档,包括:
- 打开和读取比对文件
- AlignedSegment 属性和方法
- 使用 `fetch()` 进行区域检索
- 用于覆盖度分析的堆叠分析
- 写入和创建 BAM 文件
- 坐标系统和索引
- 性能优化技巧
### 2. 变异文件操作 (VCF/BCF)
使用 `Va