diff --git a/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/varscan/Mpileup2cns.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/varscan/VarscanMpileup2cns.scala similarity index 74% rename from public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/varscan/Mpileup2cns.scala rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/varscan/VarscanMpileup2cns.scala index 0379c36d9ace680b7833bf226912504bb619f8e2..9dc5b91a8dc7adc9fa7dfc7a241d0de838563ede 100644 --- a/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/varscan/Mpileup2cns.scala +++ b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/varscan/VarscanMpileup2cns.scala @@ -20,7 +20,7 @@ import java.io.File import nl.lumc.sasc.biopet.utils.config.Configurable import org.broadinstitute.gatk.utils.commandline.{ Input, Output } -class Mpileup2cns(val root: Configurable) extends Varscan { +class VarscanMpileup2cns(val root: Configurable) extends Varscan { @Input(doc = "Input mpileup file", required = false) // if not defined, input is stdin var input: Option[File] = None @@ -47,22 +47,17 @@ class Mpileup2cns(val root: Configurable) extends Varscan { variants.foreach { case v => require(validValues.contains(v), "variants value must be either 0 or 1") } } - override def cmdLine = { - val baseCommand = super.cmdLine + required("mpileup2cns") + - required("", input) + - required("--min-coverage", minCoverage) + - required("--min-reads2", minReads2) + - required("--min-avg-qual", minAvgQual) + - required("--min-var-freq", minVarFreq) + - required("--min-freq-for-hom", minFreqForHom) + - required("--p-value", pValue) + - required("--strand-filter", strandFilter) + - required("--output-vcf", outputVcf) + - required("--vcf-sample-list", vcfSampleList) + - required("--variants", variants) - - if (output.isDefined) baseCommand + " > " + required(output) - else baseCommand - } - + override def cmdLine = super.cmdLine + required("mpileup2cns") + + required(input) + + optional("--min-coverage", minCoverage) + + optional("--min-reads2", minReads2) + + optional("--min-avg-qual", minAvgQual) + + optional("--min-var-freq", minVarFreq) + + optional("--min-freq-for-hom", minFreqForHom) + + optional("--p-value", pValue) + + optional("--strand-filter", strandFilter) + + optional("--output-vcf", outputVcf) + + optional("--vcf-sample-list", vcfSampleList) + + optional("--variants", variants) + + (if (outputAsStsout) "" else " > " + required(output)) } diff --git a/public/gentrap/src/main/scala/nl/lumc/sasc/biopet/pipelines/gentrap/extensions/CustomVarScan.scala b/public/gentrap/src/main/scala/nl/lumc/sasc/biopet/pipelines/gentrap/extensions/CustomVarScan.scala index f2f11a03e775ebe5a7fa4161813a0157c8f7976a..2d1f270c680338c099baf27c6325551d8f0dd590 100644 --- a/public/gentrap/src/main/scala/nl/lumc/sasc/biopet/pipelines/gentrap/extensions/CustomVarScan.scala +++ b/public/gentrap/src/main/scala/nl/lumc/sasc/biopet/pipelines/gentrap/extensions/CustomVarScan.scala @@ -21,7 +21,7 @@ import nl.lumc.sasc.biopet.core.{ Reference, BiopetCommandLineFunction } import nl.lumc.sasc.biopet.core.extensions.PythonCommandLineFunction import nl.lumc.sasc.biopet.utils.config.Configurable import nl.lumc.sasc.biopet.extensions.samtools.SamtoolsMpileup -import nl.lumc.sasc.biopet.extensions.varscan.Mpileup2cns +import nl.lumc.sasc.biopet.extensions.varscan.VarscanMpileup2cns import nl.lumc.sasc.biopet.extensions.{ Bgzip, Tabix } import org.broadinstitute.gatk.utils.commandline.{ Input, Output } @@ -65,7 +65,7 @@ class CustomVarScan(val root: Configurable) extends BiopetCommandLineFunction wi override def cmdLine: String = required(executable) + required("-vP") + required("""\t\t""") } - private val varscan = new Mpileup2cns(wrapper.root) { + private val varscan = new VarscanMpileup2cns(wrapper.root) { override def configName = wrapper.configName strandFilter = Option(0) outputVcf = Option(1) diff --git a/public/shiva/src/main/scala/nl/lumc/sasc/biopet/pipelines/shiva/ShivaVariantcallingTrait.scala b/public/shiva/src/main/scala/nl/lumc/sasc/biopet/pipelines/shiva/ShivaVariantcallingTrait.scala index 31ba0a53f0fc034b406cca237656722ca9de9d6f..f08b4cc18402e995375f14f1095e922883b8dc98 100644 --- a/public/shiva/src/main/scala/nl/lumc/sasc/biopet/pipelines/shiva/ShivaVariantcallingTrait.scala +++ b/public/shiva/src/main/scala/nl/lumc/sasc/biopet/pipelines/shiva/ShivaVariantcallingTrait.scala @@ -156,7 +156,12 @@ trait ShivaVariantcallingTrait extends SummaryQScript } /** Will generate all available variantcallers */ - protected def callersList: List[Variantcaller] = List(new Freebayes(this), new RawVcf(this), new Bcftools(this), new BcftoolsSingleSample(this)) + protected def callersList: List[Variantcaller] = List( + new Freebayes(this), + new RawVcf(this), + new Bcftools(this), + new BcftoolsSingleSample(this), + new VarscanCnsSingleSample(this)) /** Location of summary file */ def summaryFile = new File(outputDir, "ShivaVariantcalling.summary.json") diff --git a/public/shiva/src/main/scala/nl/lumc/sasc/biopet/pipelines/shiva/variantcallers/VarscanCnsSingleSample.scala b/public/shiva/src/main/scala/nl/lumc/sasc/biopet/pipelines/shiva/variantcallers/VarscanCnsSingleSample.scala new file mode 100644 index 0000000000000000000000000000000000000000..c74d7e54d3f61687ca9f3d3106cf243cdad4e9c2 --- /dev/null +++ b/public/shiva/src/main/scala/nl/lumc/sasc/biopet/pipelines/shiva/variantcallers/VarscanCnsSingleSample.scala @@ -0,0 +1,63 @@ +package nl.lumc.sasc.biopet.pipelines.shiva.variantcallers + +import java.io.PrintWriter + +import nl.lumc.sasc.biopet.extensions.gatk.CombineVariants +import nl.lumc.sasc.biopet.extensions.{ Ln, Tabix, Bgzip } +import nl.lumc.sasc.biopet.extensions.samtools.SamtoolsMpileup +import nl.lumc.sasc.biopet.extensions.varscan.VarscanMpileup2cns +import nl.lumc.sasc.biopet.utils.config.Configurable + +/** + * Created by sajvanderzeeuw on 15-1-16. + */ +class VarscanCnsSingleSample(val root: Configurable) extends Variantcaller { + val name = "varscan_cns_singlesample" + protected def defaultPrio = 25 + + override def defaults = Map( + "samtoolsmpileup" -> Map( + "disable_baq" -> true, + "depth" -> 1000000 + ), + "mpileup2cns" -> Map("strand_filter" -> 0) + ) + + override def fixedValues = Map( + "samtoolsmpileup" -> Map("output_mapping_quality" -> true), + "mpileup2cns" -> Map("output_vcf" -> 1) + ) + + def biopetScript: Unit = { + val sampleVcfs = for ((sample, inputBam) <- inputBams.toList) yield { + val mpileup = new SamtoolsMpileup(this) + mpileup.input = List(inputBam) + + val sampleVcf = new File(outputDir, s"${name}_$sample.vcf.gz") + + val sampleFile = new File(outputDir, s"$sample.name.txt") + sampleFile.deleteOnExit() + val writer = new PrintWriter(sampleFile) + writer.println(sample) + writer.close() + + val varscan = new VarscanMpileup2cns(this) + varscan.vcfSampleList = Some(sampleVcf) + + add(mpileup | varscan | new Bgzip(this) > sampleVcf) + add(Tabix(this, sampleVcf)) + + sampleVcf + } + + if (sampleVcfs.size > 1) { + val cv = new CombineVariants(this) + cv.inputFiles = sampleVcfs + cv.outputFile = outputFile + cv.setKey = "null" + cv.excludeNonVariants = true + add(cv) + } else add(Ln.apply(this, sampleVcfs.head, outputFile)) + add(Tabix(this, outputFile)) + } +}