Mercurial > repos > jetbrains > span
comparison 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 |
comparison
equal
deleted
inserted
replaced
1:dfb1e66235c5 | 2:5b99943c4627 |
---|---|
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 | 2 |
3 import os | 3 import os |
4 import shutil | |
5 import subprocess | |
4 import sys | 6 import sys |
5 import subprocess | 7 |
6 argv = sys.argv[1:] | 8 argv = sys.argv[1:] |
7 print 'Arguments {0}'.format(argv) | 9 print 'Arguments {0}'.format(argv) |
8 | 10 |
9 SPAN_JAR = os.environ.get("SPAN_JAR") | 11 SPAN_JAR = os.environ.get("SPAN_JAR") |
10 # span.jar from Docker container | |
11 # SPAN_JAR = "/root/span.jar" | |
12 print 'Using SPAN Peak Analyzer distributive file {0}'.format(SPAN_JAR) | 12 print 'Using SPAN Peak Analyzer distributive file {0}'.format(SPAN_JAR) |
13 | 13 |
14 # #if $action.action_selector | 14 # #if str($action.action_selector) == "model" |
15 # #if str($control.control_selector) == "with_control" | 15 # #if $control.control_selector |
16 # span_wrapper.py model with_control "${genome}" "${treatment_file}" "${bin}" "${action.model_file}" "${control.control_file}" | 16 # span_wrapper.py model with_control |
17 # "${genome_identifier}" "${genome_file}" | |
18 # "${treatment_identifier}" "${treatment_file}" | |
19 # "${bin}" "${action.model_file}" | |
20 # "${control_identifier}" "${control.control_file}" | |
17 # #else | 21 # #else |
18 # span_wrapper.py model without_control "${genome}" "${treatment_file}" "${bin}" "${action.model_file}" | 22 # span_wrapper.py model without_control |
23 # "${genome_identifier}" "${genome_file}" | |
24 # "${treatment_identifier}" "${treatment_file}" | |
25 # "${bin}" "${action.model_file}" | |
19 # #end if | 26 # #end if |
20 # #else | 27 # #else |
21 # #if $control.control_selector | 28 # #if $control.control_selector |
22 # span_wrapper.py peaks with_control "${genome}" "${treatment_file}" "${bin}" "${action.model_file}" "${control.control_file}" "${fdr}" "${gap}" "${action.peaks_file}" | 29 # span_wrapper.py peaks with_control |
30 # "${genome_identifier}" "${genome_file}" | |
31 # "${treatment_identifier}" "${treatment_file}" | |
32 # "${bin}" "${action.model_file}" | |
33 # "${control_identifier}" "${control.control_file}" | |
34 # "${fdr}" "${gap}" "${action.peaks_file}" | |
23 # #else | 35 # #else |
24 # span_wrapper.py peaks without_control "${genome}" "${treatment_file}" "${bin}" "${action.model_file}" "${fdr}" "${gap}" "${action.peaks_file}" | 36 # span_wrapper.py peaks with_control |
37 # "${genome_identifier}" "${genome_file}" | |
38 # "${treatment_identifier}" "${treatment_file}" | |
39 # "${bin}" "${action.model_file}" | |
40 # "${fdr}" "${gap}" "${action.peaks_file}" | |
25 # #end if | 41 # #end if |
26 # #end if | 42 # #end if |
27 | 43 |
28 # See http://artyomovlab.wustl.edu/aging/span.html for command line options | 44 # See https://research.jetbrains.org/groups/biolabs/tools/span-peak-analyzer for command line options |
29 action = argv[0] | 45 action = argv[0] |
30 control = argv[1] | 46 control = argv[1] |
47 | |
48 working_dir = os.path.abspath('.') | |
49 print 'WORKING DIRECTORY: {}'.format(working_dir) | |
50 | |
51 | |
52 def link(name, f): | |
53 """ SPAN uses file extension to detect input type, so original names are necessary, instead of Galaxy .dat files""" | |
54 result = os.path.join(working_dir, name) | |
55 os.symlink(f, result) | |
56 return result | |
57 | |
58 | |
31 if action == 'model': | 59 if action == 'model': |
32 if control == 'with_control': | 60 if control == 'with_control': |
33 (chrom_sizes, treatment_file, bin, model_file, control_file) = argv[2:] | 61 (chrom_sizes, chrom_sizes_file, |
62 treatment, treatment_file, | |
63 bin, model_file, | |
64 control, control_file) = argv[2:] | |
34 cmd = 'java -jar {} analyze --chrom.sizes {} --treatment {} --control {} --bin {}'.format( | 65 cmd = 'java -jar {} analyze --chrom.sizes {} --treatment {} --control {} --bin {}'.format( |
35 SPAN_JAR, chrom_sizes, treatment_file, control_file, bin | 66 SPAN_JAR, |
67 link(chrom_sizes, chrom_sizes_file), | |
68 link(treatment, treatment_file), | |
69 link(control, control_file), | |
70 bin | |
36 ) | 71 ) |
37 print "MODEL FILE" + model_file | |
38 elif control == 'without_control': | 72 elif control == 'without_control': |
39 (chrom_sizes, treatment_file, bin, model_file) = argv[2:] | 73 (chrom_sizes, chrom_sizes_file, |
74 treatment, treatment_file, | |
75 bin, model_file) = argv[2:] | |
40 cmd = 'java -jar {} analyze --chrom.sizes {} --treatment {} --bin {}'.format( | 76 cmd = 'java -jar {} analyze --chrom.sizes {} --treatment {} --bin {}'.format( |
41 SPAN_JAR, argv[2], argv[3], argv[4] | 77 SPAN_JAR, |
78 link(chrom_sizes, chrom_sizes_file), | |
79 link(treatment, treatment_file), | |
80 bin | |
42 ) | 81 ) |
43 print "MODEL FILE" + model_file | |
44 else: | 82 else: |
45 raise Exception("Unknown control option {}".format(control)) | 83 raise Exception("Unknown control option {}".format(control)) |
46 | 84 |
47 elif action == "peaks": | 85 elif action == "peaks": |
48 if control == 'with_control': | 86 if control == 'with_control': |
49 (chrom_sizes, treatment_file, bin, model_file, control_file, fdr, gap, peaks_file) = argv[2:] | 87 (chrom_sizes, chrom_sizes_file, |
88 treatment, treatment_file, | |
89 bin, model_file, | |
90 control, control_file, | |
91 fdr, gap, peaks_file) = argv[2:] | |
50 cmd = 'java -jar {} analyze --chrom.sizes {} --treatment {} --control {} --bin {} --fdr {} --gap {} --peaks {}'.format( | 92 cmd = 'java -jar {} analyze --chrom.sizes {} --treatment {} --control {} --bin {} --fdr {} --gap {} --peaks {}'.format( |
51 SPAN_JAR, chrom_sizes, treatment_file, control_file, bin, fdr, gap, peaks_file | 93 SPAN_JAR, |
94 link(chrom_sizes, chrom_sizes_file), | |
95 link(treatment, treatment_file), | |
96 link(control, control_file), | |
97 bin, fdr, gap, | |
98 os.path.join(working_dir, peaks_file) | |
52 ) | 99 ) |
53 print "MODEL FILE" + model_file | |
54 elif control == 'without_control': | 100 elif control == 'without_control': |
55 (chrom_sizes, treatment_file, bin, model_file, fdr, gap, peaks_file) = argv[2:] | 101 (chrom_sizes, chrom_sizes_file, |
102 treatment, treatment_file, | |
103 bin, model_file, | |
104 fdr, gap, peaks_file) = argv[2:] | |
56 cmd = 'java -jar {} analyze --chrom.sizes {} --treatment {} --bin {} --fdr {} --gap {} --peaks {}'.format( | 105 cmd = 'java -jar {} analyze --chrom.sizes {} --treatment {} --bin {} --fdr {} --gap {} --peaks {}'.format( |
57 SPAN_JAR, chrom_sizes, treatment_file, bin, fdr, gap, peaks_file | 106 SPAN_JAR, |
107 link(chrom_sizes, chrom_sizes_file), | |
108 link(treatment, treatment_file), | |
109 bin, fdr, gap, | |
110 os.path.join(working_dir, peaks_file) | |
58 ) | 111 ) |
59 print "MODEL FILE" + model_file | |
60 else: | 112 else: |
61 raise Exception("Unknown control option {}".format(control)) | 113 raise Exception("Unknown control option {}".format(control)) |
62 else: | 114 else: |
63 raise Exception("Unknown action command {}".format(action)) | 115 raise Exception("Unknown action command {}".format(action)) |
64 | 116 |
65 | 117 |
66 print 'Launching SPAN: {0}'.format(cmd) | 118 print 'Launching SPAN: {}'.format(cmd) |
119 print 'Model file: {}'.format(model_file) | |
120 try: | |
121 print 'Peaks file: {}'.format(peaks_file) | |
122 except NameError: | |
123 pass | |
124 | |
67 subprocess.check_call(cmd, cwd=None, shell=True) | 125 subprocess.check_call(cmd, cwd=None, shell=True) |
126 | |
127 # Move model to the the working dir with given name | |
128 fit_dir = os.path.join(working_dir, 'fit') | |
129 model_original = os.path.join(fit_dir, os.listdir(fit_dir)[0]) | |
130 shutil.move(model_original, os.path.join(working_dir, model_file)) | |
131 | |
132 # Move log file | |
133 logs_dir = os.path.join(working_dir, 'logs') | |
134 log_original = os.path.join(logs_dir, os.listdir(logs_dir)[0]) | |
135 shutil.move(log_original, os.path.join(working_dir, "span.log")) |