[Biopython] SeqIO.index AttributeError: 'SeqRecord' object has no attribute 'taxonomy'

Peter Cock p.j.a.cock at googlemail.com
Mon Nov 7 22:01:41 UTC 2011


On Monday, November 7, 2011, Peter Cock <p.j.a.cock at googlemail.com> wrote:
> On Mon, Nov 7, 2011 at 7:10 PM, Sheila the angel <from.d.putto at gmail.com>
wrote:
>> Hi All,
>> Consider the following code (from Biopython Cookbook)
>>
>> from Bio import SeqIO
>> uniprot = SeqIO.index("uniprot_sprot.dat", "swiss")
>> handle = open("selected.dat", "w")
>> for acc in ["P33487", "P19801", "P13689", "Q8JZQ5", "Q9TRC7"]:
>>    handle.write(uniprot.get_raw(acc))
>> handle.close()
>>
>> I want to print only selected part of  (ID, description and Taxonomy )
not
>> the full record. I modified the code as
>>
>> for acc in ["P33487", "P19801", "P13689", "Q8JZQ5", "Q9TRC7"]:
>>     print uniprot[acc].id, uniprot[acc].description,
uniprot[acc].taxonomy
>>
>> but this gives error "AttributeError: 'SeqRecord' object has no attribute
>> 'taxonomy' "
>> Any suggestion !!!!
>
> What makes you think there would be a taxonomy attribute? Is there
> a mistake in the documentation somewhere? From memory you should
> try uniprot[acc].annoations["taxonomy"]

Typo: annotations

Related to this, try dir(...) on Python objects to see what their
attributes are.

> Also your code will parse the record three times for each accession,
> use this instead:
>
> for acc in ["P33487", "P19801", "P13689", "Q8JZQ5", "Q9TRC7"]:
>    record = uniprot[acc]
>    print.id, record.description, ...
>
> Peter
>

Peter



More information about the Biopython mailing list