Mercurial > repos > pjbriggs > macs21
annotate macs21_wrapper.py @ 3:881a48588832 draft
Updated tool_dependencies.xml.
| author | pjbriggs |
|---|---|
| date | Mon, 20 Apr 2015 11:08:43 -0400 |
| parents | 15889783e759 |
| children | 0c6b14f3fefc |
| 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 | 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 | 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 | 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 | 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 | 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 | 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 | 47 try: |
|
1
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
48 int(fields[1]) |
| 0 | 49 except ValueError: |
| 50 # Integer conversion failed so comment out | |
| 51 # "bad" line instead | |
| 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 | 55 |
| 2 | 56 def make_bigwig_from_bedgraph(bedgraph_file,bigwig_file, |
| 57 chrom_sizes,working_dir=None): | |
| 58 """Make bigWig file from a bedGraph | |
| 59 | |
| 60 The protocol is: | |
| 61 | |
| 62 $ fetchChromSizes.sh mm9 > mm9.chrom.sizes | |
| 63 $ bedClip treat.bedgraph mm9.chrom.sizes treat.clipped | |
| 64 $ bedGraphToBigWig treat.clipped mm9.chrom.sizes treat.bw | |
| 65 | |
| 66 Get the binaries from | |
| 67 http://hgdownload.cse.ucsc.edu/admin/exe/linux.x86_64/ | |
| 68 | |
| 69 We skip the fetchChromSizes step if the 'chrom_sizes' | |
| 70 argument supplied a valid file with the chromosome sizes | |
| 71 for the genome build in question. | |
| 72 | |
| 73 """ | |
| 74 print "Generating bigWig from bedGraph..." | |
| 75 # Check for chromosome sizes | |
| 76 if not os.path.exists(chrom_sizes): | |
| 77 # Determine genome build | |
| 78 chrom_sizes = os.path.basename(chrom_sizes) | |
| 79 genome_build = chrom_sizes.split('.')[0] | |
| 80 print "Missing chrom sizes file, attempting to fetch for '%s'" % genome_build | |
| 81 # Run fetchChromSizes | |
| 82 chrom_sizes = os.path.join(working_dir,chrom_sizes) | |
| 83 stderr_file = os.path.join(working_dir,"fetchChromSizes.stderr") | |
| 84 cmd = "fetchChromSizes %s" % genome_build | |
| 85 print "Running %s" % cmd | |
| 86 proc = subprocess.Popen(args=cmd,shell=True,cwd=working_dir, | |
| 87 stdout=open(chrom_sizes,'wb'), | |
| 88 stderr=open(stderr_file,'wb')) | |
| 89 proc.wait() | |
| 90 # Copy stderr from fetchChromSizes for information only | |
| 91 for line in open(stderr_file,'r'): | |
| 92 print line.strip() | |
| 93 # Check that the sizes file was downloaded | |
| 94 if not os.path.exists(chrom_sizes): | |
| 95 sys.stderr.write("Failed to download chrom sizes for '%s'" % genome_build) | |
| 96 sys.exit(1) | |
| 97 # Run bedClip | |
| 98 treat_clipped = "%s.clipped" % os.path.basename(bedgraph_file) | |
| 99 cmd = "bedClip %s %s %s" % (bedgraph_file,chrom_sizes,treat_clipped) | |
| 100 print "Running %s" % cmd | |
| 101 proc = subprocess.Popen(args=cmd,shell=True,cwd=working_dir) | |
| 102 proc.wait() | |
| 103 # Check that clipped file exists | |
| 104 treat_clipped = os.path.join(working_dir,treat_clipped) | |
| 105 if not os.path.exists(treat_clipped): | |
| 106 sys.stderr.write("Failed to create clipped bed file") | |
| 107 sys.exit(1) | |
| 108 # Run bedGraphToBigWig | |
| 109 cmd = "bedGraphToBigWig %s %s %s" % (treat_clipped,chrom_sizes, | |
| 110 bigwig_file) | |
| 111 print "Running %s" % cmd | |
| 112 proc = subprocess.Popen(args=cmd,shell=True,cwd=working_dir) | |
| 113 proc.wait() | |
| 114 | |
|
1
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
115 if __name__ == "__main__": |
| 0 | 116 |
|
1
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
117 # Echo the command line |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
118 print ' '.join(sys.argv) |
| 0 | 119 |
|
1
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
120 # Initialise output files - values are set by reading from |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
121 # the command line supplied by the Galaxy wrapper |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
122 output_extra_html = None |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
123 output_extra_path = None |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
124 output_broadpeaks = None |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
125 output_gappedpeaks = None |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
126 output_narrowpeaks = None |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
127 output_treat_pileup = None |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
128 output_lambda_bedgraph = None |
| 2 | 129 output_bigwig = None |
|
1
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
130 output_xls_to_interval_peaks_file = None |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
131 output_peaks = None |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
132 output_bdgcmp = None |
| 0 | 133 |
| 2 | 134 # Other initialisations |
| 135 chrom_sizes_file = None | |
| 136 | |
|
1
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
137 # Build the MACS 2.1 command line |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
138 # 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
|
139 cmdline = ["macs2 %s -t %s" % (sys.argv[1],sys.argv[2])] |
| 0 | 140 |
|
1
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
141 # Process remaining args |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
142 for arg in sys.argv[3:]: |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
143 if arg.startswith('--format='): |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
144 # Convert format to uppercase |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
145 format_ = arg.split('=')[1].upper() |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
146 cmdline.append("--format=%s" % format_) |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
147 elif arg.startswith('--name='): |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
148 # Replace whitespace in name with underscores |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
149 experiment_name = '_'.join(arg.split('=')[1].split()) |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
150 cmdline.append("--name=%s" % experiment_name) |
| 2 | 151 elif arg.startswith('--length='): |
| 152 # Extract chromosome size file | |
| 153 chrom_sizes_file = arg.split('=')[1] | |
|
1
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
154 elif arg.startswith('--output-'): |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
155 # Handle destinations for output files |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
156 arg0,filen = arg.split('=') |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
157 if arg0 == '--output-summits': |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
158 output_summits = filen |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
159 elif arg0 == '--output-extra-files': |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
160 output_extra_html = filen |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
161 elif arg0 == '--output-extra-files-path': |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
162 output_extra_path = filen |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
163 elif arg0 == '--output-broadpeaks': |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
164 output_broadpeaks = filen |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
165 elif arg0 == '--output-gappedpeaks': |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
166 output_gappedpeaks = filen |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
167 elif arg0 == '--output-narrowpeaks': |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
168 output_narrowpeaks = filen |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
169 elif arg0 == '--output-pileup': |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
170 output_treat_pileup = filen |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
171 elif arg0 == '--output-lambda-bedgraph': |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
172 output_lambda_bedgraph = filen |
| 2 | 173 elif arg0 == '--output-bigwig': |
| 174 output_bigwig = filen | |
|
1
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
175 elif arg0 == '--output-xls-to-interval': |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
176 output_xls_to_interval_peaks_file = filen |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
177 elif arg0 == '--output-peaks': |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
178 output_peaks = filen |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
179 else: |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
180 # Pass remaining args directly to MACS |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
181 # command line |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
182 cmdline.append(arg) |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
183 |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
184 cmdline = ' '.join(cmdline) |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
185 print "Generated command line:\n%s" % cmdline |
| 0 | 186 |
|
1
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
187 # Execute MACS2 |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
188 # |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
189 # Make a working directory |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
190 working_dir = tempfile.mkdtemp() |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
191 # |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
192 # Collect stderr in a file for reporting later |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
193 stderr_filen = tempfile.NamedTemporaryFile().name |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
194 # |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
195 # Run MACS2 |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
196 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
|
197 stderr=open(stderr_filen,'wb')) |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
198 proc.wait() |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
199 |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
200 # Run R script to create PDF from model script |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
201 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
|
202 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
|
203 (experiment_name, experiment_name) |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
204 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
|
205 proc.wait() |
| 0 | 206 |
|
1
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
207 # Convert XLS to interval, if requested |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
208 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
|
209 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
|
210 if os.path.exists(peaks_xls_file): |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
211 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
|
212 header='peaks file') |
| 2 | 213 |
| 214 # Create bigWig from bedGraph, if requested | |
| 215 if output_bigwig is not None: | |
| 216 treat_bedgraph_file = os.path.join(working_dir,'%s_treat_pileup.bdg' % experiment_name) | |
| 217 if os.path.exists(treat_bedgraph_file): | |
| 218 make_bigwig_from_bedgraph(treat_bedgraph_file,output_bigwig, | |
| 219 chrom_sizes_file,working_dir) | |
|
1
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
220 |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
221 # 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
|
222 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
|
223 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
|
224 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
|
225 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
|
226 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
|
227 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
|
228 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
|
229 move_file(working_dir,"bdgcmp_out.bdg",output_bdgcmp) |
| 0 | 230 |
|
1
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
231 # 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
|
232 # 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
|
233 html_file = open(output_extra_html,'wb') |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
234 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
|
235 # Make the 'extra files' directory |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
236 os.mkdir(output_extra_path) |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
237 # Move the files |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
238 for filen in sorted(os.listdir(working_dir)): |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
239 shutil.move(os.path.join(working_dir,filen), |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
240 os.path.join(output_extra_path,filen)) |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
241 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
|
242 # All files moved, close out HTML |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
243 html_file.write( '</ul></p>\n' ) |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
244 # Append any stderr output |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
245 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
|
246 open(stderr_filen,'rb').read()) |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
247 html_file.write('</body></html>\n') |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
248 html_file.close() |
| 0 | 249 |
|
1
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
250 # Clean up the working directory and files |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
251 os.unlink(stderr_filen) |
|
d0986d2be693
Substantial reimplementation of internals, also renamed id and version.
pjbriggs
parents:
0
diff
changeset
|
252 os.rmdir(working_dir) |
