Exemple #1
0
def searchByTerms(terms, minresults=10, earlyyear=0, lateyear=3000):
	sortedterms = mb.sortImportance(terms)
	nr_of_results = 0
	while ((nr_of_results < minresults) and (len(sortedterms) > 0)):
		query = querybuilder.buildQuery(sortedterms, [], 4, earlyyear, lateyear)
		resp, content = h.request(baseURL + \
			"esearch.fcgi?db=pubmed&retmode=xml&sort=relevance" + \
			"&retmax=" + str(retmax) + "&term=" + \
			query.replace(" ", "+"))
		resultsdict = xmltodict.parse(content)["eSearchResult"]
		nr_of_results = int(resultsdict["Count"])
		print "Number of results for %i terms: %i" \
			% (len(sortedterms), nr_of_results)
		sortedterms.pop()
	return query, resultsdict, nr_of_results
Exemple #2
0
def searchByCombination(primaryterms, secondaryterms, minresults=10, 
		earlyyear=0, lateyear=3000):

	level = 4
	nr_of_results = -1

	while ((nr_of_results < minresults) and (level > 0)):
		query = querybuilder.buildQuery(primaryterms, secondaryterms, level, \
			 earlyyear, lateyear)
		#print query
		resp, content = h.request(baseURL + \
			"esearch.fcgi?db=pubmed&retmode=xml&sort=relevance&" + \
			"retmax=" + str(retmax) + "&term=" + query.replace(" ", "+"))
		resultsdict = xmltodict.parse(content)["eSearchResult"]
		try:
			nr_of_results = int(resultsdict["Count"])
		except KeyError:
			print "KeyError"
			nr_of_results = 0
		print "Number of results for level %i: %i" \
			% (level, nr_of_results)
		level -= 1

	return query, resultsdict, nr_of_results
Exemple #3
0
secondaryterms = []
if len(evidence) == 1:
	for term in terms:
		if terms[term]["major"] >= 1:
			primaryterms.append(("(\"" + term + "\"[MeSH Terms] OR \"" + term + "\"[All Fields])"))
else:
	subquery = "" 
	for term in terms:
		# make conjunction of all terms that occur in all articles
		if terms[term]["count"] > (len(evidence) - 1):
			primaryterms.append(("(\"" + term + "\"[MeSH Terms] OR \"" + term + "\"[All Fields])"))
		# all rank 2 terms
		if terms[term]["count"] == (len(evidence) - 1):
			secondaryterms.append(("\"" + term + "\"[MeSH Terms]"))
			
query2 = querybuilder.buildQuery(primaryterms, secondaryterms, 1)
			
# write to results.html
out.write("<h3>Query obtained from input article MeSH terms</h3>")
out.write(query2)


#--------------------------------------
# PART 3: execute (combined) query)
#--------------------------------------
			
# combine with old query
#query +=  (" AND \"" + query2)

# add dates
#query += " 2004:2012 [mhda]"