diff options
Diffstat (limited to 'web/webqtl/heatmap/heatmapPage.py')
-rwxr-xr-x | web/webqtl/heatmap/heatmapPage.py | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/web/webqtl/heatmap/heatmapPage.py b/web/webqtl/heatmap/heatmapPage.py new file mode 100755 index 00000000..b407b0c8 --- /dev/null +++ b/web/webqtl/heatmap/heatmapPage.py @@ -0,0 +1,116 @@ +# 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 os +import string +from htmlgen import HTMLgen2 as HT + +from base.templatePage import templatePage +from base import webqtlConfig +from heatmap.Heatmap import Heatmap + + +# XZ, 09/09/2008: After adding several traits to collection, click "QTL Heatmap" button, +# XZ, 09/09/2008: This class will generate what you see. +######################################### +# QTL heatmap Page +######################################### +class heatmapPage(templatePage): + + def __init__(self,fd): + + templatePage.__init__(self, fd) + + if not self.openMysql(): + return + if not fd.genotype: + fd.readGenotype() + + searchResult = fd.formdata.getvalue('searchResult') + if not searchResult: + heading = 'QTL Heatmap' + detail = ['You need to select at least two traits in order to generate QTL heatmap.'] + self.error(heading=heading,detail=detail) + return + if type("1") == type(searchResult): + searchResult = string.split(searchResult,'\t') + if searchResult: + if len(searchResult) > webqtlConfig.MAXCORR: + heading = 'QTL Heatmap' + detail = ['In order to display the QTL heat map properly, do not select more than %d traits for analysis.' % webqtlConfig.MAXCORR] + self.error(heading=heading,detail=detail) + return + else: + heading = 'QTL Heatmap' + detail = [HT.Font('Error : ',color='red'),HT.Font('Error occurs while retrieving data from database.',color='black')] + self.error(heading=heading,detail=detail) + return + self.dict['title'] = 'QTL heatmap' + NNN = len(searchResult) + if NNN == 0: + heading = "QTL Heatmap" + detail = ['No trait was selected for %s data set. No QTL heatmap was generated.' % fd.RISet] + self.error(heading=heading,detail=detail) + return + elif NNN < 2: + heading = 'QTL Heatmap' + detail = ['You need to select at least two traits in order to generate QTL heatmap.'] + self.error(heading=heading,detail=detail) + return + else: + colorScheme = fd.formdata.getvalue('colorScheme') + if not colorScheme: + colorScheme = '1' + heatmapObject = Heatmap(fd=fd, searchResult=searchResult, colorScheme=colorScheme, userPrivilege=self.privilege, userName=self.userName) + filename, areas, sessionfile = heatmapObject.getResult() + gifmap = HT.Map(name='traitMap') + for area in areas: + Areas = HT.Area(shape='rect', coords=area[0], href=area[1], title=area[2]) + gifmap.areas.append(Areas) + img2=HT.Image('/image/'+filename+'.png',border=0,usemap='#traitMap') + imgUrl = 'Right-click or control-click on the link to download this graph as a <a href="/image/%s.png" class="normalsize" target="_blank">PNG file</a>' % filename + form = HT.Form(cgi= os.path.join(webqtlConfig.CGIDIR, webqtlConfig.SCRIPTFILE), enctype='multipart/form-data', name='showDatabase', submit=HT.Input(type='hidden')) + hddn = {'FormID':'showDatabase','ProbeSetID':'_','database':fd.RISet+"Geno",'CellID':'_','RISet':fd.RISet,'searchResult':string.join(searchResult,'\t')} + if fd.incparentsf1: + hddn['incparentsf1']='ON' + for key in hddn.keys(): + form.append(HT.Input(name=key, value=hddn[key], type='hidden')) + heatmapButton = HT.Input(type='button' ,name='mintmap',value='Redraw QTL Heatmap', onClick="databaseFunc(this.form,'heatmap');",Class="button") + spects = {'0':'Single Spectrum','1':'Grey + Blue + Red','2':'Blue + Red'} + schemeMenu = HT.Select(name='colorScheme') + schemeMenu.append(('Single Spectrum',0)) + schemeMenu.append(('Grey + Blue + Red',1)) + schemeMenu.append(('Blue + Red',2)) + schemeMenu.selected.append(spects[colorScheme]) + clusterCheck= HT.Input(type='checkbox', Class='checkbox', name='clusterCheck',checked=0) + targetDescriptionCheck = HT.Input(type='checkbox', Class='checkbox', name='targetDescriptionCheck',checked=0) + form.append(gifmap,schemeMenu, heatmapButton, HT.P(), clusterCheck, ' Cluster traits ', targetDescriptionCheck, ' Add description', HT.P(),img2, HT.P(), imgUrl) + form.append(HT.Input(name='session', value=sessionfile, type='hidden')) + heatmapHelp = HT.Input(type='button' ,name='heatmapHelpButton',value='Info', onClick="openNewWin('/heatmap.html');",Class="button") + heatmapHeading = HT.Paragraph('QTL Heatmap ', heatmapHelp, Class="title") + TD_LR = HT.TD(colspan=2,height=200,width="100%",bgColor='#eeeeee') + TD_LR.append(heatmapHeading, HT.P(),HT.P(),HT.P(),HT.P(),HT.P(),form) + self.dict['body'] = str(TD_LR) |