在Biopython中提取CDS序列

时间:2014-04-28 05:29:37

标签: sequences biopython

大家好日子,

我开始在Biopython中编程,我想知道如何从具有所有特征坐标的基因组GenBank文件(* .gb)中提取基因序列和蛋白质标识符。

我的想法是创建一个包含蛋白质标识符,基因坐标和基因序列的文本文件。

如果您有任何想法,我会非常感激他们。

到目前为止我试过这个:

for seq_record in seq_record.features: 
    if seq_record.type == 'CDS':
       x=seq_record.qualifiers['protein_id']
       i=seq_record.location._start.position
       f=seq_record.location._end.position
       sq = seq_record.seq
       FEAT_LIST.append('START END STRAND ID')
       FEAT_LIST.append(str(((i, f), s, x, sq)))
       print(FEAT_LIST) 

但是,我收到此错误:sq = seq_record.seq AttributeError:'SeqFeature'对象没有属性'seq'

感谢您的帮助。

3 个答案:

答案 0 :(得分:4)

FeatureLocation有一个很好的extract方法,它接受父序列并为你提供一个新的SeqRecord对象。在该对象上,您可以使用通常的.seq来获取序列:

from Bio import SeqIO

for rec in SeqIO.parse("sequence.gb", "genbank"):
    if rec.features:
        for feature in rec.features:
            if feature.type == "CDS":
                print feature.location
                print feature.qualifiers["protein_id"]
                print feature.location.extract(rec).seq

答案 1 :(得分:1)

我建议您查看SeqIOSeqRecord个对象的Biopython文档,例如parsereadgenbank格式在解析器中实现,因此您不应该有任何问题来读取文件。实际上,您只需将genbank指定为参数。

Here你甚至有一个阅读genbank文件的例子。

编辑:所以我认为在迭代记录时遇到问题。我看到的问题是SeqRecord个对象和SeqFeature个对象之间存在混淆。你做不到:

for seq_record in seq_record.features:

因为seq_recordSeqFeature个对象,SeqRecord个对象。首次解析GenBank文件时,您将遍历SeqRecord个对象:

for record in SeqIO.parse('my_file.gbk','genbank'):
    print "Record %s has %i features and sequence: %s" % (record.id, len(record.features), record.seq)

每个SeqRecord对象都有seq属性和SeqFeature属性中features个对象的列表。如果您想对这些功能执行某些操作,则需要为每条记录迭代它们。

答案 2 :(得分:0)

seqfeature对象有一个extract method,可以省去深入了解FeatureLocation的麻烦。它返回一个新序列。

data.table