diff options
Diffstat (limited to 'web/webqtl/collection/AddUserInputToSelectionPage.py')
-rwxr-xr-x | web/webqtl/collection/AddUserInputToSelectionPage.py | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/web/webqtl/collection/AddUserInputToSelectionPage.py b/web/webqtl/collection/AddUserInputToSelectionPage.py new file mode 100755 index 00000000..2c69a047 --- /dev/null +++ b/web/webqtl/collection/AddUserInputToSelectionPage.py @@ -0,0 +1,97 @@ +# 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 + +#AddUserInputToSelectionPage.py + +import time + +from base import webqtlConfig +from base.templatePage import templatePage +from utility import webqtlUtil +from AddToSelectionPage import AddToSelectionPage + +######################################### +# Add UserInput to Selection Page +######################################### +class AddUserInputToSelectionPage(AddToSelectionPage): + + def __init__(self, fd): + + templatePage.__init__(self, fd) + + if not self.openMysql(): + return + + if not fd.genotype: + fd.readData(incf1 = 1) + + self.strainlist = [] + self.vals = [] + for i, strain in enumerate(fd.f1list + fd.strainlist): + if fd.allTraitData.has_key(strain) and fd.allTraitData[strain].val != None: + self.strainlist.append(strain) + self.vals.append([fd.allTraitData[strain].val, fd.allTraitData[strain].var]) + + if len(self.strainlist) > webqtlConfig.KMININFORMATIVE: + pass + else: + templatePage.__init__(self, fd) + heading = 'Add to Collection' + detail = ['The number of informative strains in your trait is less than %d, this trait can not be added to the selection' % webqtlConfig.KMININFORMATIVE] + self.error(heading=heading,detail=detail) + return + + self.cursor.execute('delete Temp, TempData from Temp, TempData where Temp.DataId = TempData.Id and UNIX_TIMESTAMP()-UNIX_TIMESTAMP(CreateTime)>%d;' % webqtlConfig.MAXLIFE) + ct0 = time.localtime(time.time()) + ct = time.strftime("%B/%d %H:%M:%S",ct0) + if not fd.identification: + fd.identification = "Unnamed Trait" + user_ip = fd.remote_ip + newDescription = '%s entered at %s from IP %s' % (fd.identification,ct,user_ip) + newProbeSetID = webqtlUtil.genRandStr("USER_Tmp_") + self.cursor.execute('SelecT max(id) from TempData') + try: + DataId = self.cursor.fetchall()[0][0] + 1 + except: + DataId = 1 + self.cursor.execute('SelecT Id from InbredSet where Name = "%s"' % fd.RISet) + InbredSetId = self.cursor.fetchall()[0][0] + + self.cursor.execute('insert into Temp(Name,description, createtime,DataId,InbredSetId,IP) values(%s,%s,Now(),%s,%s,%s)' ,(newProbeSetID, newDescription, DataId,InbredSetId,user_ip)) + + k = 0 + for Strain in self.strainlist: + self.cursor.execute('SelecT Strain.Id from Strain,StrainXRef where Strain.Name = "%s" and Strain.Id = StrainXRef.StrainId and StrainXRef.InbredSetId=%d' % (Strain, InbredSetId)) + StrainId = self.cursor.fetchall()[0][0] + self.cursor.execute('insert into TempData(Id, StrainId, value, SE) values(%s,%s,%s,%s)' , (DataId, StrainId, self.vals[k][0], self.vals[k][1])) + k += 1 + + self.searchResult = ['Temp::%s' % newProbeSetID] + + if self.genSelection(fd=fd): + self.writeHTML(fd) + + |