diff options
Diffstat (limited to 'web/webqtl/externalResource/GoTreePage.py')
-rwxr-xr-x | web/webqtl/externalResource/GoTreePage.py | 154 |
1 files changed, 154 insertions, 0 deletions
diff --git a/web/webqtl/externalResource/GoTreePage.py b/web/webqtl/externalResource/GoTreePage.py new file mode 100755 index 00000000..07144a23 --- /dev/null +++ b/web/webqtl/externalResource/GoTreePage.py @@ -0,0 +1,154 @@ +#GoTreePage.py + +import string +from htmlgen import HTMLgen2 as HT + +from base import webqtlConfig +from base.webqtlTrait import webqtlTrait +from base.templatePage import templatePage +from dbFunction import webqtlDatabaseFunction + + +######################################### +# GoTree Page +######################################### +class GoTreePage(templatePage): + + def __init__(self,fd): + + self.theseTraits = [] + TD_LR = HT.TD(height=200,width="100%",bgColor='#eeeeee',valign="middle") + + templatePage.__init__(self, fd) + + if not self.openMysql(): + return + + self.searchResult = fd.formdata.getvalue('searchResult', []) + if type("1") == type(self.searchResult): + self.searchResult = [self.searchResult] + + #XZ, self.theseTraits holds the "ProbeSet" traits. + + for item in self.searchResult: + try: + thisTrait = webqtlTrait(fullname=item, cursor=self.cursor) + thisTrait.retrieveInfo(QTL=1) + if thisTrait.db.type == "ProbeSet": + self.theseTraits.append(thisTrait) + except: + pass + + if self.theseTraits: + pass + else: + templatePage.__init__(self, fd) + heading = 'WebGestalt' + detail = ['You need to select at least one microarray trait to submit.'] + self.error(heading=heading,detail=detail) + return + + chipName = self.testChip(fd) + + #XZ, 8/24/2009: the name of arraylist is misleading. It holds the name of traits. + arraylist, geneIdList = self.genGeneIdList(fd) + + target_url = "http://bioinfo.vanderbilt.edu/webgestalt/webgestalt.php" + + formWebGestalt = HT.Form(cgi=target_url, enctype='multipart/form-data', name='WebGestalt', submit = HT.Input(type='hidden')) + + id_type = chipName + + hddnWebGestalt = {'id_list':string.join(arraylist, ","), + 'id_type':id_type} + + hddnWebGestalt['ref_type'] = hddnWebGestalt['id_type'] + hddnWebGestalt['analysis_type'] = 'GO' + hddnWebGestalt['significancelevel'] = 'Top10' + hddnWebGestalt['stat'] = 'Hypergeometric' + hddnWebGestalt['mtc'] = 'BH' + hddnWebGestalt['min'] = '2' + hddnWebGestalt['id_value'] = fd.formdata.getvalue('correlation') + + species = webqtlDatabaseFunction.retrieveSpecies(cursor=self.cursor, RISet=fd.RISet) + + if species == 'rat': + hddnWebGestalt['org'] = 'Rattus norvegicus' + elif species == 'human': + hddnWebGestalt['org'] = 'Homo sapiens' + elif species == 'mouse': + hddnWebGestalt['org'] = 'Mus musculus' + else: + hddnWebGestalt['org'] = '' + + hddnWebGestalt['org'] = hddnWebGestalt['org'].replace(' ','_') + + for key in hddnWebGestalt.keys(): + formWebGestalt.append(HT.Input(name=key, value=hddnWebGestalt[key], type='hidden')) + + TD_LR.append(formWebGestalt) + + TD_LR.append(HT.Paragraph("Your selection of %d traits is being submitted to GO Tree" % len(self.theseTraits), Class="cr fs16 fwb", align="Center")) + + # updated by NL, moved mixedChipError() to webqtl.js and change it to mixedChipError(methodName) + # moved unknownChipError() to webqtl.js and change it to unknownChipError(chipName) + if chipName == 'mixed': + methodName = "WebGestalt" + self.dict['js1'] = """ + <SCRIPT LANGUAGE="JavaScript"> + setTimeout("mixedChipError('%s')" ,1000); + </SCRIPT> + """ % methodName + elif chipName.find('_NA') > 0: + chipName = chipName[0:-3] + self.dict['js1'] = """ + <SCRIPT LANGUAGE="JavaScript"> + setTimeout("unknownChipError('%s')",1000); + </SCRIPT> + """ % chipName + else: + self.dict['js1'] = """ + <SCRIPT LANGUAGE="JavaScript"> + setTimeout('document.WebGestalt.submit()',1000); + </SCRIPT> + """ + + self.dict['body'] = TD_LR + + def testChip(self, fd): + chipName0 = "" + + for item in self.theseTraits: + self.cursor.execute('SELECT GeneChip.GO_tree_value FROM GeneChip, ProbeFreeze, ProbeSetFreeze WHERE GeneChip.Id = ProbeFreeze.ChipId and ProbeSetFreeze.ProbeFreezeId = ProbeFreeze.Id and ProbeSetFreeze.Name = "%s"' % item.db.name) + result = self.cursor.fetchone() + if result: + chipName = result[0] + if chipName: + if chipName != chipName0: + if chipName0: + return 'mixed' + else: + chipName0 = chipName + else: + pass + else: + self.cursor.execute('SELECT GeneChip.Name FROM GeneChip, ProbeFreeze, ProbeSetFreeze WHERE GeneChip.Id = ProbeFreeze.ChipId and ProbeSetFreeze.ProbeFreezeId = ProbeFreeze.Id and ProbeSetFreeze.Name = "%s"' % item.db.name) + result = self.cursor.fetchone() + chipName = '%s_NA' % result[0] + return chipName + else: + self.cursor.execute('SELECT GeneChip.Name FROM GeneChip, ProbeFreeze, ProbeSetFreeze WHERE GeneChip.Id = ProbeFreeze.ChipId and ProbeSetFreeze.ProbeFreezeId = ProbeFreeze.Id and ProbeSetFreeze.Name = "%s"' % item.db.name) + result = self.cursor.fetchone() + chipName = '%s_NA' % result[0] + return chipName + return chipName + + def genGeneIdList(self, fd): + arrayList = [] + geneList = [] + for item in self.theseTraits: + arrayList.append(item.name) + item.retrieveInfo() + geneList.append(str(item.geneid)) + return arrayList, geneList + |