[% # FOREACH row IN vep_data; '<pre>'; row; '</pre>'; END %]
[% # PROCESS dumper.tt dump = params %]
[% # PROCESS dumper.tt dump = vars.results.keys %]
[% # PROCESS dumper.tt dump = vars.results.data %]
[% # PROCESS dumper.tt dump = vars.results.samples %]
[% # PROCESS dumper.tt dump = vars.results.exon_ref %]
[% # PROCESS dumper.tt dump = vars.results.vep_data %]
[% # PROCESS dumper.tt dump = natural_sort([1,3,'d','a']) %]
[%
data_src = params.data_src;
matches = vars.results.data.counts.matches || 0;
%]
<div class="container">
<div class="row">
<h5 class="text-success">
[%
counts = vars.results.data.counts;
vep_input = counts.vep_input_rows;
duration = counts.runtime;
%]
Processed [% vep_input || 0 %] vep input rows from
[% counts.accepted_src_rows || 0 %] accepted/filtered rows from
[% counts.src_rows || 0 %] total source file rows in
[% duration | format('%.2f') %] seconds
([% vep_input / duration | format('%.1f') %] variants/sec)
</h5>
</div>
<div class="row">
<div class="span6">
<a href="#results">vep results [[% vars.results.vep_data.size || 0 %]]</a> ::
<a href="#failures">sample match failures [[% counts.no_match || 0 %]]</a> ::
<a href="#non-cds">non-CDS [[% vars.results.non_cds.size || 0 %]]</a>
</div>
<div>
[% IF vars.results.size %]
<a class="btn btn-warning" href="/download/[% data_src %]">download</a>
[% END %]
<a class="btn btn-success" href="/vep">new dataset</a>
</div>
</div>
[% IF vars.results.data.errors.size %]
<div class="row">
<div class="alert alert-error" id="vep-errs">
VEP returned the following info:
<ul>
[% FOREACH e IN vars.results.data.errors %]
<li>[% e %]</li>
[% END %]
</ul>
</div>
</div>
[% END %]
<div class="row">
<div class="span5 text-warning small">
transcript db: [% params.db %]
</div>
</div>
<div class="row">
<div class="span5 text-warning small">
API version: [% vars.api_version %]
</div>
</div>
<div class="row">
<h2>Sample results for data src "[% data_src %]" [[% matches %]]</h2>
</div>
[%
BLOCK vep_count;
'VEP entry count - reflecting variants in nucleotide position in CDS '
_ '& amino acid position in protein, or in sift/polyphen scores';
END;
BLOCK freq; 'proportion of samples in miseq run containing variant'; END;
IF vars.results.samples.match.size;
%]
<div class="row">
<table class="table table-hover table-condensed">
<thead>
<tr>
<td></td>
<th>HMDS ref</th>
<th>Exon / Allele</th>
<th><span class="acronym" title="[% INCLUDE vep_count %]">VEP</span></th>
[% IF vars.results.data.variants # miseq data %]
<th><span class="acronym" title="[% INCLUDE freq %]">Freq</span></th>
[% END %]
<th>Result</th>
<th>Filter</th>
<th>Consequence</th>
<th>CDS</th>
<th>Protein</th>
<th>Existing variation</th>
[% IF params.sift %]<th>SIFT</th>[% END %]
[% IF params.polyphen %]<th>PolyPhen</th>[% END %]
</tr>
</thead>
[% i = 0 %]
[% FOREACH lab_number IN nsort_labno(vars.results.samples.match.keys);
# PROCESS dumper.tt dump = pair;
location_data = vars.results.samples.match.item(lab_number);
# PROCESS dumper.tt dump = location_data;
FOREACH pair IN location_data; # PROCESS dumper.tt dump = pair;
location = pair.key; # PROCESS dumper.tt dump = location;
result = pair.value; # PROCESS dumper.tt dump = result;
vep_data = vars.results.exon_ref.item(location);
# PROCESS dumper.tt dump = vep_data;
FOREACH entry IN result; # PROCESS dumper.tt dump = entry;
%]
<tr>
<td align="right">[% i = i + 1; i; # loop-within-loop %]</td>
<td>[% entry.lab_no %]</td>
<td><a href="#[% vep_data.exon_id.replace(' ', '_') %]">
[% vep_data.exon_id %]</a>
</td>
<td>[% entry.vep_row_count %]</td>
[% IF vars.results.data.variants; # miseq data
n = vars.results.data.variants.item(vep_data.exon_id);
total = vars.results.data.total;
percent = 100 * n / total;
%]
<td>[% n %] / [% total %] [[% percent | format('%2d') %]%]</td>
[% END %]
<td>[% entry.result %]% of [% entry.read %]</td>
<td>[% entry.filter %]</td>
<td>[% vep_data.consequence %]</td>
<td>[% vep_data.cds %]</td>
<td class="[% vep_data.consequence.match('synonymous_variant')
? 'grey' : 'normal' %]">[% vep_data.protein %]</td>
[% IF params.sift; class = vep_data.sift.match('deleterious')
? 'highlight' : 'normal' %]
<td class="[% class %]">[% vep_data.sift %]</td>
[% END %]
[% IF params.polyphen; class = vep_data.polyphen.match('damaging')
? 'highlight' : 'normal' %]
<td class="[% class %]">[% vep_data.polyphen %]</td>
[% END %]
<td>
[% IF vep_data.variation AND vep_data.variation.length > 30 %]
<span class="acronym" title="[% vep_data.variation | html %]">
[% vep_data.variation | truncate(30) | html %]
</span>
[% ELSE; vep_data.variation; END %]
</td>
</tr>
[% END; END; END %]
</table>
</div>
[% END %]
<div class="row">
<h2><a name="failures">
Sample match failures [[% vars.results.data.counts.no_match || 0 %]]</a>
</h2>
</div>
[% IF vars.results.data.counts.no_match %]
<div class="row">
<table class="table table-hover table-condensed">
<thead>
<tr>
<td></td>
<th>HMDS ref</th>
<th>Exon / Allele</th>
<th><span class="acronym" title="[% INCLUDE vep_count %]">VEP</span></th>
<th>Consequence</th>
<th>Existing</th>
<th>Other</th>
</tr>
</thead>
[% i = 0 %]
[% FOREACH lab_number IN nsort_labno(vars.results.samples.no_match.keys);
# PROCESS dumper.tt dump = pair;
location_data = vars.results.samples.no_match.item(lab_number);
# PROCESS dumper.tt dump = location_data;
FOREACH pair IN location_data; # PROCESS dumper.tt dump = entry;
location = pair.key; # PROCESS dumper.tt dump = location;
result = pair.value; # PROCESS dumper.tt dump = result;
vep_data = vars.results.exon_ref.item(location);
# PROCESS dumper.tt dump = vep;
FOREACH entry IN result; # PROCESS dumper.tt dump = entry;
%]
<tr>
<td align="right">[% i = i + 1; i; # loop-within-loop %]</td>
<td>[% entry.lab_no %]</td>
<td><a href="#[% vep_data.exon_id.replace(' ', '_') %]">
[% vep_data.exon_id %]</a>
</td>
<td>[% entry.vep_row_count %]</td>
<td>[% vep_data.consequence %]</td>
<td>[% vep_data.variation %]</td>
<td>
[% 'non-CDS' IF ( NOT vep_data.consequence AND
NOT vep_data.variation ) %]
</td>
</tr>
[% END; END; END %]
</table>
</div>
[% END %]
<div class="row">
<h2><a name="results">VEP results [[% vars.results.vep_data.size %]]</a></h2>
</div>
[% IF vars.results.vep_data.size %]
<div class="row">
<table class="table table-hover table-condensed">
<thead>
<tr>
<th></th>
<th>ID</th>
<th>Chr.</th>
<th>Start</th>
<th>End</th>
<th>Allele</th>
<th>Gene</th>
<th>Feature</th>
<th>Consequence</th>
<th>CDS</th>
<th>Protein</th>
<th>AA</th>
<th>Existing variation</th>
[%# sift & poly order dependant on VEP::_prediction_and_score() %]
[% IF params.sift %]<th>SIFT</th>[% END %]
[% IF params.polyphen %]<th>PolyPhen</th>[% END %]
<th>Extra</th>
</tr>
</thead>
[% transcripts = vars.results.data.transcripts;
# INCLUDE dumper.tt dump = transcripts %]
[% FOREACH row IN vars.results.vep_data;
gene = row.5; # INCLUDE dumper.tt dump = gene;
feature = row.6; # INCLUDE dumper.tt dump = feature;
# INCLUDE dumper.tt dump = transcripts.item(gene);
class = transcripts.$gene == feature ? 'bold' : 'normal';
%]
<tr class="[% class %]">
<td align="right">
[% IF class.match('bold') %]
<a name="[% row.0.replace(' ', '_') %]">
[% loop.count %]
</a>
[% ELSE; loop.count; END %]
</td>
[% FOREACH col IN row %]
<td>[% col | html %]</td>
[% END %]
</tr>
[% END %]
</table>
</div>
[% END %]
<div class="row">
<h2><a name="non-cds">Non-CDS VEP results [[% vars.results.non_cds.size %]]</a></h2>
</div>
[% IF vars.results.non_cds.size %]
<div class="row">
<table class="table table-hover table-condensed">
<thead>
<tr>
<th></th>
<th>ID</th>
<th>Chr.</th>
<th>Start</th>
<th>End</th>
<th>Allele</th>
</tr>
</thead>
[% FOREACH row IN vars.results.non_cds %]
<tr>
<td align="right"><a name="[% row.exon_id.replace(' ', '_') %]">
[% loop.count %]</a>
</td>
<td>[% row.exon_id %]</td>
<td>[% row.chromosome %]</td>
<td>[% row.start_point %]</td>
<td>[% row.end_point %]</td>
<td>[% row.allele %]</td>
</tr>
[% END %]
</table>
</div>
[% END %]
</div>