使用pysam处理bam文件
-
安装依赖
pip install pysam==0.19.1使用示例及说明
# 读取文件 with pysam.AlignmentFile(file, mode) as reader: for r in reader: # 可以通过循环遍历bam中的每一行 print(r) # r中包含很多属性,具体可以通过调试查看注意:
- 当文件为 .bam 文件时, mode= "rb"
- 当文件为 .sam 文件时, mode= "r"
- 当文件为 CRAM 文件时, mode= "rc"
# 当文件包含索引时,可以读取特定区域 for r in reader.fetch('chrM', 300, 310): print(r)# 获取比对到指定碱基的结果,且碱基质量>30 for pileupcolumn in reader.pileup("chrM", 300, 301): for read in [al for al in pileupcolumn.pileups if al.alignment.mapq>30]: if not read.is_del and not read.is_refskip: if read.alignment.pos + 1 == 301: print(read.alignment.reference_name,\ read.alignment.pos + 1,\ read.alignment.query_sequence[read.query_position])注意:
- pysam中碱基位置都是从0开始计算
- read.alignment与前述r是相同的对象实例