From 89bc7d9abd154b193772c32c35a997bd7bb8ac0a Mon Sep 17 00:00:00 2001
From: Peter van 't Hof <p.j.van_t_hof@lumc.nl>
Date: Mon, 2 Nov 2015 09:30:26 +0100
Subject: [PATCH] Added sunburst plot to mapping and shiva

---
 .../sasc/biopet/pipelines/gears/gearsSunburst.ssp   |  4 ++--
 .../sasc/biopet/pipelines/gears/GearsReport.scala   |  2 --
 .../biopet/pipelines/mapping/MappingReport.scala    | 13 +++++++++++--
 .../sasc/biopet/pipelines/shiva/ShivaReport.scala   | 10 +++++++++-
 4 files changed, 22 insertions(+), 7 deletions(-)

diff --git a/public/gears/src/main/resources/nl/lumc/sasc/biopet/pipelines/gears/gearsSunburst.ssp b/public/gears/src/main/resources/nl/lumc/sasc/biopet/pipelines/gears/gearsSunburst.ssp
index 0915decbe..0ea325108 100644
--- a/public/gears/src/main/resources/nl/lumc/sasc/biopet/pipelines/gears/gearsSunburst.ssp
+++ b/public/gears/src/main/resources/nl/lumc/sasc/biopet/pipelines/gears/gearsSunburst.ssp
@@ -57,10 +57,10 @@
 
     #{
         val rawreport = Map("kraken" -> summary.getValue(sampleId, libId, "gears", "stats", "krakenreport"))
-        val bla = ConfigUtils.mapToJson(rawreport)
+        val jsonReport = ConfigUtils.mapToJson(rawreport)
     }#
 
-        var krakenresult = JSON.parse('<%= unescape(bla) %>');
+        var krakenresult = JSON.parse('<%= unescape(jsonReport) %>');
         loadGears(krakenresult.kraken.classified);
     </script>
 
diff --git a/public/gears/src/main/scala/nl/lumc/sasc/biopet/pipelines/gears/GearsReport.scala b/public/gears/src/main/scala/nl/lumc/sasc/biopet/pipelines/gears/GearsReport.scala
index cf9a9c366..f8b367dbb 100644
--- a/public/gears/src/main/scala/nl/lumc/sasc/biopet/pipelines/gears/GearsReport.scala
+++ b/public/gears/src/main/scala/nl/lumc/sasc/biopet/pipelines/gears/GearsReport.scala
@@ -9,8 +9,6 @@ class GearsReport(val root: Configurable) extends ReportBuilderExtension {
 
 object GearsReport extends ReportBuilder {
 
-  // FIXME: Not yet finished
-  // TODO: Sample specific: Add summary (sunflare plot)
   // TODO: Add dustbin analysis (aggregated)
   // TODO: Add alignment stats per sample for the dustbin analysis
 
diff --git a/public/mapping/src/main/scala/nl/lumc/sasc/biopet/pipelines/mapping/MappingReport.scala b/public/mapping/src/main/scala/nl/lumc/sasc/biopet/pipelines/mapping/MappingReport.scala
index b2f1b7a84..6c8b2b500 100644
--- a/public/mapping/src/main/scala/nl/lumc/sasc/biopet/pipelines/mapping/MappingReport.scala
+++ b/public/mapping/src/main/scala/nl/lumc/sasc/biopet/pipelines/mapping/MappingReport.scala
@@ -16,7 +16,7 @@
 package nl.lumc.sasc.biopet.pipelines.mapping
 
 import nl.lumc.sasc.biopet.utils.config.Configurable
-import nl.lumc.sasc.biopet.core.report.{ ReportBuilderExtension, ReportSection, ReportPage, ReportBuilder }
+import nl.lumc.sasc.biopet.core.report._
 import nl.lumc.sasc.biopet.pipelines.bammetrics.BammetricsReport
 import nl.lumc.sasc.biopet.pipelines.flexiprep.FlexiprepReport
 
@@ -33,6 +33,11 @@ object MappingReport extends ReportBuilder {
   /** Name of report */
   val reportName = "Mapping Report"
 
+  override def extFiles = super.extFiles ++ List("js/gears.js")
+    .map(x => ExtFile("/nl/lumc/sasc/biopet/pipelines/gears/report/ext/" + x, x))
+
+  def krakenExecuted = summary.getValue(sampleId, libId, "gears", "stats", "krakenreport").isDefined
+
   /** Root page for single BamMetrcis report */
   def indexPage = {
     val skipFlexiprep = summary.getValue(sampleId, libId, "mapping", "settings", "skip_flexiprep").getOrElse(false) == true
@@ -48,7 +53,11 @@ object MappingReport extends ReportBuilder {
           "After QC fastq files" -> ReportSection("/nl/lumc/sasc/biopet/pipelines/flexiprep/flexiprepOutputfiles.ssp"))) :::
           List("Bam files per lib" -> ReportSection("/nl/lumc/sasc/biopet/pipelines/mapping/outputBamfiles.ssp", Map("sampleLevel" -> false))
           ), Map())
-      ), List(
+      ) :::
+        (if (krakenExecuted) List("Gears - Metagenomics" -> ReportPage(List(), List(
+          "Sunburst analysis" -> ReportSection("/nl/lumc/sasc/biopet/pipelines/gears/gearsSunburst.ssp"
+          )), Map()))
+        else Nil), List(
       "Report" -> ReportSection("/nl/lumc/sasc/biopet/pipelines/mapping/mappingFront.ssp")
     ) ::: bamMetricsPage.map(_.sections).getOrElse(Nil),
       Map()
diff --git a/public/shiva/src/main/scala/nl/lumc/sasc/biopet/pipelines/shiva/ShivaReport.scala b/public/shiva/src/main/scala/nl/lumc/sasc/biopet/pipelines/shiva/ShivaReport.scala
index 7e32d72fe..8749071df 100644
--- a/public/shiva/src/main/scala/nl/lumc/sasc/biopet/pipelines/shiva/ShivaReport.scala
+++ b/public/shiva/src/main/scala/nl/lumc/sasc/biopet/pipelines/shiva/ShivaReport.scala
@@ -36,6 +36,9 @@ class ShivaReport(val root: Configurable) extends ReportBuilderExtension {
 /** Object for report generation for Shiva pipeline */
 object ShivaReport extends MultisampleReportBuilder {
 
+  override def extFiles = super.extFiles ++ List("js/gears.js")
+    .map(x => ExtFile("/nl/lumc/sasc/biopet/pipelines/gears/report/ext/" + x, x))
+
   /** Root page for the shiva report */
   def indexPage = {
     val regions = regionsPage
@@ -136,10 +139,15 @@ object ShivaReport extends MultisampleReportBuilder {
 
   /** Library page */
   def libraryPage(sampleId: String, libId: String, args: Map[String, Any]): ReportPage = {
+    def krakenExecuted = summary.getValue(Some(sampleId), Some(libId), "gears", "stats", "krakenreport").isDefined
+
     ReportPage(List(
       "Alignment" -> BammetricsReport.bamMetricsPage(summary, Some(sampleId), Some(libId)),
       "QC" -> FlexiprepReport.flexiprepPage
-    ), List(
+    ) ::: (if (krakenExecuted) List("Gears - Metagenomics" -> ReportPage(List(), List(
+        "Sunburst analysis" -> ReportSection("/nl/lumc/sasc/biopet/pipelines/gears/gearsSunburst.ssp"
+        )), Map()))
+      else Nil), List(
       "Alignment" -> ReportSection("/nl/lumc/sasc/biopet/pipelines/bammetrics/alignmentSummary.ssp"),
       "QC reads" -> ReportSection("/nl/lumc/sasc/biopet/pipelines/flexiprep/flexiprepReadSummary.ssp"),
       "QC bases" -> ReportSection("/nl/lumc/sasc/biopet/pipelines/flexiprep/flexiprepBaseSummary.ssp")
-- 
GitLab