about summary refs log tree commit diff
path: root/web/webqtl/collection/AddUserInputToSelectionPage.py
diff options
context:
space:
mode:
Diffstat (limited to 'web/webqtl/collection/AddUserInputToSelectionPage.py')
-rwxr-xr-xweb/webqtl/collection/AddUserInputToSelectionPage.py97
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)
+
+