美文网首页
pysam的使用

pysam的使用

作者: 九月_1012 | 来源:发表于2020-04-14 09:42 被阅读0次

本文来源于panxiaoguang.github.io

samtools是我们比较常用的处理bam文件的软件,但很多关于bam的具体信息,samtools不能给出,比如想获得某个ref位置,每条reads的碱基情况,及对应的readsID;获得比对到参考具体区间的碱基分布矩阵等。

Pysam内置了较多的函数,可以非常灵活的满足,各种个性化的关于bam文件信息的提取。


    1. AlignmentFile对象内置方法
  • 2.AlignedSegmennt对象内置方法
    1. PileupColumn对象内置方法
    1. PileupRead对象内置方法

1 获得pysam.Alignment对象

import pysam
samfile = pysam.AlignmentFile("test.bam","rb")
#核查索引
samfile.check_index()  #返回true

2 AlignmentFile对象内置方法

  • 计算目标区域内比对上的reads数目
    count(self,contig=None, start=None, stop=None, region=None, until_eof=False, read_callback=’nofilter’, reference=None,end=None)
#计算目标区域内比对上的reads数目
samfile.count(contig='chr1', start=500, stop=600)  #注意是stop,而是end
  • 计算目标区域里的覆盖度
    count_coverage(self, contig=None,start=None, stop=None,region=None, quality_threshold=15, read_callback='all',reference=None,end=None)

计算目标区域内的覆盖度。返回1个4维的array,代表ACGT的覆盖度,而每个维度的array长度为100,里面的数字代表该碱基在各个位置上的覆盖度。

#计算目标区域里的覆盖度
samfile.count_coverage(contig='chr1', start=500, end=600) 
  • 提取出比对到目标区域内的全部reads
    fetch(self, contig=None, start=None, stop=None, region=None, tid=None, until_eof=False, multiple_iterators=False, reference=None, end=None)

提取比对到目标区域的全部reads,返回的是迭代器,可使用next、for循环访问。reads用的是AlignedSegment对象表示,以下主要说reads的AlignedSengment对象的内置方法

allreads=sam.fetch(contig='chr1', start=500, end=600)
reads1=next(allreads)                                                  

find_introns(self, read_iterator)返回一个字典{(start, stop): count},列出了reads中的intronic sites(cigar字符串中的’N’)
get_index_statistics(self)<u>通过index统计该BAM文件中在各个染色体上mapped/unmapped的reads个数</u>。

sam.get_index_statistics()
[IndexStats(contig='chr1', mapped=310538, unmapped=940, total=311478), IndexStats(contig='chr2', mapped=0, unmapped=0, total=0), 
 IndexStats(contig='chrM', mapped=0, unmapped=0, total=0)]

get_reference_name(self, tid)

  • 根据染色体顺序,得到染色体名称
    得到tid(数字)相对应的reference name(字符串),例如在这个BAM中tid为0代表chr1,tid为1代表chr2,tid为24代表chrM。
samfile.get_reference_name(0)'chr1'
'chr1'

与之对应的是<u>将染色体名称转为数字</u>,即将reference转换成tid

sam.get_tid('chr2')
1

pileup(self, contig=None, start=None, stop=None, region=None, reference=None, end=None, **kwargs)
类似于samtools的pileup操作,返回一个迭代器,每次迭代返回一个位点的PileupColumn对象,该对象的操作在后面进行详细介绍。

 pileupcolumn = sam.pileup("chr1", 999863, 999865,truncate=True) 
pc=next(pileupcolumn)
#stepper='nofilter', min_base_quality=0, min_mapping_quality=0

sam.references
('chr1', 'chr2', 'chr3', 'chr4', 'chr5', 'chr6', 'chr7', 'chr8', 'chr9', 'chr10', 'chr11', 'chr12', 'chr13', 'chr14', 'chr15', 'chr16', 'chr17', 'chr18', 'chr19', 'chr20', 'chr21', 'chr22', 'chrX', 'chrY', 'chrM')
#获得reads的cigar值
reads1.cigarstring
'2S151M'
cigar记录的元组格式,下面的例子就代表了151M(0 代表 M)
reads1.cigartuples
[(0, 151)]
Image.png
  • 谨记reads在pysam包内部的对象名称是AlignedSegment

get_aligned_pairs(self, matches_only=False, with_seq=False)
展示了query和reference之间的比对情况,如果遇到indel或者skipping的情况,相应的query或者reference会变为None

# 比较两条reads的在ref上坐标的差值
reads.compare(reads2)

reads1.get_aligned_pairs(matches_only=False, with_seq=True)
#[(0, 999850, 'C'), (1, 999851, 'G'), (2, 999852, 'G')]

read1.get_blocks() #返回该reads比对到ref的起始与终止位置

#返回该reads比对到的ref区域的reference碱基
reads1.get_reference_sequence()   

来源:
https://panxiaoguang.github.io/2019/03/06/Pysam%E5%A4%84%E7%90%86bam%E6%96%87%E4%BB%B6/

相关文章

  • windows下的python安装pysam报错

    安装pysam时报错: 指定版本仍报错: 使用pysam-win安装: 但是import时不行: 貌似pysam在...

  • 使用pysam操作VCF/BCF文件

    使用pysam操作VCF/BCF文件 读取和写出 VariantFile函数得到的是 pysam.libcbcf....

  • pysam的使用

    本文来源于panxiaoguang.github.io samtools是我们比较常用的处理bam文件的软件,但很...

  • Pysam 处理 bam 文件

    Pysam 是一个python的模块,可用于处理bam文件 安装 使用 Pysam的函数有很多,主要的读取函数有:...

  • 70. 《Bioinformatics Data Skills》

    pysam包使用AlignmentFile对象存储BAM/SAM文件,而通过AlignmentSegment对象存...

  • 69. 《Bioinformatics Data Skills》

    使用pysam包读取BAM/SAM文件返回的AlignmentFile对象包含丰富的属性。 header属性 he...

  • pysam使用及出现的问题

    从问题开始 1.问题 应放位置: 报错改变: 问题还是头文件。尝试: 解决,但是是将sam转为ba...

  • 使用Pysam操作BAM文件

    Pysam操作BAM文件 Pysam包是一个处理基因组数据的python模块,它打包了htslib-1.3、sam...

  • pysam

    优化 生物信息学个人理解: 基础应该是统计学+计算机学

  • 71. 《Bioinformatics Data Skills》

    现在我们已经具备采用pysam模块统计比对信息的知识了,这里我们编写一个程序来统计BAM/SAM文件的信息并使用s...

网友评论

      本文标题:pysam的使用

      本文链接:https://www.haomeiwen.com/subject/xjtzmhtx.html