Mercurial > repos > jetbrains > span
view 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 source
#!/usr/bin/env python import os import shutil import subprocess import sys argv = sys.argv[1:] print 'Arguments {0}'.format(argv) SPAN_JAR = os.environ.get("SPAN_JAR") print 'Using SPAN Peak Analyzer distributive file {0}'.format(SPAN_JAR) # #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_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_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 with_control # "${genome_identifier}" "${genome_file}" # "${treatment_identifier}" "${treatment_file}" # "${bin}" "${action.model_file}" # "${fdr}" "${gap}" "${action.peaks_file}" # #end if # #end if # 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, 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, link(chrom_sizes, chrom_sizes_file), link(treatment, treatment_file), link(control, control_file), bin ) elif control == 'without_control': (chrom_sizes, chrom_sizes_file, treatment, treatment_file, bin, model_file) = argv[2:] cmd = 'java -jar {} analyze --chrom.sizes {} --treatment {} --bin {}'.format( SPAN_JAR, link(chrom_sizes, chrom_sizes_file), link(treatment, treatment_file), bin ) else: raise Exception("Unknown control option {}".format(control)) elif action == "peaks": if control == 'with_control': (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, link(chrom_sizes, chrom_sizes_file), link(treatment, treatment_file), link(control, control_file), bin, fdr, gap, os.path.join(working_dir, peaks_file) ) elif control == 'without_control': (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, link(chrom_sizes, chrom_sizes_file), link(treatment, treatment_file), bin, fdr, gap, os.path.join(working_dir, peaks_file) ) else: raise Exception("Unknown control option {}".format(control)) else: raise Exception("Unknown action command {}".format(action)) 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"))