comparison cpt_phageqc_annotation/phageqc_report_464.html @ 0:c3140b08d703 draft default tip

Uploaded
author cpt
date Fri, 17 Jun 2022 13:00:50 +0000
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:c3140b08d703
1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4 <meta charset="utf-8">
5 <meta http-equiv="X-UA-Compatible" content="IE=edge">
6 <meta name="viewport" content="width=device-width, initial-scale=1">
7 <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
8 <meta name="description" content="">
9 <meta name="author" content="">
10 <title>[BICH464] Phage QC on {{record_name}} - {{score}}</title>
11 <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
12 <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap-theme.min.css">
13
14 <style type="text/css">
15 /*
16 * Base structure
17 */
18
19 /* Move down content because we have a fixed navbar that is 50px tall */
20 body {
21 padding-top: 50px;
22 }
23
24 h3:before {
25 display: block;
26 content: " ";
27 margin-top: -50px;
28 height: 50px;
29 visibility: hidden;
30 }
31
32 /*
33 * Global add-ons
34 */
35
36 .sub-header {
37 padding-bottom: 10px;
38 border-bottom: 1px solid #eee;
39 }
40
41 /*
42 * Top navigation
43 * Hide default border to remove 1px line.
44 */
45 .navbar-fixed-top {
46 border: 0;
47 }
48
49 /*
50 * Sidebar
51 */
52
53 /* Hide for mobile, show later */
54 .sidebar {
55 display: none;
56 }
57 @media (min-width: 768px) {
58 .sidebar {
59 position: fixed;
60 top: 51px;
61 bottom: 0;
62 left: 0;
63 z-index: 1000;
64 display: block;
65 padding: 20px;
66 overflow-x: hidden;
67 overflow-y: auto; /* Scrollable contents if viewport is shorter than content. */
68 background-color: #f5f5f5;
69 border-right: 1px solid #eee;
70 }
71 }
72
73 /* Sidebar navigation */
74 .nav-sidebar {
75 margin-right: -21px; /* 20px padding + 1px border */
76 margin-bottom: 20px;
77 margin-left: -20px;
78 }
79 .nav-sidebar > li > a {
80 padding-right: 20px;
81 padding-left: 20px;
82 }
83 .nav-sidebar > .active > a,
84 .nav-sidebar > .active > a:hover,
85 .nav-sidebar > .active > a:focus {
86 color: #fff;
87 background-color: #428bca;
88 }
89
90
91 /*
92 * Main content
93 */
94
95 .main {
96 padding: 20px;
97 }
98 @media (min-width: 768px) {
99 .main {
100 padding-right: 40px;
101 padding-left: 40px;
102 }
103 }
104 .main .page-header {
105 margin-top: 0;
106 }
107
108
109 /*
110 * Placeholder dashboard ideas
111 */
112
113 .placeholders {
114 margin-bottom: 30px;
115 text-align: center;
116 }
117 .placeholders h4 {
118 margin-bottom: 0;
119 }
120 .placeholder {
121 margin-bottom: 20px;
122 }
123 .placeholder img {
124 display: inline-block;
125 border-radius: 50%;
126 }
127
128
129
130
131
132
133
134 /* CUSTOM CSS */
135 .spark {
136 position: relative;
137 margin:5px;
138 }
139 .spark span {
140 padding: 0px;
141 padding-left: 20px;
142 padding-right: 20px;
143 margin: 5px;
144 position: relative;
145 }
146 .spark .plus {
147 top: -10px;
148 background: #aaaaff;
149 }
150 .spark .minus {
151 top: 10px;
152 background: #ffaaaa;
153 }
154 .plus-focus {
155 top: -10px;
156 background: blue;
157 }
158 .minus-focus {
159 top: 10px;
160 background: red;
161 }
162 </style>
163 <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
164 <!--[if lt IE 9]>
165 <script src="//oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
166 <script src="//oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
167 <![endif]-->
168 </head>
169 <body>
170
171 <nav class="navbar navbar-inverse navbar-fixed-top">
172 <div class="container-fluid">
173 <div class="navbar-header">
174 <a class="navbar-brand" href="#">[BICH464] Phage QC on {{record_name}}</a>
175 </div>
176 </div>
177 </nav>
178
179 <div class="container-fluid">
180 <div class="row">
181 <div class="col-sm-3 col-md-2 sidebar">
182 <ul class="nav nav-sidebar">
183 <li><a href="#main"><b>Overview</b></a></li>
184 <li><a href="#bad_gene_starts"><b>Bad Gene Starts</b></a></li>
185 <li><a href="#missing_rbs"><small>Missing RBS</small></a></li>
186 <li><a href="#weird_starts"><small>Unusual Start Codons</small></a></li>
187 <li><a href="#excessive_gaps"><small>Excessive Gaps</small></a></li>
188 <li><a href="#excessive_overlap"><small>Excessive Overlaps</small></a></li>
189 <!--<li><a href="#coding_density"><small>Coding Density</small></a></li>-->
190 <li><a href="#gene_model"><b>Gene Model Issues</b></a></li>
191 </ul>
192 </div>
193 <div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main" id="main">
194 <div class="jumbotron">
195 <div class="row">
196 <div class="col-sm-7">
197 <h1>Phage {{record_name}}</h1>
198 <!--<h2>Score: {{ '%d' % ((gene_model_score + coding_density + excessive_overlap_score + excessive_overlap_score + missing_rbs_score) / 5)}}</h2>-->
199 </div>
200 <!--<div class="col-sm-5">
201 <table class="table table-striped">
202 <thead>
203 <tr>
204 <th>Section</th>
205 <th>Score</th>
206 </tr>
207 </thead>
208 <tbody>
209 <tr><td>Missing RBS</td><td>{{ '%d' % missing_rbs_score }}%</td></tr>
210 <tr><td>Excessive Gaps</td><td>{{ '%d' % excessive_gap_score }}%</td></tr>
211 <tr><td>Excessive Overlap</td><td>{{ '%d' % excessive_overlap_score }}%</td></tr>
212 <tr><td>Coding Density Score</td><td>{{ '%d' % coding_density }}%</td></tr>
213 <tr><td>Coding Density Real</td><td>{{ '%0.2f' % (100 * coding_density_exact) }}%</td></tr>
214 <tr><td>Gene Model Issues</td><td>{{ '%d' % gene_model_score }}%</td></tr>
215 </tbody>
216 </table>
217 </div>-->
218 </div>
219 <div class="row">
220 <h3>Genome Overview</h3>
221 <h4>Genes</h4>
222 <ul>
223 <li>Count: {{ genome_overview.genes.count }}</li>
224 <li>Bases: {{ genome_overview.genes.bases }}</li>
225 <li>Average Length: {{ genome_overview.genes.avg_len | round | int}}</li>
226 <li>Coding Density: {{ '%0.2f' % (100 * coding_density_exact) }}%</li>
227 <li>Composition
228 <ul>
229 <li>A {{ genome_overview.genes.comp.A }}</li>
230 <li>C {{ genome_overview.genes.comp.C }}</li>
231 <li>T {{ genome_overview.genes.comp.T }}</li>
232 <li>G {{ genome_overview.genes.comp.G }}</li>
233 </ul>
234 </li>
235 </ul>
236 <h4>Overall</h4>
237 <ul>
238 <li>%GC: {{ '%0.2f' % (100 * genome_overview.overall.gc) }}%</li>
239 <li>Composition
240 <ul>
241 <li>A {{ genome_overview.overall.comp.A }}</li>
242 <li>C {{ genome_overview.overall.comp.C }}</li>
243 <li>T {{ genome_overview.overall.comp.T }}</li>
244 <li>G {{ genome_overview.overall.comp.G }}</li>
245 </ul>
246 </li>
247 </ul>
248 </div>
249 </div>
250
251 <h2 class="sub-header" id="bad_gene_starts">Gene Starts</h2>
252 <h3 id="missing_rbs">Genes Missing RBS <small>{{missing_rbs_good}} / {{missing_rbs_good + missing_rbs_bad}}</small></h3>
253 <p>The following genes have issues with their RBS.</p>
254 {% if not rbss_annotated %}
255 <p>
256 Since you have not annotated any possible RBSs, this does not count off from your overall score.
257 </p>
258 {% endif %}
259 <div class="table-responsive">
260 <table class="table table-striped">
261 <thead>
262 <tr>
263 <th>ID</th>
264 <th>Location</th>
265 <th>Error</th>
266 <th>Upstream (-{{upstream_max}} .. -{{upstream_min}})</th>
267 </tr>
268 </thead>
269 <tbody>
270 {% for row in missing_rbs %}
271 {% if "None found" in row.__message %}
272 <tr>
273 <td>{{row | nice_id | decode}}</td>
274 <td>{{row.location.start}}..{{row.location.end}} [{{row.strand}}]</td>
275 <td>None found</td>
276 <td><span style="font-family:monospace">{{row.__upstream }}</span></td>
277 </tr>
278 {% endif %}
279 {% endfor %}
280 </tbody>
281 </table>
282 </div>
283
284 <h3 id="weird_starts">Start Codon Usage</h3>
285 <p>This section covers genes with unusual start codons</p>
286 <div class="table-responsive">
287 <table class="table table-striped">
288 <thead>
289 <tr>
290 <th>Start Codon</th>
291 <th>Count</th>
292 </tr>
293 </thead>
294 <tbody>
295 {% for codon_key in weird_starts_overall_sorted_keys %}
296 <tr><td>{{ codon_key }}</td><td>{{ weird_starts_overall[codon_key] }}</td></tr>
297 {% endfor %}
298 </tbody>
299 </table>
300 </div>
301
302 <div class="table-responsive">
303 <table class="table table-striped">
304 <thead>
305 <tr>
306 <th>ID</th>
307 <th>Location</th>
308 <th>Error</th>
309 </tr>
310 </thead>
311 <tbody>
312 {% for row in weird_starts %}
313 <tr>
314 <td>{{row | nice_id| decode}}</td>
315 <td>{{row.location.start}}..{{row.location.end}} [{{row.strand}}]</td>
316 <td>{{row.qualifiers.get('note', [])}}</td>
317 </tr>
318 {% endfor %}
319 </tbody>
320 </table>
321 </div>
322
323 <h3 id="excessive_gaps">Intergenic Gaps</h3>
324 <p>Phage genomes are under pressure to maintain high coding density. Large intergenic gaps may be a sign of incorrect gene starts or missing genes.</p>
325 <div class="table-responsive">
326 <table class="table table-striped">
327 <thead>
328 <tr>
329 <th>Region</th>
330 <th>Size</th>
331 <th>Bounding Gene Transcription Direction</th>
332 <th>Message</th>
333 </tr>
334 </thead>
335 <tbody>
336 {% for row in excessive_gap %}
337 <tr>
338 <td>{{row[0]}} .. {{row[1]}}</td>
339 <td>{{row[1] - row[0]}}</td>
340 <td>{{row[2] | nice_strand}} {{row[3] | nice_strand}}</td>
341 <td>
342 {% if row[4] == 0 %}
343 {% else %}
344 {{row[4]}} possible genes found in this region
345 {% endif %}
346 </td>
347 </tr>
348 {% endfor %}
349 </tbody>
350 </table>
351 </div>
352
353 <h3 id="excessive_overlap">Overlapping Genes</h3>
354 <p>Large gene overlaps may indicate an incorrect gene start or miscalled gene.</p>
355 <div class="table-responsive">
356 <table class="table table-striped">
357 <thead>
358 <tr>
359 <th>Feature A</th>
360 <th>Feature B</th>
361 <th>Shared Region</th>
362 <th>Overlap Length</th>
363 </tr>
364 </thead>
365 <tbody>
366 {% for row in excessive_overlap %}
367 <tr>
368 <td>{{row[0] | nice_id | decode}} ({{row[0].location}})</td>
369 <td>{{row[1] | nice_id | decode}} ({{row[1].location}})</td>
370 <td>{{row[2]}}..{{row[3]}}</td>
371 <td>{{row[3] - row[2]}}bp</td>
372 </tr>
373 {% endfor %}
374 </tbody>
375 </table>
376 </div>
377 <!--<h3 id="coding_density">Coding Density Issues <small>{{ coding_density }} / 100</small></h3>
378 <div class="table-responsive">
379 <p>
380 You have a coding density score of {{ coding_density_real }} which scores
381 {{ coding_density }} / 100. Most genomes should be in the 90% to
382 100% coding density range. Your exact coding density is {{ coding_density_exact }}.
383 </p>
384 </div>-->
385
386 <h2 class="sub-header" id="gene_model">Gene Model Issues</h2>
387 <p>These issues are mostly derived from how Apollo handles the gene model. <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMsAAAAUCAYAAAAjk8nJAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4AIRECEhlCV0dQAAAPBJREFUaN7t20EKgkAUxvFnlBASiBewNm7HldA+ukQH6AhtukBH6ABdIqJtIIS6dVNdoCtMm8CN1gtb6f+3GmQ28/DjzeDoWGutAPhqQAkAnSElQB0n6M9a7ZOwoKV43/015uuWnWW2q8a3Tf1zgDML0DNpepSyvLTfhh1OFBMd34rldzEmlCw7i+eNJYrmnFmAJkXxEBH5GBrCAihDQ1gAZWg44ANKdBaghjGhuO6IbRjwS0joLIAyJOqwrBbVeHulqOieOJ6K708aQ0JnAd6SZKma5/A/C2pfjKA/Fym1t44JCxrD0heEBfgzPkoCSi/B1kHb2fpwrwAAAABJRU5ErkJggg=="></p>
388 <div class="table-responsive">
389 <table class="table table-striped">
390 <thead>
391 <tr>
392 <th>ID</th>
393 <th>Exon</th>
394 <th>CDS</th>
395 <th>Message</th>
396 </tr>
397 </thead>
398 <tbody>
399 {% for row in gene_model %}
400 <tr>
401 <td>{{row[0]}}</td>
402 <td>{{row[1].location}}</td>
403 <td>{{row[2].location}}</td>
404 <td>{{row[3]}}</td>
405 </tr>
406 {% endfor %}
407 </tbody>
408 </table>
409 </div>
410
411 </div>
412 </div>
413 </div>
414
415
416 <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
417 </body>
418 </html>
419