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 ...
随机推荐
- Redis:学习笔记-04
Redis:学习笔记-04 该部分内容,参考了 bilibili 上讲解 Redis 中,观看数最多的课程 Redis最新超详细版教程通俗易懂,来自 UP主 遇见狂神说 10. Redis主从复制 1 ...
- 基于ImportBeanDefinitionRegistrar和FactoryBean动态注入Bean到Spring容器中
基于ImportBeanDefinitionRegistrar和FactoryBean动态注入Bean到Spring容器中 一.背景 二.实现方案 1.基于@ComponentScan注解实现 2.基 ...
- 《HelloGitHub》第 67 期
兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 分享 GitHub 上有趣.入门级的开源项目. https://github.com/521xueweihan/HelloGitHu ...
- Spring Security 的注册登录流程
Spring Security 的注册登录流程 数据库字段设计 主要数据库字段要有: 用户的 ID 用户名称 联系电话 登录密码(非明文) UserDTO对象 需要一个数据传输对象来将所有注册信息发送 ...
- Netty:Reactor Pattern 与 Dubbo 底层传输中的 NettyServer
首先,我们需要了解Reactor模式的三种线程模型: 1)单线程模型 Reactor 单线程模型,指的是所有的 IO 操作都在同一个 NIO 线程上面完成,NIO 线程的职责如下: 作为 NIO 服务 ...
- vcs(UST)Undefined System Task Call
转载:VCS求助啊 - 微波EDA网 (mweda.com) Error-[UST] Undefined System Task Call../../path/bench/path.v, 51Unde ...
- error: ‘int64_t’ does not name a type
我在CodeBlock中编译工程没有出现问题,但是放到ubuntu上用自己写的Makefile make的时候报错 error: 'int64_t' does not name a type # 2 ...
- PCIE笔记--PCIe错误定义与分类
转载地址:http://blog.chinaaet.com/justlxy/p/5100057782 前面的文章提到过,PCI总线中定义两个边带信号(PERR#和SERR#)来处理总线错误.其中PER ...
- Python 类似 SyntaxError: Non-ASCII character '\xc3' in file
Python 类似 SyntaxError: Non-ASCII character '\xc3' in file 产生这个问题的原因: python 的默认编码文件是ACSII,而编辑器将文件保存为 ...
- APP自动化之Hybrid自动化解决方案(七)
基于UIAutomator+ChromeDriver模式(UIAutomator安卓原生引擎) 原理:native(原生)部分使用UIAutomator,webview部分使用ChromeDriver ...