首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用pysam操作BAM文件

欢迎关注”生信修炼手册”!

pysam模块对samtools和tabix进行了封装,可以在python程序内部来操作和访问相关的文件,具体地,支持以下4种文件

1. Fasta/Fastq

2. VCF

3. Tabix file

4. BAM/CRAM/SAM

对于samtools的封装,提现在操作bam文件上,既可以通过编程来读取bam文件中的内容,也可以实现samtools的调用;对tabix的封装,体现在利用索引来提取对应区域的record。

1. Fasta和Fastq

Fasta和Fastq,也常称为fastx格式,对于读取而言,pysam提供了以下接口

该接口同时适用于fastq和fasta,只不过对于fasta而言,没有quality和comment属性。

对于有fai索引的fasta文件,还可以通过fetch函数来提取对应region的碱基,此时的读取方式如下

通过对应的属性,可以方便获取染色体名称,长度,个数等属性,fetch通过指定染色体,起始和终止位置来定义region,用法如下

2. VCF

对于VCF文件,可以通过如下方式遍历所有的记录

对于vcf的头文件,可以通过如下方式访问

对于有tbi索引的vcf文件,还可以通过fetch函数来访问特定region的记录,用法如下

3. Tabix

tabix支持对bed, gff, bam, vcf等多种文件建立索引,这里的Tabix的意思是专指对于bed, gff这两种纯文本格式的文件的处理,主要功能是使用fetch来提取对应region的记录,用法如下

4. BAM

对于Bam文件,遍历行的操作如下

同时,还可以通过fetch和pileup两种方式来访问,fetch访问区域的alignment,用法如下

pileup访问基因组每个碱基的比对情况,用法如下

从形式上看,两种方法差不多,但是其返回值为不同Class的对象,可以根据API来访问具体的属性和方法。

除了访问操作,也可以调用samtools的功能,因为pysam是对samtools的封装,所以samtools的子命令在该模块中,可以通过函数形式来调用,用法如下

如果需要对上述几种文件根据指定区域提取子集,或者针对bam文件进行更加个性化的统计处理,可以使用pysam来实现,集成到python开发环境中,实现更加复杂的逻辑处理,会更加的高效。

·end·

—如果喜欢,快分享给你的朋友们吧—

原创不易,欢迎收藏,点赞,转发!生信知识浩瀚如海,在生信学习的道路上,让我们一起并肩作战!

本公众号深耕耘生信领域多年,具有丰富的数据分析经验,致力于提供真正有价值的数据分析服务,擅长个性化分析,欢迎有需要的老师和同学前来咨询。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20201216A0GKE400?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券