欢迎关注”生信修炼手册”!
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·
—如果喜欢,快分享给你的朋友们吧—
原创不易,欢迎收藏,点赞,转发!生信知识浩瀚如海,在生信学习的道路上,让我们一起并肩作战!
本公众号深耕耘生信领域多年,具有丰富的数据分析经验,致力于提供真正有价值的数据分析服务,擅长个性化分析,欢迎有需要的老师和同学前来咨询。
领取专属 10元无门槛券
私享最新 技术干货