annotate macs21_wrapper.py @ 1:d0986d2be693 draft

Substantial reimplementation of internals, also renamed id and version.
author pjbriggs
date Thu, 29 Jan 2015 11:11:21 -0500
parents fdad0c8c0957
children 15889783e759
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
1 #!/bin/env python
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
2 #
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
3 # Galaxy wrapper to run MACS 2.1
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
4 #
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
5 # Completely rewritten from the original macs2 wrapped by Ziru Zhou
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
6 # taken from http://toolshed.g2.bx.psu.edu/view/modencode-dcc/macs2
0
fdad0c8c0957 Uploaded initial version to test toolshed.
pjbriggs
parents:
diff changeset
7
1
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
8 import sys
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
9 import os
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
10 import subprocess
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
11 import tempfile
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
12 import shutil
0
fdad0c8c0957 Uploaded initial version to test toolshed.
pjbriggs
parents:
diff changeset
13
1
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
14 def move_file(working_dir,name,destination):
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
15 """Move a file 'name' from 'working_dir' to 'destination'
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
16
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
17 """
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
18 if destination is None:
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
19 # Nothing to do
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
20 return
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
21 source = os.path.join(working_dir,name)
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
22 if os.path.exists(source):
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
23 shutil.move(source,destination)
0
fdad0c8c0957 Uploaded initial version to test toolshed.
pjbriggs
parents:
diff changeset
24
1
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
25 def convert_xls_to_interval(xls_file,interval_file,header=None):
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
26 """Convert MACS XLS file to interval
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
27
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
28 From the MACS readme: "Coordinates in XLS is 1-based which is different with
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
29 BED format."
0
fdad0c8c0957 Uploaded initial version to test toolshed.
pjbriggs
parents:
diff changeset
30
1
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
31 However this function no longer performs any coordinate conversions, it
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
32 simply ensures that any blank or non-data lines are commented out
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
33
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
34 """
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
35 fp = open(interval_file,'wb')
0
fdad0c8c0957 Uploaded initial version to test toolshed.
pjbriggs
parents:
diff changeset
36 if header:
1
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
37 fp.write('#%s\n' % header)
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
38 for line in open(xls_file):
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
39 # Keep all existing comment lines
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
40 if line.startswith('#'):
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
41 fp.write(line)
0
fdad0c8c0957 Uploaded initial version to test toolshed.
pjbriggs
parents:
diff changeset
42 else:
1
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
43 # Split line into fields and test to see if
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
44 # the 'start' field is actually an integer
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
45 fields = line.split('\t')
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
46 if len(fields) > 1:
0
fdad0c8c0957 Uploaded initial version to test toolshed.
pjbriggs
parents:
diff changeset
47 try:
1
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
48 int(fields[1])
0
fdad0c8c0957 Uploaded initial version to test toolshed.
pjbriggs
parents:
diff changeset
49 except ValueError:
fdad0c8c0957 Uploaded initial version to test toolshed.
pjbriggs
parents:
diff changeset
50 # Integer conversion failed so comment out
fdad0c8c0957 Uploaded initial version to test toolshed.
pjbriggs
parents:
diff changeset
51 # "bad" line instead
fdad0c8c0957 Uploaded initial version to test toolshed.
pjbriggs
parents:
diff changeset
52 fields[0] = "#%s" % fields[0]
1
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
53 fp.write( '\t'.join( fields ) )
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
54 fp.close()
0
fdad0c8c0957 Uploaded initial version to test toolshed.
pjbriggs
parents:
diff changeset
55
1
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
56 if __name__ == "__main__":
0
fdad0c8c0957 Uploaded initial version to test toolshed.
pjbriggs
parents:
diff changeset
57
1
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
58 # Echo the command line
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
59 print ' '.join(sys.argv)
0
fdad0c8c0957 Uploaded initial version to test toolshed.
pjbriggs
parents:
diff changeset
60
1
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
61 # Initialise output files - values are set by reading from
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
62 # the command line supplied by the Galaxy wrapper
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
63 output_extra_html = None
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
64 output_extra_path = None
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
65 output_broadpeaks = None
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
66 output_gappedpeaks = None
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
67 output_narrowpeaks = None
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
68 output_treat_pileup = None
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
69 output_lambda_bedgraph = None
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
70 output_xls_to_interval_peaks_file = None
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
71 output_peaks = None
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
72 output_bdgcmp = None
0
fdad0c8c0957 Uploaded initial version to test toolshed.
pjbriggs
parents:
diff changeset
73
1
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
74 # Build the MACS 2.1 command line
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
75 # Initial arguments are always the same: command & input ChIP-seq file name
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
76 cmdline = ["macs2 %s -t %s" % (sys.argv[1],sys.argv[2])]
0
fdad0c8c0957 Uploaded initial version to test toolshed.
pjbriggs
parents:
diff changeset
77
1
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
78 # Process remaining args
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
79 for arg in sys.argv[3:]:
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
80 if arg.startswith('--format='):
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
81 # Convert format to uppercase
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
82 format_ = arg.split('=')[1].upper()
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
83 cmdline.append("--format=%s" % format_)
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
84 elif arg.startswith('--name='):
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
85 # Replace whitespace in name with underscores
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
86 experiment_name = '_'.join(arg.split('=')[1].split())
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
87 cmdline.append("--name=%s" % experiment_name)
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
88 elif arg.startswith('--output-'):
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
89 # Handle destinations for output files
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
90 arg0,filen = arg.split('=')
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
91 if arg0 == '--output-summits':
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
92 output_summits = filen
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
93 elif arg0 == '--output-extra-files':
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
94 output_extra_html = filen
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
95 elif arg0 == '--output-extra-files-path':
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
96 output_extra_path = filen
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
97 elif arg0 == '--output-broadpeaks':
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
98 output_broadpeaks = filen
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
99 elif arg0 == '--output-gappedpeaks':
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
100 output_gappedpeaks = filen
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
101 elif arg0 == '--output-narrowpeaks':
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
102 output_narrowpeaks = filen
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
103 elif arg0 == '--output-pileup':
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
104 output_treat_pileup = filen
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
105 elif arg0 == '--output-lambda-bedgraph':
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
106 output_lambda_bedgraph = filen
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
107 elif arg0 == '--output-xls-to-interval':
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
108 output_xls_to_interval_peaks_file = filen
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
109 elif arg0 == '--output-peaks':
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
110 output_peaks = filen
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
111 else:
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
112 # Pass remaining args directly to MACS
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
113 # command line
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
114 cmdline.append(arg)
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
115
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
116 cmdline = ' '.join(cmdline)
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
117 print "Generated command line:\n%s" % cmdline
0
fdad0c8c0957 Uploaded initial version to test toolshed.
pjbriggs
parents:
diff changeset
118
1
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
119 # Execute MACS2
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
120 #
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
121 # Make a working directory
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
122 working_dir = tempfile.mkdtemp()
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
123 #
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
124 # Collect stderr in a file for reporting later
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
125 stderr_filen = tempfile.NamedTemporaryFile().name
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
126 #
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
127 # Run MACS2
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
128 proc = subprocess.Popen(args=cmdline,shell=True,cwd=working_dir,
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
129 stderr=open(stderr_filen,'wb'))
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
130 proc.wait()
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
131
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
132 # Run R script to create PDF from model script
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
133 if os.path.exists(os.path.join(working_dir,"%s_model.r" % experiment_name)):
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
134 cmdline = 'R --vanilla --slave < "%s_model.r" > "%s_model.r.log"' % \
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
135 (experiment_name, experiment_name)
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
136 proc = subprocess.Popen(args=cmdline,shell=True,cwd=working_dir)
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
137 proc.wait()
0
fdad0c8c0957 Uploaded initial version to test toolshed.
pjbriggs
parents:
diff changeset
138
1
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
139 # Convert XLS to interval, if requested
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
140 if output_xls_to_interval_peaks_file is not None:
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
141 peaks_xls_file = os.path.join(working_dir,'%s_peaks.xls' % experiment_name )
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
142 if os.path.exists(peaks_xls_file):
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
143 convert_xls_to_interval(peaks_xls_file,output_xls_to_interval_peaks_file,
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
144 header='peaks file')
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
145
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
146 # Move MACS2 output files from working dir to their final destinations
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
147 move_file(working_dir,"%s_summits.bed" % experiment_name,output_summits)
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
148 move_file(working_dir,"%s_peaks.xls" % experiment_name,output_peaks)
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
149 move_file(working_dir,"%s_peaks.narrowPeak" % experiment_name,output_narrowpeaks)
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
150 move_file(working_dir,"%s_peaks.broadPeak" % experiment_name,output_broadpeaks)
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
151 move_file(working_dir,"%s_peaks.gappedPeak" % experiment_name,output_gappedpeaks)
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
152 move_file(working_dir,"%s_treat_pileup.bdg" % experiment_name,output_treat_pileup)
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
153 move_file(working_dir,"%s_control_lambda.bdg" % experiment_name,output_lambda_bedgraph)
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
154 move_file(working_dir,"bdgcmp_out.bdg",output_bdgcmp)
0
fdad0c8c0957 Uploaded initial version to test toolshed.
pjbriggs
parents:
diff changeset
155
1
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
156 # Move remaining file to the 'extra files' path and link from the HTML
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
157 # file to allow user to access them from within Galaxy
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
158 html_file = open(output_extra_html,'wb')
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
159 html_file.write('<html><head><title>Additional output created by MACS (%s)</title></head><body><h3>Additional Files:</h3><p><ul>\n' % experiment_name)
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
160 # Make the 'extra files' directory
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
161 os.mkdir(output_extra_path)
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
162 # Move the files
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
163 for filen in sorted(os.listdir(working_dir)):
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
164 shutil.move(os.path.join(working_dir,filen),
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
165 os.path.join(output_extra_path,filen))
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
166 html_file.write( '<li><a href="%s">%s</a></li>\n' % (filen,filen))
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
167 # All files moved, close out HTML
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
168 html_file.write( '</ul></p>\n' )
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
169 # Append any stderr output
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
170 html_file.write('<h3>Messages from MACS:</h3>\n<p><pre>%s</pre></p>\n' %
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
171 open(stderr_filen,'rb').read())
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
172 html_file.write('</body></html>\n')
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
173 html_file.close()
0
fdad0c8c0957 Uploaded initial version to test toolshed.
pjbriggs
parents:
diff changeset
174
1
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
175 # Clean up the working directory and files
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
176 os.unlink(stderr_filen)
d0986d2be693 Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents: 0
diff changeset
177 os.rmdir(working_dir)