diff --git a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/pipelines/basty/Basty.scala b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/pipelines/basty/Basty.scala index a2b74ee9ccc7364f558d8ef066c1ec6bf2674e0f..d5e217ad3ab566e5b99bd279193c2821f49c615b 100644 --- a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/pipelines/basty/Basty.scala +++ b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/pipelines/basty/Basty.scala @@ -16,9 +16,10 @@ class Basty(val root: Configurable) extends QScript with MultiSampleQScript { class LibraryOutput extends AbstractLibraryOutput { } + case class FastaOutput(variants: File, consensus: File, consensusVariants: File) class SampleOutput extends AbstractSampleOutput { - var outputVariants: File = _ - var outputVariantsSnps: File = _ + var output: FastaOutput = _ + var outputSnps: FastaOutput = _ } defaults ++= Map("ploidy" -> 1, "use_haplotypecaller" -> false, "use_unifiedgenotyper" -> true) @@ -35,16 +36,21 @@ class Basty(val root: Configurable) extends QScript with MultiSampleQScript { gatkPipeline.biopetScript addAll(gatkPipeline.functions) - val refVariants = addGenerateFasta("Reference", outputDir + "reference/") - val refVariantSnps = addGenerateFasta("Reference", outputDir + "reference/", snpsOnly = true) + val refVariants = addGenerateFasta(null, outputDir + "reference/", "reference") + val refVariantSnps = addGenerateFasta(null, outputDir + "reference/", "reference", snpsOnly = true) runSamplesJobs() - val catVariants = Cat(this, refVariants :: samplesOutput.map(_._2.outputVariants).toList, outputDir + "fastas/variant.fasta") + val catVariants = Cat(this, refVariants.variants :: samplesOutput.map(_._2.output.variants).toList, outputDir + "fastas/variant.fasta") add(catVariants) - val catVariantsSnps = Cat(this, refVariantSnps :: samplesOutput.map(_._2.outputVariantsSnps).toList, outputDir + "fastas/variant.snps_only.fasta") + val catVariantsSnps = Cat(this, refVariantSnps.variants :: samplesOutput.map(_._2.outputSnps.variants).toList, outputDir + "fastas/variant.snps_only.fasta") add(catVariantsSnps) + val catConsensusVariants = Cat(this, refVariants.consensusVariants :: samplesOutput.map(_._2.output.consensusVariants).toList, outputDir + "fastas/consensus.variant.fasta") + add(catConsensusVariants) + val catConsensusVariantsSnps = Cat(this, refVariantSnps.consensusVariants :: samplesOutput.map(_._2.outputSnps.consensusVariants).toList, outputDir + "fastas/consensus.variant.snps_only.fasta") + add(catConsensusVariantsSnps) + val seed: Int = config("seed", default = 12345) def addRaxml(input: File, outputDir: String, outputName: String) { val raxmlMl = new Raxml(this) @@ -98,8 +104,8 @@ class Basty(val root: Configurable) extends QScript with MultiSampleQScript { sampleOutput.libraries = runLibraryJobs(sampleConfig) - sampleOutput.outputVariants = addGenerateFasta(sampleID, sampleDir) - sampleOutput.outputVariantsSnps = addGenerateFasta(sampleID, sampleDir, snpsOnly = true) + sampleOutput.output = addGenerateFasta(sampleID, sampleDir, sampleID) + sampleOutput.outputSnps = addGenerateFasta(sampleID, sampleDir, sampleID, snpsOnly = true) return sampleOutput } @@ -115,15 +121,21 @@ class Basty(val root: Configurable) extends QScript with MultiSampleQScript { return libraryOutput } - def addGenerateFasta(sampleName: String, outputDir: String, snpsOnly: Boolean = false, reference: Boolean = false): File = { + def addGenerateFasta(sampleName: String, outputDir: String, outputName: String, + snpsOnly: Boolean = false): FastaOutput = { val bastyGenerateFasta = new BastyGenerateFasta(this) bastyGenerateFasta.inputVcf = gatkPipeline.multisampleVariantcalling.scriptOutput.finalVcfFile + if (gatkPipeline.samplesOutput.contains(sampleName)) { + bastyGenerateFasta.bamFile = gatkPipeline.samplesOutput(sampleName).variantcalling.bamFiles.head + } bastyGenerateFasta.outputVariants = outputDir + sampleName + ".variants" + (if (snpsOnly) ".snps_only" else "") + ".fasta" + bastyGenerateFasta.outputConsensus = outputDir + sampleName + ".consensus" + (if (snpsOnly) ".snps_only" else "") + ".fasta" + bastyGenerateFasta.outputConsensusVariants = outputDir + sampleName + ".consensus_variants" + (if (snpsOnly) ".snps_only" else "") + ".fasta" bastyGenerateFasta.sampleName = sampleName + bastyGenerateFasta.outputName = if (outputName != null) outputName else sampleName bastyGenerateFasta.snpsOnly = snpsOnly - bastyGenerateFasta.reference = reference add(bastyGenerateFasta) - return bastyGenerateFasta.outputVariants + return FastaOutput(bastyGenerateFasta.outputVariants, bastyGenerateFasta.outputConsensus, bastyGenerateFasta.outputConsensusVariants) } }