2016-05-09 13 views
0

Meine Aufgabe ist es, E-Utilties bei NCBI zu verwenden, um die Anzahl der eingereichten Dokumente über die Crispr/Cas9-System für jedes der letzten 10 Jahre abrufen. Wie würde ich mehrere Datenbanken gleichzeitig durchsuchen? Mein Code so weit:Können Sie mehr als eine Datenbank gleichzeitig durchsuchen mit biopython

from Bio import Entrez 


Entrez.email = "[email protected]" 
handle = Entrez.esearch(db ="pubmed", term="Crispr/Cas9 system", mindate=2016/01/01, maxdate=2016/01/01, datetype="pdat") 
record = Entrez.read(handle) 
record["Count"] 
print "Number of papers in 2016 is: ", record["Count"] 

handle = Entrez.esearch(db ="pubmed", term="Crispr/Cas9 system", mindate=2015/01/01, maxdate=2015/01/01, datetype="pdat") 
record = Entrez.read(handle) 
record["Count"] 
print "Number of papers in 2015 is: ", record["Count"] 

handle = Entrez.esearch(db ="pubmed", term="Crispr/Cas9 system", mindate=2014/01/01, maxdate=2014/01/01, datetype="pdat") 
record = Entrez.read(handle) 
record["Count"] 
print "Number of papers in 2014 is: ", record["Count"] 

handle = Entrez.esearch(db ="pubmed", term="Crispr/Cas9 system", mindate=2013/01/01, maxdate=2013/01/01, datetype="pdat") 
record = Entrez.read(handle) 
record["Count"] 
print "Number of papers in 2013 is: ", record["Count"] 


handle = Entrez.esearch(db ="pubmed", term="Crispr/Cas9 system", mindate=2012/01/01, maxdate=2012/01/01, datetype="pdat") 
record = Entrez.read(handle) 
record["Count"] 
print "Number of papers in 2012 is: ", record["Count"] 

handle = Entrez.esearch(db ="pubmed", term="Crispr/Cas9 system", mindate=2011/01/01, maxdate=2011/01/01, datetype="pdat") 
record = Entrez.read(handle) 
record["Count"] 
print "Number of papers in 2011 is: ", record["Count"] 

handle = Entrez.esearch(db ="pubmed", term="Crispr/Cas9 system", mindate=2010/01/01, maxdate=2010/01/01, datetype="pdat") 
record = Entrez.read(handle) 
record["Count"] 
print "Number of papers in 2010 is: ", record["Count"] 

handle = Entrez.esearch(db ="pubmed", term="Crispr/Cas9 system", mindate=2009/01/01, maxdate=2009/01/01, datetype="pdat") 
record = Entrez.read(handle) 
record["Count"] 
print "Number of papers in 2009 is: ", record["Count"] 

handle = Entrez.esearch(db ="pubmed", term="Crispr/Cas9 system", mindate=2008/01/01, maxdate=2008/01/01, datetype="pdat") 
record = Entrez.read(handle) 
record["Count"] 
print "Number of papers in 2008 is: ", record["Count"] 

handle = Entrez.esearch(db ="pubmed", term="Crispr/Cas9 system", mindate=2007/01/01, maxdate=2007/01/01, datetype="pdat") 
record = Entrez.read(handle) 
record["Count"] 
print "Number of papers in 2007 is: ", record["Count"] 
+0

Für welche Datenbanken interessieren Sie sich? –

+0

@Ashafix Nun das Problem sagt zu E-Utilties bei NCBI zu verwenden, um die Anzahl der eingereichten Papiere über das Crispr/Cas9-System zu erhalten, also schätze ich alle von denen, die ich kann? – Azaro

+0

@Azaro In diesem Fall wollen Sie nur eine Datenbank: pubmed. Ich vermute, dass du mehrere gleichzeitige Anfragen machen willst. – xbello

Antwort

1

Wie Sie erkannt haben, ist Ihr Code hochredundanten, das ist ein typischer Fall für eine for Schleife:

from Bio import Entrez 

years = range(2016, 2006, -1) # Creates a list from 2016 to 2007 

Entrez.email = "[email protected]" 

for year in years: # Go through the list 'years' and assign the value to the variable 'year' 
    handle = Entrez.esearch(db ="pubmed", term="Crispr Cas9", 
          mindate=year, maxdate=year) 
    record = Entrez.read(handle) 
    print "Number of papers in %d is %s" %(year, record["Count"]) # 'Old' string formatting 

Es ist auch unwahrscheinlich, dass alle Dokumente, die die Erwähnung Das CrispR/Cas9-System würde den exakten Ausdruck "Cripr/Cas9" verwenden und das Wort "System" enthalten. Sie haben mehr Ergebnisse mit dem Suchbegriff "Crispr Cas9".