python从gbff文件中直接提取cds序列
作者:生信工具箱 时间:2023-05-29 16:10:35
什么是GBFF文件
GenBank纯文本文件格式(GenBank flatfile, 简称GBFF)
GBFF是GenBank数据库的基本信息单位
GBFF序列文件由单个的序列条目组成。
序列条目由字段组成,每个字段由关键字起始,后面为该 字段的具体说明。
字段分若干次子字段,以次关键字或特性表说明符开始。
每个序列条目以双斜杠“//*作结束标记
每个序列条目所代表的意义
1、 LOCUS(代码)序列的功能、序列长度、类型、种属来源、录入日期
2、 DEFINITION(说明)所含的生物学意义的总结性描述
3、 ACCESSION(编号)具有唯一性和永久性
4、 VERSION(版本号)检索号、版本号
5、 KEYWORDS(关键词)描述序列,“ . ”表示没有任何描述内容
6、 SOURCE(数据来源)序列来源生物的简称,或分子类型
7、 REFERENCE (文献)与该数据有关的参考文献,按发表时间排名
8、 FEATURES(特性表)描述基因和基因的产物,以及与序列相关的生物学特性,其中包括
a. 特性关键词(Feature key) 简要说明功能组的关键词
b. 特性位置(Location) 指明在特性表中的什么地方找到相关特性
c. 限定词(Qualifiers) 相关特性的辅助信息
9、 ORIGIN(碱基排列顺序)类似于FASTA格式给出了所记录的序列
最后直接上代🐎,更改输入和输出文件即可使用
import re
FILE_PATH = './input.gb'
OUT_FILE_PATH = './output.fasta'
d = {}
g = {}
tem = []
def con_spl(list_,n = 2):
return [list_[i:i + n] for i in range(0, len(list_), n)]
with open (FILE_PATH,'r')as f:
while True:
text_line = f.readline().strip('\t').split()
if text_line:
if text_line[0] == 'DEFINITION':
c = ' '.join(i for i in text_line[2:])
d[c] = []
g[c] = []
print (text_line)
elif text_line[0] == 'CDS':
cds = re.findall(r"\d+\d*?",text_line[1])
if len(cds) == 2:
d[c].append(cds)
else:
for i in con_spl(cds):
d[c].append(i)
elif text_line[0] == 'ORIGIN':
while text_line[0] != '//':
for i in text_line[1:]:
tem.append(i)
text_line = f.readline().strip('\t').split()
e = ''.join(i for i in tem)
g[c].append(e)
else:
pass
elif f.readline().strip('\t').split():
continue
else:
break
with open (OUT_FILE_PATH,'w')as f:
for i,o in d.items():
G = ''.join(g[I])
p = ''
for u in o:
u1 = int(u[0])
u2 = int(u[1])+1
p += G[u1:u2]
print ('>',i,sep='',file=f)
print (p,file=f)
来源:https://www.jianshu.com/p/75d00840a540
标签:python,cds,序列提取,gbff文件
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
SQL查询中需要使用别名问题
2024-01-21 13:45:50
利用pip安装python第三方库的4种方法
2023-11-16 08:16:51
![](https://img.aspxhome.com/file/2023/0/63570_0s.png)
15个梦幻的登录页面设计展示
2009-07-19 14:17:00
![](https://img.aspxhome.com/file/UploadPic/20097/19/battlenet-37s.jpg)
Python基本语法经典教程
2021-08-25 18:16:51
![](https://img.aspxhome.com/file/2023/2/113162_0s.png)
Python接口自动化浅析登录接口测试实战
2021-06-06 21:48:13
![](https://img.aspxhome.com/file/2023/8/82708_0s.png)
详解Django中的unittest及应用
2022-10-24 08:26:54
SQL 查询连续登录的用户情况
2024-01-29 01:27:18
![](https://img.aspxhome.com/file/2023/0/104110_0s.png)
python使用tkinter实现简单计算器
2021-10-01 00:20:57
如何判断元素是否为HTMLElement元素
2024-04-18 10:15:27
Python绘制动态水球图过程详解
2021-11-27 14:57:20
![](https://img.aspxhome.com/file/2023/5/128175_0s.gif)
C#连接SQL Server数据库的实例讲解
2024-01-28 04:14:01
![](https://img.aspxhome.com/file/2023/9/104319_0s.png)
深入SQL Server中char、varchar、text和nchar、nvarchar、ntext的区别详解
2024-01-26 11:26:57
微信公众平台开发入门教程(图文详解)
2023-06-21 11:10:05
![](https://img.aspxhome.com/file/2023/6/82406_0s.jpg)
golang goquery selector选择器使用示例大全
2023-10-14 15:40:58
Python查找第n个子串的技巧分享
2023-02-20 22:02:55
python 测试实现方法
2023-03-24 11:34:04
Python队列、进程间通信、线程案例
2021-10-23 16:43:03
SQL语句更改表所有者
2010-02-04 09:12:00
python基础教程之基本数据类型和变量声明介绍
2023-08-28 22:45:55
4种JavaScript实现简单tab选项卡切换的方法
2024-02-23 10:25:51
![](https://img.aspxhome.com/file/2023/0/56530_0s.jpg)