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

Added general merging

parent 958e6ba4
No related branches found
No related tags found
No related merge requests found
Showing
with 46 additions and 2 deletions
......@@ -77,3 +77,22 @@ class MergeTables(val root: Configurable) extends ToolCommandFunction {
required("-o", output) +
required("", repeat(inputTables), escape = false)
}
object MergeTables {
def apply(root: Configurable,
tables: List[File],
outputFile: File,
idCols: List[Int],
valCol: Int,
numHeaderLines: Int = 0,
fallback: String = "-"): MergeTables = {
val job = new MergeTables(root)
job.inputTables = tables
job.output = outputFile
job.idColumnIndices = idCols.map(_.toString)
job.valueColumnIndex = valCol
job.fallbackString = Option(fallback)
job.numHeaderLines = Option(numHeaderLines)
job
}
}
\ No newline at end of file
......@@ -8,4 +8,6 @@ import org.broadinstitute.gatk.queue.QScript
*/
class BasesPerExon(val root: Configurable) extends QScript with Measurement {
def bamToCountFile(id: String, bamFile: File): (String, File) = ???
def mergeArgs = MergeArgs(List(1), 2, numHeaderLines = 1, fallback = "0")
}
......@@ -9,4 +9,6 @@ import org.broadinstitute.gatk.queue.QScript
class BasesPerGene(val root: Configurable) extends QScript with Measurement {
//TODO: splitting on strand if strandspecific
def bamToCountFile(id: String, bamFile: File): (String, File) = ???
def mergeArgs = MergeArgs(List(1), 2, numHeaderLines = 1, fallback = "0")
}
......@@ -8,4 +8,6 @@ import org.broadinstitute.gatk.queue.QScript
*/
class CufflinksBlind(val root: Configurable) extends QScript with Measurement {
def bamToCountFile(id: String, bamFile: File): (String, File) = ???
def mergeArgs = MergeArgs(List(1, 7), 10, numHeaderLines = 1, fallback = "0.0")
}
......@@ -8,4 +8,6 @@ import org.broadinstitute.gatk.queue.QScript
*/
class CufflinksGuided(val root: Configurable) extends QScript with Measurement {
def bamToCountFile(id: String, bamFile: File): (String, File) = ???
def mergeArgs = MergeArgs(List(1, 7), 10, numHeaderLines = 1, fallback = "0.0")
}
......@@ -8,4 +8,6 @@ import org.broadinstitute.gatk.queue.QScript
*/
class CufflinksStrict(val root: Configurable) extends QScript with Measurement {
def bamToCountFile(id: String, bamFile: File): (String, File) = ???
def mergeArgs = MergeArgs(List(1, 7), 10, numHeaderLines = 1, fallback = "0.0")
}
......@@ -8,4 +8,6 @@ import org.broadinstitute.gatk.queue.QScript
*/
class FragmentsPerExon(val root: Configurable) extends QScript with Measurement {
def bamToCountFile(id: String, bamFile: File): (String, File) = ???
def mergeArgs = MergeArgs(List(1), 2, numHeaderLines = 1, fallback = "0")
}
......@@ -8,4 +8,6 @@ import org.broadinstitute.gatk.queue.QScript
*/
class FragmentsPerGene(val root: Configurable) extends QScript with Measurement {
def bamToCountFile(id: String, bamFile: File): (String, File) = ???
def mergeArgs = MergeArgs(List(1), 2, numHeaderLines = 1, fallback = "0")
}
......@@ -2,6 +2,7 @@ package nl.lumc.sasc.biopet.pipelines.gentrap.measures
import nl.lumc.sasc.biopet.core.Reference
import nl.lumc.sasc.biopet.core.summary.SummaryQScript
import nl.lumc.sasc.biopet.extensions.tools.MergeTables
import org.broadinstitute.gatk.queue.QScript
/**
......@@ -19,6 +20,15 @@ trait Measurement extends SummaryQScript with Reference { qscript: QScript =>
lazy val countFiles: Map[String, File] = bamFiles.map { case (id, bamFile) => bamToCountFile(id, bamFile) }
def mergedCountFile = new File(outputDir, s"$name.merged.tsv")
case class MergeArgs(idCols: List[Int],
valCol: Int,
numHeaderLines: Int = 0,
fallback: String = "-")
def mergeArgs: MergeArgs
/** Init for pipeline */
def init(): Unit = {
require(bamFiles.nonEmpty)
......@@ -26,7 +36,8 @@ trait Measurement extends SummaryQScript with Reference { qscript: QScript =>
/** Pipeline itself */
def biopetScript(): Unit = {
//TODO: Merging
add(MergeTables(this, countFiles.values.toList, mergedCountFile,
mergeArgs.idCols, mergeArgs.valCol, mergeArgs.numHeaderLines, mergeArgs.fallback))
//TODO: Heatmap
}
......@@ -40,5 +51,5 @@ trait Measurement extends SummaryQScript with Reference { qscript: QScript =>
def summaryFiles: Map[String, File] = Map()
/** Name of summary output file */
def summaryFile: File = new File(s"$name.summary.json")
def summaryFile: File = new File(outputDir, s"$name.summary.json")
}
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