Mercurial > repos > jetbrains > span
annotate span_wrapper.py @ 3:4130e95bd6c8 draft
Batch processing mode supported
author | jetbrains |
---|---|
date | Mon, 19 Nov 2018 08:24:04 -0500 |
parents | 5b99943c4627 |
children | 70500fd87b60 |
rev | line source |
---|---|
0 | 1 #!/usr/bin/env python |
2 | |
3 import os | |
2
5b99943c4627
Span version https://github.com/JetBrains-Research/galaxy-applications/commit/cbbba255d66a4775cc35caf5cb85665396fdcd2a
jetbrains
parents:
0
diff
changeset
|
4 import shutil |
5b99943c4627
Span version https://github.com/JetBrains-Research/galaxy-applications/commit/cbbba255d66a4775cc35caf5cb85665396fdcd2a
jetbrains
parents:
0
diff
changeset
|
5 import subprocess |
0 | 6 import sys |
2
5b99943c4627
Span version https://github.com/JetBrains-Research/galaxy-applications/commit/cbbba255d66a4775cc35caf5cb85665396fdcd2a
jetbrains
parents:
0
diff
changeset
|
7 |
0 | 8 argv = sys.argv[1:] |
9 print 'Arguments {0}'.format(argv) | |
10 | |
11 SPAN_JAR = os.environ.get("SPAN_JAR") | |
12 print 'Using SPAN Peak Analyzer distributive file {0}'.format(SPAN_JAR) | |
13 | |
2
5b99943c4627
Span version https://github.com/JetBrains-Research/galaxy-applications/commit/cbbba255d66a4775cc35caf5cb85665396fdcd2a
jetbrains
parents:
0
diff
changeset
|
14 # #if str($action.action_selector) == "model" |
3 | 15 # #if str($control_file) != 'None': |
16 # span_wrapper.py model_with_control | |
2
5b99943c4627
Span version https://github.com/JetBrains-Research/galaxy-applications/commit/cbbba255d66a4775cc35caf5cb85665396fdcd2a
jetbrains
parents:
0
diff
changeset
|
17 # "${genome_identifier}" "${genome_file}" |
5b99943c4627
Span version https://github.com/JetBrains-Research/galaxy-applications/commit/cbbba255d66a4775cc35caf5cb85665396fdcd2a
jetbrains
parents:
0
diff
changeset
|
18 # "${treatment_identifier}" "${treatment_file}" |
3 | 19 # "${control_identifier}" "${control_file}" |
20 # "${bin}" | |
21 # | |
0 | 22 # #else |
2
5b99943c4627
Span version https://github.com/JetBrains-Research/galaxy-applications/commit/cbbba255d66a4775cc35caf5cb85665396fdcd2a
jetbrains
parents:
0
diff
changeset
|
23 # span_wrapper.py model without_control |
5b99943c4627
Span version https://github.com/JetBrains-Research/galaxy-applications/commit/cbbba255d66a4775cc35caf5cb85665396fdcd2a
jetbrains
parents:
0
diff
changeset
|
24 # "${genome_identifier}" "${genome_file}" |
5b99943c4627
Span version https://github.com/JetBrains-Research/galaxy-applications/commit/cbbba255d66a4775cc35caf5cb85665396fdcd2a
jetbrains
parents:
0
diff
changeset
|
25 # "${treatment_identifier}" "${treatment_file}" |
3 | 26 # "${bin}" |
0 | 27 # #end if |
28 # #else | |
3 | 29 # #if str($control_file) != 'None': |
30 # span_wrapper.py peaks_with_control | |
2
5b99943c4627
Span version https://github.com/JetBrains-Research/galaxy-applications/commit/cbbba255d66a4775cc35caf5cb85665396fdcd2a
jetbrains
parents:
0
diff
changeset
|
31 # "${genome_identifier}" "${genome_file}" |
5b99943c4627
Span version https://github.com/JetBrains-Research/galaxy-applications/commit/cbbba255d66a4775cc35caf5cb85665396fdcd2a
jetbrains
parents:
0
diff
changeset
|
32 # "${treatment_identifier}" "${treatment_file}" |
3 | 33 # "${control_identifier}" "${control_file}" |
34 # "${bin}" | |
35 # "${action.fdr}" "${action.gap}" | |
0 | 36 # #else |
3 | 37 # span_wrapper.py peaks_without_control |
2
5b99943c4627
Span version https://github.com/JetBrains-Research/galaxy-applications/commit/cbbba255d66a4775cc35caf5cb85665396fdcd2a
jetbrains
parents:
0
diff
changeset
|
38 # "${genome_identifier}" "${genome_file}" |
5b99943c4627
Span version https://github.com/JetBrains-Research/galaxy-applications/commit/cbbba255d66a4775cc35caf5cb85665396fdcd2a
jetbrains
parents:
0
diff
changeset
|
39 # "${treatment_identifier}" "${treatment_file}" |
3 | 40 # "${bin}" |
41 # "${action.fdr}" "${action.gap}" | |
0 | 42 # #end if |
43 # #end if | |
44 action = argv[0] | |
2
5b99943c4627
Span version https://github.com/JetBrains-Research/galaxy-applications/commit/cbbba255d66a4775cc35caf5cb85665396fdcd2a
jetbrains
parents:
0
diff
changeset
|
45 |
5b99943c4627
Span version https://github.com/JetBrains-Research/galaxy-applications/commit/cbbba255d66a4775cc35caf5cb85665396fdcd2a
jetbrains
parents:
0
diff
changeset
|
46 working_dir = os.path.abspath('.') |
5b99943c4627
Span version https://github.com/JetBrains-Research/galaxy-applications/commit/cbbba255d66a4775cc35caf5cb85665396fdcd2a
jetbrains
parents:
0
diff
changeset
|
47 print 'WORKING DIRECTORY: {}'.format(working_dir) |
5b99943c4627
Span version https://github.com/JetBrains-Research/galaxy-applications/commit/cbbba255d66a4775cc35caf5cb85665396fdcd2a
jetbrains
parents:
0
diff
changeset
|
48 |
5b99943c4627
Span version https://github.com/JetBrains-Research/galaxy-applications/commit/cbbba255d66a4775cc35caf5cb85665396fdcd2a
jetbrains
parents:
0
diff
changeset
|
49 |
5b99943c4627
Span version https://github.com/JetBrains-Research/galaxy-applications/commit/cbbba255d66a4775cc35caf5cb85665396fdcd2a
jetbrains
parents:
0
diff
changeset
|
50 def link(name, f): |
5b99943c4627
Span version https://github.com/JetBrains-Research/galaxy-applications/commit/cbbba255d66a4775cc35caf5cb85665396fdcd2a
jetbrains
parents:
0
diff
changeset
|
51 """ SPAN uses file extension to detect input type, so original names are necessary, instead of Galaxy .dat files""" |
5b99943c4627
Span version https://github.com/JetBrains-Research/galaxy-applications/commit/cbbba255d66a4775cc35caf5cb85665396fdcd2a
jetbrains
parents:
0
diff
changeset
|
52 result = os.path.join(working_dir, name) |
3 | 53 if not os.path.exists(result): |
54 os.symlink(f, result) | |
2
5b99943c4627
Span version https://github.com/JetBrains-Research/galaxy-applications/commit/cbbba255d66a4775cc35caf5cb85665396fdcd2a
jetbrains
parents:
0
diff
changeset
|
55 return result |
5b99943c4627
Span version https://github.com/JetBrains-Research/galaxy-applications/commit/cbbba255d66a4775cc35caf5cb85665396fdcd2a
jetbrains
parents:
0
diff
changeset
|
56 |
5b99943c4627
Span version https://github.com/JetBrains-Research/galaxy-applications/commit/cbbba255d66a4775cc35caf5cb85665396fdcd2a
jetbrains
parents:
0
diff
changeset
|
57 |
3 | 58 if action == 'model_with_control': |
59 (chrom_sizes, chrom_sizes_file, | |
60 treatment, treatment_file, | |
61 control, control_file, | |
62 bin) = argv[1:] | |
63 cmd = 'java -jar {} analyze --chrom.sizes {} --treatment {} --control {} --bin {}'.format( | |
64 SPAN_JAR, | |
65 link(chrom_sizes, chrom_sizes_file), | |
66 link(treatment, treatment_file), | |
67 link(control, control_file), | |
68 bin) | |
69 elif action == 'model_without_control': | |
70 (chrom_sizes, chrom_sizes_file, | |
71 treatment, treatment_file, | |
72 bin) = argv[1:] | |
73 cmd = 'java -jar {} analyze --chrom.sizes {} --treatment {} --bin {}'.format( | |
74 SPAN_JAR, | |
75 link(chrom_sizes, chrom_sizes_file), | |
76 link(treatment, treatment_file), | |
77 bin) | |
78 elif action == "peaks_with_control": | |
79 (chrom_sizes, chrom_sizes_file, | |
80 treatment, treatment_file, | |
81 control, control_file, | |
82 bin, | |
83 fdr, gap) = argv[1:] | |
84 cmd = 'java -jar {} analyze --chrom.sizes {} --treatment {} --control {} ' \ | |
85 '--bin {} --fdr {} --gap {} --peaks {}'.format( | |
86 SPAN_JAR, | |
87 link(chrom_sizes, chrom_sizes_file), | |
88 link(treatment, treatment_file), | |
89 link(control, control_file), | |
90 bin, fdr, gap, | |
91 os.path.join(working_dir, 'result.peak')) | |
92 elif action == 'peaks_without_control': | |
93 (chrom_sizes, chrom_sizes_file, | |
94 treatment, treatment_file, | |
95 bin, | |
96 fdr, gap) = argv[1:] | |
97 cmd = 'java -jar {} analyze --chrom.sizes {} --treatment {} -' \ | |
98 '-bin {} --fdr {} --gap {} --peaks {}'.format( | |
99 SPAN_JAR, | |
100 link(chrom_sizes, chrom_sizes_file), | |
101 link(treatment, treatment_file), | |
102 bin, fdr, gap, | |
103 os.path.join(working_dir, 'result.peak')) | |
0 | 104 else: |
105 raise Exception("Unknown action command {}".format(action)) | |
106 | |
2
5b99943c4627
Span version https://github.com/JetBrains-Research/galaxy-applications/commit/cbbba255d66a4775cc35caf5cb85665396fdcd2a
jetbrains
parents:
0
diff
changeset
|
107 print 'Launching SPAN: {}'.format(cmd) |
0 | 108 subprocess.check_call(cmd, cwd=None, shell=True) |
2
5b99943c4627
Span version https://github.com/JetBrains-Research/galaxy-applications/commit/cbbba255d66a4775cc35caf5cb85665396fdcd2a
jetbrains
parents:
0
diff
changeset
|
109 |
5b99943c4627
Span version https://github.com/JetBrains-Research/galaxy-applications/commit/cbbba255d66a4775cc35caf5cb85665396fdcd2a
jetbrains
parents:
0
diff
changeset
|
110 # Move model to the the working dir with given name |
5b99943c4627
Span version https://github.com/JetBrains-Research/galaxy-applications/commit/cbbba255d66a4775cc35caf5cb85665396fdcd2a
jetbrains
parents:
0
diff
changeset
|
111 fit_dir = os.path.join(working_dir, 'fit') |
5b99943c4627
Span version https://github.com/JetBrains-Research/galaxy-applications/commit/cbbba255d66a4775cc35caf5cb85665396fdcd2a
jetbrains
parents:
0
diff
changeset
|
112 model_original = os.path.join(fit_dir, os.listdir(fit_dir)[0]) |
3 | 113 shutil.move(model_original, os.path.join(working_dir, 'model.span')) |
2
5b99943c4627
Span version https://github.com/JetBrains-Research/galaxy-applications/commit/cbbba255d66a4775cc35caf5cb85665396fdcd2a
jetbrains
parents:
0
diff
changeset
|
114 |
5b99943c4627
Span version https://github.com/JetBrains-Research/galaxy-applications/commit/cbbba255d66a4775cc35caf5cb85665396fdcd2a
jetbrains
parents:
0
diff
changeset
|
115 # Move log file |
5b99943c4627
Span version https://github.com/JetBrains-Research/galaxy-applications/commit/cbbba255d66a4775cc35caf5cb85665396fdcd2a
jetbrains
parents:
0
diff
changeset
|
116 logs_dir = os.path.join(working_dir, 'logs') |
5b99943c4627
Span version https://github.com/JetBrains-Research/galaxy-applications/commit/cbbba255d66a4775cc35caf5cb85665396fdcd2a
jetbrains
parents:
0
diff
changeset
|
117 log_original = os.path.join(logs_dir, os.listdir(logs_dir)[0]) |
5b99943c4627
Span version https://github.com/JetBrains-Research/galaxy-applications/commit/cbbba255d66a4775cc35caf5cb85665396fdcd2a
jetbrains
parents:
0
diff
changeset
|
118 shutil.move(log_original, os.path.join(working_dir, "span.log")) |