annotate gff2coverage.py @ 1:924fec18933e draft

Uploaded
author sebastian
date Fri, 21 Feb 2014 10:28:59 -0500
parents 0d66ec694153
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
1 '''
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
2 gff2coverage.py - compute genomic coverage of gff intervals
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
3 ===========================================================
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
4
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
5 :Author: Andreas Heger
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
6 :Release: $Id$
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
7 :Date: |today|
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
8 :Tags: Genomics Intervals Summary GFF
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
9
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
10 Purpose
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
11 -------
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
12
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
13 This script computes the genomic coverage of intervals
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
14 in a :term:`gff` formatted file. The coverage is computed
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
15 per feature.
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
16
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
17 Usage
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
18 -----
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
19
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
20 Example::
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
21
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
22 python <script_name>.py --help
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
23
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
24 Type::
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
25
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
26 python <script_name>.py --help
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
27
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
28 for command line help.
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
29
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
30 Command line options
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
31 --------------------
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
32
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
33 '''
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
34
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
35 import sys
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
36 import string
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
37 import re
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
38 import optparse
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
39 import time
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
40 import os
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
41 import shutil
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
42 import tempfile
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
43 import math
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
44 import collections
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
45
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
46 import CGAT.Experiment as E
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
47 import CGAT.IndexedFasta as IndexedFasta
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
48 import CGAT.IOTools as IOTools
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
49 import CGAT.GTF as GTF
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
50
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
51 def printValues( contig, max_size, window_size, values, options ):
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
52 """output values."""
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
53
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
54 outfile = E.openOutputFile( contig, "w" )
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
55
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
56 outfile.write( "abs_pos\trel_pos" )
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
57
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
58 for feature in options.features:
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
59 outfile.write("\tabs_%s\trel_%s" % (feature,feature) )
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
60 outfile.write("\n")
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
61
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
62 max_vv = []
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
63
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
64 for f in range(len(options.features)):
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
65 max_vv.append( float(max(map(lambda x: x[f], values ) )))
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
66
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
67 bin = 0
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
68 for vv in values:
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
69 outfile.write( "%i\t" % bin )
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
70 outfile.write( options.value_format % (float(bin) / max_size) )
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
71
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
72 for x in range(len(options.features)):
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
73 outfile.write( "\t%i\t%s" % (vv[x] ,
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
74 options.value_format % (vv[x] / max_vv[x]) ) )
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
75 outfile.write("\n" )
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
76 bin += window_size
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
77
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
78 outfile.close()
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
79
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
80 def processChunk( contig, chunk, options, fasta = None ):
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
81 """
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
82 This function requires segments to be non-overlapping.
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
83 """
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
84
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
85 if len(chunk) == 0: return
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
86
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
87 # check whether there are overlapping features or not
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
88 checked = []
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
89 for feature in chunk:
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
90 checked.append(feature)
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
91 others = [x for x in chunk if x not in checked]
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
92 for otherFeature in others:
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
93 if GTF.Overlap(feature, otherFeature):
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
94 raise ValueError( " Histogram could not be created since the file contains overlapping features! \n%s\n%s " % (feature, otherFeature) )
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
95 # clear auxiliary list
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
96 del checked[:]
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
97
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
98 # compute min_coordinate, max_coordinate for the histogram
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
99 min_coordinate = 1
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
100 max_coordinate = max( map( lambda x: x.end, chunk) )
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
101 ## compute window size
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
102 if options.window_size:
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
103 window_size = options.window_size
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
104 num_bins = int(math.ceil((float(max_coordinate) / window_size)))
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
105 elif options.num_bins and fasta:
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
106 contig_length = fasta.getLength( contig )
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
107 assert max_coordinate <= contig_length, "maximum coordinate (%i) larger than contig size (%i) for contig %s" % (max_coordinate, contig_length, contig )
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
108 max_coordinate = contig_length
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
109 window_size = int(math.floor( float(contig_length) / options.num_bins))
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
110 num_bins = options.num_bins
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
111 else:
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
112 raise ValueError("please specify a window size of provide genomic sequence with number of bins.")
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
113
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
114 values = [ [] for x in range(num_bins) ]
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
115
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
116 ## do several parses for each feature, slow, but easier to code
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
117 ## alternatively: sort by feature and location.
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
118 for feature in options.features:
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
119 total = 0
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
120 bin = 0
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
121 end = window_size
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
122 for entry in chunk:
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
123 if entry.feature != feature: continue
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
124
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
125 while end < entry.start:
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
126 values[bin].append( total )
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
127 bin += 1
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
128 end += window_size
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
129
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
130 while entry.end > end:
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
131 seg_start = max(entry.start, end - window_size)
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
132 seg_end = min(entry.end, end)
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
133 total += seg_end - seg_start
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
134 values[bin].append( total )
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
135 end += window_size
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
136 bin += 1
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
137 else:
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
138 seg_start = max(entry.start, end - window_size)
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
139 seg_end = min(entry.end, end)
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
140 total += seg_end - seg_start
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
141
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
142 while bin < num_bins:
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
143 values[bin].append(total)
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
144 bin += 1
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
145
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
146 printValues( contig, max_coordinate, window_size, values, options )
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
147
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
148 def main( argv = None ):
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
149 """script main.
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
150
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
151 parses command line options in sys.argv, unless *argv* is given.
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
152 """
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
153
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
154 if argv == None: argv = sys.argv
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
155
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
156 parser = E.OptionParser( version = "%prog version: $Id: gff2coverage.py 2781 2009-09-10 11:33:14Z andreas $", usage = globals()["__doc__"])
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
157
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
158 parser.add_option( "-g", "--genome-file", dest="genome_file", type="string",
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
159 help="filename with genome [default=%default]" )
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
160
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
161 parser.add_option( "-f", "--features", dest="features", type="string", action="append",
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
162 help="features to collect "
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
163 "[default=%default]" )
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
164
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
165 parser.add_option( "-w", "--window-size", dest="window_size", type="int",
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
166 help="window size in bp for histogram computation. "
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
167 "Determines the bin size. "
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
168 "[default=%default]" )
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
169
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
170 parser.add_option( "-b", "--num-bins", dest="num_bins", type="int",
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
171 help="number of bins for histogram computation "
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
172 "if window size is not given. "
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
173 "[default=%default]" )
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
174
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
175 parser.add_option( "-m", "--method", dest="method", type="choice",
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
176 choices = ("genomic", "histogram", ),
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
177 help="methods to apply. "
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
178 "[default=%default]" )
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
179
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
180 parser.set_defaults(
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
181 genome_file = None,
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
182 window_size = None,
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
183 num_bins = 1000,
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
184 value_format = "%6.4f",
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
185 features = [],
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
186 method = "genomic",
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
187 )
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
188
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
189 (options, args) = E.Start( parser, add_output_options = True )
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
190
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
191 if options.genome_file:
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
192 fasta = IndexedFasta.IndexedFasta( options.genome_file )
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
193 else:
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
194 fasta = None
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
195
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
196 if options.method == "histogram":
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
197
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
198 gff = GTF.readFromFile( sys.stdin )
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
199
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
200 gff.sort( lambda x,y: cmp( (x.contig, x.start), (y.contig, y.start) ) )
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
201
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
202 chunk = []
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
203 last_contig = None
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
204
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
205 for entry in gff:
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
206
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
207 if last_contig != entry.contig:
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
208 processChunk( last_contig, chunk, options, fasta )
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
209 last_contig = entry.contig
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
210 chunk = []
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
211
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
212 chunk.append( entry )
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
213
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
214 processChunk( last_contig, chunk, options, fasta )
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
215
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
216 elif options.method == "genomic":
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
217 intervals = collections.defaultdict( int )
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
218 bases = collections.defaultdict( int )
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
219 total = 0
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
220 for entry in GTF.iterator( sys.stdin ):
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
221 intervals[ (entry.contig, entry.source, entry.feature) ] += 1
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
222 bases[ (entry.contig, entry.source, entry.feature) ] += entry.end - entry.start
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
223 total += entry.end - entry.start
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
224
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
225 options.stdout.write( "contig\tsource\tfeature\tintervals\tbases" )
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
226 if fasta:
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
227 options.stdout.write( "\tpercent_coverage\ttotal_percent_coverage\n" )
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
228 else:
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
229 options.stdout.write( "\n" )
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
230
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
231 total_genome_size = sum( fasta.getContigSizes( with_synonyms = False ).values() )
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
232
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
233 for key in sorted (intervals.keys() ):
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
234 nbases = bases[key]
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
235 nintervals = intervals[key]
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
236 contig, source, feature = key
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
237 options.stdout.write( "\t".join( ( "\t".join(key),
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
238 str(nintervals),
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
239 str(nbases) ) ) )
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
240 if fasta:
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
241 options.stdout.write( "\t%f" % ( 100.0 * float(nbases) / fasta.getLength( contig )))
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
242 options.stdout.write( "\t%f\n" % ( 100.0 * float(nbases) / total_genome_size ))
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
243 else: options.stdout.write( "\n" )
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
244
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
245
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
246 E.Stop()
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
247
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
248 if __name__ == "__main__":
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
249 sys.exit( main( sys.argv) )
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
250
0d66ec694153 Uploaded test first test script
sebastian
parents:
diff changeset
251