diff options
Diffstat (limited to 'web/webqtl/showTrait/ShowBestTrait.py')
-rwxr-xr-x | web/webqtl/showTrait/ShowBestTrait.py | 195 |
1 files changed, 195 insertions, 0 deletions
diff --git a/web/webqtl/showTrait/ShowBestTrait.py b/web/webqtl/showTrait/ShowBestTrait.py new file mode 100755 index 00000000..9eb42923 --- /dev/null +++ b/web/webqtl/showTrait/ShowBestTrait.py @@ -0,0 +1,195 @@ +# 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 string + +#from base.templatePage import templatePage +#from basicStatistics.BasicStatisticsPage import BasicStatisticsPage +from htmlgen import HTMLgen2 as HT + +from base import webqtlConfig +from utility import webqtlUtil +from base.webqtlTrait import webqtlTrait +from base.templatePage import templatePage +from DataEditingPage import DataEditingPage + + +#class ShowBestTrait(BasicStatisticsPage, templatePage): + +class ShowBestTrait(DataEditingPage): + def __init__(self,fd): + + ########## geneName means symbol ########## + geneName = fd.formdata.getvalue('gene') + if geneName: + geneName = string.strip(geneName) + + refseq = fd.formdata.getvalue('refseq') + if refseq: + refseq = string.strip(refseq) + + genbankid = fd.formdata.getvalue('genbankid') + if genbankid: + genbankid = string.strip(genbankid) + + geneid = fd.formdata.getvalue('geneid') + if geneid: + geneid = string.strip(geneid) + + species = fd.formdata.getvalue('species') + tissue = fd.formdata.getvalue('tissue') + database = fd.formdata.getvalue('database') + + ########## searchAlias is just a singal, so it doesn't need be stripped ########## + searchAlias = fd.formdata.getvalue('searchAlias') + + if not self.openMysql(): + return + + if database: + if geneName: + if searchAlias: + self.cursor.execute(""" SELECT ProbeSetXRef.* + FROM + ProbeSet, ProbeSetXRef, DBList + WHERE + ProbeSetXRef.ProbeSetFreezeId = DBList.FreezeId AND + ProbeSetXRef.ProbeSetId = ProbeSet.Id AND + (DBList.Name=%s or DBList.Code=%s) AND + MATCH (ProbeSet.symbol, alias) AGAINST ("+%s" IN BOOLEAN MODE) + ORDER BY ProbeSetXRef.mean DESC + """ , (database, database, geneName)) + else: + self.cursor.execute(""" SELECT ProbeSetXRef.* + FROM + ProbeSet, ProbeSetXRef, DBList + WHERE + ProbeSetXRef.ProbeSetFreezeId = DBList.FreezeId AND + ProbeSetXRef.ProbeSetId = ProbeSet.Id AND + (DBList.Name=%s or DBList.Code=%s) AND + ProbeSet.symbol = %s + ORDER BY ProbeSetXRef.mean DESC + """ , (database, database, geneName)) + elif refseq: + self.cursor.execute(""" SELECT ProbeSetXRef.* + FROM + ProbeSet, ProbeSetXRef, DBList + WHERE + ProbeSetXRef.ProbeSetFreezeId = DBList.FreezeId AND + ProbeSetXRef.ProbeSetId = ProbeSet.Id AND + (DBList.Name=%s or DBList.Code=%s) AND + ProbeSet.RefSeq_TranscriptId = %s + ORDER BY ProbeSetXRef.mean DESC + """ , (database, database, refseq)) + elif genbankid: + self.cursor.execute(""" SELECT ProbeSetXRef.* + FROM + ProbeSet, ProbeSetXRef, DBList + WHERE + ProbeSetXRef.ProbeSetFreezeId = DBList.FreezeId AND + ProbeSetXRef.ProbeSetId = ProbeSet.Id AND + (DBList.Name=%s or DBList.Code=%s) AND + ProbeSet.GenbankId = %s + ORDER BY ProbeSetXRef.mean DESC + """ , (database, database, genbankid)) + elif geneid: + self.cursor.execute(""" SELECT ProbeSetXRef.* + FROM + ProbeSet, ProbeSetXRef, DBList + WHERE + ProbeSetXRef.ProbeSetFreezeId = DBList.FreezeId AND + ProbeSetXRef.ProbeSetId = ProbeSet.Id AND + (DBList.Name=%s or DBList.Code=%s) AND + ProbeSet.GeneId = %s + ORDER BY ProbeSetXRef.mean DESC + """ , (database, database, geneid)) + + Results = self.cursor.fetchone() + + + + ########## select the Data that match the selection(currently, only max mean available) ########## + if Results: + ProbeSetFreezeId = Results[0] + ProbeSetId = Results[1] + DataId = Results[2] + + self.cursor.execute(""" + select + InbredSet.Name + from + InbredSet, ProbeFreeze, ProbeSetFreeze + where + InbredSet.Id=ProbeFreeze.InbredSetId and + ProbeFreeze.Id=ProbeSetFreeze.ProbeFreezeId and + ProbeSetFreeze.Id=%s + """, ProbeSetFreezeId) + fd.RISet = self.cursor.fetchone()[0] + #fd.RISet = Results[0] + + self.cursor.execute("select Name, FullName from ProbeSetFreeze where Id=%s", ProbeSetFreezeId) + fd.database, fd.identification = self.cursor.fetchone() + + self.cursor.execute("select Name, symbol, description from ProbeSet where Id=%s", ProbeSetId) + fd.ProbeSetID, fd.symbol, fd.description = self.cursor.fetchone() + + fd.identification += ' : '+fd.ProbeSetID + fd.formdata['fullname'] = fd.database+'::'+fd.ProbeSetID + + #XZ, 03/03/2009: Xiaodong changed Data to ProbeSetData + self.cursor.execute("select Strain.Name, ProbeSetData.Value from Strain, ProbeSetData where Strain.Id=ProbeSetData.StrainId and ProbeSetData.Id=%s", DataId) + Results = self.cursor.fetchall() + + fd.allstrainlist = [] + for item in Results: + fd.formdata[item[0]] = item[1] + fd.allstrainlist.append(item[0]) + + #XZ, 03/12/2009: Xiaodong changed SE to ProbeSetSE + self.cursor.execute("select Strain.Name, ProbeSetSE.error from Strain, ProbeSetSE where Strain.Id = ProbeSetSE.StrainId and ProbeSetSE.DataId=%s", DataId) + Results = self.cursor.fetchall() + for item in Results: + fd.formdata['V'+item[0]] = item[1] + else: + fd.RISet = 'BXD' + fd.database = 'KI_2A_0405_Rz' + fd.ProbeSetID = '1367452_at' + else: + fd.RISet = 'BXD' + fd.database = 'KI_2A_0405_Rz' + fd.ProbeSetID = '1367452_at' + + + #BasicStatisticsPage.__init__(self, fd) + + + thisTrait = webqtlTrait(db=fd.database, name=fd.ProbeSetID, cursor=self.cursor) + thisTrait.retrieveInfo() + thisTrait.retrieveData() + DataEditingPage.__init__(self, fd, thisTrait) + self.dict['title'] = '%s: Display Trait' % fd.identification + + |