Skip to content
Snippets Groups Projects
Commit bbaa6236 authored by bow's avatar bow
Browse files

Add per-library RNA metrics job when the sample contains more than 1 library

parent 77e40ed5
No related branches found
No related tags found
No related merge requests found
...@@ -279,6 +279,24 @@ class Gentrap(val root: Configurable) extends QScript with MultiSampleQScript wi ...@@ -279,6 +279,24 @@ class Gentrap(val root: Configurable) extends QScript with MultiSampleQScript wi
job job
} }
/** General function to create CollectRnaSeqMetrics job, for per-sample and per-library runs */
protected def makeCollectRnaSeqMetricsJob(alnFile: File, outMetrics: File,
outChart: Option[File] = None): CollectRnaSeqMetrics = {
val job = new CollectRnaSeqMetrics(qscript)
job.input = alnFile
job.output = outMetrics
job.refFlat = annotationRefFlat
job.chartOutput = outChart
job.assumeSorted = true
job.strandSpecificity = strandProtocol match {
case NonSpecific => Option(StrandSpecificity.NONE.toString)
case Dutp => Option(StrandSpecificity.SECOND_READ_TRANSCRIPTION_STRAND.toString)
case _ => throw new IllegalStateException
}
job.ribosomalIntervals = ribosomalRefFlat
job
}
/** Steps to run before biopetScript */ /** Steps to run before biopetScript */
def init(): Unit = { def init(): Unit = {
// TODO: validate that exons are flattened or not (depending on another option flag?) // TODO: validate that exons are flattened or not (depending on another option flag?)
...@@ -338,7 +356,6 @@ class Gentrap(val root: Configurable) extends QScript with MultiSampleQScript wi ...@@ -338,7 +356,6 @@ class Gentrap(val root: Configurable) extends QScript with MultiSampleQScript wi
/** Summary files of the sample */ /** Summary files of the sample */
def summaryFiles: Map[String, File] = Map( def summaryFiles: Map[String, File] = Map(
"alignment" -> alnFile, "alignment" -> alnFile,
"metrics" -> collectRnaSeqMetricsJob.output
) ++ Map( ) ++ Map(
"gene_fragments_count" -> geneFragmentsCount, "gene_fragments_count" -> geneFragmentsCount,
"exon_fragments_count" -> exonFragmentsCount, "exon_fragments_count" -> exonFragmentsCount,
...@@ -621,21 +638,8 @@ class Gentrap(val root: Configurable) extends QScript with MultiSampleQScript wi ...@@ -621,21 +638,8 @@ class Gentrap(val root: Configurable) extends QScript with MultiSampleQScript wi
} }
/** Picard CollectRnaSeqMetrics job */ /** Picard CollectRnaSeqMetrics job */
private def collectRnaSeqMetricsJob: CollectRnaSeqMetrics = { private lazy val collectRnaSeqMetricsJob: CollectRnaSeqMetrics =
val job = new CollectRnaSeqMetrics(qscript) makeCollectRnaSeqMetricsJob(alnFile, createFile(".rna_metrics"), Option(createFile(".coverage_bias.pdf")))
job.input = alnFile
job.output = createFile(".rna_metrics")
job.refFlat = annotationRefFlat
job.chartOutput = Option(createFile(".coverage_bias.pdf"))
job.assumeSorted = true
job.strandSpecificity = strandProtocol match {
case NonSpecific => Option(StrandSpecificity.NONE.toString)
case Dutp => Option(StrandSpecificity.SECOND_READ_TRANSCRIPTION_STRAND.toString)
case _ => throw new IllegalStateException
}
job.ribosomalIntervals = ribosomalRefFlat
job
}
private def wipeJob: Option[WipeReads] = removeRibosomalReads private def wipeJob: Option[WipeReads] = removeRibosomalReads
.option { .option {
...@@ -732,6 +736,12 @@ class Gentrap(val root: Configurable) extends QScript with MultiSampleQScript wi ...@@ -732,6 +736,12 @@ class Gentrap(val root: Configurable) extends QScript with MultiSampleQScript wi
/** Alignment results of this library ~ can only be accessed after addJobs is run! */ /** Alignment results of this library ~ can only be accessed after addJobs is run! */
def alnFile: File = mappingJob.outputFiles("finalBamFile") def alnFile: File = mappingJob.outputFiles("finalBamFile")
/** Library-level RNA-seq metrics job, only when we have more than 1 library in the sample */
def collectRnaSeqMetricsJob: Option[CollectRnaSeqMetrics] = (Sample.this.libraries.size > 1)
.option {
makeCollectRnaSeqMetricsJob(alnFile, createFile(".rna_metrics"), Option(createFile(".coverage_bias.pdf")))
}
/** Per-library mapping job */ /** Per-library mapping job */
def mappingJob: Mapping = { def mappingJob: Mapping = {
val job = new Mapping(qscript) val job = new Mapping(qscript)
...@@ -748,6 +758,11 @@ class Gentrap(val root: Configurable) extends QScript with MultiSampleQScript wi ...@@ -748,6 +758,11 @@ class Gentrap(val root: Configurable) extends QScript with MultiSampleQScript wi
def addJobs(): Unit = { def addJobs(): Unit = {
// create per-library alignment file // create per-library alignment file
addAll(mappingJob.functions) addAll(mappingJob.functions)
// create RNA metrics job, if defined
collectRnaSeqMetricsJob match {
case Some(j) => add(j); addSummarizable(j, "rna_metrics")
case None => ;
}
qscript.addSummaryQScript(mappingJob) qscript.addSummaryQScript(mappingJob)
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment