From bf6c2be4a69032233c2046793f77c8903c153597 Mon Sep 17 00:00:00 2001 From: Peter van 't Hof <p.j.van_t_hof@lumc.nl> Date: Tue, 20 Oct 2015 23:25:45 +0200 Subject: [PATCH] More piping for target flagstat --- .../pipelines/bammetrics/BamMetrics.scala | 20 ++++++------------- .../bammetrics/scripts/CoverageStats.scala | 7 +++---- .../bedtools/BedtoolsCoverage.scala | 4 ++-- .../bedtools/BedtoolsIntersect.scala | 4 ++++ 4 files changed, 15 insertions(+), 20 deletions(-) diff --git a/public/bammetrics/src/main/scala/nl/lumc/sasc/biopet/pipelines/bammetrics/BamMetrics.scala b/public/bammetrics/src/main/scala/nl/lumc/sasc/biopet/pipelines/bammetrics/BamMetrics.scala index ed89542f2..3e6059b1c 100644 --- a/public/bammetrics/src/main/scala/nl/lumc/sasc/biopet/pipelines/bammetrics/BamMetrics.scala +++ b/public/bammetrics/src/main/scala/nl/lumc/sasc/biopet/pipelines/bammetrics/BamMetrics.scala @@ -151,29 +151,21 @@ class BamMetrics(val root: Configurable) extends QScript with SummaryQScript wit val targetDir = new File(outputDir, targetName) val biStrict = BedtoolsIntersect(this, inputBam, intervals.bed, - output = new File(targetDir, inputBam.getName.stripSuffix(".bam") + ".overlap.strict.bam"), + output = new File(targetDir, inputBam.getName.stripSuffix(".bam") + ".overlap.strict.sam"), minOverlap = config("strict_intersect_overlap", default = 1.0)) - biStrict.isIntermediate = true - add(biStrict) - add(SamtoolsFlagstat(this, biStrict.output, targetDir)) val biopetFlagstatStrict = BiopetFlagstat(this, biStrict.output, targetDir) - add(biopetFlagstatStrict) addSummarizable(biopetFlagstatStrict, targetName + "_biopet_flagstat_strict") + add(new BiopetFifoPipe(this, List(biStrict, biopetFlagstatStrict))) val biLoose = BedtoolsIntersect(this, inputBam, intervals.bed, - output = new File(targetDir, inputBam.getName.stripSuffix(".bam") + ".overlap.loose.bam"), + output = new File(targetDir, inputBam.getName.stripSuffix(".bam") + ".overlap.loose.sam"), minOverlap = config("loose_intersect_overlap", default = 0.01)) - biLoose.isIntermediate = true - add(biLoose) - add(SamtoolsFlagstat(this, biLoose.output, targetDir)) val biopetFlagstatLoose = BiopetFlagstat(this, biLoose.output, targetDir) - add(biopetFlagstatLoose) addSummarizable(biopetFlagstatLoose, targetName + "_biopet_flagstat_loose") + add(new BiopetFifoPipe(this, List(biLoose, biopetFlagstatLoose))) - val coverageFile = new File(targetDir, inputBam.getName.stripSuffix(".bam") + ".coverage") - - val bedCov = BedtoolsCoverage(this, inputBam, intervals.bed, coverageFile, depth = true) - val covStats = CoverageStats(this, coverageFile, targetDir) + val bedCov = BedtoolsCoverage(this, inputBam, intervals.bed, depth = true) + val covStats = CoverageStats(this, targetDir, inputBam.getName.stripSuffix(".bam") + ".coverage") covStats.title = Some("Coverage for " + targetName) covStats.subTitle = Some(".") add(bedCov | covStats) diff --git a/public/bammetrics/src/main/scala/nl/lumc/sasc/biopet/pipelines/bammetrics/scripts/CoverageStats.scala b/public/bammetrics/src/main/scala/nl/lumc/sasc/biopet/pipelines/bammetrics/scripts/CoverageStats.scala index 4a4795cf9..a12aced89 100644 --- a/public/bammetrics/src/main/scala/nl/lumc/sasc/biopet/pipelines/bammetrics/scripts/CoverageStats.scala +++ b/public/bammetrics/src/main/scala/nl/lumc/sasc/biopet/pipelines/bammetrics/scripts/CoverageStats.scala @@ -55,11 +55,10 @@ class CoverageStats(val root: Configurable) extends PythonCommandLineFunction wi } object CoverageStats { - def apply(root: Configurable, input: File, outputDir: File): CoverageStats = { + def apply(root: Configurable, outputDir: File, name: String): CoverageStats = { val coverageStats = new CoverageStats(root) - coverageStats.input = input - coverageStats.output = new File(outputDir, input.getName + ".stats") - coverageStats.plot = new File(outputDir, input.getName + ".stats.png") + coverageStats.output = new File(outputDir, name + ".stats") + coverageStats.plot = new File(outputDir, name + ".stats.png") coverageStats } } diff --git a/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/bedtools/BedtoolsCoverage.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/bedtools/BedtoolsCoverage.scala index efb3c1abe..8b1476857 100644 --- a/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/bedtools/BedtoolsCoverage.scala +++ b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/bedtools/BedtoolsCoverage.scala @@ -61,12 +61,12 @@ class BedtoolsCoverage(val root: Configurable) extends Bedtools { object BedtoolsCoverage { /** Returns defaul bedtools coverage */ - def apply(root: Configurable, input: File, intersect: File, output: File, + def apply(root: Configurable, input: File, intersect: File, output: Option[File] = None, depth: Boolean = true, sameStrand: Boolean = false, diffStrand: Boolean = false): BedtoolsCoverage = { val bedtoolsCoverage = new BedtoolsCoverage(root) bedtoolsCoverage.input = input bedtoolsCoverage.intersectFile = intersect - bedtoolsCoverage.output = output + output.foreach(bedtoolsCoverage.output = _) bedtoolsCoverage.depth = depth bedtoolsCoverage.sameStrand = sameStrand bedtoolsCoverage.diffStrand = diffStrand diff --git a/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/bedtools/BedtoolsIntersect.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/bedtools/BedtoolsIntersect.scala index 75f179ad3..bbd110c88 100644 --- a/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/bedtools/BedtoolsIntersect.scala +++ b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/bedtools/BedtoolsIntersect.scala @@ -40,6 +40,8 @@ class BedtoolsIntersect(val root: Configurable) extends Bedtools { var inputTag = "-a" + var ubam = false + override def beforeCmd() { if (input.getName.endsWith(".bam")) inputTag = "-abam" } @@ -50,6 +52,7 @@ class BedtoolsIntersect(val root: Configurable) extends Bedtools { required("-b", intersectFile) + optional("-f", minOverlap) + conditional(count, "-c") + + conditional(ubam, "-ubam") + " > " + required(output) } @@ -61,6 +64,7 @@ object BedtoolsIntersect { bedtoolsIntersect.input = input bedtoolsIntersect.intersectFile = intersect bedtoolsIntersect.output = output + if (output.getName.endsWith(".sam")) bedtoolsIntersect.ubam = true bedtoolsIntersect.minOverlap = minOverlap bedtoolsIntersect.count = count bedtoolsIntersect -- GitLab