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

pybedtools:对bedtools的封装和扩展

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

bedtools是区间操作最常用的软件,pybedtools对其进行了封装,可以在python编程环境中灵活使用bedtools,而且进一步拓展出了很多有用的功能。

在pybedtools中, 核心是以下两个对象

1. BedTool

2. feature

BedTools表示一个区间文件,支持BED, GTF, GFF, BAM等多种格式以及对应的压缩文件,feature表示文件的每一行,包含了染色体,起始,终止位置等相关属性和信息。

1. BedTool

构建BedTool对象的代码如下

bedtools这个软件相关的子命令,都在pybedtools中进行了实现,以取交集为例,对应的用法如下

取交集对应的函数为intersect, 对于bedtools子命令的相关选项,则以函数参数的形式封装在对应的函数中。

进行运算之后,结果可以通过如下两种方式来保存

saveas操作支持添加trackline, 在基因组浏览器中展示,而moveto方法只是简单的保存结果。本质上,pybedtools的运算结果,都以临时文件的形式存在,saveas相当于拷贝临时文件,生成新文件,moveto相当于重命名临时文件,速度更快。

在pybedtools中,大部分函数的返回结果都是BedTools对象,因此可以接受连缀写法,示例如下

与此同时,考虑到区间操作的特性,还进行了运算符重载,比如+号表示并集,-号表示差集,示例如下

2. feature

feature对象是文件中的一行,可以通过下标来访问,示例如下

对于feature中的每一列信息,可以通过数字下标,属性值,key这3种方式来访问,示例如下

feature还拥有fields属性,以列表的形式存储了对应的值,可以用于遍历操作,示例如下

对于feature而言,pybedtools提供了each和filter操作,进一步扩展其功能。filter操作则用于过滤行操作,过滤掉长度小于100feature的代码,示例如下

each操作对每一行进行遍历,主要用于统计一些新的指标;统计每个区间长度的代码,示例如下

以上只是pybedtools的基本用法,更多的用法可以查看官方的API文档。

·end·

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

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

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

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

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券