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 ...
随机推荐
- BUAA软工-结对项目作业
结对项目作业 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 结对项目作业 我在这个课程的目标是 通过这门课锻炼软件开发能力和经验,强化与他人合作 ...
- filebeat收集日志到elsticsearch中并使用ingest node的pipeline处理
filebeat收集日志到elsticsearch中 一.需求 二.实现 1.filebeat.yml 配置文件的编写 2.创建自定义的索引模板 3.加密连接到es用户的密码 1.创建keystore ...
- 2021.9.21考试总结[NOIP模拟58]
T1 lesson5! 开始以为是个无向图,直接不懂,跳去T2了. 之后有看了一眼发现可暴力,于是有了\(80pts\). 发现这个图是有拓扑序的,于是可以用拓扑排序找最长路径.先找原图内在最长路径上 ...
- 热身训练1 ping ping ping
点此进入 题意: 一棵树,n+1 个节点,以0号节点为根,给出端点(a,b),节点a到节点b的路径上,至少有一个点是"坏掉的",求"坏掉的点"最少 分析: St ...
- Spring源码解读(二):Spring AOP
一.AOP介绍 面向方面编程(AOP)通过提供另一种思考程序结构的方式来补充面向对象编程(OOP).OOP中模块化的关键单元是类,而在AOP中,模块化单元是方面.方面实现了诸如跨越多种类型和对象的事务 ...
- gawk使用方法简介
转载:gawk 使用方法简介 - 简书 (jianshu.com) gawk 是最初 Unix 系统上 awk 程序的 GNU 版本.相对于作为流式编辑器的 sed 而言,它提供了更为强大的编程语言特 ...
- 笔记本加装SSD并装系统
1,首先了解笔记本配置信息 一般加装SSD都是120~256左右,并使用原有的机械硬盘:首先确定加装位置:1,是否支持M.2接口:假如支持,可以直接购买,拆机装上:我的笔记本不支持:所以考虑2,光驱的 ...
- cf22A Second Order Statistics(STL-UNIQUE的使用)
题意: N个数,找出第二大的数.如果没有输出-1. 思路: UNIQUE的使用. 代码: int a[105]; int n; int main(){ cin>>n; rep(i,0,n- ...
- zabbix 报警发送qq邮件
1.开启QQ邮箱的IMAP/SMTP服务,获取授权码 获取授权码:点击[开启]按钮,编辑短信发送,即可获得授权码 2.配置 /etc/mail.rc 添加下列配置: [ set from=XXX@qq ...
- PTA 7-1 还原二叉树 (25分)
PTA 7-1 还原二叉树 (25分) 给定一棵二叉树的先序遍历序列和中序遍历序列,要求计算该二叉树的高度. 输入格式: 输入首先给出正整数N(≤50),为树中结点总数.下面两行先后给出先序和中序遍历 ...