| 
0
 | 
     1 import sys, tempfile, subprocess, glob
 | 
| 
 | 
     2 import os, re, shutil
 | 
| 
 | 
     3 import optparse
 | 
| 
 | 
     4 from os.path import basename
 | 
| 
 | 
     5 
 | 
| 
 | 
     6 """
 | 
| 
 | 
     7 
 | 
| 
 | 
     8 Created by Cyril Monjeaud
 | 
| 
 | 
     9 Cyril.Monjeaud@irisa.fr
 | 
| 
 | 
    10 
 | 
| 
 | 
    11 WARNING :
 | 
| 
 | 
    12 
 | 
| 
 | 
    13 TakeABreak_wrapper.py needs:
 | 
| 
 | 
    14 
 | 
| 
 | 
    15 - dbgh5 & TakeABreak binaries in your $PATH
 | 
| 
 | 
    16 
 | 
| 
 | 
    17 All these files are available after compiling the sources of TakeABreak :
 | 
| 
 | 
    18 
 | 
| 
 | 
    19 http://colibread.inria.fr/files/2014/01/TakeABreak-1.1.0-Source.tar_.gz
 | 
| 
 | 
    20 
 | 
| 
 | 
    21 or with the package_takeabreak dependency in the toolshed
 | 
| 
 | 
    22 
 | 
| 
 | 
    23 """
 | 
| 
 | 
    24 
 | 
| 
 | 
    25 def __main__():
 | 
| 
 | 
    26 
 | 
| 
 | 
    27 	# create a special dir inside job working dir
 | 
| 
 | 
    28         tmp_dir = tempfile.mkdtemp()
 | 
| 
 | 
    29         os.chdir(tmp_dir)
 | 
| 
 | 
    30 
 | 
| 
 | 
    31         # retrieve arguments
 | 
| 
 | 
    32         parser = optparse.OptionParser()
 | 
| 
 | 
    33         parser.add_option("-i", dest="reads_files")
 | 
| 
 | 
    34         parser.add_option("-k", dest="kmer")
 | 
| 
 | 
    35         parser.add_option("-S", dest="kmersolid")
 | 
| 
 | 
    36 
 | 
| 
 | 
    37         parser.add_option("-g", dest="graph_file")
 | 
| 
 | 
    38         parser.add_option("-c", dest="complexity")
 | 
| 
 | 
    39         parser.add_option("-m", dest="maxsimprct")
 | 
| 
 | 
    40         parser.add_option("-r", dest="optimization")
 | 
| 
 | 
    41 
 | 
| 
 | 
    42         parser.add_option("--output_graph")
 | 
| 
 | 
    43         parser.add_option("--output_fasta")
 | 
| 
 | 
    44         parser.add_option("--output_log")
 | 
| 
 | 
    45 
 | 
| 
 | 
    46         (options, args) = parser.parse_args()
 | 
| 
 | 
    47 	
 | 
| 
 | 
    48 	cmd_line=[]
 | 
| 
 | 
    49 	if options.reads_files:
 | 
| 
 | 
    50 		# start the command line
 | 
| 
 | 
    51 		cmd_line.append("TakeABreak")
 | 
| 
 | 
    52 		cmd_line.extend(["-in",options.reads_files,"-kmer-size",options.kmer,"-abundance",options.kmersolid])
 | 
| 
 | 
    53 	else:
 | 
| 
 | 
    54 		# start the command line
 | 
| 
 | 
    55 		os.symlink(options.graph_file, "graph.h5")
 | 
| 
 | 
    56 		cmd_line.append("TakeABreak")
 | 
| 
 | 
    57 		cmd_line.extend(["-graph", "graph.h5"])
 | 
| 
 | 
    58 
 | 
| 
 | 
    59 	cmd_line.extend(["-out","galaxy","-lct",options.complexity,"-max-sim",options.maxsimprct,"-repeat",options.optimization])
 | 
| 
 | 
    60 
 | 
| 
 | 
    61 	# execute command line 
 | 
| 
 | 
    62 	p=subprocess.Popen(cmd_line,
 | 
| 
 | 
    63                    stdout=subprocess.PIPE,stderr=subprocess.PIPE)
 | 
| 
 | 
    64 
 | 
| 
 | 
    65 	stdoutput, stderror = p.communicate()
 | 
| 
 | 
    66 
 | 
| 
 | 
    67         # log file
 | 
| 
 | 
    68         logfile=open(options.output_log, "w")
 | 
| 
 | 
    69 	logfile.write("[COMMAND LINE]"+' '.join(cmd_line)+"\n\n")
 | 
| 
 | 
    70         logfile.write(stdoutput)
 | 
| 
 | 
    71 	logfile.write(stderror)
 | 
| 
 | 
    72 	logfile.close()
 | 
| 
 | 
    73 	
 | 
| 
 | 
    74 	if options.reads_files:
 | 
| 
 | 
    75 
 | 
| 
 | 
    76                 # create output h5
 | 
| 
 | 
    77 		shutil.copy("galaxy.h5", options.output_graph)
 | 
| 
 | 
    78 
 | 
| 
 | 
    79         # create output fasta
 | 
| 
 | 
    80 	shutil.copy("galaxy.fasta", options.output_fasta)
 | 
| 
 | 
    81 
 | 
| 
 | 
    82 if __name__ == "__main__": __main__()
 | 
| 
 | 
    83 
 |