0
|
1 #!/usr/bin/env python
|
|
2 import sys, subprocess, glob
|
|
3 import os, re, shutil, optparse
|
|
4 from os.path import basename
|
|
5
|
|
6 """
|
|
7 WARNING :
|
|
8
|
|
9 Mapsembler2.py needs mapsembler2_exe binaries in your $PATH
|
|
10
|
|
11 Mapsember2 is available after compiling sources :
|
|
12
|
|
13 http://www.irisa.fr/symbiose/people/ppeterlongo/mapsembler2_2.2.3.zip
|
|
14
|
|
15 or with the galaxy_mapsembler2 package in the GenOuest toolshed
|
|
16
|
|
17
|
|
18 """
|
|
19
|
|
20 def __main__():
|
|
21
|
|
22 # arguments recuperation
|
|
23 parser = optparse.OptionParser()
|
|
24 parser.add_option("-s", dest="input_starters")
|
|
25 parser.add_option("-r", dest="input_files")
|
|
26 parser.add_option("-t", dest="output_extension")
|
|
27 parser.add_option("-k", dest="kmer")
|
|
28 parser.add_option("-c", dest="coverage")
|
|
29 parser.add_option("-d", dest="substitutions")
|
|
30 parser.add_option("-g", dest="genome_size")
|
|
31 parser.add_option("-f", dest="process_search")
|
|
32 parser.add_option("-x", dest="max_length")
|
|
33 parser.add_option("-y", dest="max_depth")
|
|
34 parser.add_option("--output")
|
|
35 parser.add_option("-i", dest="index_files")
|
|
36
|
|
37 (options, args) = parser.parse_args()
|
|
38
|
|
39 # import tools
|
|
40 os.symlink(os.environ['TOOLS'], os.getcwd()+'/tools')
|
|
41
|
|
42 # execute mapsembler
|
|
43 cmd_line=[]
|
|
44 cmd_line.append("run_mapsembler2_pipeline.sh")
|
|
45
|
|
46 # change starter extension
|
|
47 cmd_line.extend(["-s", options.input_starters])
|
|
48
|
|
49 #inputs
|
|
50 cmd_line.append("-r")
|
|
51
|
|
52 #cmd_line.append(inputs)
|
|
53 cmd_line.append(' '.join(options.input_files.split(",")))
|
|
54
|
|
55 # add parameters into the command line
|
|
56 cmd_line.extend(["-t", options.output_extension, "-k", options.kmer, "-c", options.coverage, "-d", options.substitutions, "-g", options.genome_size, "-f", options.process_search, "-x", options.max_length, "-y", options.max_depth])
|
|
57
|
|
58 # open the output log file
|
|
59 log = open(options.output, "w")
|
|
60 log.write("[COMMAND LINE] "+' '.join(cmd_line))
|
|
61
|
|
62 process=subprocess.Popen(cmd_line,
|
|
63 stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
|
64
|
|
65 stdoutput, stderror = process.communicate()
|
|
66
|
|
67 # results recuperation
|
|
68 log.write(stdoutput)
|
|
69 log.write(stderror)
|
|
70
|
|
71 # close log file
|
|
72 log.close()
|
|
73
|
|
74 # move results files inside the job_outputs dir
|
|
75 os.mkdir("job_outputs")
|
|
76 result_files = glob.glob("res_*")
|
|
77 for file in result_files:
|
|
78 shutil.move(file, "job_outputs/")
|
|
79
|
|
80
|
|
81 # move index files
|
|
82 if options.index_files == "true":
|
|
83 index_files = glob.glob("index_*")
|
|
84 for index in index_files:
|
|
85 shutil.move(index, "job_outputs/")
|
|
86
|
|
87 # move json result into gjson
|
|
88 json_files = glob.glob("job_outputs/*.json")
|
|
89 for json in json_files:
|
|
90 shutil.move(json, json.replace(".json", ".gjson"))
|
|
91
|
|
92
|
|
93 if __name__ == "__main__": __main__()
|
|
94
|