diff options
Diffstat (limited to 'web/webqtl/externalResource/ODEPage.py')
-rwxr-xr-x | web/webqtl/externalResource/ODEPage.py | 143 |
1 files changed, 143 insertions, 0 deletions
diff --git a/web/webqtl/externalResource/ODEPage.py b/web/webqtl/externalResource/ODEPage.py new file mode 100755 index 00000000..f02fe5aa --- /dev/null +++ b/web/webqtl/externalResource/ODEPage.py @@ -0,0 +1,143 @@ +# 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 + +#ODEPage.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 + +class ODEPage(templatePage): + + def __init__(self,fd): + + templatePage.__init__(self, fd) + + if not self.openMysql(): + return + + #XZ, self.theseTraits holds the "ProbeSet" traits. + self.theseTraits = [] + + self.searchResult = fd.formdata.getvalue('searchResult', []) + if type("1") == type(self.searchResult): + self.searchResult = [self.searchResult] + + 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: + heading = 'ODE' + detail = ['You need to select at least one microarray trait to submit.'] + self.error(heading=heading,detail=detail) + return + + chipName = self.getChipName(fd) + species = webqtlDatabaseFunction.retrieveSpecies(cursor=self.cursor, RISet=fd.RISet) + + if species == 'rat': + species = 'Rattus norvegicus' + elif species == 'human': + species = 'Homo sapiens' + elif species == 'mouse': + species = 'Mus musculus' + else: + species = '' + + probesetNameList = self.getProbesetNameList(fd) + + TD_LR = HT.TD(height=200,width="100%",bgColor='#eeeeee',valign="middle") + + formODE = HT.Form(cgi="http://ontologicaldiscovery.org/index.php?action=manage&cmd=importGeneSet", enctype='multipart/form-data', name='formODE', submit = HT.Input(type='hidden')) + + hddnODE = {} + + hddnODE['client'] = 'genenetwork' + hddnODE['species'] = species + hddnODE['idtype'] = chipName + hddnODE['list'] = string.join(probesetNameList, ",") + + for key in hddnODE.keys(): + formODE.append(HT.Input(name=key, value=hddnODE[key], type='hidden')) + + TD_LR.append(formODE) + + TD_LR.append(HT.Paragraph("Your selections of %d traits is being exported to the ODE" % len(self.theseTraits), Class="cr fs16 fwb", align="Center")) + # updated by NL, moved mixedChipError() to webqtl.js and change it to mixedChipError(methodName) + if chipName == 'mixed': + methodName = "ODE" + self.dict['js1'] = """ + <SCRIPT LANGUAGE="JavaScript"> + setTimeout("mixedChipError('%s')",1000); + </SCRIPT> + """ % methodName + else: + self.dict['js1'] = """ + <SCRIPT LANGUAGE="JavaScript"> + setTimeout('document.formODE.submit()',1000); + </SCRIPT> + """ + + self.dict['body'] = TD_LR + + + + def getProbesetNameList(self, fd): + probesetNameList = [] + + for item in self.theseTraits: + probesetNameList.append(item.name) + + return probesetNameList + + + + def getChipName(self, fd): + chipName0 = "" + for item in self.theseTraits: + 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) + chipName = self.cursor.fetchone()[0] + if chipName != chipName0: + if chipName0: + return 'mixed' + else: + chipName0 = chipName + else: + pass + + return chipName |