0

私の仕事は、NCBI の E-Utilties を使用して、Crispr/Cas9 システムに関して過去 10 年間に提出された論文の数を取得することです。一度に複数のデータベースを検索するにはどうすればよいですか? これまでの私のコード:

from Bio import Entrez


Entrez.email = "example@gmail.com"
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"]
4

1 に答える 1

1

お気づきかもしれませんが、コードは非常に冗長です。これは、forループの典型的なケースです。

from Bio import Entrez

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

Entrez.email = "Example@mail.org"

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

また、CrispR/Cas9 システムに言及しているすべての論文が「Cripr/Cas9」という正確なフレーズを使用し、「システム」という単語を含む可能性は低いです。「Crispr Cas9」という検索語を使用すると、より多くの結果が得られました。

于 2016-05-10T11:40:53.133 に答える