# 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