aboutsummaryrefslogtreecommitdiff
path: root/web/webqtl/heatmap/heatmapPage.py
diff options
context:
space:
mode:
Diffstat (limited to 'web/webqtl/heatmap/heatmapPage.py')
-rwxr-xr-xweb/webqtl/heatmap/heatmapPage.py116
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)