Pysam 处理bam文件
Pysam可用来处理bam文件
安装:
用 pip 或者 conda即可
使用:
Pysam的函数有很多,主要的读取函数有:
AlignmentFile:读取BAM/CRAM/SAM文件
VariantFile:读取变异数据(VCF或者BCF)
TabixFile:读取由tabix索引的文件;
FastaFile:读取fasta序列文件;
FastqFile:读取fastq测序序列文件
一般常用的是第一个和第二个。
例子:
1 import pysam
2
3 bf = pysam.AlignmentFile("in.bam","rb"); 其中r = read, b:binary. 二进制文件。 bam文件index
bf是一个迭代器,可以next()或者for读取
1 for i in bf:
2 print i.reference_name,i.pos,i.mapq,i.isize
结果:
1 ctg000331_np121 144935 27 -284
2 ctg000331_np121 144940 48 291
3 ctg000331_np121 144941 48 309
4 ctg000331_np121 144944 48 255
5 ctg000331_np121 144946 27 -370
6 ctg000331_np121 144947 27 -346
i.reference_name代表read比对到的参考序列染色体id;
- i.flag bam的flag值
i.pos代表read比对的位置;
i.mapq代表read的比对质量值;
i.isize代表PE read直接的插入片段长度,有时也称Fragment长度;
很多功能见下图:

** pysam中的坐标位点是0开始,染色体起始位置为0,不是1
1 ## sam 文件依次对应的12列
2 r.qname: reads 名
3 r.flag :Flag
4 r.reference_name: 比对到的染色体
5 r.pos+1: 比对位置,必须得加一
6 r.mapq: 比对质量
7 r.cigarstring: CIGAR
8 r.next_reference_name:另外一条reads比对的参考基因组,若和第一条相同,则输出=
9 r.mpos+1: 比对的位置,必须得加1
10 r.isize: 插入片段长度
11 r.seq:reads seq
12 r.qual: reads 质量
一些功能:
- check_index()
检测index文件是否存在存在即为true
1 bf.check_index()
2 True
- close()
用完记得关闭
1 bf.close()
- count(self,contig=None, start=None, stop=None, region=None, until_eof=False, read_callback='nofilter', reference=None,end=None)
计算目标区域内比对上的reads数目
1 bf.count(contig="ctg000331_np121", start=1, stop=6000)
2 24
- 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,里面的数字代表该碱基在各个位置上的覆盖度。
1 bf.count_coverage(contig="ctg000331_np121",start=1,stop=100)
- fetch(self, contig=None, start=None, stop=None, region=None, tid=None, until_eof=False, multiple_iterators=False, reference=None, end=None)
提取出比对到目标区域内的全部reads。返回的是一个迭代器,可以通过for循环或者next函数从中取出reads,我们使用next()函数取出第一条reads,reads是用 AlignedSegment对象表示,可以通过该对象的内置方法再对这条reads进行一些查询操作。
1 allreads=bf.fetch(contig="ctg000331_np121",start=1,stop=10000)
2 是一个迭代器,可以用for循环获得
- get_index_statistics(self)
通过index统计该BAM文件中在各个染色体上mapped/unmapped的reads个数
1 bf.get_index_statistics()
- fetch函数定位特定区域
有时候我们并不需要遍历整一份BAM文件,我们可能只想获得区中的某一个区域(比如chr1中301-310中的信息),那么这个时候可以用Alignmen模块中的fetch函数:
bam文件必须要index
1 for r in bf.fetch('chr1', 300, 310):
2 print r
3 bf.close()
关注下方公众号可获得更多精彩

参考
Pysam 处理bam文件的更多相关文章
- pysam操作sam文件
pysam模块 因为要分析sam文件中序列的情况,因此要对reads进行细分,所以之前想用数据库将sam文件信息存储,然后用sql语句进行分类.后来发现很麻烦,pysam就是一个高效读取存储在SAM ...
- SAM/BAM文件处理
当测序得到的fastq文件map到基因组之后,我们通常会得到一个sam或者bam为扩展名的文件.SAM的全称是sequence alignment/map format.而BAM就是SAM的二进制文件 ...
- bam文件softclip , hardclip ,markduplicate的探究
测序产生的bam文件,有一些reads在cigar值里显示存在softclip,有一些存在hardclip,究竟softclip和hardclip是怎么判断出来的,还有是怎么标记duplicate ...
- C++使用htslib库读入和写出bam文件
有时候我们需要使用C++处理bam文件,比如取出read1或者read2等符合特定条件的序列,根据cigar值对序列指定位置的碱基进行统计或者对序列进行处理并输出等,这时我们可以使用htslib库 ...
- SAMTOOLS使用 SAM BAM文件处理
[怪毛匠子 整理] samtools学习及使用范例,以及官方文档详解 #第一步:把sam文件转换成bam文件,我们得到map.bam文件 system"samtools view -bS m ...
- bam文件测序深度统计-bamdst
最近接触的数据都是靶向测序,或者全外测序的数据.对数据的覆盖深度及靶向捕获效率的评估成为了数据质量监控中必不可少的一环. 以前都是用samtools depth 算出单碱基的深度后,用perl来进行深 ...
- 文件格式——Sam&bam文件
Sam&bam文件 SAM是一种序列比对格式标准, 由sanger制定,是以TAB为分割符的文本格式.主要应用于测序序列mapping到基因组上的结果表示,当然也可以表示任意的多重比对结果.当 ...
- 推荐一个SAM文件或者bam文件中flag含义解释工具
SAM是Sequence Alignment/Map 的缩写.像bwa等软件序列比对结果都会输出这样的文件.samtools网站上有专门的文档介绍SAM文件.具体地址:http://samtools. ...
- 怎么从bam文件中提取出比对OR没比对上的paired reads | bamToFastq | STAR
折腾这么多都是白瞎,STAR就有输出没有别对上的pair-end reads的功能 参见:How To Filter Mapped Reads With Samtools I had the same ...
随机推荐
- Linux入门所必备的Linux命令和C语言基础
文件和目录(底部有视频资料) cd /home 进入 '/ home' 目录' cd - 返回上一级目录 cd -/- 返回上两级目录 cd 进入个人的主目录 cd ~user1 进入个人的主目录 c ...
- 21.7.1 test
\(NOI\) 模拟赛 呜呜呜 \(\cdots\cdots\) \(T1\) 类似哈夫曼编码,虽然没学过但是我依然画出了二叉树,然后尝试树形dp,并且最后还抓住了一个优化!让我兴奋地以为自己能赛时A ...
- 转:汇编中EBP寄存器和ESP寄存器的区别
EBP和ESP都是汇编中关于指针的寄存器.但是定义不同: (1)ESP:栈指针寄存器(extended stack pointer),其内存放着一个指针,该指针永远指向系统栈最上面一个栈帧的栈顶.(2 ...
- 内核驱动编译之Makefile shell pwd路径问题
一般我们在写Makefile的时候为了获取到当前Makefile所在的文件夹路径,会使用TopDIR ?= $(shell pwd)来定义,后续的文件路径都是基于此TopDIR基础上使用. 今天在移植 ...
- 『动善时』JMeter基础 — 56、JMeter使用命令行模式生成HTML测试报告
目录 1.自动生成HTML图形化报告 2.使用已有的测试结果文件生成HTML报告 3.HTML图形化报告内容详解 (1)Dashboard页面:(重点查看) (2)Charts页面:(辅助分析) 4. ...
- Trap (陷入/中断) 源码解析
用户空间和内核空间之间的切换通常称为trap trap的三种形式 系统调用引发 异常发生 设备中断 (时间中断.IO中断.网络中断等) supervise mode的权限 用户态和内核态之间的到底有什 ...
- 议题解析与复现--《Java内存攻击技术漫谈》(二)无文件落地Agent型内存马
无文件落地Agent型内存马植入 可行性分析 使用jsp写入或者代码执行漏洞,如反序列化等,不需要上传agent Java 动态调试技术原理及实践 - 美团技术团队 (meituan.com) 首先, ...
- GitHub上 README 增加图片标签
hey Guys~ 你可能遇到的GitHub上好的项目都有一个非常棒的README,其中不乏用到一些非常好看的标签.比如下面这样: walle fastjson 那我们怎样自己添加一个高大上图片标签呢 ...
- Qt 项目管理文件(.pro) 详解
项目文件目录树 在 Qt Creator 中新建一个 Widget Application 项目 samp2_1,在选择窗口基类的页面选择 QWidget 作为窗体基类,并选中"Genera ...
- 剖析虚幻渲染体系(12)- 移动端专题Part 2(GPU架构和机制)
目录 12.4 移动渲染技术要点 12.4.1 Tile-based (Deferred) Rendering 12.4.2 Hierarchical Tiling 12.4.3 Early-Z 12 ...