python從gbff文件中直接提取cds序列
什么是GBFF文件
- GenBank純文本文件格式(GenBank flatfile, 簡稱GBFF)
- GBFF是GenBank數(shù)據(jù)庫的基本信息單位
- GBFF序列文件由單個的序列條目組成。
- 序列條目由字段組成,每個字段由關鍵字起始,后面為該 字段的具體說明。
- 字段分若干次子字段,以次關鍵字或特性表說明符開始。
- 每個序列條目以雙斜杠“//*作結束標記
每個序列條目所代表的意義
1、 LOCUS(代碼)序列的功能、序列長度、類型、種屬來源、錄入日期
2、 DEFINITION(說明)所含的生物學意義的總結性描述
3、 ACCESSION(編號)具有唯一性和永久性
4、 VERSION(版本號)檢索號、版本號
5、 KEYWORDS(關鍵詞)描述序列,“ . ”表示沒有任何描述內容
6、 SOURCE(數(shù)據(jù)來源)序列來源生物的簡稱,或分子類型
7、 REFERENCE (文獻)與該數(shù)據(jù)有關的參考文獻,按發(fā)表時間排名
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序列的詳細內容,更多關于python提取gbff文件cds序列的資料請關注腳本之家其它相關文章!
相關文章
如何向scrapy中的spider傳遞參數(shù)的幾種方法
這篇文章主要介紹了如何向scrapy中的spider傳遞參數(shù)的幾種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-11-11
Python實現(xiàn)PIL圖像處理庫繪制國際象棋棋盤
本文主要介紹了Python實現(xiàn)PIL圖像處理庫繪制國際象棋棋盤,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學習學習吧2021-07-07

