diff options
Diffstat (limited to 'web/webqtl/search')
-rwxr-xr-x | web/webqtl/search/PubmedSearch.py | 94 | ||||
-rwxr-xr-x[-rw-r--r--] | web/webqtl/search/SearchResultPage.py | 16 | ||||
-rwxr-xr-x | web/webqtl/search/pubmedsearch.py | 12 |
3 files changed, 108 insertions, 14 deletions
diff --git a/web/webqtl/search/PubmedSearch.py b/web/webqtl/search/PubmedSearch.py new file mode 100755 index 00000000..17c1d1ec --- /dev/null +++ b/web/webqtl/search/PubmedSearch.py @@ -0,0 +1,94 @@ +# Copyright (C) University of Tennessee Health Science Center, Memphis, TN. +# +# This program is free software: you can redistribute it and/or modify it +# under the terms of the GNU Affero General Public License +# as published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU Affero General Public License for more details. +# +# This program is available from Source Forge: at GeneNetwork Project +# (sourceforge.net/projects/genenetwork/). +# +# Contact Drs. Robert W. Williams and Xiaodong Zhou (2010) +# at rwilliams@uthsc.edu and xzhou15@uthsc.edu +# +# +# +# This module is used by GeneNetwork project (www.genenetwork.org) +# +# Created by GeneNetwork Core Team 2010/08/10 +# +# Last updated by GeneNetwork Core Team 2010/10/20 + +import re + +from dbFunction import webqtlDatabaseFunction + +import logging +logging.basicConfig(filename="/tmp/gn_log_leiyan", level=logging.INFO) +_log = logging.getLogger("PubmedSearch") + +######################################### +# name=megan inst=washington +######################################### + +class PubmedSearch: + + def __init__(self, s, ProbeSetFreezeId): + cursor = webqtlDatabaseFunction.getCursor() + if (not cursor): + return + self.olds = s + self.news = s + sql = "SELECT ProbeSet.Symbol FROM pubmedsearch,ProbeSet,ProbeSetXRef WHERE " + # + pattern_name = re.compile('\s*name\s*[:=]((\s*\(.+?\)\s*)|(\s*\S+\s*))', re.I) + search_name = pattern_name.search(self.news) + if search_name: + self.news = self.news.replace(search_name.group(), ' ') + keywords = search_name.group(1) + keywords = keywords.strip() + keywords = keywords.strip('(') + keywords = keywords.strip(')') + keywords = keywords.strip() + keywords = keywords.split() + for keyword in keywords: + sql += "(MATCH (pubmedsearch.authorfullname,authorshortname) AGAINST ('%s' IN BOOLEAN MODE)) AND " % keyword + _log.info("news_1: "+self.news) + # + pattern_inst = re.compile('\s*inst\s*[:=]((\s*\(.+?\)\s*)|(\s*\S+\s*))', re.I) + search_inst = pattern_inst.search(self.news) + if search_inst: + self.news = self.news.replace(search_inst.group(), ' ') + keywords = search_inst.group(1) + keywords = keywords.strip() + keywords = keywords.strip('(') + keywords = keywords.strip(')') + keywords = keywords.strip() + keywords = keywords.split() + for keyword in keywords: + sql += "(MATCH (pubmedsearch.institute) AGAINST ('%s' IN BOOLEAN MODE)) AND " % keyword + _log.info("news_2: "+self.news) + # + if search_name or search_inst: + sql += "pubmedsearch.geneid=ProbeSet.GeneId AND " + sql += "ProbeSet.Id=ProbeSetXRef.ProbeSetId AND " + sql += "ProbeSetXRef.ProbeSetFreezeId=%d " % ProbeSetFreezeId + sql += "GROUP BY ProbeSet.Symbol;" + _log.info("sql: "+sql) + cursor.execute(sql) + symbols1 = cursor.fetchall() + symbols2 = '' + for symbol in symbols1: + symbols2 += (symbol[0]+' ') + self.news = symbols2 + self.news + _log.info("symbols2: "+symbols2) + else: + self.news = self.olds + + def getNewS(self): + return self.news
\ No newline at end of file diff --git a/web/webqtl/search/SearchResultPage.py b/web/webqtl/search/SearchResultPage.py index 14d10731..029a54c4 100644..100755 --- a/web/webqtl/search/SearchResultPage.py +++ b/web/webqtl/search/SearchResultPage.py @@ -20,8 +20,10 @@ from base.templatePage import templatePage from utility import webqtlUtil from dbFunction import webqtlDatabaseFunction +import PubmedSearch + import logging -logging.basicConfig(filename="/tmp/gn_log", level=logging.INFO) +logging.basicConfig(filename="/tmp/gn_log_leiyan", level=logging.INFO) _log = logging.getLogger("search") class SearchResultPage(templatePage): @@ -155,7 +157,16 @@ class SearchResultPage(templatePage): geneIdListQuery = " geneId=%s" % string.join(string.split(geneIdListQuery), "-") self.ANDkeyword = fd.formdata.getfirst('ANDkeyword', "") + _log.info("self.ANDkeyword[1]: " + self.ANDkeyword) + pubmedSearchObject = PubmedSearch.PubmedSearch(self.ANDkeyword, self.database[0].id) + self.ANDkeyword = pubmedSearchObject.getNewS() + _log.info("self.ANDkeyword[2]: " + self.ANDkeyword) + self.ORkeyword = fd.formdata.getfirst('ORkeyword', "") + _log.info("self.ORkeyword[1]: " + self.ORkeyword) + pubmedSearchObject = PubmedSearch.PubmedSearch(self.ORkeyword, self.database[0].id) + self.ORkeyword = pubmedSearchObject.getNewS() + _log.info("self.ORkeyword[2]: "+self.ORkeyword) self.ORkeyword += geneIdListQuery @@ -485,7 +496,7 @@ class SearchResultPage(templatePage): self.results = [] for item in searchCountQuery: start_time = datetime.datetime.now() - _log.info("Executing query: %s"%(item)) + _log.info("111 Executing query: %s"%(item)) self.cursor.execute(item) allResults.append(self.cursor.fetchall()) end_time = datetime.datetime.now() @@ -497,6 +508,7 @@ class SearchResultPage(templatePage): #searchCountQuery retrieve all the results, for counting use only if searchCountQuery != searchQuery: for item in searchQuery: + _log.info("222 Executing query: %s"%(item)) self.cursor.execute(item) self.results.append(self.cursor.fetchall()) else: diff --git a/web/webqtl/search/pubmedsearch.py b/web/webqtl/search/pubmedsearch.py deleted file mode 100755 index d0d18ff5..00000000 --- a/web/webqtl/search/pubmedsearch.py +++ /dev/null @@ -1,12 +0,0 @@ -import sys -import os -import MySQLdb -import time - -db='db_webqtl_leiyan' -author="megan memphis" - -con = MySQLdb.Connect(db=db,user='webqtlupd',passwd='webqtl', host="localhost") -cursor = con.cursor() -cursor.execute('select PhenotypeId, Locus, DataId, Phenotype.Post_publication_description from PublishXRef, Phenotype where PublishXRef.PhenotypeId = Phenotype.Id and InbredSetId=%s'%InbredSetId) -PublishXRefInfos = cursor.fetchall() |