diff options
Diffstat (limited to 'web/webqtl/collection/BatchSubmitSelectionPage.py')
-rwxr-xr-x | web/webqtl/collection/BatchSubmitSelectionPage.py | 225 |
1 files changed, 0 insertions, 225 deletions
diff --git a/web/webqtl/collection/BatchSubmitSelectionPage.py b/web/webqtl/collection/BatchSubmitSelectionPage.py deleted file mode 100755 index 743606b2..00000000 --- a/web/webqtl/collection/BatchSubmitSelectionPage.py +++ /dev/null @@ -1,225 +0,0 @@ -# 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 - -#BatchSubmitSelectionPage.py - -import string -import time - -from base import webqtlConfig -from base.templatePage import templatePage -from utility import webqtlUtil -from AddToSelectionPage import AddToSelectionPage - - -######################################### -# batch submission result Page -######################################### -class BatchSubmitSelectionPage(AddToSelectionPage): - - def __init__(self, fd): - - templatePage.__init__(self, fd) - - if not self.openMysql(): - return - if not fd.genotype: - fd.readGenotype() - - heading = 'Batch Submission' - - self.batchDataFile = fd.formdata.getvalue('batchdatafile') - if not self.batchDataFile: - templatePage.__init__(self, fd) - detail = ['The file you choose to import from doesn\'t exist.'] - self.error(heading=heading,detail=detail) - return - self.batchDataFile = string.replace(self.batchDataFile, '\r', '\n') - self.batchDataFile = string.replace(self.batchDataFile, '\n\n', '\n') - self.batchDataFile = string.split(self.batchDataFile, '\n') - self.batchDataFile = map(string.strip, self.batchDataFile) - - traitNames, strainNames, traitValues, SE, NStrain = self.parseDataFile() - strainIds = [] - - #print 'Content-type: text/html\n' - #print len(traitNames), len(strainNames) , len(strainIds), len(traitValues) , len(SE), "<BR><BR>", len(NStrain) - #return - - try: - - if not traitNames or not strainNames or not traitValues or len(traitNames) != len(traitValues) or len(traitNames) != len(SE) or len(traitNames) != len(NStrain): - raise 'ValueError' - for item in traitValues: - if len(strainNames) != len(item): - raise 'ValueError' - for item in SE: - if len(strainNames) != len(item): - raise 'ValueError' - for item in NStrain: - if len(strainNames) != len(item): - raise 'ValueError' - for item in strainNames: - self.cursor.execute('''Select - Strain.Id - from Strain, StrainXRef,InbredSet - where - Strain.Name = "%s" AND - StrainXRef.StrainId = Strain.Id AND - StrainXRef.InbredSetId = InbredSet.Id AND - InbredSet.Name = "%s" - ''' % (item, fd.RISet)) - strainId = self.cursor.fetchone()[0] - strainIds.append(strainId) - except: - templatePage.__init__(self, fd) - detail = ['The format of the file is incorrect, or it contains unknown strains.'] - self.error(heading=heading,detail=detail) - return - - self.searchResult = [] - self.addToTable(traitNames, strainNames,strainIds, traitValues,SE, NStrain, fd) - - if self.genSelection(fd=fd): - self.writeHTML(fd) - - def parseDataFile(self): - rchSartPos = 0 - header = [] - traits = [] - data = [] - se = [] - nstrain = [] - strains = [] - - if 1: - for line in self.batchDataFile: - line = line.strip() - if line == '' or line[0] == '#': - continue - - columns = string.split(line, '\t') - columns = map(string.strip, columns) - - if rchSartPos == 'column': - strains.append(columns[0]) - tdata = map(webqtlUtil.StringAsFloat,columns[1:]) - for j, item in enumerate(tdata): - if posIdx[j][0] == 'data': - data[posIdx[j][1]].append(item) - elif posIdx[j][0] == 'n': - if item != None: - nstrain[posIdx[j][1]].append(int(item)) - else: - nstrain[posIdx[j][1]].append(item) - else: - se[posIdx[j][1]].append(item) - - elif rchSartPos == 'row': - if columns[0].lower() == 'se': - se.append(map(webqtlUtil.StringAsFloat,columns[1:])) - elif columns[0].lower() == 'n': - nstrain.append(map(webqtlUtil.IntAsFloat,columns[1:])) - else: - while (len(data) > len(se)): - se.append([None] * len(data[-1])) - while (len(data) > len(nstrain)): - nstrain.append([None] * len(data[-1])) - header.append(columns[0]) - data.append(map(webqtlUtil.StringAsFloat,columns[1:])) - elif columns[0] == '@format=column': - rchSartPos = 'column' - posIdx = [] - j = 0 - for item in columns[1:]: - #assign column type - if string.lower(item) == 'se': - posIdx.append(('se',j-1)) - elif string.lower(item) == 'n': - posIdx.append(('n',j-1)) - else: - header.append(item) - posIdx.append(('data',j)) - j += 1 - - for i in range(len(header)): - data.append([]) - se.append([]) - nstrain.append([]) - elif columns[0] == '@format=row': - rchSartPos = 'row' - strains = columns[1:] - else: - pass - #modify - for i in range(len(se)): - if se[i] == []: - se[i] = [None] * len(data[-1]) - for i in range(len(nstrain)): - if nstrain[i] == []: - nstrain[i] = [None] * len(data[-1]) - if len(data) > len(se): - se.append([None] * len(data[-1])) - if len(data) > len(nstrain): - nstrain.append([None] * len(data[-1])) - - return header,strains,data,se, nstrain - else: - return [],[],[],[], [] - - - #XZ, add items to self.searchResult - def addToTable(self, traitNames, strainNames,strainIds, traitValues, SE, NStrain, fd): - self.cursor.execute('delete Temp, TempData from Temp, TempData where Temp.DataId = TempData.Id and UNIX_TIMESTAMP()-UNIX_TIMESTAMP(CreateTime)>%d;' % webqtlConfig.MAXLIFE) - - i = 0 - for trait in traitNames: - ct0 = time.localtime(time.time()) - ct = time.strftime("%B/%d %H:%M:%S",ct0) - if trait == '': - trait = "Unnamed Trait" - user_ip = fd.remote_ip - newDescription = '%s entered at %s from IP %s' % (trait,ct,user_ip) - newProbeSetID = webqtlUtil.genRandStr('Usr_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)) - - for k in range(len(traitValues[i])): - if traitValues[i][k] != None: - self.cursor.execute('insert into TempData(Id, StrainId, value, SE, NStrain) values(%s, %s, %s, %s, %s)' , (DataId, strainIds[k], traitValues[i][k],SE[i][k],NStrain[i][k])) - - self.searchResult.append('Temp::%s' % newProbeSetID) - i += 1 - |