Commit 1337c894 authored by Peter van 't Hof's avatar Peter van 't Hof

Merge branch 'feature-xhmm' into 'develop'

Feature xhmm



See merge request !479
parents 18cee8f8 90815888
package nl.lumc.sasc.biopet.extensions.gatk
import java.io.File
import nl.lumc.sasc.biopet.utils.config.Configurable
import org.broadinstitute.gatk.utils.commandline.{ Argument, Input, Output }
/**
* Created by Sander Bollen on 23-11-16.
*/
class DepthOfCoverage(val root: Configurable) extends CommandLineGATK {
def analysis_type = "DepthOfCoverage"
/*
This tool creates several files with `out` as the root
*/
@Output(fullName = "out", shortName = "o", doc = "File name base to which coverage metric should be written")
var out: File = _
private var _summaryFile: File = _
private var _statisticsFile: File = _
private var _intervalSummaryFile: File = _
private var _intervalStatisticsFile: File = _
private var _geneSummaryFile: File = _
private var _geneStatisticsFile: File = _
private var _cumulativeCoverageCountsFile: File = _
private var _cumulativeCoverageProportionsFile: File = _
@Output
var summaryFile = _summaryFile
@Output
var statisticsFile = _statisticsFile
@Output
var intervalSummaryFile = _intervalSummaryFile
@Output
var intervalStatisticsFile = _intervalStatisticsFile
@Output
var geneSummaryFile = _geneSummaryFile
@Output
var geneStatisticsFile = _geneStatisticsFile
@Output
var culumativeCoverageCountsFile = _cumulativeCoverageCountsFile
@Output
var cumulativeCoverageProportionsFile = _cumulativeCoverageProportionsFile
@Input(required = false)
var calculateCoverageOverGenes: Option[File] = config("calculate_coverage_over_genes", namespace = "depth_of_coverage", default = None)
var countType: Option[String] = config("count_type", namespace = "depth_of_coverage", default = None)
var maxBaseQuality: Option[Int] = config("max_base_quality", namespace = "depth_of_coverage", default = None)
var maxMappingQuality: Option[Int] = config("max_mapping_quality", namespace = "depth_of_coverage", default = None)
var minBaseQuality: Option[Int] = config("min_base_quality", namespace = "depth_of_coverage", default = None)
var minMappingQuality: Option[Int] = config("min_mapping_quality", namespace = "depth_of_coverage", default = None)
var outputFormat: Option[String] = config("output_format", namespace = "depth_of_coverage", default = None)
var partitionType: Option[String] = config("partition_type", namespace = "depth_of_coverage", default = None)
var omitDepthOutputAtEachBase: Boolean = config("omit_depth_output_at_each_base", namespace = "depth_of_coverage", default = false)
var omitIntervalStatistics: Boolean = config("omit_interval_statistics", namespace = "depth_of_coverage", default = false)
var omitLocusTable: Boolean = config("omit_locus_table", namespace = "depth_of_coverage", default = false)
var omitPerSampleStats: Boolean = config("omit_per_sample_stats", namespace = "depth_of_coverage", default = false)
var printBaseCounts: Boolean = config("print_base_counts", namespace = "depth_of_coverage", default = false)
var nBins: Option[Int] = config("n_bins", namespace = "depth_of_coverage", default = None)
var start: Option[Int] = config("start", namespace = "depth_of_coverage", default = None)
var stop: Option[Int] = config("stop", namespace = "depth_of_coverage", default = None)
var summaryCoverageThreshold: Option[Int] = config("summary_coverage_threshold", namespace = "depth_of_coverage", default = None)
var ignoreDeletionSites: Boolean = config("ignore_deletion_sites", namespace = "depth_of_coverage", default = false)
var includeDeletions: Boolean = config("include_deletions", namespace = "depth_of_coverage", default = false)
var includeRefNSites: Boolean = config("include_ref_n_sites", namespace = "depth_of_coverage", default = false)
var printBinEndpointsAndExit: Boolean = config("print_bin_endpoint_and_exit", namespace = "depth_of_coverage", default = false)
override def beforeGraph() = {
super.beforeGraph()
if (out == null) {
throw new IllegalStateException("You must set the <out> variable")
}
_summaryFile = new File(out + ".sample_summary")
_statisticsFile = new File(out + ".sample_statistics")
_intervalSummaryFile = new File(out + ".sample_interval_summary")
_intervalStatisticsFile = new File(out + ".sample_interval_statistics")
_geneSummaryFile = new File(out + ".sample_gene_summary")
_geneStatisticsFile = new File(out + ".sample_gene_statistics")
_cumulativeCoverageCountsFile = new File(out + ".sample_cumulative_coverage_counts")
_cumulativeCoverageProportionsFile = new File(out + ".sample_cumulative_coverage_proportions")
}
override def cmdLine = {
super.cmdLine + required("--out", out) +
optional("--calculateCoverageOverGenes", calculateCoverageOverGenes) +
optional("--countType", countType) +
optional("--maxBaseQuality", maxBaseQuality) +
optional("--maxMappingQuality", maxMappingQuality) +
optional("--minBaseQuality", minBaseQuality) +
optional("--minMappingQuality", minMappingQuality) +
optional("--outputFormat", outputFormat) +
optional("--partitionType", partitionType) +
conditional(omitDepthOutputAtEachBase, "--omitDepthOutputAtEachBase") +
conditional(omitIntervalStatistics, "--omitIntervalStatistics") +
conditional(omitLocusTable, "--omitLocusTable") +
conditional(omitPerSampleStats, "--omitPerSampleStats") +
conditional(printBaseCounts, "--printBaseCounts") +
optional("--nBins", nBins) +
optional("--start", start) +
optional("--stop", stop) +
optional("--summaryCoverageThreshold", summaryCoverageThreshold) +
conditional(ignoreDeletionSites, "--ignoreDeletionSites") +
conditional(includeDeletions, "--includeDeletions") +
conditional(includeRefNSites, "--includeRefNSites") +
conditional(printBinEndpointsAndExit, "--printBinEndPointsAndExit")
}
}
object DepthOfCoverage {
def apply(root: Configurable, bamFile: List[File], outFile: File, targets: List[File]): DepthOfCoverage = {
val dp = new DepthOfCoverage(root)
dp.input_file = bamFile
dp.intervals = targets
dp.out = outFile
dp
}
}
package nl.lumc.sasc.biopet.extensions.xhmm
import java.io.File
import nl.lumc.sasc.biopet.core.{ BiopetCommandLineFunction, Version }
/**
* Created by Sander Bollen on 23-11-16.
*
* Generic abstract class for XHMM commands
*/
abstract class Xhmm extends BiopetCommandLineFunction with Version {
executable = config("exe", namespace = "xhmm", default = "xhmm")
var discoverParamsFile: File = config("discover_params", namespace = "xhmm")
def versionCommand = executable + " --version"
def versionRegex = """xhmm (.*)""".r
}
package nl.lumc.sasc.biopet.extensions.xhmm
import java.io.File
import nl.lumc.sasc.biopet.core.summary.Summarizable
import nl.lumc.sasc.biopet.utils.config.Configurable
import org.broadinstitute.gatk.utils.commandline.{ Argument, Input, Output }
import scala.io.Source
/**
* Created by Sander Bollen on 23-11-16.
*/
class XhmmDiscover(val root: Configurable) extends Xhmm with Summarizable {
@Input
var inputMatrix: File = _
@Output
var outputXcnv: File = _
@Input
var r: File = _
private var _outputXcnvAuxFile: File = _
@Output
var outputXcnvAuxFile = _outputXcnvAuxFile
var xhmmAnalysisName: String = _
override def beforeGraph() = {
super.beforeGraph()
if (outputXcnv == null) {
throw new IllegalStateException("Must set output file")
}
_outputXcnvAuxFile = new File(outputXcnv.getAbsolutePath + ".aux")
}
def cmdLine = {
executable + required("--discover") +
required("-r", inputMatrix) +
required("-R", r) +
required("-c", outputXcnv) +
required("-a", outputXcnvAuxFile) +
required("-p", discoverParamsFile) +
required("-s", xhmmAnalysisName)
}
case class XcnvLine(sample: String, cnvType: String, location: String)
def summaryFiles: Map[String, File] = Map()
def summaryStats: Map[String, Any] = {
val lines = Source.fromFile(outputXcnv).
getLines().
filter(p => !p.startsWith("SAMPLE")).
map(x => x.split("\t")).
map(x => XcnvLine(x(0), x(1), x(2))).toList
val samples = lines.map(_.sample)
samples.map { x =>
val sampleLines = lines.filter(_.sample == x)
x -> Map(
"DEL" -> sampleLines.count(_.cnvType == "DEL"),
"DUP" -> sampleLines.count(_.cnvType == "DUP"))
}.toMap
}
}
package nl.lumc.sasc.biopet.extensions.xhmm
import java.io.File
import nl.lumc.sasc.biopet.core.Reference
import nl.lumc.sasc.biopet.utils.config.Configurable
import org.broadinstitute.gatk.utils.commandline.{ Argument, Input, Output }
/**
* Created by Sander Bollen on 23-11-16.
*/
class XhmmGenotype(val root: Configurable) extends Xhmm with Reference {
@Input
var inputMatrix: File = _
@Input
var inputXcnv: File = _
@Output
var outputVcf: File = _
@Input
var r: File = _
@Input
var f: File = _
override def beforeGraph() = {
super.beforeGraph()
if (f == null) {
f = referenceFasta()
}
}
def cmdLine = {
executable + required("--genotype") +
required("-p", discoverParamsFile) +
required("-r", inputMatrix) +
required("-R", r) +
required("-g", inputXcnv) +
required("-F", f) +
required("-v", outputVcf)
}
}
package nl.lumc.sasc.biopet.extensions.xhmm
import java.io.File
import nl.lumc.sasc.biopet.utils.config.Configurable
import org.broadinstitute.gatk.utils.commandline.{ Argument, Input, Output }
/**
* Created by Sander Bollen on 23-11-16.
*/
class XhmmMatrix(val root: Configurable) extends Xhmm {
@Input
var inputMatrix: File = _
@Output
var outputMatrix: File = _
@Output(required = false)
var outputExcludedTargets: Option[File] = None
@Output(required = false)
var outputExcludedSamples: Option[File] = None
@Input(required = false)
var inputExcludeTargets: List[File] = Nil
@Input(required = false)
var inputExcludeSamples: List[File] = Nil
var minTargetSize: Int = config("min_target_size", namespace = "xhmm_matrix", default = 10)
var maxTargetSize: Int = config("max_target_size", namespace = "xhmm_matrix", default = 10000)
var minMeanTargetRD: Int = config("min_mean_target_rd", namespace = "xhmm_matrix", default = 10)
var maxMeanTargetRD: Int = config("max_mean_target_rd", namespace = "xhmm_matrix", default = 500)
var minMeanSampleRD: Int = config("min_mean_sample_rd", namespace = "xhmm_matrix", default = 25)
var maxMeanSampleRD: Int = config("max_mean_sample_rd", namespace = "xhmm_matrix", default = 200)
var maxSdSampleRD: Int = config("max_sd_sample_rd", namespace = "xhmm_matrix", default = 150)
var maxsdTargetRD: Int = config("max_sd_target_rd", namespace = "xhmm_matrix", default = 30)
var centerData: Boolean = false
var centerType: String = "sample"
var zScoreData: Boolean = false
private def subCmdLine = {
if (inputExcludeSamples.nonEmpty && inputExcludeTargets.nonEmpty) {
repeat("--excludeTargets", inputExcludeTargets) + repeat("--excludeSamples", inputExcludeSamples)
} else if (centerData && zScoreData) {
conditional(centerData, "--centerData") +
required("--centerType", centerType) +
conditional(zScoreData, "--zScoreData") +
required("--maxSdTargetRD", maxsdTargetRD)
} else {
required("--minTargetSize", minTargetSize) +
required("--maxTargetSize", maxTargetSize) +
required("--minMeanTargetRD", minMeanTargetRD) +
required("--maxMeanTargetRD", maxMeanTargetRD) +
required("--minMeanSampleRD", minMeanSampleRD) +
required("--maxMeanSampleRD", maxMeanSampleRD) +
required("--maxSdSampleRD", maxSdSampleRD)
}
}
def cmdLine = {
executable + required("--matrix") +
required("-r", inputMatrix) +
required("-o", outputMatrix) +
optional("--outputExcludedTargets", outputExcludedTargets) +
optional("--outputExcludedSamples", outputExcludedSamples) + subCmdLine
}
}
package nl.lumc.sasc.biopet.extensions.xhmm
import java.io.File
import nl.lumc.sasc.biopet.utils.config.Configurable
import org.broadinstitute.gatk.utils.commandline.{ Input, Output }
/**
* Created by Sander Bollen on 23-11-16.
*/
class XhmmMergeGatkDepths(val root: Configurable) extends Xhmm {
@Input(doc = "List of input depths files")
var gatkDepthsFiles: List[File] = Nil
@Output(doc = "Merged output file in XHMM format")
var output: File = _
def cmdLine = {
executable + required("--mergeGATKdepths") +
repeat("--GATKdepths", gatkDepthsFiles) +
required("-o", output)
}
}
package nl.lumc.sasc.biopet.extensions.xhmm
import java.io.File
import nl.lumc.sasc.biopet.utils.config.Configurable
import org.broadinstitute.gatk.utils.commandline.{ Argument, Input, Output }
/**
* Created by Sander Bollen on 23-11-16.
*/
class XhmmNormalize(val root: Configurable) extends Xhmm {
@Input
var inputMatrix: File = _
@Input
var pcaFile: File = _
@Output
var normalizeOutput: File = _
var normalizeMethod: String = config("normalize_method", namespace = "xhmm_normalize", default = "PVE_mean")
var pveFactor: Float = config("pve_mean_factor", namespace = "xhmm_normalize", default = 0.7)
def cmdLine = {
executable + required("--normalize") +
required("-r", inputMatrix) +
required("--PCAfiles", pcaFile) +
required("--normalizeOutput", normalizeOutput) +
required("--PCnormalizeMethod", normalizeMethod) +
required("--PVE_mean_factor", pveFactor)
}
}
package nl.lumc.sasc.biopet.extensions.xhmm
import java.io.File
import nl.lumc.sasc.biopet.utils.config.Configurable
import org.broadinstitute.gatk.utils.commandline.{ Input, Output }
/**
* Created by Sander Bollen on 23-11-16.
*/
class XhmmPca(val root: Configurable) extends Xhmm {
@Input
var inputMatrix: File = _
@Output(required = true)
var pcaFile: File = _
def cmdLine = {
executable + required("--PCA") + required("-r", inputMatrix) + required("--PCAfiles", pcaFile)
}
}
SAMPLE CNV INTERVAL KB CHR MID_BP TARGETS NUM_TARG Q_EXACT Q_SOME Q_NON_DIPLOID Q_START Q_STOP MEAN_RD MEAN_ORIG_RD
Sample_01 DUP NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_01 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_01 DUP NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_01 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_01 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_01 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_01 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_01 DUP NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_01 DUP NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_01 DUP NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_01 DUP NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_01 DUP NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_01 DUP NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_01 DUP NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_01 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_01 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_01 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_01 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_01 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_01 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_01 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_01 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_01 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_01 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_01 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_01 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_01 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_01 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_01 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_01 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_01 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_01 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_01 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_01 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_01 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_01 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_01 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_01 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_01 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_01 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_01 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_01 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_01 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_01 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_01 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_01 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_01 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_01 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_01 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_01 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_01 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_01 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_01 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_01 DUP NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_01 DUP NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_02 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_02 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_02 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_02 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_02 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_02 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_02 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_02 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_02 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_02 DUP NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_02 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_02 DUP NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_02 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_02 DUP NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_02 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_02 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_02 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_02 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_02 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_02 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_02 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_02 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_02 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_02 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_02 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_02 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_02 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_02 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_02 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_02 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_02 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_02 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_02 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_02 DUP NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_02 DUP NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_02 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_02 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_02 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_02 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_02 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_02 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_02 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_02 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_02 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_02 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_02 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_02 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_02 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_02 DUP NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_02 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_02 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_02 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_02 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_02 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_02 DUP NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_03 DUP NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_03 DUP NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_03 DUP NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_03 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_03 DUP NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_03 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_03 DUP NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_03 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_03 DUP NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_03 DUP NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_03 DUP NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_03 DUP NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_03 DUP NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_03 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_03 DUP NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_03 DUP NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_03 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_03 DUP NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_03 DUP NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_03 DUP NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_03 DUP NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_03 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_03 DUP NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_03 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_03 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_03 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_03 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_03 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_03 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_03 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_03 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_03 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_03 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_03 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_03 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_03 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_03 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_03 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_03 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_03 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_03 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
Sample_03 DEL NA NA NA NA NA NA NA NA NA NA NA NA NA
package nl.lumc.sasc.biopet.extensions
import java.io.File
import java.nio.file.Paths
import nl.lumc.sasc.biopet.extensions.xhmm.XhmmDiscover
import org.scalatest.Matchers
import org.scalatest.testng.TestNGSuite
import org.testng.annotations.Test
/**
* Created by Sander Bollen on 23-11-16.
*/
class XhmmTest extends TestNGSuite with Matchers {
@Test
def testXcnvSummaryTest() = {
val file = new File(Paths.get(getClass.getResource("/test.xcnv").toURI).toString)
val cnv = new XhmmDiscover(null)
cnv.outputXcnv = file
val stats = cnv.summaryStats
stats.keys.toList.sorted shouldBe List("Sample_01", "Sample_02", "Sample_03").sorted
stats.getOrElse("Sample_01", Map()) shouldBe Map("DEL" -> 44, "DUP" -> 11)
stats.getOrElse("Sample_02", Map()) shouldBe Map("DEL" -> 48, "DUP" -> 7)
stats.getOrElse("Sample_03", Map()) shouldBe Map("DEL" -> 25, "DUP" -> 17)
}
}