4

I'm trying to make a Biopython script that reproduces a manual search on the NCBI website.

My manual search gives me the following URL:

https://www.ncbi.nlm.nih.gov/nuccore?term=ANOS1[gene%20name]%20AND%20refseq[filter]

And the "Search details" box indicates:ANOS1[gene name] AND refseq[filter].

I get 338 results that I "Send to" "File" as "GI List", save as ANOS1_orthologs_manual.txt.

How can I do the same using Biopython?

bli
  • 3,130
  • 2
  • 15
  • 36

1 Answers1

6

This can be done by using the "Search details" as a search term in Entrez.esearch:

import os
OPJ = os.path.join
base_dir = os.getcwd()

from Bio import Entrez
Entrez.email = "my_email_here"
query = "ANOS1[gene name] AND refseq[filter]"
handle = Entrez.esearch(term=query, db="nuccore", retmax=400)
ids = Entrez.read(handle)["IdList"]
with open(OPJ(base_dir, "ANOS1_orthologs_max400_ids.txt"), "w") as ids_file:
    ids_file.write("\n".join(ids))
    ids_file.write("\n")
bli
  • 3,130
  • 2
  • 15
  • 36
  • @terdon I did not know this expression. I learned something new today :). Regarding off-topicness, I think the question can still be useful to others, in that it gives an almost-working example of something one may try to do in a bioinformatics context. – bli Mar 09 '18 at 13:28
  • useful, yes, but not on topic since the actual problem was a very simple mistake and therefore the answer is unlikely to help others. You could, if you want, change it around: ask how you can reproduce the manual search in python and then post your (corrected) solution as an answer. That would be great! – terdon Mar 09 '18 at 13:30
  • @terdon I see your point. I updated the question and answer. – bli Mar 09 '18 at 13:37
  • Perfect, thanks! I would upvote, but I already had :) – terdon Mar 09 '18 at 14:49