annotate rlGAT/gat-great.py @ 11:53487f21c0d5 draft

Uploaded
author fubar
date Thu, 29 Aug 2013 01:57:54 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
11
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
1 ################################################################################
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
2 #
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
3 # MRC FGU Computational Genomics Group
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
4 #
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
5 # $Id: script_template.py 2871 2010-03-03 10:20:44Z andreas $
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
6 #
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
7 # Copyright (C) 2009 Andreas Heger
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
8 #
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
9 # This program is free software; you can redistribute it and/or
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
10 # modify it under the terms of the GNU General Public License
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
11 # as published by the Free Software Foundation; either version 2
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
12 # of the License, or (at your option) any later version.
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
13 #
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
14 # This program is distributed in the hope that it will be useful,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
15 # but WITHOUT ANY WARRANTY; without even the implied warranty of
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
16 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
17 # GNU General Public License for more details.
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
18 #
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
19 # You should have received a copy of the GNU General Public License
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
20 # along with this program; if not, write to the Free Software
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
21 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
22 #################################################################################
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
23 '''
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
24 great - run great analysis
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
25 ==========================
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
26
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
27 :Author: Andreas Heger
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
28 :Release: $Id$
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
29 :Date: |today|
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
30 :Tags: Python
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
31
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
32 Purpose
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
33 -------
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
34
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
35 This script compares one or more genomic segments of interest
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
36 against one more other genomic annotations.
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
37
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
38 GREAT says that a segment overlaps an annotation if the midpoint
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
39 of the segment overlaps the annotation.
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
40
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
41 The GREAT analysis is done on a per-isochore basis and overall.
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
42 For the overall analysis, there is no isochore correction
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
43 as the union of all isochores is treated as a single workspace.
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
44
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
45 This script implies several counters (``--counter`` option):
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
46
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
47 binom
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
48 binomial model (as implemented by GREAT). Returns the probability
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
49 of a certain number of segments overlapping (mid-point overlap)
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
50 an annotation
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
51
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
52 hyperg
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
53 hypergeometric model. Returns the probabibility of a certain
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
54 number of nucleotides within segments overlapping an annotation.
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
55 Conceptually, all genomic positions are treated independently and
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
56 segments are fragmented into a collection of single bases that are
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
57 placed indepently. This is valid for point intervals such as SNPs,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
58 but of course ignores segment size, though it might be used as a
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
59 guide towards the expected fold enrichment, that can be computed
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
60 more accurately using :mod:`gat-run.py`
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
61
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
62 Usage
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
63 -----
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
64
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
65 Example::
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
66
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
67 python gat-run.py
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
68 --segment-file=segments.bed.gz
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
69 --workspace-file=workspace.bed.gz
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
70 --annotation-file=annotations_architecture.bed.gz
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
71
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
72 Type::
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
73
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
74 python gat-run.py --help
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
75
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
76 for command line help.
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
77
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
78 Documentation
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
79 -------------
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
80
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
81 Code
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
82 ----
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
83
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
84 '''
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
85
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
86 import os, sys, re, optparse, collections, types, glob, time
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
87 import numpy
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
88 import numpy.random
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
89
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
90 import gat
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
91 import gat.Experiment as E
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
92 import gat.IOTools as IOTools
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
93 import gat.IO as IO
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
94 import csegmentlist
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
95
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
96 import scipy.stats
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
97
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
98 GREAT_RESULT = collections.namedtuple( "GREAT",
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
99 ("track",
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
100 "annotation",
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
101 "isochore",
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
102 "counter",
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
103 "observed", # nsegments_overlapping_annotations
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
104 "expected",
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
105 "nsegments_in_workspace",
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
106 "nannotations_in_workspace",
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
107 "nsegments_overlapping_annotation",
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
108 "nannotations_overlapping_segments",
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
109 "basecoverage_intersection",
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
110 "basecoverage_segments",
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
111 "basecoverage_annotation",
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
112 "basecoverage_workspace",
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
113 "fraction_coverage_annotation",
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
114 "fold",
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
115 "pvalue",
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
116 "qvalue" ) )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
117
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
118 def main( argv ):
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
119
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
120 if not argv: argv = sys.argv
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
121
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
122 # setup command line parser
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
123 parser = optparse.OptionParser( version = "%prog version: $Id: script_template.py 2871 2010-03-03 10:20:44Z andreas $",
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
124 usage = globals()["__doc__"] )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
125
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
126 parser.add_option("-a", "--annotation-file", "--annotations", dest="annotation_files", type="string", action="append",
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
127 help="filename with annotations [default=%default]." )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
128
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
129 parser.add_option("-s", "--segment-file", "--segments", dest="segment_files", type="string", action="append",
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
130 help="filename with segments. Also accepts a glob in parentheses [default=%default]." )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
131
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
132 parser.add_option("-w", "--workspace-file", "--workspace", dest="workspace_files", type="string", action="append",
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
133 help="filename with workspace segments. Also accepts a glob in parentheses [default=%default]." )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
134
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
135 parser.add_option("-i", "--isochore-file", "--isochores", dest="isochore_files", type="string", action="append",
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
136 help="filename with isochore segments. Also accepts a glob in parentheses [default=%default]." )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
137
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
138 parser.add_option("-o", "--order", dest="output_order", type="choice",
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
139 choices = ( "track", "annotation", "fold", "pvalue", "qvalue" ),
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
140 help="order results in output by fold, track, etc. [default=%default]." )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
141
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
142 parser.add_option("-q", "--qvalue-method", dest="qvalue_method", type="choice",
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
143 choices = ( "storey", "BH", "bonferroni", "holm", "hommel", "hochberg", "BY", "none" ),
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
144 help="method to perform multiple testing correction by controlling the fdr [default=%default]." )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
145
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
146 parser.add_option( "--qvalue-lambda", dest="qvalue_lambda", type="float",
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
147 help="fdr computation: lambda [default=%default]." )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
148
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
149 parser.add_option( "--qvalue-pi0-method", dest="qvalue_pi0_method", type="choice",
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
150 choices = ("smoother", "bootstrap" ),
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
151 help="fdr computation: method for estimating pi0 [default=%default]." )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
152 parser.add_option( "--descriptions", dest="input_filename_descriptions", type="string",
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
153 help="filename mapping annotation terms to descriptions. "
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
154 " if given, the output table will contain additional columns "
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
155 " [default=%default]" )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
156
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
157 parser.add_option( "--ignore-segment-tracks", dest="ignore_segment_tracks", action="store_true",
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
158 help="ignore segment tracks - all segments belong to one track [default=%default]" )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
159
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
160 parser.add_option( "--enable-split-tracks", dest="enable_split_tracks", action="store_true",
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
161 help="permit the same track to be in multiple files [default=%default]" )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
162
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
163 parser.add_option( "--output-bed", dest="output_bed", type="choice", action="append",
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
164 choices = ( "all",
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
165 "annotations", "segments",
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
166 "workspaces", "isochores",
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
167 "overlap" ),
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
168 help="output bed files [default=%default]." )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
169
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
170 parser.add_option( "--output-stats", dest="output_stats", type="choice", action="append",
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
171 choices = ( "all",
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
172 "annotations", "segments",
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
173 "workspaces", "isochores",
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
174 "overlap" ),
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
175 help="output overlap summary stats [default=%default]." )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
176
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
177 parser.add_option( "--restrict-workspace", dest="restrict_workspace", action="store_true",
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
178 help="restrict workspace to those segments that contain both track"
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
179 " and annotations [default=%default]" )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
180
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
181 parser.add_option( "--counter", dest="counters", type="choice", action="append",
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
182 choices = ( "binom", "hyperg" ),
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
183 help="counter to use [default=%default]." )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
184
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
185 parser.add_option( "--output-tables-pattern", dest="output_tables_pattern", type="string",
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
186 help="output pattern for result tables. Used if there are multiple counters used [default=%default]." )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
187
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
188 parser.set_defaults(
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
189 annotation_files = [],
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
190 segment_files = [],
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
191 workspace_files = [],
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
192 sample_files = [],
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
193 counters = [],
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
194 output_stats = [],
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
195 output_bed = [],
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
196 output_tables_pattern = "%s.tsv.gz",
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
197 output_order = "fold",
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
198 input_filename_counts = None,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
199 input_filename_results = None,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
200 pvalue_method = "empirical",
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
201 output_plots_pattern = None,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
202 output_samples_pattern = None,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
203 qvalue_method = "storey",
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
204 qvalue_lambda = None,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
205 qvalue_pi0_method = "smoother",
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
206 ignore_segment_tracks = False,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
207 input_filename_descriptions = None,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
208 conditional = "unconditional",
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
209 conditional_extension = None,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
210 conditional_expansion = None,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
211 restrict_workspace = False,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
212 enable_split_tracks = False,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
213 shift_expansion = 2.0,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
214 shift_extension = 0,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
215 overlap_mode = "midpoint",
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
216 truncate_workspace_to_annotations = False,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
217 )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
218
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
219 ## add common options (-h/--help, ...) and parse command line
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
220 (options, args) = E.Start( parser, argv = argv, add_output_options = True )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
221
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
222 tstart = time.time()
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
223
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
224 if len(options.counters) == 0:
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
225 options.counters.append("binom")
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
226
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
227 ############################################
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
228 segments, annotations, workspaces, isochores = IO.buildSegments( options )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
229 E.info( "intervals loaded in %i seconds" % (time.time() - tstart) )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
230
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
231 # filter segments by workspace
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
232 workspace = IO.applyIsochores( segments, annotations, workspaces, options, isochores )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
233
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
234 ############################################
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
235 description_header, descriptions, description_width = IO.readDescriptions( options )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
236
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
237 ############################################
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
238 ############################################
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
239 ## compute per contig
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
240
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
241 # compute bases covered by workspace
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
242 workspace2basecoverage, isochores = {}, []
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
243 for contig, ww in workspace.iteritems():
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
244 workspace2basecoverage[contig] = ww.sum()
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
245 isochores.append( contig )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
246
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
247 # compute percentage of bases covered by annotations in workspace
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
248 # per isochore
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
249 annotation2basecoverage = collections.defaultdict( dict )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
250 for annotation, aa in annotations.iteritems():
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
251 for isochore, a in aa.iteritems():
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
252 # need to truncate to workspace?
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
253 annotation2basecoverage[annotation][isochore] = a.sum()
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
254
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
255 results_per_contig = collections.defaultdict( list )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
256
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
257 E.info( "computing counts per isochore" )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
258 # results per isochore
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
259 def emptyResult( segment, annotation, isochore,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
260 counter,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
261 nsegments_in_workspace,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
262 basecoverage_annotation,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
263 basecoverage_workspace):
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
264 return GREAT_RESULT._make( (
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
265 segment, annotation, isochore,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
266 counter,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
267 0, # observed
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
268 0, # expected
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
269 nsegments_in_workspace,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
270 0, # nannotations_in_workspace
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
271 0, # nsegments_overlapping_annotation
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
272 0, # nannotations_overlapping_segments
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
273 0, # basecoverage_intersection
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
274 0, # basecoverage_segments
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
275 basecoverage_annotation,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
276 basecoverage_workspace,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
277 0.0,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
278 1.0,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
279 1.0,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
280 1.0 ))
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
281
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
282 for isochore in isochores:
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
283 basecoverage_workspace = workspace2basecoverage[isochore]
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
284
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
285 # iterate over all isochores
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
286 for segment, segmentdict in segments.iteritems():
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
287 try:
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
288 ss = segmentdict[isochore]
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
289 # select segments overlapping workspace
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
290 segments_in_workspace = csegmentlist.SegmentList( clone = ss )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
291 segments_in_workspace.intersect( workspace[isochore] )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
292 # number of segments in workspace
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
293 nsegments_in_workspace = len(segments_in_workspace)
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
294 except KeyError:
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
295 ss = None
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
296
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
297 basecoverage_segments = segments_in_workspace.sum()
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
298
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
299 for annotation, annotationdict in annotations.iteritems():
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
300
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
301 # if annotation != "GO:0030957": continue
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
302
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
303 try:
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
304 aa = annotationdict[isochore]
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
305 except KeyError:
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
306 aa = None
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
307
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
308 # p_A: proportion of bases covered by annotation
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
309 try:
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
310 basecoverage_annotation = annotation2basecoverage[annotation][isochore]
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
311 except KeyError:
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
312 basecoverage_annotation = 0
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
313
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
314 if ss == None or aa == None:
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
315 for counter in options.counters:
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
316 results_per_contig[(counter,segment,annotation)].append( emptyResult(segment, annotation,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
317 isochore,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
318 counter,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
319 nsegments_in_workspace,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
320 basecoverage_annotation,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
321 basecoverage_workspace ) )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
322 continue
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
323
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
324 # select segments overlapping annotation
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
325 segments_overlapping_annotation = csegmentlist.SegmentList( clone = ss )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
326 segments_overlapping_annotation.intersect( annotations[annotation][isochore] )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
327 # number of segments in annotation
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
328 nsegments_overlapping_annotation = ss.intersectionWithSegments( annotations[annotation][isochore],
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
329 mode = options.overlap_mode )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
330
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
331 # number of nucleotides at the intersection of segments, annotation and workspace
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
332 basecoverage_intersection = segments_overlapping_annotation.sum()
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
333
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
334 annotations_overlapping_segments = csegmentlist.SegmentList( clone = aa )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
335 annotations_overlapping_segments.intersect( ss )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
336 nannotations_overlapping_segments = len( annotations_overlapping_segments )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
337
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
338 nannotations_in_workspace = len( aa )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
339 if nannotations_in_workspace == 0:
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
340 for counter in options.counters:
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
341 results_per_contig[(counter,segment,annotation)].append( emptyResult(segment,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
342 annotation,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
343 isochore,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
344 counter,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
345 nsegments_in_workspace,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
346 basecoverage_annotation,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
347 basecoverage_workspace ) )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
348 continue
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
349
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
350 fraction_coverage_annotation = basecoverage_annotation / float( basecoverage_workspace )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
351 fraction_hit_annotation = float(nannotations_overlapping_segments) / nannotations_in_workspace
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
352
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
353 for counter in options.counters:
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
354 if counter.startswith( "binom" ):
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
355 # GREAT binomial probability over "regions"
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
356 # n = number of genomic regions = nannotations_in_workspace
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
357 # ppi = fraction of genome annotated by annotation = fraction_coverage_annotation
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
358 # kpi = genomic regions with annotation hit by segments = nannotations_in_segments
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
359 # sf = survival functions = 1 -cdf
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
360 # probability of observing >kpi in a sample of n where the probabily of succes is
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
361 # ppi.
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
362 pvalue = scipy.stats.binom.sf( nsegments_overlapping_annotation - 1,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
363 nsegments_in_workspace,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
364 fraction_coverage_annotation )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
365
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
366 expected = fraction_coverage_annotation * nsegments_in_workspace
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
367 observed = nsegments_overlapping_annotation
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
368
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
369 elif counter.startswith( "hyperg" ):
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
370
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
371 # hypergeometric probability over nucleotides
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
372 # Sampling without replacement
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
373 # x,M,n,M
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
374 # x = observed number of nucleotides in overlap of segments,annotations and workspace
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
375 # M = number of nucleotides in workspace
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
376 # n = number of nucleotides in annotations (and workspace)
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
377 # N = number of nucleotides in segments (and workspace)
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
378 # P-value of obtaining >x number of nucleotides overlapping.
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
379 rv = scipy.stats.hypergeom( basecoverage_workspace,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
380 basecoverage_annotation,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
381 basecoverage_segments )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
382
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
383 pvalue = rv.sf( basecoverage_intersection )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
384 expected = rv.mean()
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
385 observed = basecoverage_intersection
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
386
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
387 if expected != 0:
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
388 fold = float(observed) / expected
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
389 else:
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
390 fold = 1.0
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
391
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
392 r = GREAT_RESULT._make( (
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
393 segment, annotation, isochore,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
394 counter,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
395 observed,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
396 expected,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
397 nsegments_in_workspace,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
398 nannotations_in_workspace,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
399 nsegments_overlapping_annotation,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
400 nannotations_overlapping_segments,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
401 basecoverage_intersection,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
402 basecoverage_segments,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
403 basecoverage_annotation,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
404 basecoverage_workspace,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
405 fraction_coverage_annotation,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
406 fold,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
407 pvalue,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
408 1.0 ))
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
409 # print "\t".join( map(str, r))
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
410 results_per_contig[ (counter,segment,annotation) ].append( r )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
411
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
412 E.info( "merging counts per isochore" )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
413
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
414 # compute sums
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
415 results = []
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
416
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
417 for niteration, pair in enumerate(results_per_contig.iteritems()):
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
418
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
419 counter, segment, annotation = pair[0]
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
420 data = pair[1]
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
421
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
422 nsegments_in_workspace = sum( [x.nsegments_in_workspace for x in data ] )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
423 nsegments_overlapping_annotation = sum( [x.observed for x in data ] )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
424 nannotations_in_workspace = sum( [x.nannotations_in_workspace for x in data ] )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
425 nannotations_overlapping_segments = sum( [x.nannotations_overlapping_segments for x in data ] )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
426
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
427 basecoverage_intersection = sum( [x.basecoverage_intersection for x in data ] )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
428 basecoverage_segments = sum( [x.basecoverage_segments for x in data ] )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
429 basecoverage_annotation = sum( [x.basecoverage_annotation for x in data ] )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
430 basecoverage_workspace = sum( [x.basecoverage_workspace for x in data ] )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
431
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
432 fraction_coverage_annotation = basecoverage_annotation / float( basecoverage_workspace )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
433
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
434 if counter.startswith( "binom" ):
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
435 pvalue = scipy.stats.binom.sf( nsegments_overlapping_annotation-1,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
436 nsegments_in_workspace,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
437 fraction_coverage_annotation )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
438 expected = fraction_coverage_annotation * nsegments_in_workspace
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
439 observed = nsegments_overlapping_annotation
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
440 elif counter.startswith( "hyperg" ):
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
441 rv = scipy.stats.hypergeom( basecoverage_workspace,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
442 basecoverage_annotation,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
443 basecoverage_segments )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
444
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
445 pvalue = rv.sf( basecoverage_intersection )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
446 expected = rv.mean()
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
447 observed = basecoverage_intersection
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
448
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
449
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
450 if expected != 0:
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
451 fold = float(observed) / expected
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
452 else:
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
453 fold = 1.0
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
454
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
455 r = GREAT_RESULT._make( (
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
456 segment, annotation, "all",
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
457 counter,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
458 observed,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
459 expected,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
460 nsegments_in_workspace,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
461 nannotations_in_workspace,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
462 nsegments_overlapping_annotation,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
463 nannotations_overlapping_segments,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
464 basecoverage_intersection,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
465 basecoverage_segments,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
466 basecoverage_annotation,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
467 basecoverage_workspace,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
468 fraction_coverage_annotation,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
469 fold,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
470 pvalue,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
471 1.0 ))
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
472
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
473 results.append( r )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
474
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
475 IO.outputResults( results,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
476 options,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
477 GREAT_RESULT._fields,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
478 description_header,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
479 description_width,
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
480 descriptions )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
481
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
482 E.Stop()
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
483
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
484 if __name__ == "__main__":
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
485 sys.exit( main( sys.argv) )
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
486
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
487
53487f21c0d5 Uploaded
fubar
parents:
diff changeset
488