Python处理gff文件

在网上查到的关于Python操作gff文件的库有三个,在此附上相关链接:

gffutilshttp://daler.github.io/gffutils/index.html

bcbio-gffhttps://biopython.org/wiki/GFF_Parsing

gff3-pyhttps://gff3-py.readthedocs.io/en/latest/readme.html

在写此片文章时,gffutils9个月前更新过,bcbio-gff两年前更新的,gff3-py两个月前更新的。简单比较过gffutils和gff3,个人感觉gffutils功能更强大,api看起来也比较人性化。故此篇文章基于gffutils,对gff文件进行简单操作演示。

1.Error: ModuleNotFoundError: No module named 'simplejson'. gffutils文档中说在python3.3下测试无误。但如果在python3.3+使用报这个错误的话,可以通过通过命令pip install simplejson安装

gffutils的核心是sqlite数据库,需要将解析的gff文件中的基因特征和关系存入数据库文件中,若再次使用时,就可直接使用生成的数据库文件。gff文件可以是纯文本形式,也可以是压缩格式。

2.数据下载url:https://www.vectorbase.org/download/anopheles-atroparvus-ebroscaffoldsaatre1fagz 3.gffutils.createdb(gfffilename, databasename) # 解析gff,生成数据库文件gffutils.FeatureDB(databasename) # 连接使用数据库文件使用try...except...语句来捕捉sqlite3.OperationalError错误。因为用gffutils.createdb()创造数据库文件时,若已存在databasename,则会抛出sqlite3.OperationalError。但如果你想生成数据库文件时覆盖已存在的文件可以通过gffutils.createdb(gfffilename, database_name,force=True)设置参数force=True来强制覆盖已存在的文件

成功生成或加载数据库文件后,可以查看gff文件中包含那些特征type,这些type各自有多少个,来对gff文件整体有个大致了解:

选取某一个特征type的所有特征:

还可以根据某几个条件来选取该条件内符合范围的特征

也可以通过注释的属性id来定位到该id所在特征。如知道某个exon的id为'AGAP004677-RB-E1B',在定位到后你就可以知道该特征的seqid,source,type,start,stop,等等:

此外特征与特征之间有parent和children的关系。可以通过children id寻找符合条件的parent,反之亦然。

参考:

https://pythonhosted.org/gffutils/index.html

Bioinformatics with Python Cookbook

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190130G0LXLA00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励