diff --git a/bam-metrics/src/main/scala/nl/lumc/sasc/biopet/pipelines/bammetrics/BamMetrics.scala b/bam-metrics/src/main/scala/nl/lumc/sasc/biopet/pipelines/bammetrics/BamMetrics.scala index 93055136e8cb5d89a0fa5840d72302e24b8af1e1..d0ec70ad7889ce00a45e0ced22c5bfc99e4eff5e 100644 --- a/bam-metrics/src/main/scala/nl/lumc/sasc/biopet/pipelines/bammetrics/BamMetrics.scala +++ b/bam-metrics/src/main/scala/nl/lumc/sasc/biopet/pipelines/bammetrics/BamMetrics.scala @@ -6,9 +6,9 @@ import nl.lumc.sasc.biopet.core.{ BiopetQScript, PipelineCommand } import java.io.File import nl.lumc.sasc.biopet.core.apps.{ BedToInterval, BiopetFlagstat } import nl.lumc.sasc.biopet.core.config.Configurable -import nl.lumc.sasc.biopet.function.bedtools.{ BedtoolsCoverage, BedtoolsIntersect } -import nl.lumc.sasc.biopet.function.picard.{ CollectInsertSizeMetrics, CollectGcBiasMetrics, CalculateHsMetrics, CollectAlignmentSummaryMetrics } -import nl.lumc.sasc.biopet.function.samtools.SamtoolsFlagstat +import nl.lumc.sasc.biopet.extensions.bedtools.{ BedtoolsCoverage, BedtoolsIntersect } +import nl.lumc.sasc.biopet.extensions.picard.{ CollectInsertSizeMetrics, CollectGcBiasMetrics, CalculateHsMetrics, CollectAlignmentSummaryMetrics } +import nl.lumc.sasc.biopet.extensions.samtools.SamtoolsFlagstat class BamMetrics(val root: Configurable) extends QScript with BiopetQScript { def this() = this(null) diff --git a/bam-metrics/src/main/scala/nl/lumc/sasc/biopet/pipelines/bammetrics/scripts/CoverageStats.scala b/bam-metrics/src/main/scala/nl/lumc/sasc/biopet/pipelines/bammetrics/scripts/CoverageStats.scala index 053eb84924e8a0167c5be0f3f1b21440113e1590..4039b900c45d19ca03c4bdb6f33fd12f51e385d7 100644 --- a/bam-metrics/src/main/scala/nl/lumc/sasc/biopet/pipelines/bammetrics/scripts/CoverageStats.scala +++ b/bam-metrics/src/main/scala/nl/lumc/sasc/biopet/pipelines/bammetrics/scripts/CoverageStats.scala @@ -1,7 +1,7 @@ package nl.lumc.sasc.biopet.pipelines.bammetrics.scripts import nl.lumc.sasc.biopet.core.config.Configurable -import nl.lumc.sasc.biopet.function.PythonCommandLineFunction +import nl.lumc.sasc.biopet.extensions.PythonCommandLineFunction import org.broadinstitute.gatk.utils.commandline.{ Input, Output } import java.io.File diff --git a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/function/Cat.scala b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/Cat.scala similarity index 94% rename from biopet-framework/src/main/scala/nl/lumc/sasc/biopet/function/Cat.scala rename to biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/Cat.scala index ed3bf4ff3976a58b460d3e18fd1669bcbb17de24..01fe397d47787db53ebc757fd3a0cd09c067a2e7 100644 --- a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/function/Cat.scala +++ b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/Cat.scala @@ -1,4 +1,4 @@ -package nl.lumc.sasc.biopet.function +package nl.lumc.sasc.biopet.extensions import nl.lumc.sasc.biopet.core.BiopetCommandLineFunction import nl.lumc.sasc.biopet.core.config.Configurable diff --git a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/function/Ln.scala b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/Ln.scala similarity index 98% rename from biopet-framework/src/main/scala/nl/lumc/sasc/biopet/function/Ln.scala rename to biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/Ln.scala index d0e432ba31d95c68f94b1a49526b4458c316b1ef..a1117f9f50803516d4e9c5249bf5fbdb04d6bf3b 100644 --- a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/function/Ln.scala +++ b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/Ln.scala @@ -1,4 +1,4 @@ -package nl.lumc.sasc.biopet.function +package nl.lumc.sasc.biopet.extensions import java.io.File import scala.sys.process.Process diff --git a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/function/Pbzip2.scala b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/Pbzip2.scala similarity index 96% rename from biopet-framework/src/main/scala/nl/lumc/sasc/biopet/function/Pbzip2.scala rename to biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/Pbzip2.scala index f7c4f9a0c083f5e86f5197a91e29812171e6e9b8..2cc36e6273d1d0e967ebe3b10518bda30d4a06c7 100644 --- a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/function/Pbzip2.scala +++ b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/Pbzip2.scala @@ -1,4 +1,4 @@ -package nl.lumc.sasc.biopet.function +package nl.lumc.sasc.biopet.extensions import nl.lumc.sasc.biopet.core.BiopetCommandLineFunction import nl.lumc.sasc.biopet.core.config.Configurable diff --git a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/function/PythonCommandLineFunction.scala b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/PythonCommandLineFunction.scala similarity index 96% rename from biopet-framework/src/main/scala/nl/lumc/sasc/biopet/function/PythonCommandLineFunction.scala rename to biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/PythonCommandLineFunction.scala index 4e298ee6f5a2068413a20ff67655e2a21b5027e4..44ea5884f729e8d3ac3be6285a834e61542eeccc 100644 --- a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/function/PythonCommandLineFunction.scala +++ b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/PythonCommandLineFunction.scala @@ -1,4 +1,4 @@ -package nl.lumc.sasc.biopet.function +package nl.lumc.sasc.biopet.extensions import java.io.FileOutputStream import java.io.File diff --git a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/Sha1sum.scala b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/Sha1sum.scala new file mode 100644 index 0000000000000000000000000000000000000000..699151683799e72c17e8ca1ad57d271a835e1458 --- /dev/null +++ b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/Sha1sum.scala @@ -0,0 +1,34 @@ +package nl.lumc.sasc.biopet.extensions + +import nl.lumc.sasc.biopet.core.BiopetCommandLineFunction +import nl.lumc.sasc.biopet.core.config.Configurable +import org.broadinstitute.gatk.utils.commandline._ +import java.io.File +import argonaut._, Argonaut._ +import scalaz._, Scalaz._ + +class Sha1sum(val root: Configurable) extends BiopetCommandLineFunction { + @Input(doc = "Zipped file") + var input: File = _ + + @Output(doc = "Unzipped file") + var output: File = _ + + executable = config("exe", default = "sha1sum") + + def cmdLine = required(executable) + required(input) + " > " + required(output) + + def getSummary: Json = { + return jNull + } +} + +object Sha1sum { + def apply(root:Configurable, fastqfile: File) : Sha1sum = { + val sha1sum = new Sha1sum(root) + val ext = fastqfile.getName.substring(fastqfile.getName.lastIndexOf(".")) + sha1sum.input = fastqfile + sha1sum.output = new File(fastqfile.getAbsolutePath.substring(0, fastqfile.getName.lastIndexOf(".")) + ".sha1") + return sha1sum + } +} \ No newline at end of file diff --git a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/function/Zcat.scala b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/Zcat.scala similarity index 94% rename from biopet-framework/src/main/scala/nl/lumc/sasc/biopet/function/Zcat.scala rename to biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/Zcat.scala index e342f75a4a6831efb8f439d0dff5d0cc0c7d75b9..9c7edfe04508189ec2434fb9a977094e8f685a9d 100644 --- a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/function/Zcat.scala +++ b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/Zcat.scala @@ -1,4 +1,4 @@ -package nl.lumc.sasc.biopet.function +package nl.lumc.sasc.biopet.extensions import nl.lumc.sasc.biopet.core.BiopetCommandLineFunction import nl.lumc.sasc.biopet.core.config.Configurable diff --git a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/function/bedtools/Bedtools.scala b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/bedtools/Bedtools.scala similarity index 86% rename from biopet-framework/src/main/scala/nl/lumc/sasc/biopet/function/bedtools/Bedtools.scala rename to biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/bedtools/Bedtools.scala index abe391d8384492d57816b35d660cb9951b5a2343..21b12aad00aa5675ae7d8cd499465c0012b41d51 100644 --- a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/function/bedtools/Bedtools.scala +++ b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/bedtools/Bedtools.scala @@ -1,4 +1,4 @@ -package nl.lumc.sasc.biopet.function.bedtools +package nl.lumc.sasc.biopet.extensions.bedtools import nl.lumc.sasc.biopet.core.BiopetCommandLineFunction diff --git a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/function/bedtools/BedtoolsCoverage.scala b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/bedtools/BedtoolsCoverage.scala similarity index 96% rename from biopet-framework/src/main/scala/nl/lumc/sasc/biopet/function/bedtools/BedtoolsCoverage.scala rename to biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/bedtools/BedtoolsCoverage.scala index fb26be17e342ba54fd5a5b13184f4cbffe760633..63537b2e65083a815b18b1101afadb7fd9d2e019 100644 --- a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/function/bedtools/BedtoolsCoverage.scala +++ b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/bedtools/BedtoolsCoverage.scala @@ -1,4 +1,4 @@ -package nl.lumc.sasc.biopet.function.bedtools +package nl.lumc.sasc.biopet.extensions.bedtools import nl.lumc.sasc.biopet.core.config.Configurable import org.broadinstitute.gatk.utils.commandline.{ Input, Output, Argument } diff --git a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/function/bedtools/BedtoolsIntersect.scala b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/bedtools/BedtoolsIntersect.scala similarity index 96% rename from biopet-framework/src/main/scala/nl/lumc/sasc/biopet/function/bedtools/BedtoolsIntersect.scala rename to biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/bedtools/BedtoolsIntersect.scala index 8e0f7c0cafe45e09f91d21ddecba1c5edbb75918..ff8e34f2240255fd849eb8fd979c9e5b7162ce9f 100644 --- a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/function/bedtools/BedtoolsIntersect.scala +++ b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/bedtools/BedtoolsIntersect.scala @@ -1,4 +1,4 @@ -package nl.lumc.sasc.biopet.function.bedtools +package nl.lumc.sasc.biopet.extensions.bedtools import nl.lumc.sasc.biopet.core.config.Configurable import org.broadinstitute.gatk.utils.commandline.{ Input, Output, Argument } diff --git a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/function/picard/CalculateHsMetrics.scala b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/CalculateHsMetrics.scala similarity index 98% rename from biopet-framework/src/main/scala/nl/lumc/sasc/biopet/function/picard/CalculateHsMetrics.scala rename to biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/CalculateHsMetrics.scala index a1074791737db6e12805e40224a7c1f7f7ac2b13..f11d9b264647ed40f556e952d47605633999ae07 100644 --- a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/function/picard/CalculateHsMetrics.scala +++ b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/CalculateHsMetrics.scala @@ -1,4 +1,4 @@ -package nl.lumc.sasc.biopet.function.picard +package nl.lumc.sasc.biopet.extensions.picard import java.io.File import nl.lumc.sasc.biopet.core.config.Configurable diff --git a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/function/picard/CollectAlignmentSummaryMetrics.scala b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/CollectAlignmentSummaryMetrics.scala similarity index 98% rename from biopet-framework/src/main/scala/nl/lumc/sasc/biopet/function/picard/CollectAlignmentSummaryMetrics.scala rename to biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/CollectAlignmentSummaryMetrics.scala index 013c7ef09bb1ca3b6bed7080fecefad6d8e1a955..719063ca5ee8ca95e0b3fe851a11571a0771781b 100644 --- a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/function/picard/CollectAlignmentSummaryMetrics.scala +++ b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/CollectAlignmentSummaryMetrics.scala @@ -1,4 +1,4 @@ -package nl.lumc.sasc.biopet.function.picard +package nl.lumc.sasc.biopet.extensions.picard import java.io.File import nl.lumc.sasc.biopet.core.config.Configurable diff --git a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/function/picard/CollectGcBiasMetrics.scala b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/CollectGcBiasMetrics.scala similarity index 98% rename from biopet-framework/src/main/scala/nl/lumc/sasc/biopet/function/picard/CollectGcBiasMetrics.scala rename to biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/CollectGcBiasMetrics.scala index 9ae67794f14262704ab3255ccd6f898c740dae90..162adeb1d62cdc74ab837cbea1ac49de3a72c430 100644 --- a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/function/picard/CollectGcBiasMetrics.scala +++ b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/CollectGcBiasMetrics.scala @@ -1,4 +1,4 @@ -package nl.lumc.sasc.biopet.function.picard +package nl.lumc.sasc.biopet.extensions.picard import java.io.File import nl.lumc.sasc.biopet.core.config.Configurable diff --git a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/function/picard/CollectInsertSizeMetrics.scala b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/CollectInsertSizeMetrics.scala similarity index 98% rename from biopet-framework/src/main/scala/nl/lumc/sasc/biopet/function/picard/CollectInsertSizeMetrics.scala rename to biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/CollectInsertSizeMetrics.scala index 7420e7fc6453a74c3dfcdea3a83f41af83583436..60b4375c0f5bec0567f19b6e7d10b78d7600332a 100644 --- a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/function/picard/CollectInsertSizeMetrics.scala +++ b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/CollectInsertSizeMetrics.scala @@ -1,4 +1,4 @@ -package nl.lumc.sasc.biopet.function.picard +package nl.lumc.sasc.biopet.extensions.picard import java.io.File import nl.lumc.sasc.biopet.core.config.Configurable diff --git a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/function/picard/MarkDuplicates.scala b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/MarkDuplicates.scala similarity index 98% rename from biopet-framework/src/main/scala/nl/lumc/sasc/biopet/function/picard/MarkDuplicates.scala rename to biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/MarkDuplicates.scala index 5f0e6a75bf0612e437eac235555cb77a2c85e5b1..0b4169ab138e87135640213e8c3bf224c04ce357 100644 --- a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/function/picard/MarkDuplicates.scala +++ b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/MarkDuplicates.scala @@ -1,4 +1,4 @@ -package nl.lumc.sasc.biopet.function.picard +package nl.lumc.sasc.biopet.extensions.picard import java.io.File import nl.lumc.sasc.biopet.core.config.Configurable diff --git a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/function/picard/Picard.scala b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/Picard.scala similarity index 97% rename from biopet-framework/src/main/scala/nl/lumc/sasc/biopet/function/picard/Picard.scala rename to biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/Picard.scala index 8a04fc69f41a720405b472655461ec6946e7cb9d..d626b602563eacb9522da363c64c99cfaee5c172 100644 --- a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/function/picard/Picard.scala +++ b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/Picard.scala @@ -1,4 +1,4 @@ -package nl.lumc.sasc.biopet.function.picard +package nl.lumc.sasc.biopet.extensions.picard import nl.lumc.sasc.biopet.core.BiopetJavaCommandLineFunction import org.broadinstitute.gatk.utils.commandline.{ Argument } diff --git a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/function/samtools/Samtools.scala b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/samtools/Samtools.scala similarity index 87% rename from biopet-framework/src/main/scala/nl/lumc/sasc/biopet/function/samtools/Samtools.scala rename to biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/samtools/Samtools.scala index 15fe7fc3599dcb201b7119d78479c20f145ab92d..ce9f54fd665b8a9f35c2d6cab1002fefffae54c4 100644 --- a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/function/samtools/Samtools.scala +++ b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/samtools/Samtools.scala @@ -1,4 +1,4 @@ -package nl.lumc.sasc.biopet.function.samtools +package nl.lumc.sasc.biopet.extensions.samtools import nl.lumc.sasc.biopet.core.BiopetCommandLineFunction diff --git a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/function/samtools/SamtoolsFlagstat.scala b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/samtools/SamtoolsFlagstat.scala similarity index 96% rename from biopet-framework/src/main/scala/nl/lumc/sasc/biopet/function/samtools/SamtoolsFlagstat.scala rename to biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/samtools/SamtoolsFlagstat.scala index f4b91043b79b9413946a05292a93b688fc3a5c4c..b1da1dedeb7ab4aa9ca3981d4052b792f339d5f1 100644 --- a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/function/samtools/SamtoolsFlagstat.scala +++ b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/samtools/SamtoolsFlagstat.scala @@ -1,4 +1,4 @@ -package nl.lumc.sasc.biopet.function.samtools +package nl.lumc.sasc.biopet.extensions.samtools import nl.lumc.sasc.biopet.core.config.Configurable import org.broadinstitute.gatk.utils.commandline.{ Input, Output } diff --git a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/function/seqtk/Seqtk.scala b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/seqtk/Seqtk.scala similarity index 100% rename from biopet-framework/src/main/scala/nl/lumc/sasc/biopet/function/seqtk/Seqtk.scala rename to biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/seqtk/Seqtk.scala diff --git a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/function/seqtk/SeqtkSeq.scala b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/seqtk/SeqtkSeq.scala similarity index 100% rename from biopet-framework/src/main/scala/nl/lumc/sasc/biopet/function/seqtk/SeqtkSeq.scala rename to biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/seqtk/SeqtkSeq.scala diff --git a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/function/Sha1sum.scala b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/function/Sha1sum.scala deleted file mode 100644 index a58be437c8e5e9e187196cae777fde0024cfbe1a..0000000000000000000000000000000000000000 --- a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/function/Sha1sum.scala +++ /dev/null @@ -1,18 +0,0 @@ -package nl.lumc.sasc.biopet.function - -import nl.lumc.sasc.biopet.core.BiopetCommandLineFunction -import nl.lumc.sasc.biopet.core.config.Configurable -import org.broadinstitute.gatk.utils.commandline._ -import java.io.File - -class Sha1sum(val root: Configurable) extends BiopetCommandLineFunction { - @Input(doc = "Zipped file") - var input: File = _ - - @Output(doc = "Unzipped file") - var output: File = _ - - executable = config("exe", default = "sha1sum") - - def cmdLine = required(executable) + required(input) + " > " + required(output) -} \ No newline at end of file diff --git a/flexiprep/src/main/scala/nl/lumc/sasc/biopet/function/fastq/Cutadapt.scala b/flexiprep/src/main/scala/nl/lumc/sasc/biopet/extensions/fastq/Cutadapt.scala similarity index 92% rename from flexiprep/src/main/scala/nl/lumc/sasc/biopet/function/fastq/Cutadapt.scala rename to flexiprep/src/main/scala/nl/lumc/sasc/biopet/extensions/fastq/Cutadapt.scala index bc6c65f0b3edfa87ae7a6892030d94fb4eb824c9..af3af48016bd9f4ddeb040b3dab73964ba0839db 100644 --- a/flexiprep/src/main/scala/nl/lumc/sasc/biopet/function/fastq/Cutadapt.scala +++ b/flexiprep/src/main/scala/nl/lumc/sasc/biopet/extensions/fastq/Cutadapt.scala @@ -1,4 +1,4 @@ -package nl.lumc.sasc.biopet.function.fastq +package nl.lumc.sasc.biopet.extensions.fastq import java.io.File import scala.io.Source._ @@ -6,6 +6,9 @@ import scala.sys.process._ import org.broadinstitute.gatk.utils.commandline.{ Input, Output } +import argonaut._, Argonaut._ +import scalaz._, Scalaz._ + import nl.lumc.sasc.biopet.core.BiopetCommandLineFunction import nl.lumc.sasc.biopet.core.config.Configurable import nl.lumc.sasc.biopet.function.Ln @@ -82,4 +85,14 @@ class Cutadapt(val root: Configurable) extends BiopetCommandLineFunction { } else logger.warn("File : " + contams_file + " does not exist") } } + + def getSummary: Json = { + return jNull + } +} + +object Cutadapt { + def mergeSummarys(jsons:List[Json]): Json = { + return jNull + } } diff --git a/flexiprep/src/main/scala/nl/lumc/sasc/biopet/function/fastq/Fastqc.scala b/flexiprep/src/main/scala/nl/lumc/sasc/biopet/extensions/fastq/Fastqc.scala similarity index 95% rename from flexiprep/src/main/scala/nl/lumc/sasc/biopet/function/fastq/Fastqc.scala rename to flexiprep/src/main/scala/nl/lumc/sasc/biopet/extensions/fastq/Fastqc.scala index d0ce249e06e65517f3b58c1cccbfb1f47c9cadee..0558025834a46d3d1c1c4b3f8eaff58a4f03eab9 100644 --- a/flexiprep/src/main/scala/nl/lumc/sasc/biopet/function/fastq/Fastqc.scala +++ b/flexiprep/src/main/scala/nl/lumc/sasc/biopet/extensions/fastq/Fastqc.scala @@ -1,4 +1,4 @@ -package nl.lumc.sasc.biopet.function.fastq +package nl.lumc.sasc.biopet.extensions.fastq import java.io.File import scala.io.Source @@ -6,6 +6,9 @@ import scala.sys.process._ import org.broadinstitute.gatk.utils.commandline.{ Input, Output } +import argonaut._, Argonaut._ +import scalaz._, Scalaz._ + import nl.lumc.sasc.biopet.core._ import nl.lumc.sasc.biopet.core.config._ @@ -77,6 +80,10 @@ class Fastqc(val root: Configurable) extends BiopetCommandLineFunction { return line.stripPrefix("Encoding\t") return null // Could be default Sanger with a warning in the log } + + def getSummary: Json = { + return jNull + } } object Fastqc { @@ -92,4 +99,4 @@ object Fastqc { fastqcCommand.afterGraph return fastqcCommand } -} \ No newline at end of file +} diff --git a/flexiprep/src/main/scala/nl/lumc/sasc/biopet/function/fastq/Sickle.scala b/flexiprep/src/main/scala/nl/lumc/sasc/biopet/extensions/fastq/Sickle.scala similarity index 85% rename from flexiprep/src/main/scala/nl/lumc/sasc/biopet/function/fastq/Sickle.scala rename to flexiprep/src/main/scala/nl/lumc/sasc/biopet/extensions/fastq/Sickle.scala index e29f8a5997cfe333f7bb9691613837ccf86aa564..760e1ad4b941784134fb8dfbcb1647ce1cd2cc63 100644 --- a/flexiprep/src/main/scala/nl/lumc/sasc/biopet/function/fastq/Sickle.scala +++ b/flexiprep/src/main/scala/nl/lumc/sasc/biopet/extensions/fastq/Sickle.scala @@ -1,4 +1,4 @@ -package nl.lumc.sasc.biopet.function.fastq +package nl.lumc.sasc.biopet.extensions.fastq import java.io.File import scala.io.Source._ @@ -6,6 +6,9 @@ import scala.sys.process._ import org.broadinstitute.gatk.utils.commandline.{ Input, Output, Argument } +import argonaut._, Argonaut._ +import scalaz._, Scalaz._ + import nl.lumc.sasc.biopet.core._ import nl.lumc.sasc.biopet.core.config._ @@ -30,15 +33,16 @@ class Sickle(val root: Configurable) extends BiopetCommandLineFunction { @Output(doc = "stats output") var output_stats: File = _ - + + var fastqc: Fastqc = _ + executable = config("exe", default = "sickle") var qualityType: String = config("qualitytype") - var defaultQualityType: String = _ + var defaultQualityType: String = config("defaultqualitytype", default = "sanger") override val versionRegex = """sickle version (.*)""".r override def afterGraph { - if (defaultQualityType == null) defaultQualityType = config("defaultqualitytype", default = "sanger") if (qualityType == null && defaultQualityType != null) qualityType = defaultQualityType } @@ -75,4 +79,14 @@ class Sickle(val root: Configurable) extends BiopetCommandLineFunction { } return null } + + def getSummary: Json = { + return jNull + } } + +object Sickle { + def mergeSummarys(jsons:List[Json]): Json = { + return jNull + } +} \ No newline at end of file diff --git a/flexiprep/src/main/scala/nl/lumc/sasc/biopet/pipelines/flexiprep/Flexiprep.scala b/flexiprep/src/main/scala/nl/lumc/sasc/biopet/pipelines/flexiprep/Flexiprep.scala index ec02c90feded2673a6f7cd2d309b1e02a069fa51..7a4ade0e0792ade2a93c7321b46f443295eb3fc1 100644 --- a/flexiprep/src/main/scala/nl/lumc/sasc/biopet/pipelines/flexiprep/Flexiprep.scala +++ b/flexiprep/src/main/scala/nl/lumc/sasc/biopet/pipelines/flexiprep/Flexiprep.scala @@ -10,8 +10,8 @@ import org.broadinstitute.gatk.utils.commandline.{ Input, Argument } import nl.lumc.sasc.biopet.core._ import nl.lumc.sasc.biopet.core.config._ -import nl.lumc.sasc.biopet.function._ -import nl.lumc.sasc.biopet.function.fastq._ +import nl.lumc.sasc.biopet.extensions._ +import nl.lumc.sasc.biopet.extensions.fastq._ import nl.lumc.sasc.biopet.pipelines.flexiprep.scripts._ class Flexiprep(val root: Configurable) extends QScript with BiopetQScript { @@ -31,13 +31,26 @@ class Flexiprep(val root: Configurable) extends QScript with BiopetQScript { @Argument(doc = "Skip summary", shortName = "skipsummary", required = false) var skipSummary: Boolean = false + + @Argument(doc = "Sample name", shortName = "sample", required = false) + var sampleName: String = _ + + @Argument(doc = "Library name", shortName = "library", required = false) + var libraryName: String = _ var paired: Boolean = (input_R2 != null) var R1_ext: String = _ var R2_ext: String = _ var R1_name: String = _ var R2_name: String = _ - + + var fastqc_R1: Fastqc = _ + var fastqc_R2: Fastqc = _ + var fastqc_R1_after: Fastqc = _ + var fastqc_R2_after: Fastqc = _ + + val summary = new FlexiprepSummary(this) + def init() { for (file <- configfiles) globalConfig.loadConfigFile(file) if (!skipTrim) skipTrim = config("skiptrim", default = false) @@ -60,6 +73,8 @@ class Flexiprep(val root: Configurable) extends QScript with BiopetQScript { R2_ext = R2_name.substring(R2_name.lastIndexOf("."), R2_name.size) R2_name = R2_name.substring(0, R2_name.lastIndexOf(R2_ext)) } + + summary.out = outputDir + "new.flexiprep.summary.json" } def biopetScript() { @@ -75,24 +90,28 @@ class Flexiprep(val root: Configurable) extends QScript with BiopetQScript { outputFiles += ("fastq_input_R1" -> extractIfNeeded(input_R1, outputDir)) if (paired) outputFiles += ("fastq_input_R2" -> extractIfNeeded(input_R2, outputDir)) - var fastqc_R1 = Fastqc(this, input_R1, outputDir + "/" + R1_name + ".fastqc/") + fastqc_R1 = Fastqc(this, input_R1, outputDir + "/" + R1_name + ".fastqc/") add(fastqc_R1) + summary.addFastqc(fastqc_R1) outputFiles += ("fastqc_R1" -> fastqc_R1.output) outputFiles += ("qualtype_R1" -> getQualtype(fastqc_R1, R1_name)) outputFiles += ("contams_R1" -> getContams(fastqc_R1, R1_name)) - addSeqstat(outputFiles("fastq_input_R1"), "seqstat_R1", fastqc_R1) - addSha1sum(outputFiles("fastq_input_R1"), "sha1_R1") + val sha1sum_R1 = Sha1sum(this, outputFiles("fastq_input_R1")) + add(sha1sum_R1) + summary.addSha1sum(sha1sum_R1, R2 = false, after = false) if (paired) { - var fastqc_R2 = Fastqc(this, input_R2, outputDir + "/" + R2_name + ".fastqc/") + fastqc_R2 = Fastqc(this, input_R2, outputDir + "/" + R2_name + ".fastqc/") add(fastqc_R2) + summary.addFastqc(fastqc_R2, R2 = true) outputFiles += ("fastqc_R2" -> fastqc_R2.output) outputFiles += ("qualtype_R2" -> getQualtype(fastqc_R2, R2_name)) outputFiles += ("contams_R2" -> getContams(fastqc_R2, R2_name)) - addSeqstat(outputFiles("fastq_input_R2"), "seqstat_R2", fastqc_R2) - addSha1sum(outputFiles("fastq_input_R2"), "sha1_R2") + val sha1sum_R2 = Sha1sum(this, outputFiles("fastq_input_R2")) + add(sha1sum_R2) + summary.addSha1sum(sha1sum_R2, R2 = true, after = false) } } @@ -128,7 +147,17 @@ class Flexiprep(val root: Configurable) extends QScript with BiopetQScript { var R1: File = new File(R1_in) var R2: File = new File(R2_in) - + + val seqstat_R1 = Seqstat(this, R1, fastqc_R1) + add(seqstat_R1) + summary.addSeqstat(seqstat_R1, R2 = false, after = false, chunk) + + if (paired) { + val seqstat_R2 = Seqstat(this, R2, fastqc_R2) + add(seqstat_R2) + summary.addSeqstat(seqstat_R2, R2 = true, after = false, chunk) + } + if (!skipClip) { // Adapter clipping val cutadapt_R1 = new Cutadapt(this) @@ -142,6 +171,7 @@ class Flexiprep(val root: Configurable) extends QScript with BiopetQScript { if (outputFiles.contains("contams_R1")) cutadapt_R1.contams_file = outputFiles("contams_R1") add(cutadapt_R1) + summary.addCutadapt(cutadapt_R1, R2 = false, chunk) R1 = cutadapt_R1.fastq_output if (paired) { @@ -153,6 +183,7 @@ class Flexiprep(val root: Configurable) extends QScript with BiopetQScript { outputFiles += ("cutadapt_R2_stats" -> cutadapt_R2.stats_output) if (outputFiles.contains("contams_R2")) cutadapt_R2.contams_file = outputFiles("contams_R2") add(cutadapt_R2) + summary.addCutadapt(cutadapt_R2, R2 = true, chunk) R2 = cutadapt_R2.fastq_output val fastqSync = new FastqSync(this) if (!skipTrim) fastqSync.isIntermediate = true @@ -164,12 +195,13 @@ class Flexiprep(val root: Configurable) extends QScript with BiopetQScript { fastqSync.output_R2 = swapExt(outDir, R2, R2_ext, ".sync" + R2_ext) fastqSync.output_stats = swapExt(outDir, R1, R1_ext, ".sync.stats") add(fastqSync) + summary.addFastqcSync(fastqSync, chunk) outputFiles += ("syncStats" -> fastqSync.output_stats) R1 = fastqSync.output_R1 R2 = fastqSync.output_R2 } } - + if (!skipTrim) { // Quality trimming val sickle = new Sickle(this) sickle.input_R1 = R1 @@ -186,10 +218,22 @@ class Flexiprep(val root: Configurable) extends QScript with BiopetQScript { } sickle.output_stats = swapExt(outDir, R1, R1_ext, ".trim.stats") add(sickle) + summary.addSickle(sickle, chunk) R1 = sickle.output_R1 if (paired) R2 = sickle.output_R2 } + + val seqstat_R1_after = Seqstat(this, R1, fastqc_R1) + add(seqstat_R1_after) + summary.addSeqstat(seqstat_R1_after, R2 = false, after = true, chunk) + + if (paired) { + val seqstat_R2_after = Seqstat(this, R2, fastqc_R2) + add(seqstat_R2_after) + summary.addSeqstat(seqstat_R2_after, R2 = true, after = true, chunk) + } + outputFiles += (chunk + "output_R1" -> R1) if (paired) outputFiles += (chunk + "output_R2" -> R2) return (R1, R2) @@ -234,18 +278,24 @@ class Flexiprep(val root: Configurable) extends QScript with BiopetQScript { if (paired) outputFiles += ("output_R2" -> R2) if (!skipTrim || !skipClip) { - addSeqstat(R1, "seqstat_qc_R1") - if (paired) addSeqstat(R2, "seqstat_qc_R2") - - addSha1sum(R1, "sha1_qc_R1") - if (paired) addSha1sum(R2, "sha1_qc_R2") - val fastqc_R1 = Fastqc(this, outputFiles("output_R1"), outputDir + "/" + R1_name + ".qc.fastqc/") - add(fastqc_R1) - outputFiles += ("fastqc_R1_final" -> fastqc_R1.output) + + val sha1sum_R1 = Sha1sum(this, R1) + add(sha1sum_R1) + summary.addSha1sum(sha1sum_R1, R2 = false, after = true) + if (paired) { + val sha1sum_R2 = Sha1sum(this, R2) + add(sha1sum_R2) + summary.addSha1sum(sha1sum_R2, R2 = true, after = true) + } + fastqc_R1_after = Fastqc(this, outputFiles("output_R1"), outputDir + "/" + R1_name + ".qc.fastqc/") + add(fastqc_R1_after) + summary.addFastqc(fastqc_R1_after, after = true) + outputFiles += ("fastqc_R1_final" -> fastqc_R1_after.output) if (paired) { - val fastqc_R2 = Fastqc(this, outputFiles("output_R2"), outputDir + "/" + R2_name + ".qc.fastqc/") - add(fastqc_R2) - outputFiles += ("fastqc_R2_final" -> fastqc_R2.output) + fastqc_R2_after = Fastqc(this, outputFiles("output_R2"), outputDir + "/" + R2_name + ".qc.fastqc/") + add(fastqc_R2_after) + summary.addFastqc(fastqc_R2_after, R2 = true, after = true) + outputFiles += ("fastqc_R2_final" -> fastqc_R2_after.output) } } @@ -279,26 +329,6 @@ class Flexiprep(val root: Configurable) extends QScript with BiopetQScript { return newFile } else return file } - - def addSeqstat(fastq: File, key: String, fastqc: Fastqc = null) { - val ext = fastq.getName.substring(fastq.getName.lastIndexOf(".")) - val seqstat = new Seqstat(this) - seqstat.input_fastq = fastq - seqstat.fastqc = fastqc - seqstat.out = swapExt(outputDir, fastq, ext, ".seqstats.json") - if (fastqc != null) seqstat.deps ::= fastqc.output - add(seqstat) - outputFiles += (key -> seqstat.out) - } - - def addSha1sum(fastq: File, key: String) { - val ext = fastq.getName.substring(fastq.getName.lastIndexOf(".")) - val sha1sum = new Sha1sum(this) - sha1sum.input = fastq - sha1sum.output = swapExt(outputDir, fastq, ext, ".sha1") - add(sha1sum) - outputFiles += (key -> sha1sum.output) - } } object Flexiprep extends PipelineCommand { diff --git a/flexiprep/src/main/scala/nl/lumc/sasc/biopet/pipelines/flexiprep/FlexiprepSummary.scala b/flexiprep/src/main/scala/nl/lumc/sasc/biopet/pipelines/flexiprep/FlexiprepSummary.scala new file mode 100644 index 0000000000000000000000000000000000000000..91b7d2f52a33bbb2d8cc543f35376a1a295c8797 --- /dev/null +++ b/flexiprep/src/main/scala/nl/lumc/sasc/biopet/pipelines/flexiprep/FlexiprepSummary.scala @@ -0,0 +1,212 @@ +package nl.lumc.sasc.biopet.pipelines.flexiprep + +import nl.lumc.sasc.biopet.core.config.Configurable +import nl.lumc.sasc.biopet.extensions.Sha1sum +import nl.lumc.sasc.biopet.extensions.fastq.Cutadapt +import nl.lumc.sasc.biopet.extensions.fastq.Fastqc +import nl.lumc.sasc.biopet.extensions.fastq.Sickle +import nl.lumc.sasc.biopet.pipelines.flexiprep.scripts.FastqSync +import nl.lumc.sasc.biopet.pipelines.flexiprep.scripts.Seqstat +import org.broadinstitute.gatk.queue.function.InProcessFunction +import org.broadinstitute.gatk.utils.commandline.{ Input, Output } +import java.io.File +import argonaut._, Argonaut._ +import scalaz._, Scalaz._ + +class FlexiprepSummary(val root: Configurable) extends InProcessFunction with Configurable { + this.analysisName = getClass.getSimpleName + + @Input(doc="deps") + var deps: List[File] = Nil + + @Output(doc = "Summary output", required=true) + var out: File = _ + + class Chunk { + var seqstatR1: Seqstat = _ + var seqstatR2: Seqstat = _ + var seqstatR1after: Seqstat = _ + var seqstatR2after: Seqstat = _ + + var cutadaptR1: Cutadapt = _ + var cutadaptR2: Cutadapt = _ + + var fastqSync: FastqSync = _ + + var sickle: Sickle = _ + } + + var chunks: Map[String, Chunk] = Map() + + var sha1R1: Sha1sum = _ + var sha1R2: Sha1sum = _ + var sha1R1after: Sha1sum = _ + var sha1R2after: Sha1sum = _ + + var fastqcR1: Fastqc = _ + var fastqcR2: Fastqc = _ + var fastqcR1after: Fastqc = _ + var fastqcR2after: Fastqc = _ + + var flexiprep: Flexiprep = root.asInstanceOf[Flexiprep] + + def addFastqc(fastqc:Fastqc, R2:Boolean = false, after:Boolean = false): Fastqc = { + if (!R2 && !after) this.fastqcR1 = fastqc + else if (!R2 && after) this.fastqcR1after = fastqc + else if (R2 && !after) this.fastqcR2 = fastqc + else if (R2 && after) this.fastqcR2after = fastqc + deps ::= fastqc.output + return fastqc + } + + def addSha1sum(sha1sum:Sha1sum, R2:Boolean = false, after:Boolean = false): Sha1sum = { + if (!R2 && !after) this.sha1R1 = sha1sum + else if (!R2 && after) this.sha1R1after = sha1sum + else if (R2 && !after) this.sha1R2 = sha1sum + else if (R2 && after) this.sha1R2after = sha1sum + deps ::= sha1sum.output + return sha1sum + } + + def addSeqstat(seqstat:Seqstat, R2:Boolean = false, after:Boolean = false, chunk:String=""): Seqstat = { + if (!chunks.contains(chunk)) chunks += (chunk -> new Chunk) + if (!R2 && !after) chunks(chunk).seqstatR1 = seqstat + else if (!R2 && after) chunks(chunk).seqstatR1after = seqstat + else if (R2 && !after) chunks(chunk).seqstatR2 = seqstat + else if (R2 && after) chunks(chunk).seqstatR2after = seqstat + deps ::= seqstat.out + return seqstat + } + + def addCutadapt(cutadapt:Cutadapt, R2:Boolean = false, chunk:String=""): Cutadapt = { + if (!chunks.contains(chunk)) chunks += (chunk -> new Chunk) + if (!R2) chunks(chunk).cutadaptR1 = cutadapt + else chunks(chunk).cutadaptR2 = cutadapt + deps ::= cutadapt.stats_output + return cutadapt + } + + def addSickle(sickle:Sickle, chunk:String=""): Sickle = { + if (!chunks.contains(chunk)) chunks += (chunk -> new Chunk) + chunks(chunk).sickle = sickle + deps ::= sickle.output_stats + return sickle + } + + def addFastqcSync(fastqSync:FastqSync, chunk:String=""): FastqSync = { + if (!chunks.contains(chunk)) chunks += (chunk -> new Chunk) + chunks(chunk).fastqSync = fastqSync + deps ::= fastqSync.output_stats + return fastqSync + } + + override def run { + logger.debug("Start") + val summary = ("flexiprep" := (("clipping" := !flexiprep.skipClip) ->: + ("trimming" := !flexiprep.skipTrim) ->: + ("paired" := flexiprep.paired) ->: + jEmptyObject)) ->: + ("seqstat" := seqstatSummary) ->: + ("sha1" := sha1Summary) ->: + ("fastqc" := fastqcSummary) ->: + ("clipping" :=? clipstatSummary) ->?: + ("trimming" :=? trimstatSummary) ->?: + jEmptyObject + logger.debug(summary.spaces2) // TODO: need output writter + logger.debug("Stop") + } + + def seqstatSummary(): Option[Json] = { + val R1: Json = if (chunks.size == 1) chunks.head._2.seqstatR1.getSummary + else { + val s = for ((key, value) <- chunks) yield value.seqstatR1.getSummary + Seqstat.mergeSummarys(s.toList) + } + val R2: Option[Json] = if (!flexiprep.paired) None + else if (chunks.size == 1) Option(chunks.head._2.seqstatR2.getSummary) + else { + val s = for ((key, value) <- chunks) yield value.seqstatR2.getSummary + Option(Seqstat.mergeSummarys(s.toList)) + } + val R1_proc: Option[Json] = if (flexiprep.skipClip && flexiprep.skipTrim) None + else if (chunks.size == 1) Option(chunks.head._2.seqstatR1after.getSummary) + else { + val s = for ((key, value) <- chunks) yield value.seqstatR1after.getSummary + Option(Seqstat.mergeSummarys(s.toList)) + } + val R2_proc: Option[Json] = if (!flexiprep.paired && flexiprep.skipClip && flexiprep.skipTrim) None + else if (chunks.size == 1) Option(chunks.head._2.seqstatR2after.getSummary) + else { + val s = for ((key, value) <- chunks) yield value.seqstatR2after.getSummary + Option(Seqstat.mergeSummarys(s.toList)) + } + return Option(("R1_raw" := R1) ->: + ("R2_raw" :=? R2) ->?: + ("R1_proc" :=? R1_proc) ->?: + ("R2_proc" :=? R2_proc) ->?: + jEmptyObject) + } + + def sha1Summary: Json = { + return ("R1_raw" := sha1Summary(sha1R1)) ->: + ("R2_raw" :=? sha1Summary(sha1R2)) ->?: + ("R1_proc" :=? sha1Summary(sha1R1after)) ->?: + ("R2_proc" :=? sha1Summary(sha1R2after)) ->?: + jEmptyObject + } + + def sha1Summary(sha1sum:Sha1sum): Option[Json] = { + if (sha1sum == null) return None + else return Option(sha1sum.getSummary) + } + + def fastqcSummary: Json = { + return ("R1_raw" := fastqcSummary(fastqcR1)) ->: + ("R2_raw" :=? fastqcSummary(fastqcR2)) ->?: + ("R1_proc" :=? fastqcSummary(fastqcR1after)) ->?: + ("R2_proc" :=? fastqcSummary(fastqcR2after)) ->?: + jEmptyObject + } + + def fastqcSummary(fastqc:Fastqc): Option[Json] = { + if (fastqc == null) return None + else return Option(fastqc.getSummary) + } + + def clipstatSummary(): Option[Json] = { + if (flexiprep.skipClip) return None + val R1: Json = if (chunks.size == 1) chunks.head._2.cutadaptR1.getSummary + else { + val s = for ((key, value) <- chunks) yield value.cutadaptR1.getSummary + Cutadapt.mergeSummarys(s.toList) + } + val R2: Option[Json] = if (!flexiprep.paired) None + else if (chunks.size == 1) Option(chunks.head._2.cutadaptR2.getSummary) + else { + val s = for ((key, value) <- chunks) yield value.cutadaptR2.getSummary + Option(Cutadapt.mergeSummarys(s.toList)) + } + return Option(("R1" := R1) ->: + ("R2" :=? R2) ->?: + ("fastqSync" :=? syncstatSummary) ->?: + jEmptyObject) + } + + def syncstatSummary(): Option[Json] = { + if (flexiprep.skipClip || !flexiprep.paired) return None + if (chunks.size == 1) return Option(chunks.head._2.sickle.getSummary) + else { + val s = for ((key, value) <- chunks) yield value.fastqSync.getSummary + return Option(FastqSync.mergeSummarys(s.toList)) + } + } + + def trimstatSummary(): Option[Json] = { + if (flexiprep.skipTrim) return None + if (chunks.size == 1) return Option(chunks.head._2.sickle.getSummary) + else { + val s = for ((key, value) <- chunks) yield value.sickle.getSummary + return Option(Sickle.mergeSummarys(s.toList)) + } + } +} \ No newline at end of file diff --git a/flexiprep/src/main/scala/nl/lumc/sasc/biopet/pipelines/flexiprep/scripts/FastqSync.scala b/flexiprep/src/main/scala/nl/lumc/sasc/biopet/pipelines/flexiprep/scripts/FastqSync.scala index 827a92f7c0287b0e5b468624c908e13578c53c35..5af515970de466da50b585d4b3b4027ca0e2f8c4 100644 --- a/flexiprep/src/main/scala/nl/lumc/sasc/biopet/pipelines/flexiprep/scripts/FastqSync.scala +++ b/flexiprep/src/main/scala/nl/lumc/sasc/biopet/pipelines/flexiprep/scripts/FastqSync.scala @@ -4,8 +4,11 @@ import java.io.File import org.broadinstitute.gatk.utils.commandline.{ Input, Output } +import argonaut._, Argonaut._ +import scalaz._, Scalaz._ + import nl.lumc.sasc.biopet.core.config.Configurable -import nl.lumc.sasc.biopet.function.PythonCommandLineFunction +import nl.lumc.sasc.biopet.extensions.PythonCommandLineFunction class FastqSync(val root: Configurable) extends PythonCommandLineFunction { setPythonScript("sync_paired_end_reads.py") @@ -36,4 +39,14 @@ class FastqSync(val root: Configurable) extends PythonCommandLineFunction { required(output_R2) + " > " + required(output_stats) + + def getSummary: Json = { + return jNull + } } + +object FastqSync { + def mergeSummarys(jsons:List[Json]): Json = { + return jNull + } +} \ No newline at end of file diff --git a/flexiprep/src/main/scala/nl/lumc/sasc/biopet/pipelines/flexiprep/scripts/FastqcToContams.scala b/flexiprep/src/main/scala/nl/lumc/sasc/biopet/pipelines/flexiprep/scripts/FastqcToContams.scala index d12073e3d11d6b9db697e0c8152f64fbfac1dc02..9135d3db517844966c44ad5b34e97943d995e760 100644 --- a/flexiprep/src/main/scala/nl/lumc/sasc/biopet/pipelines/flexiprep/scripts/FastqcToContams.scala +++ b/flexiprep/src/main/scala/nl/lumc/sasc/biopet/pipelines/flexiprep/scripts/FastqcToContams.scala @@ -5,7 +5,7 @@ import java.io.File import org.broadinstitute.gatk.utils.commandline.{ Input, Output } import nl.lumc.sasc.biopet.core.config.Configurable -import nl.lumc.sasc.biopet.function.PythonCommandLineFunction +import nl.lumc.sasc.biopet.extensions.PythonCommandLineFunction class FastqcToContams(val root: Configurable) extends PythonCommandLineFunction { setPythonScript("__init__.py", "pyfastqc/") diff --git a/flexiprep/src/main/scala/nl/lumc/sasc/biopet/pipelines/flexiprep/scripts/FastqcToQualtype.scala b/flexiprep/src/main/scala/nl/lumc/sasc/biopet/pipelines/flexiprep/scripts/FastqcToQualtype.scala index c9aa8cd8ffdc9c201cba66b10052b109fb0d3956..7e8cd1668ff4d68aaed3bc4bdc17a0fc1ed929ef 100644 --- a/flexiprep/src/main/scala/nl/lumc/sasc/biopet/pipelines/flexiprep/scripts/FastqcToQualtype.scala +++ b/flexiprep/src/main/scala/nl/lumc/sasc/biopet/pipelines/flexiprep/scripts/FastqcToQualtype.scala @@ -5,7 +5,7 @@ import java.io.File import org.broadinstitute.gatk.utils.commandline.{ Input, Output } import nl.lumc.sasc.biopet.core.config.Configurable -import nl.lumc.sasc.biopet.function.PythonCommandLineFunction +import nl.lumc.sasc.biopet.extensions.PythonCommandLineFunction class FastqcToQualtype(val root: Configurable) extends PythonCommandLineFunction { setPythonScript("__init__.py", "pyfastqc/") diff --git a/flexiprep/src/main/scala/nl/lumc/sasc/biopet/pipelines/flexiprep/scripts/Seqstat.scala b/flexiprep/src/main/scala/nl/lumc/sasc/biopet/pipelines/flexiprep/scripts/Seqstat.scala index 83de0e247373724d8cc03229365185a2aa674b97..0396447c2b1dba03c3785d2314011d1b35eacccc 100644 --- a/flexiprep/src/main/scala/nl/lumc/sasc/biopet/pipelines/flexiprep/scripts/Seqstat.scala +++ b/flexiprep/src/main/scala/nl/lumc/sasc/biopet/pipelines/flexiprep/scripts/Seqstat.scala @@ -2,11 +2,14 @@ package nl.lumc.sasc.biopet.pipelines.flexiprep.scripts import java.io.File -import nl.lumc.sasc.biopet.function.fastq.Fastqc +import nl.lumc.sasc.biopet.extensions.fastq.Fastqc import org.broadinstitute.gatk.utils.commandline.{ Input, Output } +import argonaut._, Argonaut._ +import scalaz._, Scalaz._ + import nl.lumc.sasc.biopet.core.config.Configurable -import nl.lumc.sasc.biopet.function.PythonCommandLineFunction +import nl.lumc.sasc.biopet.extensions.PythonCommandLineFunction class Seqstat(val root: Configurable) extends PythonCommandLineFunction { setPythonScript("__init__.py", "pyfastqc/") @@ -40,4 +43,24 @@ class Seqstat(val root: Configurable) extends PythonCommandLineFunction { required("-o", out) + required(input_fastq) } + + def getSummary: Json = { + return jNull + } +} + +object Seqstat { + def apply(root:Configurable, fastqfile: File, fastqc:Fastqc): Seqstat = { + val seqstat = new Seqstat(root) + val ext = fastqfile.getName.substring(fastqfile.getName.lastIndexOf(".")) + seqstat.input_fastq = fastqfile + seqstat.fastqc = fastqc + seqstat.out = new File(fastqfile.getAbsolutePath.substring(0, fastqfile.getName.lastIndexOf(".")) + ".seqstats.json") + if (fastqc != null) seqstat.deps ::= fastqc.output + return seqstat + } + + def mergeSummarys(jsons:List[Json]): Json = { + return jNull + } } diff --git a/flexiprep/src/main/scala/nl/lumc/sasc/biopet/pipelines/flexiprep/scripts/Summarize.scala b/flexiprep/src/main/scala/nl/lumc/sasc/biopet/pipelines/flexiprep/scripts/Summarize.scala index 63f49191a67369ca22e9eb7d28bf7b5ee6479794..590db1c13a8bc324e8703962b25149a0d369975b 100644 --- a/flexiprep/src/main/scala/nl/lumc/sasc/biopet/pipelines/flexiprep/scripts/Summarize.scala +++ b/flexiprep/src/main/scala/nl/lumc/sasc/biopet/pipelines/flexiprep/scripts/Summarize.scala @@ -5,7 +5,7 @@ import java.io.File import org.broadinstitute.gatk.utils.commandline.{ Input, Output } import nl.lumc.sasc.biopet.core.config.Configurable -import nl.lumc.sasc.biopet.function.PythonCommandLineFunction +import nl.lumc.sasc.biopet.extensions.PythonCommandLineFunction class Summarize(val root: Configurable) extends PythonCommandLineFunction { setPythonScript("__init__.py", "pyfastqc/") diff --git a/gatk/gatk-old/src/main/scala/nl/lumc/sasc/biopet/pipelines/gatk/Gatk.scala b/gatk/gatk-old/src/main/scala/nl/lumc/sasc/biopet/pipelines/gatk/Gatk.scala index 27dd498f66a1982529fced0363a6f7bb916a6de5..2badbacb3cd78d9f82d947b12ced587ba7fd9ff5 100644 --- a/gatk/gatk-old/src/main/scala/nl/lumc/sasc/biopet/pipelines/gatk/Gatk.scala +++ b/gatk/gatk-old/src/main/scala/nl/lumc/sasc/biopet/pipelines/gatk/Gatk.scala @@ -1,12 +1,12 @@ package nl.lumc.sasc.biopet.pipelines.gatk -import nl.lumc.sasc.biopet.function._ -import nl.lumc.sasc.biopet.function.aligners._ +import nl.lumc.sasc.biopet.extensions._ +import nl.lumc.sasc.biopet.extensions.aligners._ import java.io.File import nl.lumc.sasc.biopet.core._ import nl.lumc.sasc.biopet.core.config._ import nl.lumc.sasc.biopet.pipelines.mapping._ -import nl.lumc.sasc.biopet.function.picard.MarkDuplicates +import nl.lumc.sasc.biopet.extensions.picard.MarkDuplicates import nl.lumc.sasc.biopet.pipelines.bammetrics.BamMetrics import nl.lumc.sasc.biopet.pipelines.flexiprep._ import org.broadinstitute.gatk.queue.QScript diff --git a/gatk/gatk-pipeline/src/main/scala/nl/lumc/sasc/biopet/pipelines/gatk/GatkPipeline.scala b/gatk/gatk-pipeline/src/main/scala/nl/lumc/sasc/biopet/pipelines/gatk/GatkPipeline.scala index f3cc125f3294ec88cfb29766561668877eb37fca..852109fe29860b7408f7c5030dd29767b85db421 100644 --- a/gatk/gatk-pipeline/src/main/scala/nl/lumc/sasc/biopet/pipelines/gatk/GatkPipeline.scala +++ b/gatk/gatk-pipeline/src/main/scala/nl/lumc/sasc/biopet/pipelines/gatk/GatkPipeline.scala @@ -4,7 +4,7 @@ import nl.lumc.sasc.biopet.core.MultiSampleQScript import nl.lumc.sasc.biopet.core.PipelineCommand import nl.lumc.sasc.biopet.core.config.Configurable import java.io.File -import nl.lumc.sasc.biopet.function.picard.MarkDuplicates +import nl.lumc.sasc.biopet.extensions.picard.MarkDuplicates import nl.lumc.sasc.biopet.pipelines.bammetrics.BamMetrics import nl.lumc.sasc.biopet.pipelines.mapping.Mapping import org.broadinstitute.gatk.queue.QScript diff --git a/gatk/gatk-variantcalling/src/main/scala/nl/lumc/sasc/biopet/pipelines/gatk/GatkVariantcalling.scala b/gatk/gatk-variantcalling/src/main/scala/nl/lumc/sasc/biopet/pipelines/gatk/GatkVariantcalling.scala index e88a8422e3ed4b4fc5aa6ada5367405d28f4cc46..e6f994a743f1953429cfd4d1cf22f36c5af840da 100644 --- a/gatk/gatk-variantcalling/src/main/scala/nl/lumc/sasc/biopet/pipelines/gatk/GatkVariantcalling.scala +++ b/gatk/gatk-variantcalling/src/main/scala/nl/lumc/sasc/biopet/pipelines/gatk/GatkVariantcalling.scala @@ -2,7 +2,7 @@ package nl.lumc.sasc.biopet.pipelines.gatk import nl.lumc.sasc.biopet.core._ import nl.lumc.sasc.biopet.core.config._ -import nl.lumc.sasc.biopet.function._ +import nl.lumc.sasc.biopet.extensions._ import org.broadinstitute.gatk.queue.QScript import org.broadinstitute.gatk.queue.extensions.gatk.{ BaseRecalibrator, CommandLineGATK, HaplotypeCaller, IndelRealigner, PrintReads, RealignerTargetCreator, GenotypeGVCFs, AnalyzeCovariates } import org.broadinstitute.gatk.queue.function._ diff --git a/mapping/src/main/scala/nl/lumc/sasc/biopet/function/aligners/Bwa.scala b/mapping/src/main/scala/nl/lumc/sasc/biopet/extensions/aligners/Bwa.scala similarity index 96% rename from mapping/src/main/scala/nl/lumc/sasc/biopet/function/aligners/Bwa.scala rename to mapping/src/main/scala/nl/lumc/sasc/biopet/extensions/aligners/Bwa.scala index c7e12143610333cdaf8d2d44139c6404dcb2d1da..216bf42566606b08c555aeacd0ffdbece16efa64 100644 --- a/mapping/src/main/scala/nl/lumc/sasc/biopet/function/aligners/Bwa.scala +++ b/mapping/src/main/scala/nl/lumc/sasc/biopet/extensions/aligners/Bwa.scala @@ -1,4 +1,4 @@ -package nl.lumc.sasc.biopet.function.aligners +package nl.lumc.sasc.biopet.extensions.aligners import nl.lumc.sasc.biopet.core._ import nl.lumc.sasc.biopet.core.config._ diff --git a/mapping/src/main/scala/nl/lumc/sasc/biopet/function/aligners/Star.scala b/mapping/src/main/scala/nl/lumc/sasc/biopet/extensions/aligners/Star.scala similarity index 98% rename from mapping/src/main/scala/nl/lumc/sasc/biopet/function/aligners/Star.scala rename to mapping/src/main/scala/nl/lumc/sasc/biopet/extensions/aligners/Star.scala index 7c2bfb3ae0b8c19d020654fe6ecfae40cd01ae5a..f0687b6b4980a3a9860971ea80ac6e430324343b 100644 --- a/mapping/src/main/scala/nl/lumc/sasc/biopet/function/aligners/Star.scala +++ b/mapping/src/main/scala/nl/lumc/sasc/biopet/extensions/aligners/Star.scala @@ -1,4 +1,4 @@ -package nl.lumc.sasc.biopet.function.aligners +package nl.lumc.sasc.biopet.extensions.aligners import nl.lumc.sasc.biopet.core._ import nl.lumc.sasc.biopet.core.config._ diff --git a/mapping/src/main/scala/nl/lumc/sasc/biopet/pipelines/mapping/Mapping.scala b/mapping/src/main/scala/nl/lumc/sasc/biopet/pipelines/mapping/Mapping.scala index bacd0f3692bffe65d969b5bf5f52aad0c94feca0..53024816a4e756a6314b8981b77907fb2f6b9067 100644 --- a/mapping/src/main/scala/nl/lumc/sasc/biopet/pipelines/mapping/Mapping.scala +++ b/mapping/src/main/scala/nl/lumc/sasc/biopet/pipelines/mapping/Mapping.scala @@ -5,8 +5,8 @@ import java.io.File import java.util.Date import nl.lumc.sasc.biopet.core.{ BiopetQScript, PipelineCommand } import nl.lumc.sasc.biopet.core.apps.FastqSplitter -import nl.lumc.sasc.biopet.function.aligners.{ Bwa, Star } -import nl.lumc.sasc.biopet.function.picard.MarkDuplicates +import nl.lumc.sasc.biopet.extensions.aligners.{ Bwa, Star } +import nl.lumc.sasc.biopet.extensions.picard.MarkDuplicates import nl.lumc.sasc.biopet.pipelines.bammetrics.BamMetrics import nl.lumc.sasc.biopet.pipelines.flexiprep.Flexiprep import org.broadinstitute.gatk.queue.QScript diff --git a/pipeline-template/src/main/scala/nl/lumc/sasc/biopet/pipelines/bammetrics/PipelineTemplate.scala b/pipeline-template/src/main/scala/nl/lumc/sasc/biopet/pipelines/bammetrics/PipelineTemplate.scala index e76a17edb5ec386648276b71793c1d2b8f157fd1..a46aa5cc558e4c1205609c11004ba2c0e935ad56 100644 --- a/pipeline-template/src/main/scala/nl/lumc/sasc/biopet/pipelines/bammetrics/PipelineTemplate.scala +++ b/pipeline-template/src/main/scala/nl/lumc/sasc/biopet/pipelines/bammetrics/PipelineTemplate.scala @@ -2,7 +2,7 @@ package nl.lumc.sasc.biopet.pipelines.pipelinetemplate import nl.lumc.sasc.biopet.core._ import nl.lumc.sasc.biopet.core.config._ -import nl.lumc.sasc.biopet.function._ +import nl.lumc.sasc.biopet.extensions._ import org.broadinstitute.gatk.queue.QScript import org.broadinstitute.gatk.queue.function._ import org.broadinstitute.gatk.utils.commandline.{ Input, Output, Argument }