annotate multigps.py @ 4:0bec3b2df784 draft

Uploaded
author iuc
date Mon, 03 Apr 2017 14:07:14 -0400
parents 91127c200437
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
91127c200437 Uploaded
iuc
parents:
diff changeset
1 import argparse
91127c200437 Uploaded
iuc
parents:
diff changeset
2 import os
91127c200437 Uploaded
iuc
parents:
diff changeset
3 import shutil
91127c200437 Uploaded
iuc
parents:
diff changeset
4 import subprocess
91127c200437 Uploaded
iuc
parents:
diff changeset
5 import sys
91127c200437 Uploaded
iuc
parents:
diff changeset
6 import tempfile
91127c200437 Uploaded
iuc
parents:
diff changeset
7
91127c200437 Uploaded
iuc
parents:
diff changeset
8 BUFF_SIZE = 1048576
91127c200437 Uploaded
iuc
parents:
diff changeset
9 DESIGN_FILE = 'design.tabular'
91127c200437 Uploaded
iuc
parents:
diff changeset
10
91127c200437 Uploaded
iuc
parents:
diff changeset
11 parser = argparse.ArgumentParser()
91127c200437 Uploaded
iuc
parents:
diff changeset
12 parser.add_argument('--all_events_table', dest='all_events_table', help='Output all events table file')
91127c200437 Uploaded
iuc
parents:
diff changeset
13 parser.add_argument('--alphascale', dest='alphascale', type=float, default=None, help='Alpha scaling factor')
91127c200437 Uploaded
iuc
parents:
diff changeset
14 parser.add_argument('--chrom_len_file', dest='chrom_len_file', help='File listing the lengths of all chromosomes')
91127c200437 Uploaded
iuc
parents:
diff changeset
15 parser.add_argument('--control', dest='control', default=None, help='Input control files and data formats')
91127c200437 Uploaded
iuc
parents:
diff changeset
16 parser.add_argument('--diffp', dest='diffp', type=float, default=None, help='Minimum p-value for reporting differential enrichment')
91127c200437 Uploaded
iuc
parents:
diff changeset
17 parser.add_argument('--edgerod', dest='edgerod', type=float, default=None, help='EdgeR over-dispersion parameter value')
91127c200437 Uploaded
iuc
parents:
diff changeset
18 parser.add_argument('--exclude', dest='exclude', default=None, help='File containing a set of regions to ignore during MultiGPS training')
91127c200437 Uploaded
iuc
parents:
diff changeset
19 parser.add_argument('--expt', dest='expt', default=None, help="Input expt files and data formats")
91127c200437 Uploaded
iuc
parents:
diff changeset
20 parser.add_argument('--eventsaretxt', dest='eventsaretxt', default=None, help='Append a .txt extension to the events file for browser rendering')
91127c200437 Uploaded
iuc
parents:
diff changeset
21 parser.add_argument('--fixedalpha', dest='fixedalpha', type=int, default=None, help='Impose this alpha')
91127c200437 Uploaded
iuc
parents:
diff changeset
22 parser.add_argument('--fixedmodelrange', dest='fixedmodelrange', default=None, help='Keep binding model range fixed to inital size')
91127c200437 Uploaded
iuc
parents:
diff changeset
23 parser.add_argument('--fixedpb', dest='fixedpb', type=int, default=None, help='Fixed per-base limit')
91127c200437 Uploaded
iuc
parents:
diff changeset
24 parser.add_argument('--fixedscaling', dest='fixedscaling', type=float, default=None, help='Multiply control counts by total tag count ratio and then by this factor')
91127c200437 Uploaded
iuc
parents:
diff changeset
25 parser.add_argument('--format', dest='format', default=None, help='Input expt file data format')
91127c200437 Uploaded
iuc
parents:
diff changeset
26 parser.add_argument('--gaussmodelsmoothing', dest='gaussmodelsmoothing', default=None, help='Use Gaussian model smoothing')
91127c200437 Uploaded
iuc
parents:
diff changeset
27 parser.add_argument('--gausssmoothparam', dest='gausssmoothparam', type=int, default=None, help='Smoothing factor')
4
0bec3b2df784 Uploaded
iuc
parents: 2
diff changeset
28 parser.add_argument('--input_item', dest='input_items', action='append', nargs=8, default=None, help="Input files, attributes and options")
2
91127c200437 Uploaded
iuc
parents:
diff changeset
29 parser.add_argument('--jointinmodel', dest='jointinmodel', default=None, help='Allow joint events in model updates')
91127c200437 Uploaded
iuc
parents:
diff changeset
30 parser.add_argument('--mappability', dest='mappability', type=float, default=None, help='Fraction of the genome that is mappable for these experiments')
91127c200437 Uploaded
iuc
parents:
diff changeset
31 parser.add_argument('--maxtrainingrounds', dest='maxtrainingrounds', type=int, default=None, help='Maximum number of training rounds for updating binding event read distributions')
91127c200437 Uploaded
iuc
parents:
diff changeset
32 parser.add_argument('--medianscale', dest='medianscale', default=None, help='Use the median signal/control ratio as the scaling factor')
91127c200437 Uploaded
iuc
parents:
diff changeset
33 parser.add_argument('--meme1proc', dest='meme1proc', default=None, help='Do not run the parallel version of meme')
91127c200437 Uploaded
iuc
parents:
diff changeset
34 parser.add_argument('--mememaxw', dest='mememaxw', type=int, default=None, help='Maximum motif width for MEME')
91127c200437 Uploaded
iuc
parents:
diff changeset
35 parser.add_argument('--mememinw', dest='mememinw', type=int, default=None, help='Minimum motif width for MEME')
91127c200437 Uploaded
iuc
parents:
diff changeset
36 parser.add_argument('--memenmotifs', dest='memenmotifs', type=int, default=None, help='Number of motifs MEME should find for each condition')
91127c200437 Uploaded
iuc
parents:
diff changeset
37 parser.add_argument('--minfold', dest='minfold', type=float, default=None, help='Minimum event fold-change vs scaled control')
91127c200437 Uploaded
iuc
parents:
diff changeset
38 parser.add_argument('--minqvalue', dest='minqvalue', type=float, default=None, help='Minimum Q-value (corrected p-value) of reported binding events')
91127c200437 Uploaded
iuc
parents:
diff changeset
39 parser.add_argument('--minmodelupdateevents', dest='minmodelupdateevents', type=int, default=None, help='Minimum number of events to support an update of the read distribution')
91127c200437 Uploaded
iuc
parents:
diff changeset
40 parser.add_argument('--mlconfignotshared', dest='mlconfignotshared', default=None, help='Share component configs in the ML step')
91127c200437 Uploaded
iuc
parents:
diff changeset
41 parser.add_argument('--nocache', dest='nocache', default=None, help='Turn off caching of the entire set of experiments')
91127c200437 Uploaded
iuc
parents:
diff changeset
42 parser.add_argument('--nodifftests', dest='nodifftests', default=None, help='Run differential enrichment tests')
91127c200437 Uploaded
iuc
parents:
diff changeset
43 parser.add_argument('--nomodelsmoothing', dest='nomodelsmoothing', default=None, help='Perform binding model smoothing')
91127c200437 Uploaded
iuc
parents:
diff changeset
44 parser.add_argument('--nomodelupdate', dest='nomodelupdate', default=None, help='Perform binding model updates')
91127c200437 Uploaded
iuc
parents:
diff changeset
45 parser.add_argument('--nomotifprior', dest='nomotifprior', default=None, help='Perform motif-finding only')
91127c200437 Uploaded
iuc
parents:
diff changeset
46 parser.add_argument('--nomotifs', dest='nomotifs', default=None, help='Perform motif-finding and motif priors')
91127c200437 Uploaded
iuc
parents:
diff changeset
47 parser.add_argument('--nonunique', dest='nonunique', default=None, help='Use non-unique reads')
91127c200437 Uploaded
iuc
parents:
diff changeset
48 parser.add_argument('--noposprior', dest='noposprior', default=None, help='Perform inter-experiment positional prior')
91127c200437 Uploaded
iuc
parents:
diff changeset
49 parser.add_argument('--noscaling', dest='noscaling', default=None, help='Do not use signal vs control scaling')
91127c200437 Uploaded
iuc
parents:
diff changeset
50 parser.add_argument('--output_bed', dest='output_bed', help='Output bed results file')
91127c200437 Uploaded
iuc
parents:
diff changeset
51 parser.add_argument('--output_html', dest='output_html', help='Output html results file')
91127c200437 Uploaded
iuc
parents:
diff changeset
52 parser.add_argument('--output_html_files_path', dest='output_html_files_path', help='Output html extra files')
91127c200437 Uploaded
iuc
parents:
diff changeset
53 parser.add_argument('--plotscaling', dest='plotscaling', default=None, help='Plot diagnostic information for the chosen scaling method')
91127c200437 Uploaded
iuc
parents:
diff changeset
54 parser.add_argument('--poissongausspb', dest='poissongausspb', type=int, default=None, help='Poisson threshold for filtering per base')
91127c200437 Uploaded
iuc
parents:
diff changeset
55 parser.add_argument('--prlogconf', dest='prlogconf', type=int, default=None, help='Poisson log threshold for potential region scanning')
91127c200437 Uploaded
iuc
parents:
diff changeset
56 parser.add_argument('--probshared', dest='probshared', type=float, default=None, help='Probability that events are shared across conditions')
91127c200437 Uploaded
iuc
parents:
diff changeset
57 parser.add_argument('--readdistributionfile', dest='readdistributionfile', default=None, help='Optional binding event read distribution file for initializing models')
91127c200437 Uploaded
iuc
parents:
diff changeset
58 parser.add_argument('--regressionscale', dest='regressionscale', default=None, help='Use scaling by regression on binned tag counts')
91127c200437 Uploaded
iuc
parents:
diff changeset
59 parser.add_argument('--replicates_counts', dest='replicates_counts', help='Output replicates counts file')
91127c200437 Uploaded
iuc
parents:
diff changeset
60 parser.add_argument('--scalewin', dest='scalewin', type=int, default=None, help='Window size for estimating scaling ratios')
91127c200437 Uploaded
iuc
parents:
diff changeset
61 parser.add_argument('--seq', dest='seq', default=None, help='Reference genome path')
91127c200437 Uploaded
iuc
parents:
diff changeset
62 parser.add_argument('--sesscale', dest='sesscale', default=None, help='Estimate scaling factor by SES')
91127c200437 Uploaded
iuc
parents:
diff changeset
63 parser.add_argument('--splinesmoothparam', dest='splinesmoothparam', type=int, default=None, help='Spline smoothing parameter')
91127c200437 Uploaded
iuc
parents:
diff changeset
64 parser.add_argument('--threads', dest='threads', type=int, default=4, help='The number of threads to run')
91127c200437 Uploaded
iuc
parents:
diff changeset
65 args = parser.parse_args()
91127c200437 Uploaded
iuc
parents:
diff changeset
66
91127c200437 Uploaded
iuc
parents:
diff changeset
67
91127c200437 Uploaded
iuc
parents:
diff changeset
68 def generate_design_file(input_items):
4
0bec3b2df784 Uploaded
iuc
parents: 2
diff changeset
69 control_file_names = []
2
91127c200437 Uploaded
iuc
parents:
diff changeset
70 design_file = open(DESIGN_FILE, 'w')
91127c200437 Uploaded
iuc
parents:
diff changeset
71 for item in input_items:
4
0bec3b2df784 Uploaded
iuc
parents: 2
diff changeset
72 experiment_file_name, control_file_name, label, file_format, condition_name, replicate_name, experiment_type, fixed_read_count = item
0bec3b2df784 Uploaded
iuc
parents: 2
diff changeset
73 if control_file_name not in ['None', None, '']:
0bec3b2df784 Uploaded
iuc
parents: 2
diff changeset
74 control_file_names.append(control_file_name)
2
91127c200437 Uploaded
iuc
parents:
diff changeset
75 file_format = file_format.upper()
4
0bec3b2df784 Uploaded
iuc
parents: 2
diff changeset
76 items = [experiment_file_name, label, file_format, condition_name]
2
91127c200437 Uploaded
iuc
parents:
diff changeset
77 if replicate_name not in ['None', None, '']:
91127c200437 Uploaded
iuc
parents:
diff changeset
78 items.append(replicate_name)
91127c200437 Uploaded
iuc
parents:
diff changeset
79 if experiment_type not in ['None', None, '']:
91127c200437 Uploaded
iuc
parents:
diff changeset
80 items.append(experiment_type)
91127c200437 Uploaded
iuc
parents:
diff changeset
81 if fixed_read_count not in ['None', None, '']:
91127c200437 Uploaded
iuc
parents:
diff changeset
82 items.append(fixed_read_count)
91127c200437 Uploaded
iuc
parents:
diff changeset
83 design_file.write('%s\n' % '\t'.join(items))
91127c200437 Uploaded
iuc
parents:
diff changeset
84 design_file.close()
4
0bec3b2df784 Uploaded
iuc
parents: 2
diff changeset
85 return control_file_names
2
91127c200437 Uploaded
iuc
parents:
diff changeset
86
91127c200437 Uploaded
iuc
parents:
diff changeset
87
91127c200437 Uploaded
iuc
parents:
diff changeset
88 def get_file_with_extension(dir, ext):
91127c200437 Uploaded
iuc
parents:
diff changeset
89 file_list = [f for f in os.listdir(dir) if f.endswith(ext)]
91127c200437 Uploaded
iuc
parents:
diff changeset
90 if len(file_list) == 1:
91127c200437 Uploaded
iuc
parents:
diff changeset
91 return file_list[0]
91127c200437 Uploaded
iuc
parents:
diff changeset
92 stop_err('Error running MultiGPS: output file with extension "%s" not generated.' % ext)
91127c200437 Uploaded
iuc
parents:
diff changeset
93
91127c200437 Uploaded
iuc
parents:
diff changeset
94
91127c200437 Uploaded
iuc
parents:
diff changeset
95 def get_stderr_exception(tmp_err, tmp_stderr, tmp_out, tmp_stdout, include_stdout=False):
91127c200437 Uploaded
iuc
parents:
diff changeset
96 tmp_stderr.close()
91127c200437 Uploaded
iuc
parents:
diff changeset
97 # Get stderr, allowing for case where it's very large.
91127c200437 Uploaded
iuc
parents:
diff changeset
98 tmp_stderr = open(tmp_err, 'rb')
91127c200437 Uploaded
iuc
parents:
diff changeset
99 stderr_str = ''
91127c200437 Uploaded
iuc
parents:
diff changeset
100 buffsize = BUFF_SIZE
91127c200437 Uploaded
iuc
parents:
diff changeset
101 try:
91127c200437 Uploaded
iuc
parents:
diff changeset
102 while True:
91127c200437 Uploaded
iuc
parents:
diff changeset
103 stderr_str += tmp_stderr.read(buffsize)
91127c200437 Uploaded
iuc
parents:
diff changeset
104 if not stderr_str or len(stderr_str) % buffsize != 0:
91127c200437 Uploaded
iuc
parents:
diff changeset
105 break
91127c200437 Uploaded
iuc
parents:
diff changeset
106 except OverflowError:
91127c200437 Uploaded
iuc
parents:
diff changeset
107 pass
91127c200437 Uploaded
iuc
parents:
diff changeset
108 tmp_stderr.close()
91127c200437 Uploaded
iuc
parents:
diff changeset
109 if include_stdout:
91127c200437 Uploaded
iuc
parents:
diff changeset
110 tmp_stdout = open(tmp_out, 'rb')
91127c200437 Uploaded
iuc
parents:
diff changeset
111 stdout_str = ''
91127c200437 Uploaded
iuc
parents:
diff changeset
112 buffsize = BUFF_SIZE
91127c200437 Uploaded
iuc
parents:
diff changeset
113 try:
91127c200437 Uploaded
iuc
parents:
diff changeset
114 while True:
91127c200437 Uploaded
iuc
parents:
diff changeset
115 stdout_str += tmp_stdout.read(buffsize)
91127c200437 Uploaded
iuc
parents:
diff changeset
116 if not stdout_str or len(stdout_str) % buffsize != 0:
91127c200437 Uploaded
iuc
parents:
diff changeset
117 break
91127c200437 Uploaded
iuc
parents:
diff changeset
118 except OverflowError:
91127c200437 Uploaded
iuc
parents:
diff changeset
119 pass
91127c200437 Uploaded
iuc
parents:
diff changeset
120 tmp_stdout.close()
91127c200437 Uploaded
iuc
parents:
diff changeset
121 if include_stdout:
91127c200437 Uploaded
iuc
parents:
diff changeset
122 return 'STDOUT\n%s\n\nSTDERR\n%s\n' % (stdout_str, stderr_str)
91127c200437 Uploaded
iuc
parents:
diff changeset
123 return stderr_str
91127c200437 Uploaded
iuc
parents:
diff changeset
124
91127c200437 Uploaded
iuc
parents:
diff changeset
125
91127c200437 Uploaded
iuc
parents:
diff changeset
126 def stop_err(msg):
91127c200437 Uploaded
iuc
parents:
diff changeset
127 sys.stderr.write(msg)
91127c200437 Uploaded
iuc
parents:
diff changeset
128 sys.exit(1)
91127c200437 Uploaded
iuc
parents:
diff changeset
129
91127c200437 Uploaded
iuc
parents:
diff changeset
130
91127c200437 Uploaded
iuc
parents:
diff changeset
131 # Preparation.
91127c200437 Uploaded
iuc
parents:
diff changeset
132 tmp_dir = tempfile.mkdtemp(prefix="tmp-multigps-")
91127c200437 Uploaded
iuc
parents:
diff changeset
133 os.makedirs(args.output_html_files_path)
91127c200437 Uploaded
iuc
parents:
diff changeset
134 # Build the command line.
91127c200437 Uploaded
iuc
parents:
diff changeset
135 cmd = 'multigps'
91127c200437 Uploaded
iuc
parents:
diff changeset
136 # General options
91127c200437 Uploaded
iuc
parents:
diff changeset
137 cmd += ' --threads %s' % args.threads
91127c200437 Uploaded
iuc
parents:
diff changeset
138 if args.eventsaretxt is not None:
91127c200437 Uploaded
iuc
parents:
diff changeset
139 # Append .txt extensions to events hrefs
91127c200437 Uploaded
iuc
parents:
diff changeset
140 # in output dataset so files will render
91127c200437 Uploaded
iuc
parents:
diff changeset
141 # in the browser.
91127c200437 Uploaded
iuc
parents:
diff changeset
142 cmd += ' --eventsaretxt'
91127c200437 Uploaded
iuc
parents:
diff changeset
143 if args.meme1proc is not None:
91127c200437 Uploaded
iuc
parents:
diff changeset
144 # Do not run the parallel version of meme.
91127c200437 Uploaded
iuc
parents:
diff changeset
145 cmd += ' --meme1proc'
91127c200437 Uploaded
iuc
parents:
diff changeset
146 # Experiment.
91127c200437 Uploaded
iuc
parents:
diff changeset
147 if args.input_items is not None:
4
0bec3b2df784 Uploaded
iuc
parents: 2
diff changeset
148 control_file_names = generate_design_file(args.input_items)
2
91127c200437 Uploaded
iuc
parents:
diff changeset
149 cmd += ' --design %s' % DESIGN_FILE
4
0bec3b2df784 Uploaded
iuc
parents: 2
diff changeset
150 if len(control_file_names) > 0:
0bec3b2df784 Uploaded
iuc
parents: 2
diff changeset
151 cmd += ' --ctrl %s' % ','.join(control_file_names)
2
91127c200437 Uploaded
iuc
parents:
diff changeset
152 else:
91127c200437 Uploaded
iuc
parents:
diff changeset
153 if args.expt is not None:
91127c200437 Uploaded
iuc
parents:
diff changeset
154 cmd += ' --expt %s' % args.expt
91127c200437 Uploaded
iuc
parents:
diff changeset
155 if args.format is not None:
91127c200437 Uploaded
iuc
parents:
diff changeset
156 cmd += ' --format %s' % args.format
91127c200437 Uploaded
iuc
parents:
diff changeset
157 if args.control is not None:
91127c200437 Uploaded
iuc
parents:
diff changeset
158 cmd += ' --ctrl %s' % args.control
91127c200437 Uploaded
iuc
parents:
diff changeset
159 cmd += ' --geninfo %s' % args.chrom_len_file
91127c200437 Uploaded
iuc
parents:
diff changeset
160 # Advanced options.
91127c200437 Uploaded
iuc
parents:
diff changeset
161 if args.seq is not None:
91127c200437 Uploaded
iuc
parents:
diff changeset
162 cmd += ' --seq %s' % args.seq
91127c200437 Uploaded
iuc
parents:
diff changeset
163 # Limits on how many reads
91127c200437 Uploaded
iuc
parents:
diff changeset
164 if args.fixedpb is not None:
91127c200437 Uploaded
iuc
parents:
diff changeset
165 cmd += ' --fixedpb %d' % args.fixedpb
91127c200437 Uploaded
iuc
parents:
diff changeset
166 if args.poissongausspb is not None:
91127c200437 Uploaded
iuc
parents:
diff changeset
167 cmd += ' --poissongausspb %d' % args.poissongausspb
91127c200437 Uploaded
iuc
parents:
diff changeset
168 if args.nonunique is not None:
91127c200437 Uploaded
iuc
parents:
diff changeset
169 cmd += ' --nonunique'
91127c200437 Uploaded
iuc
parents:
diff changeset
170 if args.mappability is not None:
91127c200437 Uploaded
iuc
parents:
diff changeset
171 cmd += ' --mappability %4f' % args.mappability
91127c200437 Uploaded
iuc
parents:
diff changeset
172 if args.nocache is not None:
91127c200437 Uploaded
iuc
parents:
diff changeset
173 cmd += ' --nocache'
91127c200437 Uploaded
iuc
parents:
diff changeset
174 # Scaling data.'
91127c200437 Uploaded
iuc
parents:
diff changeset
175 if args.noscaling is not None:
91127c200437 Uploaded
iuc
parents:
diff changeset
176 cmd += ' --noscaling %s' % args.noscaling
91127c200437 Uploaded
iuc
parents:
diff changeset
177 if args.medianscale is not None:
91127c200437 Uploaded
iuc
parents:
diff changeset
178 cmd += ' --medianscale %s' % args.medianscale
91127c200437 Uploaded
iuc
parents:
diff changeset
179 if args.regressionscale is not None:
91127c200437 Uploaded
iuc
parents:
diff changeset
180 cmd += ' --regressionscale %s' % args.regressionscale
91127c200437 Uploaded
iuc
parents:
diff changeset
181 if args.sesscale is not None:
91127c200437 Uploaded
iuc
parents:
diff changeset
182 cmd += ' --sesscale %s' % args.sesscale
91127c200437 Uploaded
iuc
parents:
diff changeset
183 if args.fixedscaling is not None:
91127c200437 Uploaded
iuc
parents:
diff changeset
184 cmd += ' --fixedscaling %4f' % args.fixedscaling
91127c200437 Uploaded
iuc
parents:
diff changeset
185 if args.scalewin is not None:
91127c200437 Uploaded
iuc
parents:
diff changeset
186 cmd += ' --scalewin %d' % args.scalewin
91127c200437 Uploaded
iuc
parents:
diff changeset
187 if args.plotscaling is not None:
91127c200437 Uploaded
iuc
parents:
diff changeset
188 cmd += ' --plotscaling %s' % args.plotscaling
91127c200437 Uploaded
iuc
parents:
diff changeset
189 # Running MultiGPS.
91127c200437 Uploaded
iuc
parents:
diff changeset
190 if args.readdistributionfile is not None:
91127c200437 Uploaded
iuc
parents:
diff changeset
191 cmd += ' --d %s' % args.readdistributionfile
91127c200437 Uploaded
iuc
parents:
diff changeset
192 if args.maxtrainingrounds is not None:
91127c200437 Uploaded
iuc
parents:
diff changeset
193 cmd += ' --r %s' % args.maxtrainingrounds
91127c200437 Uploaded
iuc
parents:
diff changeset
194 if args.nomodelupdate is not None:
91127c200437 Uploaded
iuc
parents:
diff changeset
195 cmd += ' --nomodelupdate'
91127c200437 Uploaded
iuc
parents:
diff changeset
196 if args.minmodelupdateevents is not None:
91127c200437 Uploaded
iuc
parents:
diff changeset
197 cmd += ' --minmodelupdateevents %d' % args.minmodelupdateevents
91127c200437 Uploaded
iuc
parents:
diff changeset
198 if args.nomodelsmoothing is not None:
91127c200437 Uploaded
iuc
parents:
diff changeset
199 cmd += ' --nomodelsmoothing'
91127c200437 Uploaded
iuc
parents:
diff changeset
200 if args.splinesmoothparam is not None:
91127c200437 Uploaded
iuc
parents:
diff changeset
201 cmd += ' --splinesmoothparam %d' % args.splinesmoothparam
91127c200437 Uploaded
iuc
parents:
diff changeset
202 if args.gaussmodelsmoothing is not None:
91127c200437 Uploaded
iuc
parents:
diff changeset
203 cmd += ' --gaussmodelsmoothing'
91127c200437 Uploaded
iuc
parents:
diff changeset
204 if args.gausssmoothparam is not None:
91127c200437 Uploaded
iuc
parents:
diff changeset
205 cmd += ' --gausssmoothparam %s' % args.gausssmoothparam
91127c200437 Uploaded
iuc
parents:
diff changeset
206 if args.jointinmodel is not None:
91127c200437 Uploaded
iuc
parents:
diff changeset
207 cmd += ' --jointinmodel'
91127c200437 Uploaded
iuc
parents:
diff changeset
208 if args.fixedmodelrange is not None:
91127c200437 Uploaded
iuc
parents:
diff changeset
209 cmd += ' --fixedmodelrange'
91127c200437 Uploaded
iuc
parents:
diff changeset
210 if args.prlogconf is not None:
91127c200437 Uploaded
iuc
parents:
diff changeset
211 cmd += ' --prlogconf %d' % args.prlogconf
91127c200437 Uploaded
iuc
parents:
diff changeset
212 if args.fixedalpha is not None:
91127c200437 Uploaded
iuc
parents:
diff changeset
213 cmd += ' --fixedalpha %d' % args.fixedalpha
91127c200437 Uploaded
iuc
parents:
diff changeset
214 if args.alphascale is not None:
91127c200437 Uploaded
iuc
parents:
diff changeset
215 cmd += ' --alphascale %4f' % args.alphascale
91127c200437 Uploaded
iuc
parents:
diff changeset
216 if args.mlconfignotshared is not None:
91127c200437 Uploaded
iuc
parents:
diff changeset
217 cmd += ' --mlconfignotshared'
91127c200437 Uploaded
iuc
parents:
diff changeset
218 if args.exclude not in [None, 'None']:
91127c200437 Uploaded
iuc
parents:
diff changeset
219 cmd += ' --exclude %s' % args.exclude_file
91127c200437 Uploaded
iuc
parents:
diff changeset
220 # MultiGPS priors
91127c200437 Uploaded
iuc
parents:
diff changeset
221 if args.noposprior is not None:
91127c200437 Uploaded
iuc
parents:
diff changeset
222 cmd += ' --noposprior'
91127c200437 Uploaded
iuc
parents:
diff changeset
223 if args.probshared is not None:
91127c200437 Uploaded
iuc
parents:
diff changeset
224 cmd += ' --probshared %4f' % args.probshared
91127c200437 Uploaded
iuc
parents:
diff changeset
225 if args.memenmotifs is not None:
91127c200437 Uploaded
iuc
parents:
diff changeset
226 cmd += ' --memenmotifs %d' % args.memenmotifs
91127c200437 Uploaded
iuc
parents:
diff changeset
227 if args.mememinw is not None:
91127c200437 Uploaded
iuc
parents:
diff changeset
228 cmd += ' --mememinw %d' % args.mememinw
91127c200437 Uploaded
iuc
parents:
diff changeset
229 if args.mememaxw is not None:
91127c200437 Uploaded
iuc
parents:
diff changeset
230 cmd += ' --mememaxw %d' % args.mememaxw
91127c200437 Uploaded
iuc
parents:
diff changeset
231 if args.nomotifs is not None:
91127c200437 Uploaded
iuc
parents:
diff changeset
232 cmd += ' --nomotifs'
91127c200437 Uploaded
iuc
parents:
diff changeset
233 if args.nomotifprior is not None:
91127c200437 Uploaded
iuc
parents:
diff changeset
234 cmd += ' --nomotifprior'
91127c200437 Uploaded
iuc
parents:
diff changeset
235 # Reporting binding events
91127c200437 Uploaded
iuc
parents:
diff changeset
236 if args.minqvalue is not None:
91127c200437 Uploaded
iuc
parents:
diff changeset
237 cmd += ' --q %4f' % args.minqvalue
91127c200437 Uploaded
iuc
parents:
diff changeset
238 if args.minfold is not None:
91127c200437 Uploaded
iuc
parents:
diff changeset
239 cmd += ' --minfold %4f' % args.minfold
91127c200437 Uploaded
iuc
parents:
diff changeset
240 if args.nodifftests is not None:
91127c200437 Uploaded
iuc
parents:
diff changeset
241 cmd += ' --nodifftests'
91127c200437 Uploaded
iuc
parents:
diff changeset
242 if args.edgerod is not None:
91127c200437 Uploaded
iuc
parents:
diff changeset
243 cmd += ' --edgerod %4f' % args.edgerod
91127c200437 Uploaded
iuc
parents:
diff changeset
244 if args.diffp is not None:
91127c200437 Uploaded
iuc
parents:
diff changeset
245 cmd += ' --diffp %4f' % args.diffp
91127c200437 Uploaded
iuc
parents:
diff changeset
246 # Output directory.
91127c200437 Uploaded
iuc
parents:
diff changeset
247 cmd += ' --out %s' % args.output_html_files_path
91127c200437 Uploaded
iuc
parents:
diff changeset
248 # Define command response buffers.
91127c200437 Uploaded
iuc
parents:
diff changeset
249 tmp_out = tempfile.NamedTemporaryFile(dir=tmp_dir).name
91127c200437 Uploaded
iuc
parents:
diff changeset
250 tmp_stdout = open(tmp_out, 'wb')
91127c200437 Uploaded
iuc
parents:
diff changeset
251 tmp_err = tempfile.NamedTemporaryFile(dir=tmp_dir).name
91127c200437 Uploaded
iuc
parents:
diff changeset
252 tmp_stderr = open(tmp_err, 'wb')
91127c200437 Uploaded
iuc
parents:
diff changeset
253 tmp_filename = tempfile.NamedTemporaryFile(dir=tmp_dir).name
91127c200437 Uploaded
iuc
parents:
diff changeset
254 # Execute the command.
91127c200437 Uploaded
iuc
parents:
diff changeset
255 proc = subprocess.Popen(args=cmd, stderr=tmp_stderr, stdout=tmp_stdout, shell=True)
91127c200437 Uploaded
iuc
parents:
diff changeset
256 rc = proc.wait()
91127c200437 Uploaded
iuc
parents:
diff changeset
257 if rc != 0:
91127c200437 Uploaded
iuc
parents:
diff changeset
258 error_message = get_stderr_exception(tmp_err, tmp_stderr, tmp_out, tmp_stdout)
91127c200437 Uploaded
iuc
parents:
diff changeset
259 stop_err(error_message)
91127c200437 Uploaded
iuc
parents:
diff changeset
260 # Move each output file to the approapriate output dataset path.
91127c200437 Uploaded
iuc
parents:
diff changeset
261 output_bed = get_file_with_extension(args.output_html_files_path, 'bed')
91127c200437 Uploaded
iuc
parents:
diff changeset
262 shutil.move(os.path.join(args.output_html_files_path, output_bed), args.output_bed)
91127c200437 Uploaded
iuc
parents:
diff changeset
263 output_html = get_file_with_extension(args.output_html_files_path, 'html')
91127c200437 Uploaded
iuc
parents:
diff changeset
264 shutil.move(os.path.join(args.output_html_files_path, output_html), args.output_html)
91127c200437 Uploaded
iuc
parents:
diff changeset
265 replicates_counts = get_file_with_extension(args.output_html_files_path, 'counts')
91127c200437 Uploaded
iuc
parents:
diff changeset
266 shutil.move(os.path.join(args.output_html_files_path, replicates_counts), args.replicates_counts)
91127c200437 Uploaded
iuc
parents:
diff changeset
267 all_events_table = get_file_with_extension(args.output_html_files_path, 'table.txt')
91127c200437 Uploaded
iuc
parents:
diff changeset
268 shutil.move(os.path.join(args.output_html_files_path, all_events_table), args.all_events_table)
91127c200437 Uploaded
iuc
parents:
diff changeset
269 # Clean up.
91127c200437 Uploaded
iuc
parents:
diff changeset
270 if os.path.exists(tmp_dir):
91127c200437 Uploaded
iuc
parents:
diff changeset
271 shutil.rmtree(tmp_dir)