diff options
author | Zachary Sloan | 2012-10-26 17:02:42 -0500 |
---|---|---|
committer | Zachary Sloan | 2012-10-26 17:02:42 -0500 |
commit | 5083b031f0041f6df3c99180bd06243625af728e (patch) | |
tree | 4803154fcb7858f1a78103fc93f043ca790795a8 /wqflask | |
parent | 82bcb31455d658a462bfde711c862480fc9acd05 (diff) | |
download | genenetwork2-5083b031f0041f6df3c99180bd06243625af728e.tar.gz |
Got search page working for mice with a single gene search
Diffstat (limited to 'wqflask')
-rwxr-xr-x | wqflask/base/templatePage.py | 20 | ||||
-rwxr-xr-x | wqflask/base/webqtlTrait.py | 2 | ||||
-rw-r--r-- | wqflask/wqflask/search_results.py | 370 | ||||
-rw-r--r-- | wqflask/wqflask/templates/search_result_page.html | 52 | ||||
-rw-r--r-- | wqflask/wqflask/views.py | 3 |
5 files changed, 231 insertions, 216 deletions
diff --git a/wqflask/base/templatePage.py b/wqflask/base/templatePage.py index 7ef58a72..a94d5153 100755 --- a/wqflask/base/templatePage.py +++ b/wqflask/base/templatePage.py @@ -155,29 +155,29 @@ class templatePage: def openMysql(self): try: - self.con = MySQLdb.Connect(db=webqtlConfig.DB_NAME,host=webqtlConfig.MYSQL_SERVER, \ + self.db_conn = MySQLdb.Connect(db=webqtlConfig.DB_NAME,host=webqtlConfig.MYSQL_SERVER, \ user=webqtlConfig.DB_USER,passwd=webqtlConfig.DB_PASSWD) - self.cursor = self.con.cursor() - return 1 - except: + self.cursor = self.db_conn.cursor() + return True + except Exception: heading = "Connect MySQL Server" detail = ["Can't connect to MySQL server on '"+ webqtlConfig.MYSQL_SERVER+"':100061. \ The server may be down at this time"] self.error(heading=heading,detail=detail,error="Error 2003") - return 0 + return False def updMysql(self): try: - self.con = MySQLdb.Connect(db=webqtlConfig.DB_UPDNAME,host=webqtlConfig.MYSQL_UPDSERVER, \ + self.db_conn = MySQLdb.Connect(db=webqtlConfig.DB_UPDNAME,host=webqtlConfig.MYSQL_UPDSERVER, \ user=webqtlConfig.DB_UPDUSER,passwd=webqtlConfig.DB_UPDPASSWD) - self.cursor = self.con.cursor() - return 1 - except: + self.cursor = self.db_conn.cursor() + return True + except Exception: heading = "Connect MySQL Server" detail = ["update: Can't connect to MySQL server on '"+ webqtlConfig.MYSQL_UPDSERVER+"':100061. \ The server may be down at this time "] self.error(heading=heading,detail=detail,error="Error 2003") - return 0 + return False def error(self,heading="",intro=[],detail=[],title="Error",error="Error"): 'generating a WebQTL style error page' diff --git a/wqflask/base/webqtlTrait.py b/wqflask/base/webqtlTrait.py index d6d537b7..46af6683 100755 --- a/wqflask/base/webqtlTrait.py +++ b/wqflask/base/webqtlTrait.py @@ -67,7 +67,7 @@ class webqtlTrait: ''', self.name) self.riset = self.cursor.fetchone()[0] else: - self.riset = self.db.getRISet() + self.riset = self.db.get_group() # # In ProbeSet, there are maybe several annotations match one sequence diff --git a/wqflask/wqflask/search_results.py b/wqflask/wqflask/search_results.py index 2269b9e7..8fc12b16 100644 --- a/wqflask/wqflask/search_results.py +++ b/wqflask/wqflask/search_results.py @@ -81,8 +81,8 @@ class SearchResultPage(templatePage): PublishFreeze.InbredSetId""") results = self.cursor.fetchall() self.dataset = map(lambda x: webqtlDataset(x[0], self.cursor), results) - self.datasetGroups = map(lambda x: x[1], results) - self.datasetGroupIds = map(lambda x: x[2], results) + self.dataset_groups = map(lambda x: x[1], results) + self.dataset_group_ids = map(lambda x: x[2], results) self.single_group = False else: print("self.dataset is:", pf(self.dataset)) @@ -162,7 +162,7 @@ class SearchResultPage(templatePage): #self.db_type = self.dataset.type if self.dataset.type == "Publish": - self.searchField = ['Phenotype.Post_publication_description', + self.search_fields = ['Phenotype.Post_publication_description', 'Phenotype.Pre_publication_description', 'Phenotype.Pre_publication_abbreviation', 'Phenotype.Post_publication_abbreviation', @@ -174,7 +174,7 @@ class SearchResultPage(templatePage): 'PublishXRef.Id'] elif self.dataset.type == "ProbeSet": - self.searchField = ['Name', + self.search_fields = ['Name', 'Description', 'Probe_Target_Description', 'Symbol', @@ -183,7 +183,7 @@ class SearchResultPage(templatePage): 'UniGeneId', 'RefSeq_TranscriptId'] elif self.dataset.type == "Geno": - self.searchField = ['Name','Chr'] + self.search_fields = ['Name','Chr'] self.do_search() @@ -354,17 +354,23 @@ class SearchResultPage(templatePage): #pageTable = HT.TableLite(cellSpacing=2,cellPadding=0,width="100%",border=0) - lastone = False - for i, item in enumerate(self.results): - if not item: - continue - lastone = False + #last_result = False - self.traitList = [] - for k, item2 in enumerate(item): - j, ProbeSetID = item2[:2] - thisTrait = webqtlTrait(db=self.database[j], name=ProbeSetID, cursor=self.cursor) - self.traitList.append(thisTrait) + self.trait_list = [] + for result in self.results: + if not result: + continue + #last_result = False + + #for item in result: + print("foo locals are:", locals()) + probe_set_id = result[1] + print("probe_set_id is:", pf(probe_set_id)) + this_trait = webqtlTrait(db=self.dataset, name=probe_set_id, cursor=self.cursor) + this_trait.retrieveInfo(QTL=True) + print("this_trait is:", pf(this_trait)) + self.trait_list.append(this_trait) + print("self.trait_list is:", pf(self.trait_list)) ############## # Excel file # @@ -378,63 +384,45 @@ class SearchResultPage(templatePage): #headingStyle = workbook.add_format(align = 'center', bold = 1, border = 1, size=13, fg_color = 0x1E, color="white") #XZ, 3/18/2010: pay attention to the line number of header in this file. As of today, there are 7 lines. - #worksheet = self.createExcelFileWithTitleAndFooter(workbook=workbook, db=thisTrait.db, returnNumber=len(self.traitList)) + #worksheet = self.createExcelFileWithTitleAndFooter(workbook=workbook, db=this_trait.db, returnNumber=len(self.trait_list)) newrow = 7 + + #### Excel file stuff stops #tbl = HT.TableLite(cellSpacing=2,cellPadding=0,width="90%",border=0) #seq = self.pageNumber*self.NPerPage+1 //Edited out because we show all results in one page now - Zach 2/22/11 seq = 1 - group = self.databaseCrosses[i] - self.thisFormName = thisFormName = 'showDatabase'+group - #selectall = HT.Href(url="#", onClick="checkAll(document.getElementsByName('%s')[0]);" % thisFormName) - #selectall_img = HT.Image("/images/select_all2_final.jpg", name="selectall", alt="Select All", title="Select All", style="border:none;") - #selectall.append(selectall_img) - #reset = HT.Href(url="#", onClick="checkNone(document.getElementsByName('%s')[0]);" % thisFormName) - #reset_img = HT.Image("/images/select_none2_final.jpg", alt="Select None", title="Select None", style="border:none;") - #reset.append(reset_img) - #selectinvert = HT.Href(url="#", onClick="checkInvert(document.getElementsByName('%s')[0]);" % thisFormName) - #selectinvert_img = HT.Image("/images/invert_selection2_final.jpg", name="selectinvert", alt="Invert Selection", title="Invert Selection", style="border:none;") - #selectinvert.append(selectinvert_img) - #addselect = HT.Href(url="#") - #addselect_img = HT.Image("/images/add_collection1_final.jpg", name="addselect", alt="Add To Collection", title="Add To Collection", style="border:none;") - #addselect.append(addselect_img) - - #optionsTable = HT.TableLite(cellSpacing=2,cellPadding=0,width="20%",border=0) - #optionsRow = HT.TR(HT.TD(selectall, width="25%"), HT.TD(reset, width="25%"), HT.TD(selectinvert, width="25%"), HT.TD(addselect, width="25%")) - #labelsRow = HT.TR(HT.TD(" "*2,"Select", width="25%"), HT.TD(" ","Deselect", width="255"), HT.TD(" "*3,"Invert", width="25%"), HT.TD(" "*4,"Add", width="25%")) - #optionsTable.append(optionsRow, labelsRow) - - #pageTable.append(HT.TR(HT.TD(optionsTable)), HT.TR(HT.TD(xlsUrl, height=40))) + group = self.dataset.group + self.form_name = form_name = 'show_dataset_'+group tblobj = {} - mainfmName = thisFormName species = webqtlDatabaseFunction.retrieveSpecies(cursor=self.cursor, RISet=group) - if thisTrait.db.type=="Geno": + if this_trait.db.type=="Geno": tblobj['header'] = self.getTableHeaderForGeno(worksheet=worksheet, newrow=newrow, headingStyle=headingStyle) newrow += 1 sortby = self.getSortByValue(datasetType="Geno") - tblobj['body'] = self.getTableBodyForGeno(traitList=self.traitList, formName=mainfmName, worksheet=worksheet, newrow=newrow) + #tblobj['body'] = self.getTableBodyForGeno(trait_list=self.trait_list, form_name=form_name, worksheet=worksheet, newrow=newrow) #workbook.close() - objfile = open('%s.obj' % (webqtlConfig.TMPDIR+filename), 'wb') - cPickle.dump(tblobj, objfile) - objfile.close() - - div = HT.Div(webqtlUtil.genTableObj(tblobj, filename, sortby), Id="sortable") + #objfile = open('%s.obj' % (webqtlConfig.TMPDIR+filename), 'wb') + #cPickle.dump(tblobj, objfile) + #objfile.close() - pageTable.append(HT.TR(HT.TD(div))) + #div = HT.Div(webqtlUtil.genTableObj(tblobj, filename, sortby), Id="sortable") + # + #pageTable.append(HT.TR(HT.TD(div))) - elif thisTrait.db.type=="Publish": + elif this_trait.db.type=="Publish": #tblobj['header'] = self.getTableHeaderForPublish(worksheet=worksheet, newrow=newrow, headingStyle=headingStyle) - newrow += 1 + #newrow += 1 sortby = self.getSortByValue(datasetType="Publish") - #tblobj['body'] = self.getTableBodyForPublish(traitList=self.traitList, formName=mainfmName, worksheet=worksheet, newrow=newrow, species=species) + #tblobj['body'] = self.getTableBodyForPublish(trait_list=self.trait_list, formName=mainfmName, worksheet=worksheet, newrow=newrow, species=species) #workbook.close() #objfile = open('%s.obj' % (webqtlConfig.TMPDIR+filename), 'wb') @@ -445,19 +433,19 @@ class SearchResultPage(templatePage): #pageTable.append(HT.TR(HT.TD(div))) - elif thisTrait.db.type=="ProbeSet": + elif this_trait.db.type=="ProbeSet": #tblobj['header'] = self.getTableHeaderForProbeSet(worksheet=worksheet, newrow=newrow, headingStyle=headingStyle) - newrow += 1 + #newrow += 1 sortby = self.getSortByValue(datasetType="ProbeSet") - tblobj['body'] = self.getTableBodyForProbeSet(traitList=self.traitList, formName=mainfmName, newrow=newrow, species=species) - + tblobj['body'] = self.getTableBodyForProbeSet(trait_list=self.trait_list, formName=self.form_name, newrow=newrow, species=species) + # #workbook.close() - objfile = open('%s.obj' % (webqtlConfig.TMPDIR+filename), 'wb') - cPickle.dump(tblobj, objfile) - objfile.close() + #objfile = open('%s.obj' % (webqtlConfig.TMPDIR+filename), 'wb') + #cPickle.dump(tblobj, objfile) + #objfile.close() #div = HT.Div(webqtlUtil.genTableObj(tblobj, filename, sortby), Id="sortable") @@ -474,8 +462,8 @@ class SearchResultPage(templatePage): # # TD_LR.append(traitForm) # if len(self.results) > 1 and i < len(self.results) - 1: - # lastone = True - #if lastone: + # last_result = True + #if last_result: # TD_LR.contents.pop() def executeQuery(self): @@ -571,7 +559,7 @@ class SearchResultPage(templatePage): if self.ANDQuery or self.ORQuery: clause = self.ORQuery[:] - for j, database in enumerate(self.database): + for j, database in enumerate(self.dataset): if self.ANDQuery: clause.append(" (%s) " % string.join(self.ANDQuery, " AND ")) @@ -594,7 +582,7 @@ class SearchResultPage(templatePage): PublishXRef.PhenotypeId = Phenotype.Id and PublishXRef.PublicationId = Publication.Id and PublishFreeze.Id = %d""" % (j, incGenoTbl, - self.databaseCrossIds[j], item, database.id)) + self.dataset_group_ids[j], item, database.id)) elif self.dbType == "ProbeSet": if item.find("GOgene") < 0: incGoTbl = "" @@ -667,51 +655,87 @@ class SearchResultPage(templatePage): #self.ORkeyword2 = re.sub(re.compile('\s*\([\s\S]*\)'), '', self.ORkeyword2) #self.ORkeyword2 = self.encregexp(self.ORkeyword2) - if self.ORkeyword2 or self.ANDkeyword2: - ANDFulltext = [] - ORFulltext = [] - for k, item in enumerate(self.ORkeyword2 + self.ANDkeyword2): - item = item['search_term'] - self.nkeywords += 1 - #ZS: If there are both AND and OR keywords, just use the OR keywords - if k >=len(self.ORkeyword2): - query = self.ANDQuery - DescriptionText = self.ANDDescriptionText - clausejoin = ' OR ' - fulltext = ANDFulltext - else: - query = self.ORQuery - DescriptionText = self.ORDescriptionText - clausejoin = ' OR ' - fulltext = ORFulltext - - if self.dbType == "ProbeSet" and item.find('.') < 0 and item.find('\'') < 0: - fulltext.append(item) - else: - if self.matchwhole and item.find("'") < 0: - item = "[[:<:]]"+ item+"[[:>:]]" - clause2 = [] - for field in self.searchField: - if self.dbType == "Publish": - clause2.append("%s REGEXP \"%s\"" % (field,item)) - else: - clause2.append("%s REGEXP \"%s\"" % ("%s.%s" % (self.dbType,field),item)) - clauseItem = "(%s)" % string.join(clause2, clausejoin) - query.append(" (%s) " % clauseItem) - if ANDFulltext: - clauseItem = """ MATCH (ProbeSet.Name,ProbeSet.description,ProbeSet.symbol, - alias,GenbankId, UniGeneId, Probe_Target_Description) - AGAINST ('+%s' IN BOOLEAN MODE) """ % string.join(ANDFulltext, " +") - self.ANDQuery.append(" (%s) " % clauseItem) - if ORFulltext: - clauseItem = """ MATCH (ProbeSet.Name,ProbeSet.description,ProbeSet.symbol,alias, - GenbankId, UniGeneId, Probe_Target_Description) AGAINST ('%s' IN BOOLEAN MODE) - """ % string.join(ORFulltext, " ") - self.ORQuery.append(" (%s) " % clauseItem) - else: - pass - return 1 - + #if self.search_terms: + #full_text = [] + #ANDFulltext = [] + #ORFulltext = [] + for item in self.search_terms: + search_term = item['search_term'] + # self.nkeywords += 1 + # #ZS: If there are both AND and OR keywords, just use the OR keywords + # if k >=len(self.ORkeyword2): + # query = self.ANDQuery + # DescriptionText = self.ANDDescriptionText + # clausejoin = ' OR ' + # fulltext = ANDFulltext + # else: + # query = self.ORQuery + # DescriptionText = self.ORDescriptionText + # clausejoin = ' OR ' + # fulltext = ORFulltext + + print("item is:", pf(search_term)) + + if self.dataset.type == "ProbeSet": + query = ( +"""SELECT distinct 0, ProbeSet.Name as TNAME, 0 as thistable, + ProbeSetXRef.Mean as TMEAN, + ProbeSetXRef.LRS as TLRS, + ProbeSetXRef.PVALUE as TPVALUE, + ProbeSet.Chr_num as TCHR_NUM, + ProbeSet.Mb as TMB, + ProbeSet.Symbol as TSYMBOL, + ProbeSet.name_num as TNAME_NUM FROM ProbeSetXRef, + ProbeSet WHERE (MATCH (ProbeSet.Name, ProbeSet.description, ProbeSet.symbol, + alias, GenbankId, UniGeneId, Probe_Target_Description) + AGAINST ('%s' IN BOOLEAN MODE)) + and ProbeSet.Id = ProbeSetXRef.ProbeSetId + and ProbeSetXRef.ProbeSetFreezeId = %s + """ % (self.db_conn.escape_string(search_term), + self.db_conn.escape_string(str(self.dataset.id)))) + + print("query is:", query) + self.cursor.execute(query) + #print("query is:", pf(self.query)) + + #self.cursor.execute(self.query) + self.results = self.cursor.fetchall() + + print("self.results is:", pf(self.results)) + + +#["(SELECT distinct 0, ProbeSet.Name as TNAME, 0 as thistable,\n\t\t\t\t\t\tProbeSetXRef.Mean as TMEAN, +# ProbeSetXRef.LRS as TLRS, ProbeSetXRef.PVALUE as TPVALUE,\n\t\t\t\t\t\tProbeSet.Chr_num as TCHR_NUM, +# Pr beSet.Mb as TMB, ProbeSet.Symbol as TSYMBOL,\n\t\t\t\t\t\tProbeSet.name_num as TNAME_NUM FROM +# ProbeSetXRef, ProbeSet \n\t\t\t\t\t\tWHERE ( MATCH (ProbeSet.Name,ProbeSet.description,ProbeSet.symbol, +# alias GenbankId, UniGeneId, Probe_Target_Description) +# AGAINST ('shh' IN BOOLEAN MODE) ) +# and ProbeSet.Id = ProbeSetXRef.ProbeSetId and ProbeSetXRef.ProbeSetFreezeId = 112\n\t\t\t\t\t\t)"] + + + #if self.dataset.type == "ProbeSet" and search_term.find('.') < 0 and search_term.find('\'') < 0: + # full_text.append(search_term) + #else: + # if self.matchwhole and search_term.find("'") < 0: + # search_term = "[[:<:]]"+ search_term+"[[:>:]]" + # clause2 = [] + # for field in self.search_fields: + # if self.dataset.type == "Publish": + # clause2.append("%s REGEXP \"%s\"" % (field,search_term)) + # else: + # clause2.append("%s REGEXP \"%s\"" % ("%s.%s" % (self.dataset.type,field),search_term)) + # clause_item = "(%s)" % string.join(clause2, clausejoin) + # query.append(" (%s) " % clause_item) + #if ANDFulltext: + # clauseItem = """ MATCH (ProbeSet.Name,ProbeSet.description,ProbeSet.symbol, + # alias,GenbankId, UniGeneId, Probe_Target_Description) + # AGAINST ('+%s' IN BOOLEAN MODE) """ % string.join(ANDFulltext, " +") + # self.ANDQuery.append(" (%s) " % clauseItem) + #if ORFulltext: + #clauseItem = """ MATCH (ProbeSet.Name,ProbeSet.description,ProbeSet.symbol,alias, + #GenbankId, UniGeneId, Probe_Target_Description) AGAINST ('%s' IN BOOLEAN MODE) + #""" % string.join(full_text, " ") + #self.query.append(" (%s) " % clauseItem) def encregexp(self,str): @@ -981,44 +1005,44 @@ class SearchResultPage(templatePage): return tblobj_header - def getTableBodyForGeno(self, traitList, formName=None, worksheet=None, newrow=None): + def getTableBodyForGeno(self, trait_list, formName=None, worksheet=None, newrow=None): tblobj_body = [] className = "fs12 fwn ffl b1 c222" - for thisTrait in traitList: + for this_trait in trait_list: tr = [] - if not thisTrait.haveinfo: - thisTrait.retrieveInfo() + if not this_trait.haveinfo: + this_trait.retrieveInfo() - trId = str(thisTrait) + trId = str(this_trait) tr.append(TDCell(HT.TD(HT.Input(type="checkbox", Class="checkbox", name="searchResult",value=trId, onClick="highlight(this)"), nowrap="on", Class=className), text=trId)) - tr.append(TDCell(HT.TD(HT.Href(text=thisTrait.name,url="javascript:showDatabase3('%s','%s','%s','')" % (formName, thisTrait.db.name, thisTrait.name), Class="fs12 fwn ffl"),align="left", Class=className), text=thisTrait.name, val=thisTrait.name.upper())) + tr.append(TDCell(HT.TD(HT.Href(text=this_trait.name,url="javascript:showDatabase3('%s','%s','%s','')" % (formName, this_trait.db.name, this_trait.name), Class="fs12 fwn ffl"),align="left", Class=className), text=this_trait.name, val=this_trait.name.upper())) #XZ: trait_location_value is used for sorting trait_location_repr = 'N/A' trait_location_value = 1000000 - if thisTrait.chr and thisTrait.mb: + if this_trait.chr and this_trait.mb: try: - trait_location_value = int(thisTrait.chr)*1000 + thisTrait.mb + trait_location_value = int(this_trait.chr)*1000 + this_trait.mb except: - if thisTrait.chr.upper() == 'X': - trait_location_value = 20*1000 + thisTrait.mb + if this_trait.chr.upper() == 'X': + trait_location_value = 20*1000 + this_trait.mb else: - trait_location_value = ord(str(thisTrait.chr).upper()[0])*1000 + thisTrait.mb + trait_location_value = ord(str(this_trait.chr).upper()[0])*1000 + this_trait.mb - trait_location_repr = 'Chr%s: %.6f' % (thisTrait.chr, float(thisTrait.mb) ) + trait_location_repr = 'Chr%s: %.6f' % (this_trait.chr, float(this_trait.mb) ) tr.append(TDCell(HT.TD(trait_location_repr, Class="fs12 fwn b1 c222", nowrap="on"), trait_location_repr, trait_location_value)) tblobj_body.append(tr) - for ncol, item in enumerate([thisTrait.name, trait_location_repr]): + for ncol, item in enumerate([this_trait.name, trait_location_repr]): worksheet.write([newrow, ncol], item) newrow += 1 @@ -1045,40 +1069,40 @@ class SearchResultPage(templatePage): return tblobj_header - def getTableBodyForPublish(self, traitList, formName=None, worksheet=None, newrow=None, species=''): + def getTableBodyForPublish(self, trait_list, formName=None, worksheet=None, newrow=None, species=''): tblobj_body = [] className = "fs12 fwn b1 c222" - for thisTrait in traitList: + for this_trait in trait_list: tr = [] - if not thisTrait.haveinfo: - thisTrait.retrieveInfo(QTL=1) + if not this_trait.haveinfo: + this_trait.retrieveInfo(QTL=1) - trId = str(thisTrait) + trId = str(this_trait) tr.append(TDCell(HT.TD(HT.Input(type="checkbox", Class="checkbox", name="searchResult",value=trId, onClick="highlight(this)"), nowrap="on", Class=className), text=trId)) - tr.append(TDCell(HT.TD(HT.Href(text=thisTrait.name,url="javascript:showDatabase3('%s','%s','%s','')" % (formName, thisTrait.db.name, thisTrait.name), Class="fs12 fwn"), nowrap="yes",align="center", Class=className),str(thisTrait.name), thisTrait.name)) + tr.append(TDCell(HT.TD(HT.Href(text=this_trait.name,url="javascript:showDatabase3('%s','%s','%s','')" % (formName, this_trait.db.name, this_trait.name), Class="fs12 fwn"), nowrap="yes",align="center", Class=className),str(this_trait.name), this_trait.name)) - PhenotypeString = thisTrait.post_publication_description - if thisTrait.confidential: - if not webqtlUtil.hasAccessToConfidentialPhenotypeTrait(privilege=self.privilege, userName=self.userName, authorized_users=thisTrait.authorized_users): - PhenotypeString = thisTrait.pre_publication_description + PhenotypeString = this_trait.post_publication_description + if this_trait.confidential: + if not webqtlUtil.hasAccessToConfidentialPhenotypeTrait(privilege=self.privilege, userName=self.userName, authorized_users=this_trait.authorized_users): + PhenotypeString = this_trait.pre_publication_description tr.append(TDCell(HT.TD(PhenotypeString, Class=className), PhenotypeString, PhenotypeString.upper())) - tr.append(TDCell(HT.TD(thisTrait.authors, Class="fs12 fwn b1 c222 fsI"),thisTrait.authors, thisTrait.authors.strip().upper())) + tr.append(TDCell(HT.TD(this_trait.authors, Class="fs12 fwn b1 c222 fsI"),this_trait.authors, this_trait.authors.strip().upper())) try: - PubMedLinkText = myear = repr = int(thisTrait.year) + PubMedLinkText = myear = repr = int(this_trait.year) except: PubMedLinkText = repr = "N/A" myear = 0 - if thisTrait.pubmed_id: - PubMedLink = HT.Href(text= repr,url= webqtlConfig.PUBMEDLINK_URL % thisTrait.pubmed_id,target='_blank', Class="fs12 fwn") + if this_trait.pubmed_id: + PubMedLink = HT.Href(text= repr,url= webqtlConfig.PUBMEDLINK_URL % this_trait.pubmed_id,target='_blank', Class="fs12 fwn") else: PubMedLink = repr @@ -1092,9 +1116,9 @@ class SearchResultPage(templatePage): LRS_flag = 1 - if thisTrait.lrs: - LRS_score_repr = '%3.1f' % thisTrait.lrs - LRS_score_value = thisTrait.lrs + if this_trait.lrs: + LRS_score_repr = '%3.1f' % this_trait.lrs + LRS_score_value = this_trait.lrs tr.append(TDCell(HT.TD(LRS_score_repr, Class=className), LRS_score_repr, LRS_score_value)) self.cursor.execute(""" @@ -1102,7 +1126,7 @@ class SearchResultPage(templatePage): where Species.Name = '%s' and Geno.Name = '%s' and Geno.SpeciesId = Species.Id - """ % (species, thisTrait.locus)) + """ % (species, this_trait.locus)) result = self.cursor.fetchone() if result: @@ -1130,7 +1154,7 @@ class SearchResultPage(templatePage): tblobj_body.append(tr) - for ncol, item in enumerate([thisTrait.name, PhenotypeString, thisTrait.authors, thisTrait.year, thisTrait.pubmed_id, LRS_score_repr, LRS_location_repr]): + for ncol, item in enumerate([this_trait.name, PhenotypeString, this_trait.authors, this_trait.year, this_trait.pubmed_id, LRS_score_repr, LRS_location_repr]): worksheet.write([newrow, ncol], item) newrow += 1 @@ -1158,54 +1182,54 @@ class SearchResultPage(templatePage): return tblobj_header - def getTableBodyForProbeSet(self, traitList=[], primaryTrait=None, formName=None, worksheet=None, newrow=None, species=''): - # Note: setting traitList to [] is probably not a great idea. + def getTableBodyForProbeSet(self, trait_list=[], primaryTrait=None, formName=None, worksheet=None, newrow=None, species=''): + # Note: setting trait_list to [] is probably not a great idea. tblobj_body = [] className = "fs12 fwn b1 c222" - for thisTrait in traitList: + for this_trait in trait_list: - if not thisTrait.haveinfo: - thisTrait.retrieveInfo(QTL=1) + if not this_trait.haveinfo: + this_trait.retrieveInfo(QTL=1) - if thisTrait.symbol: + if this_trait.symbol: pass else: - thisTrait.symbol = "N/A" + this_trait.symbol = "N/A" tr = [] - trId = str(thisTrait) + trId = str(this_trait) #XZ, 12/08/2008: checkbox #tr.append(TDCell(HT.TD(HT.Input(type="checkbox", Class="checkbox", name="searchResult",value=trId, onClick="highlight(this)"), nowrap="on", Class="fs12 fwn ffl b1 c222"), text=trId)) #XZ, 12/08/2008: probeset name - #if thisTrait.cellid: - # tr.append(TDCell(HT.TD(HT.Href(text=thisTrait.name, url="javascript:showDatabase3('%s','%s','%s','%s')" % (formName, thisTrait.db.name,thisTrait.name,thisTrait.cellid), Class="fs12 fwn"), Class=className), thisTrait.name, thisTrait.name.upper())) + #if this_trait.cellid: + # tr.append(TDCell(HT.TD(HT.Href(text=this_trait.name, url="javascript:showDatabase3('%s','%s','%s','%s')" % (formName, this_trait.db.name,this_trait.name,this_trait.cellid), Class="fs12 fwn"), Class=className), this_trait.name, this_trait.name.upper())) #else: - # tr.append(TDCell(HT.TD(HT.Href(text=thisTrait.name, url="javascript:showDatabase3('%s','%s','%s','')" % (formName, thisTrait.db.name,thisTrait.name), Class="fs12 fwn"), Class=className), thisTrait.name, thisTrait.name.upper())) + # tr.append(TDCell(HT.TD(HT.Href(text=this_trait.name, url="javascript:showDatabase3('%s','%s','%s','')" % (formName, this_trait.db.name,this_trait.name), Class="fs12 fwn"), Class=className), this_trait.name, this_trait.name.upper())) # - #if thisTrait.geneid: - # symbolurl = HT.Href(text=thisTrait.symbol,target='_blank',url="http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=gene&cmd=Retrieve&dopt=Graphics&list_uids=%s" % thisTrait.geneid, Class="font_black fs12 fwn") + #if this_trait.geneid: + # symbolurl = HT.Href(text=this_trait.symbol,target='_blank',url="http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=gene&cmd=Retrieve&dopt=Graphics&list_uids=%s" % this_trait.geneid, Class="font_black fs12 fwn") #else: - # symbolurl = HT.Href(text=thisTrait.symbol,target='_blank',url="http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?CMD=search&DB=gene&term=%s" % thisTrait.symbol, Class="font_black fs12 fwn") + # symbolurl = HT.Href(text=this_trait.symbol,target='_blank',url="http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?CMD=search&DB=gene&term=%s" % this_trait.symbol, Class="font_black fs12 fwn") # ##XZ, 12/08/2008: gene symbol - #tr.append(TDCell(HT.TD(symbolurl, Class="fs12 fwn b1 c222 fsI"),thisTrait.symbol, thisTrait.symbol.upper())) + #tr.append(TDCell(HT.TD(symbolurl, Class="fs12 fwn b1 c222 fsI"),this_trait.symbol, this_trait.symbol.upper())) #XZ, 12/08/2008: description #XZ, 06/05/2009: Rob asked to add probe target description - description_string = str(thisTrait.description).strip() - target_string = str(thisTrait.probe_target_description).strip() + description_string = str(this_trait.description).strip() + target_string = str(this_trait.probe_target_description).strip() description_display = '' if len(description_string) > 1 and description_string != 'None': description_display = description_string else: - description_display = thisTrait.symbol + description_display = this_trait.symbol if len(description_display) > 1 and description_display != 'N/A' and len(target_string) > 1 and target_string != 'None': description_display = description_display + '; ' + target_string.strip() @@ -1213,24 +1237,24 @@ class SearchResultPage(templatePage): #tr.append(TDCell(HT.TD(description_display, Class=className), description_display, description_display)) # Save it for the jinja2 tablet - thisTrait.description_display = description_display + this_trait.description_display = description_display #XZ: trait_location_value is used for sorting trait_location_repr = 'N/A' trait_location_value = 1000000 - if thisTrait.chr and thisTrait.mb: + if this_trait.chr and this_trait.mb: try: - trait_location_value = int(thisTrait.chr)*1000 + thisTrait.mb + trait_location_value = int(this_trait.chr)*1000 + this_trait.mb except: - if thisTrait.chr.upper() == 'X': - trait_location_value = 20*1000 + thisTrait.mb + if this_trait.chr.upper() == 'X': + trait_location_value = 20*1000 + this_trait.mb else: - trait_location_value = ord(str(thisTrait.chr).upper()[0])*1000 + thisTrait.mb + trait_location_value = ord(str(this_trait.chr).upper()[0])*1000 + this_trait.mb - trait_location_repr = 'Chr%s: %.6f' % (thisTrait.chr, float(thisTrait.mb) ) - thisTrait.trait_location_repr = trait_location_repr - #thisTrait.trait_location_value = trait_location_value + trait_location_repr = 'Chr%s: %.6f' % (this_trait.chr, float(this_trait.mb) ) + this_trait.trait_location_repr = trait_location_repr + #this_trait.trait_location_value = trait_location_value tr.append(TDCell(HT.TD(trait_location_repr, Class=className, nowrap="on"), trait_location_repr, trait_location_value)) #XZ, 01/12/08: This SQL query is much faster. @@ -1239,7 +1263,7 @@ class SearchResultPage(templatePage): where ProbeSetXRef.ProbeSetFreezeId = %d and ProbeSet.Id = ProbeSetXRef.ProbeSetId and ProbeSet.Name = '%s' - """ % (thisTrait.db.id, thisTrait.name)) + """ % (this_trait.db.id, this_trait.name)) result = self.cursor.fetchone() if result: if result[0]: @@ -1250,7 +1274,7 @@ class SearchResultPage(templatePage): mean = 0 #XZ, 06/05/2009: It is neccessary to turn on nowrap - thisTrait.mean = repr = "%2.3f" % mean + this_trait.mean = repr = "%2.3f" % mean tr.append(TDCell(HT.TD(repr, Class=className, align='right', nowrap='ON'),repr, mean)) #LRS and its location @@ -1261,13 +1285,13 @@ class SearchResultPage(templatePage): LRS_flag = 1 #Max LRS and its Locus location - if thisTrait.lrs and thisTrait.locus: + if this_trait.lrs and this_trait.locus: self.cursor.execute(""" select Geno.Chr, Geno.Mb from Geno, Species where Species.Name = '%s' and Geno.Name = '%s' and Geno.SpeciesId = Species.Id - """ % (species, thisTrait.locus)) + """ % (species, this_trait.locus)) result = self.cursor.fetchone() if result: @@ -1284,12 +1308,12 @@ class SearchResultPage(templatePage): else: LRS_location_value = ord(str(LRS_chr).upper()[0])*1000 + float(LRS_Mb) - thisTrait.LRS_score_repr = LRS_score_repr = '%3.1f' % thisTrait.lrs - thisTrait.LRS_score_value = LRS_score_value = thisTrait.lrs - thisTrait.LRS_location_repr = LRS_location_repr = 'Chr%s: %.6f' % (LRS_Chr, float(LRS_Mb) ) + this_trait.LRS_score_repr = LRS_score_repr = '%3.1f' % this_trait.lrs + this_trait.LRS_score_value = LRS_score_value = this_trait.lrs + this_trait.LRS_location_repr = LRS_location_repr = 'Chr%s: %.6f' % (LRS_Chr, float(LRS_Mb) ) LRS_flag = 0 - #tr.append(TDCell(HT.TD(HT.Href(text=LRS_score_repr,url="javascript:showIntervalMapping('%s', '%s : %s')" % (formName, thisTrait.db.shortname, thisTrait.name), Class="fs12 fwn"), Class=className, align='right', nowrap="on"),LRS_score_repr, LRS_score_value)) + #tr.append(TDCell(HT.TD(HT.Href(text=LRS_score_repr,url="javascript:showIntervalMapping('%s', '%s : %s')" % (formName, this_trait.db.shortname, this_trait.name), Class="fs12 fwn"), Class=className, align='right', nowrap="on"),LRS_score_repr, LRS_score_value)) tr.append(TDCell(HT.TD(LRS_score_repr, Class=className, align='right', nowrap="on"), LRS_score_repr, LRS_score_value)) tr.append(TDCell(HT.TD(LRS_location_repr, Class=className, nowrap="on"), LRS_location_repr, LRS_location_value)) @@ -1303,7 +1327,7 @@ class SearchResultPage(templatePage): tblobj_body.append(tr) - #for ncol, item in enumerate([thisTrait.name, thisTrait.geneid, thisTrait.homologeneid, thisTrait.symbol, description_display, trait_location_repr, mean, LRS_score_repr, LRS_location_repr]): + #for ncol, item in enumerate([this_trait.name, this_trait.geneid, this_trait.homologeneid, this_trait.symbol, description_display, trait_location_repr, mean, LRS_score_repr, LRS_location_repr]): # worksheet.write([newrow, ncol], item) diff --git a/wqflask/wqflask/templates/search_result_page.html b/wqflask/wqflask/templates/search_result_page.html index c20efe40..06458818 100644 --- a/wqflask/wqflask/templates/search_result_page.html +++ b/wqflask/wqflask/templates/search_result_page.html @@ -8,32 +8,22 @@ <TR> <TD valign="top" height="200" width="100%" bgcolor="#eeeeee"> <P class="title">Search Results</P> - <BLOCKQUOTE>GeneNetwork searched the following databases: - <ul> - {% for db in database %} - <li><a href="/dbdoc/{{db.fullname}}">{{ db.fullname }}</a></li> - {% endfor %} - </ul> - + <BLOCKQUOTE>GeneNetwork searched: + <a href="/dbdoc/{{dataset.fullname}}">{{ dataset.fullname }}</a> + <br /> + For all records that match: <ul> - {% if ORkeyword2 %} - <li> - {% for word in ORkeyword2 %} - <strong>{{word}}</strong> {% if not loop.last %} or {% endif %} - {% endfor %} - </li> - {% endif %} - {% if ANDkeyword2 %} + {% if search_terms %} <li> - {% for word in ANDkeyword2 %} - <strong>{{word}}</strong> {% if not loop.last %} and {% endif %} + {% for word in search_terms %} + <strong>{{word.search_term}}</strong> {% if not loop.last %} or {% endif %} {% endfor %} </li> {% endif %} </ul> - <P>GeneNetwork found <strong>{{ numify(nresults, "record", "records") }}</strong>.</P> + <P>GeneNetwork found <strong>{{ numify(results|count, "record", "records") }}</strong>.</P> <P>To study a record, click on its ID below.</P> @@ -166,27 +156,27 @@ </DIV> </TD> </TR> - {% for thisTrait in traitList %} - <TR id="{{ thisTrait }}"> + {% for this_trait in trait_list %} + <TR id="{{ this_trait }}"> <TD class="fs12 fwn ffl b1 c222" nowrap="on">{{ loop.index }} - <INPUT TYPE="checkbox" NAME="searchResult" class="checkbox" VALUE="{{ thisTrait }}" onClick="highlight(this)"> + <INPUT TYPE="checkbox" NAME="searchResult" class="checkbox" VALUE="{{ this_trait }}" onClick="highlight(this)"> </TD> <TD class="stdcell"> - {# <A HREF="javascript:showDatabase3('{{ thisFormName }}','{{thisTrait.db.name}}','{{ thisTrait.name }}','{{ thisTrait.cellid }}')" class="fs12 fwn"> - </a> #} - <a href="{{ url_for('show_trait_page', database=thisTrait.db.name, ProbeSetID=thisTrait.name, incparentsf1='ON', RISet='BXD')}}" class="fs12 fwn"> - {{ thisTrait.name.upper() }} + {# <A HREF="javascript:showDatabase3('{{ thisFormName }}','{{this_trait.db.name}}','{{ this_trait.name }}','{{ this_trait.cellid }}')" class="fs12 fwn"> - </a> #} + <a href="{{ url_for('show_trait_page', database=this_trait.db.name, ProbeSetID=this_trait.name, incparentsf1='ON', RISet='BXD')}}" class="fs12 fwn"> + {{ this_trait.name.upper() }} </a> </TD> <TD class="fs12 fwn b1 c222 fsI"> - <A HREF="http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=gene&cmd=Retrieve&dopt=Graphics&list_uids={{thisTrait.geneid}}" TARGET="_blank" class="font_black fs12 fwn"> - {{ thisTrait.symbol }} + <A HREF="http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=gene&cmd=Retrieve&dopt=Graphics&list_uids={{this_trait.geneid}}" TARGET="_blank" class="font_black fs12 fwn"> + {{ this_trait.symbol }} </A> </TD> - <TD class="stdcell">{{ thisTrait.description_display }}</TD> - <TD class="stdcell" nowrap="on">{{ thisTrait.trait_location_repr }}</TD> - <TD class="stdcell" nowrap="ON" align="right">{{ thisTrait.mean }}</TD> - <TD class="stdcell" nowrap="on" align="right">{{ thisTrait.LRS_score_repr }}</TD> - <TD class="stdcell" nowrap="on">{{ thisTrait.LRS_location_repr }}</TD> + <TD class="stdcell">{{ this_trait.description_display }}</TD> + <TD class="stdcell" nowrap="on">{{ this_trait.trait_location_repr }}</TD> + <TD class="stdcell" nowrap="ON" align="right">{{ this_trait.mean }}</TD> + <TD class="stdcell" nowrap="on" align="right">{{ this_trait.LRS_score_repr }}</TD> + <TD class="stdcell" nowrap="on">{{ this_trait.LRS_location_repr }}</TD> </TR> {% endfor %} </TABLE> diff --git a/wqflask/wqflask/views.py b/wqflask/wqflask/views.py index 629a5b15..dd95f7ca 100644 --- a/wqflask/wqflask/views.py +++ b/wqflask/wqflask/views.py @@ -63,7 +63,8 @@ def search_page(): else: print("calling search_results.SearchResultPage") the_search = search_results.SearchResultPage(request.args) - print("done calling") + print("template_vars is:", pf(the_search.__dict__)) + print("trait_list is:", pf(the_search.__dict__['trait_list'][0].__dict__)) return render_template("search_result_page.html", **the_search.__dict__) |