Python在GBFF里提取cds序列怎么实现

Admin 2022-08-04 群英技术资讯 446 次浏览

这篇文章主要讲解了“Python在GBFF里提取cds序列怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python在GBFF里提取cds序列怎么实现”吧!


什么是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)

关于“Python在GBFF里提取cds序列怎么实现”就介绍到这了,如果大家觉得不错可以参考了解看看,如果想要了解更多,欢迎关注群英网络,小编每天都会为大家更新不同的知识。 群英智防CDN,智能加速解决方案

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

猜你喜欢

成为群英会员,开启智能安全云计算之旅

立即注册
专业资深工程师驻守
7X24小时快速响应
一站式无忧技术支持
免费备案服务
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
在线客服
微信公众号
返回顶部
返回顶部 返回顶部
在线客服
在线客服