wgsHistogram.ssp 3.94 KB
Newer Older
Peter van 't Hof's avatar
Peter van 't Hof committed
1 2
#import(nl.lumc.sasc.biopet.utils.summary.db.Schema.Sample)
#import(nl.lumc.sasc.biopet.utils.summary.db.Schema.Library)
3
#import(nl.lumc.sasc.biopet.utils.summary.db.SummaryDb)
Peter van 't Hof's avatar
Peter van 't Hof committed
4 5
#import(nl.lumc.sasc.biopet.utils.summary.db.SummaryDb._)
#import(nl.lumc.sasc.biopet.utils.summary.db.SummaryDb.Implicts._)
Peter van 't Hof's avatar
Peter van 't Hof committed
6 7 8
#import(nl.lumc.sasc.biopet.core.report.ReportPage)
#import(nl.lumc.sasc.biopet.pipelines.bammetrics.BammetricsReport)
#import(java.io.File)
9 10 11
<%@ var summary: SummaryDb %>
<%@ var sampleId: Option[Int] = None %>
<%@ var libId: Option[Int] = None %>
Peter van 't Hof's avatar
Peter van 't Hof committed
12
<%@ var sampleLevel: Boolean = false %>
13
<%@ var rootPath: String %>
Peter van 't Hof's avatar
Peter van 't Hof committed
14 15 16 17
<%@ var outputDir: File %>
<%@ var showPlot: Boolean = false %>
<%@ var showTable: Boolean = true %>
<%@ var showIntro: Boolean = true%>
18 19
<%@ var runId: Int %>
<%@ var fields: List[String] = List("mean_coverage", "pct_5x", "pct_10x", "pct_15x", "pct_20x", "pct_25x", "pct_30x", "pct_40x", "pct_50x", "pct_60x", "pct_70x", "pct_80x", "pct_90x", "pct_100x")%>
20 21
<%@ var allSamples: Seq[Sample] %>
<%@ var allLibraries: Seq[Library] %>
Peter van 't Hof's avatar
Peter van 't Hof committed
22
#{
23 24 25 26
    val samples = sampleId match {
    case Some(id) => allSamples.filter(_.id == id).toList
    case _ => allSamples.toList
    }
Peter van 't Hof's avatar
Peter van 't Hof committed
27 28 29 30 31 32 33
}#
#if (showIntro)
    <br/>
    <div class="row">
    <div class="col-md-1"></div>
    <div class="col-md-6">
        <p>
Sander Bollen's avatar
Sander Bollen committed
34
            Here we show the total number of positions in the reference that are covered with a given coverage. This plot is whole-genome based, and will therefore be highly skewed in the case of an exome or targeted approach.
Peter van 't Hof's avatar
Peter van 't Hof committed
35 36 37 38 39 40
        </p>
    </div>
    </div>
#end

#if (showPlot)
41
    #{ BammetricsReport.wgsHistogramPlot(outputDir, "wgs", summary, !sampleLevel, sampleId = sampleId, libraryId = libId) }#
Peter van 't Hof's avatar
Peter van 't Hof committed
42 43 44 45 46 47 48 49 50 51

    <div class="panel-body">
    <img src="wgs.png" class="img-responsive" />
    </div>
    <div class="panel-footer">
        #if (showTable)
            <button type="button" class="btn btn-info" data-toggle="collapse" data-target="#wgsTable">Hide table</button>
        #else
            <button type="button" class="btn btn-info" data-toggle="collapse" data-target="#wgsTable">Show table</button>
        #end
52
        <a href="wgs.tsv"><button type="button" class="btn btn-info"><i class="glyphicon glyphicon-cloud-download"></i> Data points</button></a>
Peter van 't Hof's avatar
Peter van 't Hof committed
53 54 55 56 57 58 59 60 61 62 63 64 65 66
    </div>
#end

<div class="panel-body collapse #if (showTable)in#end" id="wgsTable">
<!-- Table -->
<table class="table sortable-theme-bootstrap" data-sortable>
    <thead><tr>
        <th data-sorted="true" data-sorted-direction="ascending">Sample</th>
        #if (!sampleLevel) <th>Library</th> #end
        #for (field <- fields)
            <th>${field.replaceAll("_", " ")}</th>
        #end
    </tr></thead>
    <tbody>
67
        #for (sample <- samples.sortBy(_.name))
Peter van 't Hof's avatar
Peter van 't Hof committed
68
            #{
69 70 71
                val libs: List[Option[Int]] = (libId, sampleLevel) match {
                case (_, true) => List(None)
                case (Some(_), _) => List(libId)
72
                case _ => allLibraries.filter(_.sampleId == sample.id).map(x => Some(x.id)).toList
Peter van 't Hof's avatar
Peter van 't Hof committed
73 74
                }
            }#
75
            <tr><td rowspan="${libs.size}"><a href="${rootPath}Samples/${sample.name}/index.html">${sample.name}</a></td>
Peter van 't Hof's avatar
Peter van 't Hof committed
76
            #for (libId <- libs)
77
                #{ val libName = libId.map(l => allLibraries.find(_.id == l).get.name) }#
Peter van 't Hof's avatar
Peter van 't Hof committed
78
                #if (libs.head != libId) <tr> #end
79
                    #if (!sampleLevel) <td><a href="${rootPath}Samples/${sample.name}/Libraries/${libName}/index.html">${libName}</a></td> #end
Peter van 't Hof's avatar
Peter van 't Hof committed
80
                    #{
Peter van 't Hof's avatar
Peter van 't Hof committed
81
                        val statsPaths = fields.map(x => x -> List("metrics", x.toUpperCase)).toMap
Peter van 't Hof's avatar
Peter van 't Hof committed
82
                        val results = summary.getStatKeys(runId, "bammetrics", "wgs", sample = sample.id, library = libId.map(LibraryId).getOrElse(NoLibrary), keyValues = statsPaths)
Peter van 't Hof's avatar
Peter van 't Hof committed
83
                    }#
84 85
                    #for (field <- fields)
                        <td>${results(field)}</td>
Peter van 't Hof's avatar
Peter van 't Hof committed
86 87 88 89 90 91 92 93
                    #end
                </tr>
            #end
        #end
    </tbody>
</table>

</div>