diff save_z_15/save_z7_15nodes.py @ 0:ae6f616e7637 draft

Uploaded
author nanettec
date Fri, 18 Mar 2016 05:49:55 -0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/save_z_15/save_z7_15nodes.py	Fri Mar 18 05:49:55 2016 -0400
@@ -0,0 +1,137 @@
+"""
+@summary: Save partial z file
+@version 7
+
+"""
+# MAPPER --> save z file
+
+# Input: qtlcart.inp
+#        qtlcart.map
+#      	 parameters.txt
+
+# Output: z_partial.txt
+
+import optparse, sys
+import tempfile
+import re
+
+def stop_err( msg ):
+	sys.stderr.write( "%s\n" % msg )
+	sys.exit()
+    
+def __main__():
+	parser = optparse.OptionParser()
+	parser.add_option("-i", "--input1", default=None, dest="input1", 
+			  help="qtlcart.inp file")
+	parser.add_option("-j", "--input2", default=None, dest="input2", 
+			  help="qtlcart.map file")
+	parser.add_option("-k", "--input3", default=None, dest="input3", 
+			  help="parameters.txt file")
+
+	parser.add_option("-p", "--output1", default=None, dest="output1", 
+			  help="qtlcart_partial.z file")
+	(options, args) = parser.parse_args()
+	
+	try:
+	    open(options.input1, "r").close()
+	except TypeError, e:
+	    stop_err("You need to supply the qtlcart.inp file:\n" + str(e))
+	except IOError, e:
+	    stop_err("Can not open the qtlcart.inp file:\n" + str(e))
+    
+	try:
+	    open(options.input2, "r").close()
+	except TypeError, e:
+	    stop_err("You need to supply the qtlcart.map file:\n" + str(e))
+	except IOError, e:
+	    stop_err("Can not open the qtlcart.map file:\n" + str(e))
+
+	try:
+	    open(options.input3, "r").close()
+	except TypeError, e:
+	    stop_err("You need to supply the parameters.txt file:\n" + str(e))
+	except IOError, e:
+	    stop_err("Can not open the parameters.txt file:\n" + str(e))
+	
+	######################################################################
+	# submit.py
+	######################################################################
+	
+	import subprocess
+	import os
+	
+	# Create temp direcotry
+	tempdir = tempfile.mkdtemp()
+	#print tempdir
+	
+	s = "cp %s %s/parameters.txt" %(options.input3, tempdir)
+	subprocess.call(s, shell=True)
+	paramters_file = open(tempdir+"/parameters.txt", "r")
+	parvalues = []
+	for line in paramters_file:
+		l = line.strip().split("\t")
+		if l[0] == "SRmodel":
+			SRmodel = l[1]
+		if l[0] == "Zmodel":
+			Zmodel = l[1]
+		if l[0] == "threshold":
+			threshold = l[1]
+		if l[0] == "walking_speed":
+			walking_speed = l[1]
+		if l[0] == "window_size":
+			window_size = l[1]
+		if l[0] == "minimum_cM_between_QTL":
+			minimum_cM_between_QTL = l[1]
+	paramters_file.close()		
+
+	# copy INPUT file to the temp directory
+	s = "cp %s %s/qtlcart.inp" %(options.input1, tempdir)
+	subprocess.call(s, shell=True)
+	s = "cp %s %s/qtlcart.map" %(options.input2, tempdir)
+	subprocess.call(s, shell=True)
+	
+        f=open(tempdir+"/qtlcart.inp", "r")
+	ln=f.readlines()
+        f.close()
+        count = 0
+	
+        if ln[0] == "NA":
+		f1=open(tempdir+"/QTLs_total_parsed_LOD.txt", "w")
+		f1.write("")
+		f1.close()
+		os.system("mv %s/QTLs_total_parsed_LOD.txt %s" %(tempdir,options.output1))
+		#os.system("mv %s/qtlcart.rc %s" %(tempdir,options.output2))
+        else:
+		count += 1
+		if count == 1:
+			instruction = "/cluster1/bin/Rcross -i %s/qtlcart.inp -o %s/qtlcart.cro -A -V" %(tempdir, tempdir)
+			os.system(instruction)
+			
+			instruction = "/cluster1/bin/SRmapqtl -i %s/qtlcart.cro -e %s/SRqtlcart.log -o %s/qtlcart.sr -m %s/qtlcart.map -M %s -t 9999999999 -A -V" %(tempdir, tempdir, tempdir, tempdir, str(SRmodel))
+			os.system(instruction)        
+			
+			instruction = "/cluster1/bin/Zmapqtl -i %s/qtlcart.cro -o %s/qtlcart.z -m %s/qtlcart.map -S %s/qtlcart.sr -M %s -d %s -w %s -t 9999999999 -A -V" %(tempdir, tempdir, tempdir, tempdir, str(Zmodel), str(walking_speed), str(window_size))
+			os.system(instruction)
+		
+		#####################
+		# Save partial z file
+		#####################
+		
+		zfile=open(tempdir+"/qtlcart_partial.z", "w")
+		f=open(tempdir+"/qtlcart.z", "r")
+		done = "no"
+		for l in f:
+		    if (done != "yes") and (not l.startswith("-e")):
+			    zfile.write(l.strip()+"\n")
+		    else:
+			    done = "yes"
+		f.close()
+		zfile.write("-e\n")
+		zfile.close()
+		
+		os.system("mv %s/qtlcart_partial.z %s" %(tempdir,options.output1))
+		
+if __name__=="__main__": 
+    __main__()
+
+