view cpt_phageqc_annotation/phageqc_report_full.html @ 0:c3140b08d703 draft default tip

Uploaded
author cpt
date Fri, 17 Jun 2022 13:00:50 +0000
parents
children
line wrap: on
line source

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
    <meta name="description" content="">
    <meta name="author" content="">
    <title>Phage QC on {{record_name}} - {{score}}</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap-theme.min.css">

    <style type="text/css">
/*
 * Base structure
 */

/* Move down content because we have a fixed navbar that is 50px tall */
body {
  padding-top: 50px;
}

h3:before {
  display: block;
  content: " ";
  margin-top: -50px;
  height: 50px;
  visibility: hidden;
}

/*
 * Global add-ons
 */

.sub-header {
  padding-bottom: 10px;
  border-bottom: 1px solid #eee;
}

/*
 * Top navigation
 * Hide default border to remove 1px line.
 */
.navbar-fixed-top {
  border: 0;
}

/*
 * Sidebar
 */

/* Hide for mobile, show later */
.sidebar {
  display: none;
}
@media (min-width: 768px) {
  .sidebar {
    position: fixed;
    top: 51px;
    bottom: 0;
    left: 0;
    z-index: 1000;
    display: block;
    padding: 20px;
    overflow-x: hidden;
    overflow-y: auto; /* Scrollable contents if viewport is shorter than content. */
    background-color: #f5f5f5;
    border-right: 1px solid #eee;
  }
}

/* Sidebar navigation */
.nav-sidebar {
  margin-right: -21px; /* 20px padding + 1px border */
  margin-bottom: 20px;
  margin-left: -20px;
}
.nav-sidebar > li > a {
  padding-right: 20px;
  padding-left: 20px;
}
.nav-sidebar > .active > a,
.nav-sidebar > .active > a:hover,
.nav-sidebar > .active > a:focus {
  color: #fff;
  background-color: #428bca;
}


/*
 * Main content
 */

.main {
  padding: 20px;
}
@media (min-width: 768px) {
  .main {
    padding-right: 40px;
    padding-left: 40px;
  }
}
.main .page-header {
  margin-top: 0;
}


/*
 * Placeholder dashboard ideas
 */

.placeholders {
  margin-bottom: 30px;
  text-align: center;
}
.placeholders h4 {
  margin-bottom: 0;
}
.placeholder {
  margin-bottom: 20px;
}
.placeholder img {
  display: inline-block;
  border-radius: 50%;
}

td.moron {
    font-size: 150%;
    padding: 0px;
    color: gray;
}
.strand_emph {
    text-decoration: underline;
    color: black;
}

    </style>
    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
    <!--[if lt IE 9]>
      <script src="//oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
      <script src="//oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->
  </head>
  <body>

    <nav class="navbar navbar-inverse navbar-fixed-top">
      <div class="container-fluid">
        <div class="navbar-header">
          <a class="navbar-brand" href="#">Phage QC on {{record_name}}</a>
        </div>
      </div>
    </nav>

    <div class="container-fluid">
      <div class="row">
        <div class="col-sm-3 col-md-2 sidebar">
          <ul class="nav nav-sidebar">
            <li><a href="#main"><b>Overview</b></a></li>
            <li><a href="#bad_gene_starts"><b>Bad Gene Starts</b></a></li>
            <li><a href="#missing_rbs"><small>Missing RBS</small></a></li>
            <li><a href="#weird_starts"><small>Unusual Start Codons</small></a></li>
            <li><a href="#excessive_gaps"><small>Excessive Gaps</small></a></li>
            <li><a href="#excessive_overlap"><small>Excessive Overlaps</small></a></li>
            <!--<li><a href="#coding_density"><small>Coding Density</small></a></li>-->
            <li><a href="#antisense"><b>Antisense Genes</b></a></li>
            <li><a href="#morons"><small>Possible Morons</small></a></li>
            <li><a href="#annotations"><b>Annotation Issues</b></a></li>
            <li><a href="#missing_product"><small>Missing Product Tags</small></a></li>
          </ul>
        </div>
        <div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main" id="main">
            <div class="jumbotron">
                <div class="row">
                    <div class="col-sm-7">
                        <h1>Phage {{record_name}}</h1>
                        <!--<h2>Score: {{score}}/100</h2>-->
                    </div>
                    <!--<div class="col-sm-5">
                        <table class="table table-striped">
                            <thead>
                                <tr>
                                    <th>Section</th>
                                    <th>Score</th>
                                </tr>
                            </thead>
                            <tbody>
                                <tr><td>Missing RBS</td><td>{{ '%d' % missing_rbs_score }}%</td></tr>
                                <tr><td>Excessive Gaps</td><td>{{ '%d' % excessive_gap_score }}%</td></tr>
                                <tr><td>Excessive Overlap</td><td>{{ '%d' % excessive_overlap_score }}%</td></tr>
                                <tr><td>Coding Density Score</td><td>{{ '%d' % coding_density }}%</td></tr>
                                <tr><td>Possible Morons</td><td>{{ '%d' % (100 * morons_good / (morons_good + morons_bad))}}%</td></tr>
                                <tr><td>Missing Product Tags</td><td>{{ '%d' % (100 * missing_tags_good / (missing_tags_good + missing_tags_bad))}}%</td></tr>
                            </tbody>
                        </table>
                    </div>-->
                </div>
            </div>

          <h2 class="sub-header" id="bad_gene_starts">Gene Starts</h2>
          <h3 id="missing_rbs">Genes missing RBS <small>{{missing_rbs_good}} / {{missing_rbs_good + missing_rbs_bad}}</small></h3>
          <p>The following genes have issues with their RBS.</p>
          {% if not rbss_annotated %}
          <p>
            Since you have not annotated any possible RBSs, this does not count off from your overall score.
          </p>
          {% endif %}
          <div class="table-responsive">
            <table class="table table-striped">
              <thead>
                <tr>
                  <th>Feature Type</th>
                  <th>ID</th>
                  <th>Location</th>
                  <th>Error</th>
                  <th>Upstream (-{{upstream_max}} .. -{{upstream_min}})</th>
                </tr>
              </thead>
              <tbody>
                {% for row in missing_rbs %}
                <tr>
                    <td>{{row.type}}</td>
                    <td>{{row.id}}</td>
                    <td>{{row.location.start}}..{{row.location.end}} [{{row.strand}}]</td>
                    <td>{{row.__message}}</td>
                    <td><span style="font-family:monospace">{{row.__upstream}}</span></td>
                </tr>
                {% endfor %}
              </tbody>
            </table>
          </div>

          <h3 id="weird_starts">Start Codon Usage</h3>
          <p>This section covers genes with unusual start codons</p>
          <div class="table-responsive">
            <table class="table table-striped">
              <thead>
                <tr>
                  <th>Start Codon</th>
                  <th>Count</th>
                </tr>
              </thead>
              <tbody>
                  {% for codon_key in weird_starts_overall_sorted_keys %}
                  <tr><td>{{ codon_key }}</td><td>{{ weird_starts_overall[codon_key] }}</td></tr>
                  {% endfor %}
              </tbody>
            </table>
          </div>

          <div class="table-responsive">
            <table class="table table-striped">
              <thead>
                <tr>
                  <th>Feature Type</th>
                  <th>ID</th>
                  <th>Location</th>
                  <th>Error</th>
                </tr>
              </thead>
              <tbody>
                {% for row in weird_starts %}
                <tr>
                    <td>{{row.type}}</td>
                    <td>{{row.id}}</td>
                    <td>{{row.location.start}}..{{row.location.end}} [{{row.strand}}]</td>
                    <td>{{row.__error}}</td>
                </tr>
                {% endfor %}
              </tbody>
            </table>
          </div>

          <h3 id="excessive_gaps">Intergenic Gaps</h3>
          <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>
          <div class="table-responsive">
            <table class="table table-striped">
              <thead>
                <tr>
                  <th>Region</th>
                  <th>Size</th>
                  <th>Bounding Gene Transcription Direction</th>
                  <th>Message</th>
                </tr>
              </thead>
              <tbody>
                {% for row in excessive_gap %}
                <tr>
                    <td>{{row[0]}} .. {{row[1]}}</td>
                    <td>{{row[1] - row[0]}}</td>
                    <td>{{row[2] | nice_strand}} {{row[3] | nice_strand}}</td>
                    <td>
                        {% if row[4] == 0 %}
                        {% else %}
                        {{row[4]}} ORFs found in this region
                        {% endif %}
                    </td>
                </tr>
                {% endfor %}
              </tbody>
            </table>
          </div>

          <h3 id="excessive_overlap">Overlapping Genes </h3>
          <p>Large gene overlaps may indicate an incorrect gene start or miscalled gene.</p>
          <div class="table-responsive">
            <table class="table table-striped">
              <thead>
                <tr>
                  <th>Feature A</th>
                  <th>Feature B</th>
                  <th>Shared Region</th>
                  <th>Overlap Length</th>
                </tr>
              </thead>
              <tbody>
                {% for row in excessive_overlap %}
                <tr>
                    <td>{{row[0].id}} ({{row[0].location}})</td>
                    <td>{{row[1].id}} ({{row[1].location}})</td>
                    <td>{{row[2]}}..{{row[3]}}</td>
                    <td>{{row[3] - row[2]}} bp</td>
                </tr>
                {% endfor %}
              </tbody>
            </table>
          </div>
          <!--<h3 id="coding_density">Coding Density Issues <small>{{ coding_density }} / 100</small></h3>
          <div class="table-responsive">
            <p>
            You have a coding density of {{ coding_density_real }} which scores
            {{ coding_density }} / 100. Most genomes should be in the 90% to
            100% coding density range
            </p>
          </div>-->

          <h2 class="sub-header" id="antisense">Antisense Genes</h2>
          <h3 id="morons">Possible Morons <small>{{morons_good}} / {{morons_good + morons_bad}} (Doesn't count towards score)</small></h3>
          <div class="table-responsive">
            <table class="table table-striped">
              <thead>
                <tr>
                  <th>Feature</th>
                  <th>RBS</th>
                  <th>Surrounding Features</th>
                </tr>
              </thead>
              <tbody>
                {% for row in morons %}
                <tr>
                    <td>{{row[0].id}}</td>
                    <td>{{row[3]}}</td>
                    <td class="moron">
                        {% for x in row[1] %}
                            {{ x | nice_strand }}
                        {% endfor %}
                        <span class="strand_emph">{{ row[0].strand | nice_strand }}</span>
                        {% for x in row[2] %}
                            {{ x | nice_strand }}
                        {% endfor %}
                        </div>
                    </td>
                </tr>
                {% endfor %}
              </tbody>
            </table>
          </div>


          <h2 class="sub-header" id="annotations">Annotation Issues</h2>
          <h3 id="missing_product">Missing Product Tags <small>{{missing_tags_good}} / {{missing_tags_good + missing_tags_bad}}</small></h3>
          <div class="table-responsive">
            <table class="table table-striped">
              <thead>
                <tr>
                  <th>Feature</th>
                  <th>Qualifiers</th>
                </tr>
              </thead>
              <tbody>
                {% for row in missing_tags %}
                <tr>
                    <td>{{row.id}}</td>
                    <td>
                        {% for key in row.qualifiers %}
                        {{ key }}
                        <ul>
                            {% for value in row.qualifiers[key] %}
                            <li>{{value}}</li>
                            {% endfor %}
                        </ul>
                        {% endfor %}
                    </td>
                </tr>
                {% endfor %}
              </tbody>
            </table>
          </div>





        </div>
      </div>
    </div>


    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
  </body>
</html>