1、 LOCUS(代码)序列的功能、序列长度、类型、种属来源、录入日期
2、 DEFINITION(说明)所含的生物学意义的总结性描述
3、 ACCESSION(编号)具有唯一性和永久性
4、 VERSION(版本号)检索号、版本号
5、 KEYWORDS(关键词)描述序列,“ . ”表示没有任何描述内容
6、 SOURCE(数据来源)序列来源生物的简称,或分子类型
7、 REFERENCE (文献)与该数据有关的参考文献,按发表时间排名
8、 FEATURES(特性表)描述基因和基因的产物,以及与序列相关的生物学特性,其中包括
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)免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
长按识别二维码并关注微信
更方便到期提醒、手机管理