python从gbff文件中直接提取cds序列
目录
- 什么是GBFF文件
- 每个序列条目所代表的意义
- 最后直接上代,更改输入和输出文件即可使用
什么是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) 相关特性的辅助信息
最后直接上代,更改输入和输出文件即可使用
import reFILE_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:passelif f.readline().strip('\t').split():continueelse:breakwith 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])+1p += G[u1:u2]print ('>',i,sep='',file=f)print (p,file=f)
【python从gbff文件中直接提取cds序列】以上就是python从gbff文件中直接提取cds序列的详细内容,更多关于python提取gbff文件cds序列的资料请关注脚本之家其它相关文章!
推荐阅读
- python
- 使用python实现抓取中国银行外汇牌价首页数据实现
- 2019-08-26
- 投稿|从豪掷8888万到只剩88人,央视标王卖身未果,创始人之子另立山头
- python|docker-compose命令及yaml文件
- 从心所欲不逾矩的老青年
- 书女·书情
- 障碍,是逃避不过去的坎
- 沪港两地各自嗨
- python|使用Python抓取动态网站数据