I wish to efficiently search nuccore to retrieve only annotated sequences.

By "annotated" I mean that the nuccore entry contains annotation information.
An equivalent definition (if I understand correctly) is that the entry's Feature Table isn't empty.
The table can be downloaded by clicking Send to in the web page of the nuccore entry.
Alternatively, the table can be downloaded using Biopython: Entrez.efetch(db='nuccore', id=nuccore_id, rettype='ft')

This definition suggests one answer to my question: Search nuccore normally, then for each entry download its Feature Table, and discard each nuccore entry whose table is empty.
The problem is that this would be very inefficient.

My best idea thus far is to add gene[Feature key] to my search term.
E.g., instead of "escherichia coli"[Primary Organism], use ("escherichia coli"[Primary Organism]) AND gene[Feature key].
This seems to work, but also feels like a quite dirty hack.
Is this a good idea? Or am I missing something crucial here?

Another idea I had was using (Biopython) Entrez.esummary(db='nuccore', id=nuccore_id), and hopefully finding there a is_sequence_annotated flag or something similarly wonderful. One of the fields Entrez.esummary returns is Flags, but I have no idea how to parse it. I asked about it in another question.



Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.