python从gbff文件中直接提取cds序列
作者:生信工具箱 发布时间:2023-05-29 16:10:35
标签:python,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) 相关特性的辅助信息
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
0
投稿
猜你喜欢
- 设置密码保护SqlServer数据库备份文件! 备份SqlServer数据库 Backup Database [数据库] To disk=&
- OpenCV图像处理一、图像入门1.读取图像使用 cv.imread() 函数读取一张图像,图片应该在工作目录中,或者应该提供完整的图像路径
- 本文将以实战的形式基于scipy模块使用Python实现简单滤波处理,包括内容有1.低通滤波,2.高通滤波,3.带通滤波,4.带阻滤波器。具
- 刚才要说的是这几天亲身体验了一下ebay的AIR感觉挺不错的,无论从界面,交互,功能上都感觉挺好的。关于topic中的“剑走偏锋”是因为我认
- 这个只是一个简单的比较无聊的尝试,类似blog等一些网站的换肤功能都是以此方式改变网站的皮肤。对于这些方法大家会的比较多,没啥说的。主要我是
- 在pycharm中创建django项目的方法步骤,分享给大家,具体如下:创建完成后,我们可以看看django项目是否可以启动在Termina
- Flask解决跨域1、下载flask_cors包pip install flask-cors2、使用flask_cors的CORS代码示例f
- 熟悉pandas的pythoner 应该知道给dataframe增加一列很容易,直接以字典形式指定就好了,pyspark中就不同了,摸索了一
- 如下所示:dicFile = open('train_1.txt', 'r')
- Python由Guido Van Rossum发明于90年代初期,是目前最流行的编程语言之一,因其语法的清晰简洁我爱上了Python,其代码
- 本文实例为大家分享了Django实现上传图片的具体代码,供大家参考,具体内容如下1.设置存放上传的图片的文件夹settings.pyMEDI
- 本文介绍基于Python语言gdal模块,实现多波段HDF栅格图像文件的读取、处理与像元值可视化(直方图绘制)等操作。另外,基于gdal等模
- 分页程序sub show_page参数说明:total_records 总记录数everypage_records 每页显示条数
- 事情是这样的,博主初学python和机器学习,在跑一个代码的时候被提示出现以下错误:(能被提示出现这个错误,可见确实是初学了!)图1:跑代码
- 界面的制作一直是 Python 的痛!使用 Python 制作桌面端界面是非常痛苦的过程(又难学又难看)。不过,Python 已经出现了几个
- 通过使用turtle绘画象棋棋盘,供大家参考,具体内容如下# 绘制象棋棋盘import turtlet = turtle.Pen()t.wi
- OK,今天我们来学习一下 python 中的日志模块,日志模块也是我们日后的开发工作中使用率很高的模块之一,接下来们就看一看今天具体要学习日
- 本人最近在当当网上购买了一本关于用户体验的书,在此把最实在的内容整理下发给大家分享下。第一步:表现层视觉设计,也就是我们说的网页设计师做的工
- think-queue是ThinkPHP官方提供的一个消息队列服务,是专门支持队列服务的扩展包。think-queue消息队列适用于大并发或
- upload.htm <html><head><title>网站维护 -