从 GenBank 文件中输出基因位置

Posted

技术标签:

【中文标题】从 GenBank 文件中输出基因位置【英文标题】:Output gene positions from GenBank file 【发布时间】:2015-09-23 15:34:14 【问题描述】:

是否可以输出 CDS 特征的基因位置,还是我需要自己解析“位置”或“补充”字段?

例如,

seq = Sequence.read(genbank_fp, format='genbank')
for feature in seq.metadata['FEATURES']:
    if feature['type_'] == 'CDS':
        if 'location' in feature:
            print 'location = ', feature['location']
        elif 'complement' in feature:
            print 'location = ', feature['complement']
        else:
            raise ValueError('positions for gene %s not found' % feature['protein_id'])

会输出:

位置 =

位置 = 687..3158

对于 this 样本 GenBank 文件。

此功能在 BioPython 中是可能的(请参阅 this thread),我可以在其中输出已解析的位置(例如 start = 687,end = 3158)。

谢谢!

【问题讨论】:

【参考方案1】:

对于示例,您可以使用以下代码仅获取该功能的 Sequence 对象:

# column index in positional metadata
col = feature['index_']
loc = seq.positional_metadata[col]
feature_seq = seq[loc]
# if the feature is on reverse strand
if feature['rc_']:
    feature_seq = feature_seq.reverse_complement()

注意:GenBank 解析器是在开发分支中新增的。

【讨论】:

感谢您的回复!但是我正在寻找基因的实际开始和结束位置(而不是基因序列本身)。为了扩展您的答案,我需要找到 loc 系列中第一个和最后一个 True 元素的索引:start_pos = loc[loc == True].index[0]; end_pos = loc[loc == True].index[-1]

以上是关于从 GenBank 文件中输出基因位置的主要内容,如果未能解决你的问题,请参考以下文章

如何在Genbank上查找某一生物表达特定蛋白的一段基因序列?

怎样在genbank基因库中找出我需要的基因序列啊?

怎么找Genbank呀,上哪里去搜?要找基因的序列不知道,怎么知道呢

perl中管道文件句柄的问题

bioperl 格式化genebank的输出

基因组注释之软件使用