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