python從gbff文件中直接提取cds序列
什么是GBFF文件
- GenBank純文本文件格式(GenBank flatfile, 簡(jiǎn)稱GBFF)
- GBFF是GenBank數(shù)據(jù)庫的基本信息單位
- GBFF序列文件由單個(gè)的序列條目組成。
- 序列條目由字段組成,每個(gè)字段由關(guān)鍵字起始,后面為該 字段的具體說明。
- 字段分若干次子字段,以次關(guān)鍵字或特性表說明符開始。
- 每個(gè)序列條目以雙斜杠“//*作結(jié)束標(biāo)記
每個(gè)序列條目所代表的意義
1、 LOCUS(代碼)序列的功能、序列長(zhǎng)度、類型、種屬來源、錄入日期
2、 DEFINITION(說明)所含的生物學(xué)意義的總結(jié)性描述
3、 ACCESSION(編號(hào))具有唯一性和永久性
4、 VERSION(版本號(hào))檢索號(hào)、版本號(hào)
5、 KEYWORDS(關(guān)鍵詞)描述序列,“ . ”表示沒有任何描述內(nèi)容
6、 SOURCE(數(shù)據(jù)來源)序列來源生物的簡(jiǎn)稱,或分子類型
7、 REFERENCE (文獻(xiàn))與該數(shù)據(jù)有關(guān)的參考文獻(xiàn),按發(fā)表時(shí)間排名
8、 FEATURES(特性表)描述基因和基因的產(chǎn)物,以及與序列相關(guān)的生物學(xué)特性,其中包括
- a. 特性關(guān)鍵詞(Feature key) 簡(jiǎn)要說明功能組的關(guān)鍵詞
- b. 特性位置(Location) 指明在特性表中的什么地方找到相關(guān)特性
- c. 限定詞(Qualifiers) 相關(guān)特性的輔助信息
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序列的詳細(xì)內(nèi)容,更多關(guān)于python提取gbff文件cds序列的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python 多進(jìn)程和數(shù)據(jù)傳遞的理解
這篇文章主要介紹了Python 多進(jìn)程和數(shù)據(jù)傳遞的理解的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下2017-10-10
利用python計(jì)算時(shí)間差(返回天數(shù))
這篇文章主要給大家介紹了關(guān)于如何利用python計(jì)算時(shí)間差(返回天數(shù))的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
django基礎(chǔ)之?dāng)?shù)據(jù)庫操作方法(詳解)
下面小編就為大家?guī)硪黄猟jango基礎(chǔ)之?dāng)?shù)據(jù)庫操作方法(詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-05-05
如何向scrapy中的spider傳遞參數(shù)的幾種方法
這篇文章主要介紹了如何向scrapy中的spider傳遞參數(shù)的幾種方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
Python實(shí)現(xiàn)PIL圖像處理庫繪制國(guó)際象棋棋盤
本文主要介紹了Python實(shí)現(xiàn)PIL圖像處理庫繪制國(guó)際象棋棋盤,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-07-07
Python常用內(nèi)置函數(shù)和關(guān)鍵字使用詳解
在Python中有許許多多的內(nèi)置函數(shù)和關(guān)鍵字,它們是我們?nèi)粘V薪?jīng)??梢允褂玫牡降囊恍┗A(chǔ)的工具,可以方便我們的工作。本文將詳細(xì)講解他們的使用方法,需要的可以參考一下2022-05-05

