Mercurial > repos > jetbrains > span
diff span_wrapper.py @ 2:5b99943c4627 draft
Span version https://github.com/JetBrains-Research/galaxy-applications/commit/cbbba255d66a4775cc35caf5cb85665396fdcd2a
author | jetbrains |
---|---|
date | Sun, 18 Nov 2018 08:20:27 -0500 |
parents | 1f0c4f0a9c3b |
children | 4130e95bd6c8 |
line wrap: on
line diff
--- a/span_wrapper.py Thu Nov 15 11:30:01 2018 -0500 +++ b/span_wrapper.py Sun Nov 18 08:20:27 2018 -0500 @@ -1,67 +1,135 @@ #!/usr/bin/env python import os +import shutil +import subprocess import sys -import subprocess + argv = sys.argv[1:] print 'Arguments {0}'.format(argv) SPAN_JAR = os.environ.get("SPAN_JAR") -# span.jar from Docker container -# SPAN_JAR = "/root/span.jar" print 'Using SPAN Peak Analyzer distributive file {0}'.format(SPAN_JAR) -# #if $action.action_selector -# #if str($control.control_selector) == "with_control" -# span_wrapper.py model with_control "${genome}" "${treatment_file}" "${bin}" "${action.model_file}" "${control.control_file}" +# #if str($action.action_selector) == "model" +# #if $control.control_selector +# span_wrapper.py model with_control +# "${genome_identifier}" "${genome_file}" +# "${treatment_identifier}" "${treatment_file}" +# "${bin}" "${action.model_file}" +# "${control_identifier}" "${control.control_file}" # #else -# span_wrapper.py model without_control "${genome}" "${treatment_file}" "${bin}" "${action.model_file}" +# span_wrapper.py model without_control +# "${genome_identifier}" "${genome_file}" +# "${treatment_identifier}" "${treatment_file}" +# "${bin}" "${action.model_file}" # #end if # #else # #if $control.control_selector -# span_wrapper.py peaks with_control "${genome}" "${treatment_file}" "${bin}" "${action.model_file}" "${control.control_file}" "${fdr}" "${gap}" "${action.peaks_file}" +# span_wrapper.py peaks with_control +# "${genome_identifier}" "${genome_file}" +# "${treatment_identifier}" "${treatment_file}" +# "${bin}" "${action.model_file}" +# "${control_identifier}" "${control.control_file}" +# "${fdr}" "${gap}" "${action.peaks_file}" # #else -# span_wrapper.py peaks without_control "${genome}" "${treatment_file}" "${bin}" "${action.model_file}" "${fdr}" "${gap}" "${action.peaks_file}" +# span_wrapper.py peaks with_control +# "${genome_identifier}" "${genome_file}" +# "${treatment_identifier}" "${treatment_file}" +# "${bin}" "${action.model_file}" +# "${fdr}" "${gap}" "${action.peaks_file}" # #end if # #end if -# See http://artyomovlab.wustl.edu/aging/span.html for command line options +# See https://research.jetbrains.org/groups/biolabs/tools/span-peak-analyzer for command line options action = argv[0] control = argv[1] + +working_dir = os.path.abspath('.') +print 'WORKING DIRECTORY: {}'.format(working_dir) + + +def link(name, f): + """ SPAN uses file extension to detect input type, so original names are necessary, instead of Galaxy .dat files""" + result = os.path.join(working_dir, name) + os.symlink(f, result) + return result + + if action == 'model': if control == 'with_control': - (chrom_sizes, treatment_file, bin, model_file, control_file) = argv[2:] + (chrom_sizes, chrom_sizes_file, + treatment, treatment_file, + bin, model_file, + control, control_file) = argv[2:] cmd = 'java -jar {} analyze --chrom.sizes {} --treatment {} --control {} --bin {}'.format( - SPAN_JAR, chrom_sizes, treatment_file, control_file, bin + SPAN_JAR, + link(chrom_sizes, chrom_sizes_file), + link(treatment, treatment_file), + link(control, control_file), + bin ) - print "MODEL FILE" + model_file elif control == 'without_control': - (chrom_sizes, treatment_file, bin, model_file) = argv[2:] + (chrom_sizes, chrom_sizes_file, + treatment, treatment_file, + bin, model_file) = argv[2:] cmd = 'java -jar {} analyze --chrom.sizes {} --treatment {} --bin {}'.format( - SPAN_JAR, argv[2], argv[3], argv[4] + SPAN_JAR, + link(chrom_sizes, chrom_sizes_file), + link(treatment, treatment_file), + bin ) - print "MODEL FILE" + model_file else: raise Exception("Unknown control option {}".format(control)) elif action == "peaks": if control == 'with_control': - (chrom_sizes, treatment_file, bin, model_file, control_file, fdr, gap, peaks_file) = argv[2:] + (chrom_sizes, chrom_sizes_file, + treatment, treatment_file, + bin, model_file, + control, control_file, + fdr, gap, peaks_file) = argv[2:] cmd = 'java -jar {} analyze --chrom.sizes {} --treatment {} --control {} --bin {} --fdr {} --gap {} --peaks {}'.format( - SPAN_JAR, chrom_sizes, treatment_file, control_file, bin, fdr, gap, peaks_file + SPAN_JAR, + link(chrom_sizes, chrom_sizes_file), + link(treatment, treatment_file), + link(control, control_file), + bin, fdr, gap, + os.path.join(working_dir, peaks_file) ) - print "MODEL FILE" + model_file elif control == 'without_control': - (chrom_sizes, treatment_file, bin, model_file, fdr, gap, peaks_file) = argv[2:] + (chrom_sizes, chrom_sizes_file, + treatment, treatment_file, + bin, model_file, + fdr, gap, peaks_file) = argv[2:] cmd = 'java -jar {} analyze --chrom.sizes {} --treatment {} --bin {} --fdr {} --gap {} --peaks {}'.format( - SPAN_JAR, chrom_sizes, treatment_file, bin, fdr, gap, peaks_file + SPAN_JAR, + link(chrom_sizes, chrom_sizes_file), + link(treatment, treatment_file), + bin, fdr, gap, + os.path.join(working_dir, peaks_file) ) - print "MODEL FILE" + model_file else: raise Exception("Unknown control option {}".format(control)) else: raise Exception("Unknown action command {}".format(action)) -print 'Launching SPAN: {0}'.format(cmd) +print 'Launching SPAN: {}'.format(cmd) +print 'Model file: {}'.format(model_file) +try: + print 'Peaks file: {}'.format(peaks_file) +except NameError: + pass + subprocess.check_call(cmd, cwd=None, shell=True) + +# Move model to the the working dir with given name +fit_dir = os.path.join(working_dir, 'fit') +model_original = os.path.join(fit_dir, os.listdir(fit_dir)[0]) +shutil.move(model_original, os.path.join(working_dir, model_file)) + +# Move log file +logs_dir = os.path.join(working_dir, 'logs') +log_original = os.path.join(logs_dir, os.listdir(logs_dir)[0]) +shutil.move(log_original, os.path.join(working_dir, "span.log"))