Skip to content
Snippets Groups Projects
Commit bf6c2be4 authored by Peter van 't Hof's avatar Peter van 't Hof
Browse files

More piping for target flagstat

parent 5421af11
No related branches found
No related tags found
No related merge requests found
...@@ -151,29 +151,21 @@ class BamMetrics(val root: Configurable) extends QScript with SummaryQScript wit ...@@ -151,29 +151,21 @@ class BamMetrics(val root: Configurable) extends QScript with SummaryQScript wit
val targetDir = new File(outputDir, targetName) val targetDir = new File(outputDir, targetName)
val biStrict = BedtoolsIntersect(this, inputBam, intervals.bed, 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)) 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) val biopetFlagstatStrict = BiopetFlagstat(this, biStrict.output, targetDir)
add(biopetFlagstatStrict)
addSummarizable(biopetFlagstatStrict, targetName + "_biopet_flagstat_strict") addSummarizable(biopetFlagstatStrict, targetName + "_biopet_flagstat_strict")
add(new BiopetFifoPipe(this, List(biStrict, biopetFlagstatStrict)))
val biLoose = BedtoolsIntersect(this, inputBam, intervals.bed, 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)) 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) val biopetFlagstatLoose = BiopetFlagstat(this, biLoose.output, targetDir)
add(biopetFlagstatLoose)
addSummarizable(biopetFlagstatLoose, targetName + "_biopet_flagstat_loose") 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, depth = true)
val covStats = CoverageStats(this, targetDir, inputBam.getName.stripSuffix(".bam") + ".coverage")
val bedCov = BedtoolsCoverage(this, inputBam, intervals.bed, coverageFile, depth = true)
val covStats = CoverageStats(this, coverageFile, targetDir)
covStats.title = Some("Coverage for " + targetName) covStats.title = Some("Coverage for " + targetName)
covStats.subTitle = Some(".") covStats.subTitle = Some(".")
add(bedCov | covStats) add(bedCov | covStats)
......
...@@ -55,11 +55,10 @@ class CoverageStats(val root: Configurable) extends PythonCommandLineFunction wi ...@@ -55,11 +55,10 @@ class CoverageStats(val root: Configurable) extends PythonCommandLineFunction wi
} }
object CoverageStats { 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) val coverageStats = new CoverageStats(root)
coverageStats.input = input coverageStats.output = new File(outputDir, name + ".stats")
coverageStats.output = new File(outputDir, input.getName + ".stats") coverageStats.plot = new File(outputDir, name + ".stats.png")
coverageStats.plot = new File(outputDir, input.getName + ".stats.png")
coverageStats coverageStats
} }
} }
...@@ -61,12 +61,12 @@ class BedtoolsCoverage(val root: Configurable) extends Bedtools { ...@@ -61,12 +61,12 @@ class BedtoolsCoverage(val root: Configurable) extends Bedtools {
object BedtoolsCoverage { object BedtoolsCoverage {
/** Returns defaul bedtools coverage */ /** 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 = { depth: Boolean = true, sameStrand: Boolean = false, diffStrand: Boolean = false): BedtoolsCoverage = {
val bedtoolsCoverage = new BedtoolsCoverage(root) val bedtoolsCoverage = new BedtoolsCoverage(root)
bedtoolsCoverage.input = input bedtoolsCoverage.input = input
bedtoolsCoverage.intersectFile = intersect bedtoolsCoverage.intersectFile = intersect
bedtoolsCoverage.output = output output.foreach(bedtoolsCoverage.output = _)
bedtoolsCoverage.depth = depth bedtoolsCoverage.depth = depth
bedtoolsCoverage.sameStrand = sameStrand bedtoolsCoverage.sameStrand = sameStrand
bedtoolsCoverage.diffStrand = diffStrand bedtoolsCoverage.diffStrand = diffStrand
......
...@@ -40,6 +40,8 @@ class BedtoolsIntersect(val root: Configurable) extends Bedtools { ...@@ -40,6 +40,8 @@ class BedtoolsIntersect(val root: Configurable) extends Bedtools {
var inputTag = "-a" var inputTag = "-a"
var ubam = false
override def beforeCmd() { override def beforeCmd() {
if (input.getName.endsWith(".bam")) inputTag = "-abam" if (input.getName.endsWith(".bam")) inputTag = "-abam"
} }
...@@ -50,6 +52,7 @@ class BedtoolsIntersect(val root: Configurable) extends Bedtools { ...@@ -50,6 +52,7 @@ class BedtoolsIntersect(val root: Configurable) extends Bedtools {
required("-b", intersectFile) + required("-b", intersectFile) +
optional("-f", minOverlap) + optional("-f", minOverlap) +
conditional(count, "-c") + conditional(count, "-c") +
conditional(ubam, "-ubam") +
" > " + required(output) " > " + required(output)
} }
...@@ -61,6 +64,7 @@ object BedtoolsIntersect { ...@@ -61,6 +64,7 @@ object BedtoolsIntersect {
bedtoolsIntersect.input = input bedtoolsIntersect.input = input
bedtoolsIntersect.intersectFile = intersect bedtoolsIntersect.intersectFile = intersect
bedtoolsIntersect.output = output bedtoolsIntersect.output = output
if (output.getName.endsWith(".sam")) bedtoolsIntersect.ubam = true
bedtoolsIntersect.minOverlap = minOverlap bedtoolsIntersect.minOverlap = minOverlap
bedtoolsIntersect.count = count bedtoolsIntersect.count = count
bedtoolsIntersect bedtoolsIntersect
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment