1 介紹
在基因結(jié)構(gòu)分析或其他生物功能分析中會時(shí)常用到 CDS 序列拨扶,以及其他諸如 mRNA 序列句伶,misc RNA序列等具有生物意義的序列片段问拘。而NCBI 的基因庫中已經(jīng)包含有這些的信息丐吓,但是只有一部分是整理可下載的娄徊。而剩下的一部分可以通過 genbank給出的位點(diǎn)信息來提取瀑罗,個人能力有限扫外,這里只做拋轉(zhuǎn)之用。下面以提取 CDS 為例廓脆,記錄提取序列過程筛谚,其他特征序列類似。
2 結(jié)構(gòu)目錄
3 Python代碼
序列自動下載可以通過 Biopython 的 Entrez.efetch 方法來實(shí)現(xiàn)停忿,這里以本地文件為例
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2018\9\20 0020 18:32
# @Author : Baimoc
# @Email : baimoc@163.com
# @File : main.py
import os
from Bio import SeqIO
def format_fasta(ana, seq, num):
"""
格式化文本為 fasta格式
:param ana: 注釋信息
:param seq: 序列
:param num: 序列換行時(shí)的字符個數(shù)
:return: fasta格式文本
"""
format_seq = ""
for i, char in enumerate(seq):
format_seq += char
if (i + 1) % num == 0:
format_seq += "\n"
return ana + format_seq + "\n"
def get_cds(gb_file, f_cds):
"""
從 genbank 文件中提取 cds 序列及其完整序列
:param gb_file: genbank文件路徑
:param f_cds: 是否只獲取一個 CDS 序列
:return: fasta 格式的 CDS 序列驾讲, fasta 格式的完整序列
"""
# 提取完整序列并格式為 fasta
gb_seq = SeqIO.read(gb_file, "genbank")
complete_seq = str(gb_seq.seq)
complete_ana = ">" + gb_seq.id + ":" + gb_seq.annotations["accessions"][2] + " " + gb_seq.description + "\n"
complete_fasta = format_fasta(complete_ana, complete_seq, 70)
# 提取 CDS 序列并格式為 fasta
cds_num = 1
cds_fasta = ""
for ele in gb_seq.features:
if ele.type == "CDS":
cds_seq = ""
cds_ana = ">lcl|" + gb_seq.id + "_cds_" + ele.qualifiers['protein_id'][0] + "_" + str(cds_num) + " [gene=" + \
ele.qualifiers['gene'][0] + "]" + \
" [db_xref=" + ele.qualifiers['db_xref'][0] + "]" + " [protein=" + ele.qualifiers['product'][
0] + "]" + \
" [protein_id=" + ele.qualifiers['protein_id'][0] + "]" + " [gbkey=CDS]\n"
cds_num += 1
for ele1 in ele.location.parts:
cds_seq += complete_seq[ele1.start:ele1.end]
cds_fasta += format_fasta(cds_ana, cds_seq, 70)
if (f_cds):
break
return cds_fasta, complete_fasta
if __name__ == '__main__':
# 文件輸出路徑
cds_file = "out/cds.fasta"
complete_file = "out/complete.fasta"
# genbank 文件路徑
res_dir = "res"
cds_file_obj = open(cds_file, "w")
complete_file_obj = open(complete_file, "w")
for file in os.listdir(res_dir):
cds_fasta, complete_fasta = get_cds(res_dir + os.sep + file, True)
cds_file_obj.write(cds_fasta)
complete_file_obj.write(complete_fasta)
4 其他方法獲取
類型 | 編號 |
---|---|
AY,AP | 同一個基因存在多個提交版本時(shí)的序列編號 |
NC,NM | NCBI 官方推薦及使用的序列編號 |
IMAGE等 | 針對特定物種吮铭,或特定組織提供的序列編號 |
4.1 對于AY时迫,AP,可以用下面的方式來實(shí)現(xiàn) CDS 序列下載谓晌,但是對于樣本量大的序列分析比較低效
- 這里的cds是可以點(diǎn)擊的鏈接掠拳,點(diǎn)擊
-
會有詳細(xì)信息展示,點(diǎn)擊 fasta 鏈接來下載序列