Commit cb7a051c authored by Peter van 't Hof's avatar Peter van 't Hof
Browse files

Merge branch 'release-0.7.0' into 'master'

Release 0.7.0



See merge request !449
parents 23c1ccea bf548a42
......@@ -8,8 +8,7 @@
*
* Contact us at: sasc@lumc.nl
*
* A dual licensing mode is applied. The source code within this project that are
* not part of GATK Queue is freely available for non-commercial use under an AGPL
* A dual licensing mode is applied. The source code within this project is freely available for non-commercial use under an AGPL
* license; For commercial users or users who do not want to follow the AGPL
* license, please contact us to obtain a separate license.
*/
......@@ -35,7 +34,8 @@ class VarscanCnsSingleSample(val root: Configurable) extends Variantcaller {
"disable_baq" -> true,
"depth" -> 1000000
),
"varscanmpileup2cns" -> Map("strand_filter" -> 0)
"varscanmpileup2cns" -> Map("strand_filter" -> 0),
"combinevariants" -> Map("scattercount" -> 20)
)
override def fixedValues = Map(
......@@ -60,16 +60,18 @@ class VarscanCnsSingleSample(val root: Configurable) extends Variantcaller {
val varscan = new VarscanMpileup2cns(this)
varscan.vcfSampleList = Some(sampleFile)
add(mpileup | new FixMpileup(this) | varscan | new Bgzip(this) > sampleVcf)
val variantcallingJob = mpileup | new FixMpileup(this) | varscan | new Bgzip(this) > sampleVcf
variantcallingJob.threadsCorrection = -2
add(variantcallingJob)
add(Tabix(this, sampleVcf))
sampleVcf
}
val cv = new CombineVariants(this)
cv.inputFiles = sampleVcfs
cv.outputFile = outputFile
cv.setKey = "null"
cv.variant = sampleVcfs
cv.out = outputFile
cv.setKey = Some("null")
cv.excludeNonVariants = true
add(cv)
}
......
#
# Biopet is built on top of GATK Queue for building bioinformatic
# pipelines. It is mainly intended to support LUMC SHARK cluster which is running
# SGE. But other types of HPC that are supported by GATK Queue (such as PBS)
# should also be able to execute Biopet tools and pipelines.
#
# Copyright 2014 Sequencing Analysis Support Core - Leiden University Medical Center
#
# Contact us at: sasc@lumc.nl
#
# A dual licensing mode is applied. The source code within this project is freely available for non-commercial use under an AGPL
# license; For commercial users or users who do not want to follow the AGPL
# license, please contact us to obtain a separate license.
#
# Set root logger level to DEBUG and its only appender to A1.
log4j.rootLogger=ERROR, A1
# A1 is set to be a ConsoleAppender.
log4j.appender.A1=org.apache.log4j.ConsoleAppender
# A1 uses PatternLayout.
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-5p [%d] [%C{1}] - %m%n
\ No newline at end of file
......@@ -8,8 +8,7 @@
*
* Contact us at: sasc@lumc.nl
*
* A dual licensing mode is applied. The source code within this project that are
* not part of GATK Queue is freely available for non-commercial use under an AGPL
* A dual licensing mode is applied. The source code within this project is freely available for non-commercial use under an AGPL
* license; For commercial users or users who do not want to follow the AGPL
* license, please contact us to obtain a separate license.
*/
......@@ -23,7 +22,7 @@ import nl.lumc.sasc.biopet.extensions.breakdancer.{ BreakdancerCaller, Breakdanc
import nl.lumc.sasc.biopet.extensions.clever.CleverCaller
import nl.lumc.sasc.biopet.extensions.delly.DellyCaller
import nl.lumc.sasc.biopet.extensions.pindel.{ PindelCaller, PindelConfig, PindelVCF }
import nl.lumc.sasc.biopet.utils.ConfigUtils
import nl.lumc.sasc.biopet.utils.{ ConfigUtils, Logging }
import nl.lumc.sasc.biopet.utils.config.Config
import org.broadinstitute.gatk.queue.QSettings
import org.scalatest.Matchers
......@@ -40,7 +39,7 @@ import scala.collection.mutable.ListBuffer
class ShivaSvCallingTest extends TestNGSuite with Matchers {
def initPipeline(map: Map[String, Any]): ShivaSvCalling = {
new ShivaSvCalling {
override def configName = "shivasvcalling"
override def configNamespace = "shivasvcalling"
override def globalConfig = new Config(ConfigUtils.mergeMaps(map, ShivaSvCallingTest.config))
qSettings = new QSettings
qSettings.runName = "test"
......@@ -152,9 +151,9 @@ class ShivaSvCallingTest extends TestNGSuite with Matchers {
pipeline.inputBams = Map("bam" -> ShivaSvCallingTest.inputTouch("bam" + ".bam"))
intercept[IllegalArgumentException] {
pipeline.init()
pipeline.script()
}
Logging.errors.clear()
}
private def resourcePath(p: String): String = {
......
/**
* Due to the license issue with GATK, this part of Biopet can only be used inside the
* LUMC. Please refer to https://git.lumc.nl/biopet/biopet/wikis/home for instructions
* on how to use this protected part of biopet or contact us at sasc@lumc.nl
* Biopet is built on top of GATK Queue for building bioinformatic
* pipelines. It is mainly intended to support LUMC SHARK cluster which is running
* SGE. But other types of HPC that are supported by GATK Queue (such as PBS)
* should also be able to execute Biopet tools and pipelines.
*
* Copyright 2014 Sequencing Analysis Support Core - Leiden University Medical Center
*
* Contact us at: sasc@lumc.nl
*
* A dual licensing mode is applied. The source code within this project is freely available for non-commercial use under an AGPL
* license; For commercial users or users who do not want to follow the AGPL
* license, please contact us to obtain a separate license.
*/
package nl.lumc.sasc.biopet.pipelines.gatk
package nl.lumc.sasc.biopet.pipelines.shiva
import java.io.{ File, FileOutputStream }
import com.google.common.io.Files
import nl.lumc.sasc.biopet.utils.config.Config
import nl.lumc.sasc.biopet.extensions.bwa.BwaMem
import nl.lumc.sasc.biopet.extensions.gatk.broad._
import nl.lumc.sasc.biopet.extensions.picard.{ MarkDuplicates, SortSam }
import nl.lumc.sasc.biopet.extensions.gatk.{ BaseRecalibrator, IndelRealigner, PrintReads, RealignerTargetCreator }
import nl.lumc.sasc.biopet.extensions.picard.MarkDuplicates
import nl.lumc.sasc.biopet.extensions.tools.VcfStats
import nl.lumc.sasc.biopet.utils.ConfigUtils
import nl.lumc.sasc.biopet.utils.{ ConfigUtils, Logging }
import nl.lumc.sasc.biopet.utils.config.Config
import org.broadinstitute.gatk.queue.QSettings
import org.scalatest.Matchers
import org.scalatest.testng.TestNGSuite
......@@ -24,10 +32,10 @@ import org.testng.annotations.{ DataProvider, Test }
*
* Created by pjvan_thof on 3/2/15.
*/
class ShivaTest extends TestNGSuite with Matchers {
trait ShivaTestTrait extends TestNGSuite with Matchers {
def initPipeline(map: Map[String, Any]): Shiva = {
new Shiva() {
override def configName = "shiva"
override def configNamespace = "shiva"
override def globalConfig = new Config(ConfigUtils.mergeMaps(map, ShivaTest.config))
qSettings = new QSettings
qSettings.runName = "test"
......@@ -36,26 +44,41 @@ class ShivaTest extends TestNGSuite with Matchers {
@DataProvider(name = "shivaOptions")
def shivaOptions = {
val bool = Array(true, false)
for (
s1 <- bool; s2 <- bool; multi <- bool;
dbsnp <- bool; realign <- bool; baseRecalibration <- bool
) yield Array("", s1, s2, multi, dbsnp, realign, baseRecalibration)
s1 <- sample1; s2 <- sample2;
realign <- realignProvider; baseRecalibration <- baseRecalibrationProvider
) yield Array("", s1, s2, realign, baseRecalibration)
}
def sample1 = Array(false, true)
def sample2 = Array(false, true)
def realignProvider = Array(false, true)
def baseRecalibrationProvider = Array(false, true)
def multisampleCalling: Boolean = true
def sampleCalling = false
def libraryCalling = false
def dbsnp = true
def svCalling = false
def cnvCalling = false
def annotation = false
@Test(dataProvider = "shivaOptions")
def testShiva(f: String, sample1: Boolean, sample2: Boolean,
multi: Boolean, dbsnp: Boolean,
realign: Boolean, baseRecalibration: Boolean): Unit = {
val map = {
var m: Map[String, Any] = ShivaTest.config
if (sample1) m = ConfigUtils.mergeMaps(ShivaTest.sample1, m)
if (sample2) m = ConfigUtils.mergeMaps(ShivaTest.sample2, m)
if (dbsnp) m = ConfigUtils.mergeMaps(Map("dbsnp" -> "test"), m)
ConfigUtils.mergeMaps(Map("multisample_variantcalling" -> multi,
if (dbsnp) m = ConfigUtils.mergeMaps(Map("dbsnp" -> "test.vcf.gz"), m)
ConfigUtils.mergeMaps(Map(
"multisample_variantcalling" -> multisampleCalling,
"single_sample_variantcalling" -> sampleCalling,
"library_variantcalling" -> libraryCalling,
"use_indel_realigner" -> realign,
"use_base_recalibration" -> baseRecalibration), m)
"use_base_recalibration" -> baseRecalibration,
"sv_calling" -> svCalling,
"cnv_calling" -> cnvCalling,
"annotation" -> annotation), m)
}
......@@ -63,6 +86,7 @@ class ShivaTest extends TestNGSuite with Matchers {
intercept[IllegalArgumentException] {
initPipeline(map).script()
}
Logging.errors.clear()
} else {
val pipeline = initPipeline(map)
pipeline.script()
......@@ -75,16 +99,79 @@ class ShivaTest extends TestNGSuite with Matchers {
// Gatk preprocess
pipeline.functions.count(_.isInstanceOf[IndelRealigner]) shouldBe (numberLibs * (if (realign) 1 else 0) + (if (sample2 && realign) 1 else 0))
pipeline.functions.count(_.isInstanceOf[RealignerTargetCreator]) shouldBe (numberLibs * (if (realign) 1 else 0) + (if (sample2 && realign) 1 else 0))
pipeline.functions.count(_.isInstanceOf[BaseRecalibrator]) shouldBe (if (dbsnp && baseRecalibration) numberLibs else 0)
pipeline.functions.count(_.isInstanceOf[BaseRecalibrator]) shouldBe (if (dbsnp && baseRecalibration) (numberLibs * 2) else 0)
pipeline.functions.count(_.isInstanceOf[PrintReads]) shouldBe (if (dbsnp && baseRecalibration) numberLibs else 0)
pipeline.functions.count(_.isInstanceOf[VcfStats]) shouldBe (if (multi) 2 else 0)
pipeline.summarySettings.get("annotation") shouldBe Some(annotation)
pipeline.summarySettings.get("sv_calling") shouldBe Some(svCalling)
pipeline.summarySettings.get("cnv_calling") shouldBe Some(cnvCalling)
pipeline.samples foreach {
case (sampleId, sample) =>
sample.summarySettings.get("single_sample_variantcalling") shouldBe Some(sampleCalling)
sample.summarySettings.get("use_indel_realigner") shouldBe Some(realign)
sample.libraries.foreach {
case (libId, lib) =>
lib.summarySettings.get("library_variantcalling") shouldBe Some(libraryCalling)
lib.summarySettings.get("use_indel_realigner") shouldBe Some(realign)
lib.summarySettings.get("use_base_recalibration") shouldBe Some(baseRecalibration && dbsnp)
}
}
pipeline.functions.count(_.isInstanceOf[VcfStats]) shouldBe (
(if (multisampleCalling) 2 else 0) +
(if (sampleCalling) numberSamples * 2 else 0) +
(if (libraryCalling) numberLibs * 2 else 0))
}
}
}
class ShivaDefaultTest extends ShivaTestTrait
class ShivaNoDbsnpTest extends ShivaTestTrait {
override def sample1 = Array(true)
override def sample2 = Array(false)
override def realignProvider = Array(true)
override def dbsnp = false
}
class ShivaLibraryCallingTest extends ShivaTestTrait {
override def sample1 = Array(true, false)
override def sample2 = Array(false, true)
override def realignProvider = Array(false)
override def baseRecalibrationProvider = Array(false)
override def libraryCalling = true
}
class ShivaSampleCallingTest extends ShivaTestTrait {
override def sample1 = Array(true, false)
override def sample2 = Array(false, true)
override def realignProvider = Array(false)
override def baseRecalibrationProvider = Array(false)
override def sampleCalling = true
}
class ShivaWithSvCallingTest extends ShivaTestTrait {
override def sample1 = Array(true)
override def sample2 = Array(false)
override def realignProvider = Array(false)
override def baseRecalibrationProvider = Array(false)
override def svCalling = true
}
class ShivaWithCnvCallingTest extends ShivaTestTrait {
override def sample1 = Array(true)
override def sample2 = Array(false)
override def realignProvider = Array(false)
override def baseRecalibrationProvider = Array(false)
override def cnvCalling = true
}
class ShivaWithAnnotationTest extends ShivaTestTrait {
override def sample1 = Array(true)
override def sample2 = Array(false)
override def realignProvider = Array(false)
override def baseRecalibrationProvider = Array(false)
override def annotation = true
}
object ShivaTest {
val outputDir = Files.createTempDir()
outputDir.deleteOnExit()
new File(outputDir, "input").mkdirs()
def inputTouch(name: String): String = {
val file = new File(outputDir, "input" + File.separator + name)
......@@ -123,11 +210,27 @@ object ShivaTest {
"bwa" -> Map("exe" -> "test"),
"samtools" -> Map("exe" -> "test"),
"macs2" -> Map("exe" -> "test"),
"igvtools" -> Map("exe" -> "test"),
"igvtools" -> Map("exe" -> "test", "igvtools_jar" -> "test"),
"wigtobigwig" -> Map("exe" -> "test"),
"md5sum" -> Map("exe" -> "test"),
"bgzip" -> Map("exe" -> "test"),
"tabix" -> Map("exe" -> "test")
"tabix" -> Map("exe" -> "test"),
"breakdancerconfig" -> Map("exe" -> "test"),
"breakdancercaller" -> Map("exe" -> "test"),
"pindelconfig" -> Map("exe" -> "test"),
"pindelcaller" -> Map("exe" -> "test"),
"pindelvcf" -> Map("exe" -> "test"),
"clever" -> Map("exe" -> "test"),
"delly" -> Map("exe" -> "test"),
"pysvtools" -> Map(
"exe" -> "test",
"exclusion_regions" -> "test",
"translocations_only" -> false),
"freec" -> Map(
"exe" -> "test",
"chrFiles" -> "test",
"chrLenFile" -> "test"
)
)
val sample1 = Map(
......
/**
* Biopet is built on top of GATK Queue for building bioinformatic
* pipelines. It is mainly intended to support LUMC SHARK cluster which is running
* SGE. But other types of HPC that are supported by GATK Queue (such as PBS)
* should also be able to execute Biopet tools and pipelines.
*
* Copyright 2014 Sequencing Analysis Support Core - Leiden University Medical Center
*
* Contact us at: sasc@lumc.nl
*
* A dual licensing mode is applied. The source code within this project is freely available for non-commercial use under an AGPL
* license; For commercial users or users who do not want to follow the AGPL
* license, please contact us to obtain a separate license.
*/
/**
* Due to the license issue with GATK, this part of Biopet can only be used inside the
* LUMC. Please refer to https://git.lumc.nl/biopet/biopet/wikis/home for instructions
* on how to use this protected part of biopet or contact us at sasc@lumc.nl
*/
package nl.lumc.sasc.biopet.pipelines.gatk
package nl.lumc.sasc.biopet.pipelines.shiva
import java.io.{ File, FileOutputStream }
import com.google.common.io.Files
import nl.lumc.sasc.biopet.core.BiopetPipe
import nl.lumc.sasc.biopet.extensions.Freebayes
import nl.lumc.sasc.biopet.extensions.bcftools.{ BcftoolsCall, BcftoolsMerge }
import nl.lumc.sasc.biopet.extensions.gatk.{ CombineVariants, GenotypeConcordance, HaplotypeCaller, UnifiedGenotyper }
import nl.lumc.sasc.biopet.utils.config.Config
import nl.lumc.sasc.biopet.extensions.gatk.CombineVariants
import nl.lumc.sasc.biopet.extensions.gatk.broad.{ HaplotypeCaller, UnifiedGenotyper }
import nl.lumc.sasc.biopet.extensions.tools.{ MpileupToVcf, VcfFilter, VcfStats }
import nl.lumc.sasc.biopet.extensions.vt.{ VtDecompose, VtNormalize }
import nl.lumc.sasc.biopet.utils.ConfigUtils
import org.apache.commons.io.FileUtils
import org.broadinstitute.gatk.queue.QSettings
import org.scalatest.Matchers
import org.scalatest.testng.TestNGSuite
import org.testng.annotations.{ AfterClass, DataProvider, Test }
import org.testng.annotations.{ DataProvider, Test }
import scala.collection.mutable.ListBuffer
......@@ -26,31 +42,38 @@ import scala.collection.mutable.ListBuffer
*
* Created by pjvan_thof on 3/2/15.
*/
class ShivaVariantcallingTest extends TestNGSuite with Matchers {
trait ShivaVariantcallingTestTrait extends TestNGSuite with Matchers {
def initPipeline(map: Map[String, Any]): ShivaVariantcalling = {
new ShivaVariantcalling() {
override def configName = "shivavariantcalling"
override def configNamespace = "shivavariantcalling"
override def globalConfig = new Config(ConfigUtils.mergeMaps(map, ShivaVariantcallingTest.config))
qSettings = new QSettings
qSettings.runName = "test"
}
}
def raw: Boolean = false
def bcftools: Boolean = false
def bcftools_singlesample: Boolean = false
def haplotypeCallerGvcf: Boolean = false
def haplotypeCallerAllele: Boolean = false
def unifiedGenotyperAllele: Boolean = false
def unifiedGenotyper: Boolean = false
def haplotypeCaller: Boolean = false
def freebayes: Boolean = false
def varscanCnsSinglesample: Boolean = false
def referenceVcf: Option[File] = None
def roiBedFiles: List[File] = Nil
def ampliconBedFile: Option[File] = None
def normalize = false
def decompose = false
@DataProvider(name = "shivaVariantcallingOptions")
def shivaVariantcallingOptions = {
val bool = Array(true, false)
(for (
bams <- 0 to 2;
raw <- bool;
bcftools <- bool;
bcftools_singlesample <- bool;
haplotypeCallerGvcf <- bool;
haplotypeCallerAllele <- bool;
unifiedGenotyperAllele <- bool;
unifiedGenotyper <- bool;
haplotypeCaller <- bool
) yield Array[Any](bams, raw, bcftools, bcftools_singlesample, unifiedGenotyper, haplotypeCaller, haplotypeCallerGvcf, haplotypeCallerAllele, unifiedGenotyperAllele)
(for (bams <- 0 to 2) yield Array[Any](bams, raw, bcftools, bcftools_singlesample, unifiedGenotyper,
haplotypeCaller, haplotypeCallerGvcf, haplotypeCallerAllele, unifiedGenotyperAllele,
freebayes, varscanCnsSinglesample)
).toArray
}
......@@ -58,31 +81,36 @@ class ShivaVariantcallingTest extends TestNGSuite with Matchers {
def testShivaVariantcalling(bams: Int,
raw: Boolean,
bcftools: Boolean,
bcftools_singlesample: Boolean,
bcftoolsSinglesample: Boolean,
unifiedGenotyper: Boolean,
haplotypeCaller: Boolean,
haplotypeCallerGvcf: Boolean,
haplotypeCallerAllele: Boolean,
unifiedGenotyperAllele: Boolean) = {
unifiedGenotyperAllele: Boolean,
freebayes: Boolean,
varscanCnsSinglesample: Boolean) = {
val callers: ListBuffer[String] = ListBuffer()
if (raw) callers.append("raw")
if (bcftools) callers.append("bcftools")
if (bcftools_singlesample) callers.append("bcftools_singlesample")
if (bcftoolsSinglesample) callers.append("bcftools_singlesample")
if (unifiedGenotyper) callers.append("unifiedgenotyper")
if (haplotypeCallerGvcf) callers.append("haplotypecaller_gvcf")
if (haplotypeCallerAllele) callers.append("haplotypecaller_allele")
if (unifiedGenotyperAllele) callers.append("unifiedgenotyper_allele")
if (haplotypeCaller) callers.append("haplotypecaller")
val map = Map("variantcallers" -> callers.toList)
if (freebayes) callers.append("freebayes")
if (varscanCnsSinglesample) callers.append("varscan_cns_singlesample")
val map = Map(
"variantcallers" -> callers.toList,
"execute_vt_normalize" -> normalize,
"execute_vt_decompose" -> decompose,
"regions_of_interest" -> roiBedFiles.map(_.getAbsolutePath)
) ++ referenceVcf.map("reference_vcf" -> _) ++ ampliconBedFile.map("amplicon_bed" -> _.getAbsolutePath)
val pipeline = initPipeline(map)
pipeline.inputBams = (for (n <- 1 to bams) yield n.toString -> ShivaVariantcallingTest.inputTouch("bam_" + n + ".bam")).toMap
val illegalArgumentException = pipeline.inputBams.isEmpty ||
(!raw && !bcftools &&
!haplotypeCaller && !unifiedGenotyper &&
!haplotypeCallerGvcf && !haplotypeCallerAllele && !unifiedGenotyperAllele &&
!bcftools_singlesample)
val illegalArgumentException = pipeline.inputBams.isEmpty || callers.isEmpty
if (illegalArgumentException) intercept[IllegalArgumentException] {
pipeline.script()
......@@ -91,26 +119,98 @@ class ShivaVariantcallingTest extends TestNGSuite with Matchers {
if (!illegalArgumentException) {
pipeline.script()
pipeline.functions.count(_.isInstanceOf[CombineVariants]) shouldBe 1 + (if (raw) 1 else 0)
//pipeline.functions.count(_.isInstanceOf[Bcftools]) shouldBe (if (bcftools) 1 else 0)
//FIXME: Can not check for bcftools because of piping
//pipeline.functions.count(_.isInstanceOf[MpileupToVcf]) shouldBe (if (raw) bams else 0)
val pipesJobs = pipeline.functions.filter(_.isInstanceOf[BiopetPipe]).flatMap(_.asInstanceOf[BiopetPipe].pipesJobs)
pipeline.functions.count(_.isInstanceOf[CombineVariants]) shouldBe (1 + (if (raw) 1 else 0) + (if (varscanCnsSinglesample) 1 else 0))
pipesJobs.count(_.isInstanceOf[BcftoolsCall]) shouldBe (if (bcftools) 1 else 0) + (if (bcftoolsSinglesample) bams else 0)
pipeline.functions.count(_.isInstanceOf[BcftoolsMerge]) shouldBe (if (bcftoolsSinglesample && bams > 1) 1 else 0)
pipesJobs.count(_.isInstanceOf[Freebayes]) shouldBe (if (freebayes) 1 else 0)
pipesJobs.count(_.isInstanceOf[MpileupToVcf]) shouldBe (if (raw) bams else 0)
pipeline.functions.count(_.isInstanceOf[VcfFilter]) shouldBe (if (raw) bams else 0)
pipeline.functions.count(_.isInstanceOf[HaplotypeCaller]) shouldBe (if (haplotypeCaller) 1 else 0) +
(if (haplotypeCallerAllele) 1 else 0) + (if (haplotypeCallerGvcf) bams else 0)
pipeline.functions.count(_.isInstanceOf[UnifiedGenotyper]) shouldBe (if (unifiedGenotyper) 1 else 0) +
(if (unifiedGenotyperAllele) 1 else 0)
pipeline.functions.count(_.isInstanceOf[VcfStats]) shouldBe (1 + callers.size)
pipeline.functions.count(_.isInstanceOf[VcfStats]) shouldBe (1 + callers.size + (roiBedFiles ++ ampliconBedFile).length * (1 + callers.size))
pipeline.functions.count(_.isInstanceOf[VtNormalize]) shouldBe (if (normalize) callers.size else 0)
pipeline.functions.count(_.isInstanceOf[VtDecompose]) shouldBe (if (decompose) callers.size else 0)
pipeline.functions.count(_.isInstanceOf[GenotypeConcordance]) shouldBe (if (referenceVcf.isDefined) 1 + callers.size else 0)
pipeline.summarySettings.get("variantcallers").map(_.asInstanceOf[List[String]].toSet) shouldBe Some(callers.toSet)
pipeline.summarySettings.get("amplicon_bed") shouldBe Some(ampliconBedFile.map(_.getAbsolutePath))
pipeline.summarySettings.get("regions_of_interest") shouldBe Some(roiBedFiles.map(_.getAbsolutePath))
}
}
}
@AfterClass def removeTempOutputDir() = {
FileUtils.deleteDirectory(ShivaVariantcallingTest.outputDir)
}
class ShivaVariantcallingNoVariantcallersTest extends ShivaVariantcallingTestTrait
class ShivaVariantcallingAllTest extends ShivaVariantcallingTestTrait {
override def raw: Boolean = true
override def bcftools: Boolean = true
override def bcftools_singlesample: Boolean = true
override def haplotypeCallerGvcf: Boolean = true
override def haplotypeCallerAllele: Boolean = true
override def unifiedGenotyperAllele: Boolean = true
override def unifiedGenotyper: Boolean = true
override def haplotypeCaller: Boolean = true
override def freebayes: Boolean = true
override def varscanCnsSinglesample: Boolean = true
}
class ShivaVariantcallingRawTest extends ShivaVariantcallingTestTrait {
override def raw: Boolean = true
}
class ShivaVariantcallingBcftoolsTest extends ShivaVariantcallingTestTrait {
override def bcftools: Boolean = true
}
class ShivaVariantcallingBcftoolsSinglesampleTest extends ShivaVariantcallingTestTrait {
override def bcftools_singlesample: Boolean = true
}
class ShivaVariantcallingHaplotypeCallerGvcfTest extends ShivaVariantcallingTestTrait {
override def haplotypeCallerGvcf: Boolean = true
}
class ShivaVariantcallingHaplotypeCallerAlleleTest extends ShivaVariantcallingTestTrait {
override def haplotypeCallerAllele: Boolean = true
}
class ShivaVariantcallingUnifiedGenotyperAlleleTest extends ShivaVariantcallingTestTrait {
override def unifiedGenotyperAllele: Boolean = true
}
class ShivaVariantcallingUnifiedGenotyperTest extends ShivaVariantcallingTestTrait {
override def unifiedGenotyper: Boolean = true
}
class ShivaVariantcallingHaplotypeCallerTest extends ShivaVariantcallingTestTrait {
override def haplotypeCaller: Boolean = true
}
cl