public void ToStringBnd() { var parser = VcfVariantParserSettings.Create(ImmutableList.Create(SampleName)); var variant = VcfVariant.TryParse(Bnd1, parser).GetOrThrow(); var actual = WittyerVcfWriter.ToString(variant, null); Assert.Equal(Bnd1, actual); }
public void ToStringNoValueWorks() { var parser = VcfVariantParserSettings.Create(ImmutableList.Create(SampleName)); var variant = VcfVariant.TryParse(NoValueUnsorted, parser).GetOrThrow(); var actual = WittyerVcfWriter.ToString(variant, null); Assert.Equal(NoValueSorted, actual); }
public void ComparerWorks() { if (MiscUtils.IsRunningAnyLinux) { return; // currently failing on linux :( } IReadOnlyList <IContigInfo> CreateHeader(string fileName) => VcfHeader .TryCreate(Path.Combine("Resources", "VcfHeaders", fileName).ToFileInfo()).GetOrThrow() .ColumnMetaInfoLines.ContigLines.Select(kvp => kvp.Value.Contig).ToReadOnlyList(); var comparer = WittyerVcfWriter.CreateComparer(CreateHeader("query.vcf.gz"), CreateHeader("truth.vcf.gz")); var parser = VcfVariantParserSettings.Create(ImmutableList.Create(SampleName)); var bnd1 = VcfVariant.TryParse(Bnd1, parser).GetOrThrow(); var bnd2 = VcfVariant.TryParse(Bnd2, parser).GetOrThrow(); Assert.True(comparer.Compare(bnd1, bnd2) < 0); }
public void CnvWorksWithCrossType() { if (MiscUtils.IsRunningAnyLinux) { return; // currently failing on linux :( } var outputDirectory = Path.GetRandomFileName().ToDirectoryInfo(); var wittyerSettings = WittyerSettings.Create(outputDirectory, CnvTruth, CnvQuery, ImmutableList <ISamplePair> .Empty, EvaluationMode.CrossTypeAndSimpleCounting, InputSpecs); var results = MainLauncher.GenerateResults(wittyerSettings).EnumerateSuccesses().ToList(); var(_, query, truth) = results.First(); var testStrings = WittyerVcfWriter.GenerateVcfStrings(query, null, null).Where(line => !line.StartsWith(VcfConstants.Header.Prefix)); MultiAssert.True(testStrings.All(s => ParseVariantGetTag(s, WitDecision.FalsePositive))); testStrings = WittyerVcfWriter.GenerateVcfStrings(null, truth, null).Where(line => !line.StartsWith(VcfConstants.Header.Prefix)); MultiAssert.True(testStrings.All(s => ParseVariantGetTag(s, WitDecision.FalseNegative))); var stats = MainLauncher .GenerateJson(wittyerSettings, results, EmptyCmd).GetOrThrow().PerSampleStats.First(); // make sure to check for null MultiAssert.True(stats.QuerySampleName != null); MultiAssert.True(stats.TruthSampleName != null); var expectedStats = JsonConvert.DeserializeObject <GeneralStats>(File.ReadAllText(CnvJsonCts.FullName)) .PerSampleStats.First(); var expectedOverallEventStats = expectedStats.OverallStats.Single(x => x.StatsType.Equals(StatsType.Event)); var actualOverallEventStats = stats.OverallStats.Single(x => x.StatsType.Equals(StatsType.Event)); MultiAssert.Equal(expectedOverallEventStats.QueryFpCount, actualOverallEventStats.QueryFpCount); MultiAssert.Equal(expectedOverallEventStats.QueryTpCount, actualOverallEventStats.QueryTpCount); MultiAssert.Equal(expectedOverallEventStats.QueryTotalCount, actualOverallEventStats.QueryTotalCount); MultiAssert.Equal(expectedOverallEventStats.TruthTpCount, actualOverallEventStats.TruthTpCount); MultiAssert.Equal(expectedOverallEventStats.TruthFnCount, actualOverallEventStats.TruthFnCount); MultiAssert.Equal(expectedOverallEventStats.TruthTotalCount, actualOverallEventStats.TruthTotalCount); MultiAssert.AssertAll(); }
public void SvWorksWithSimpleCount() { if (MiscUtils.IsRunningAnyLinux) { return; // currently failing on linux :( } //var insertionSpec = InputSpecs[WittyerVariantType.Insertion]; var insertionSpec = InputSpec.Create(WittyerType.Insertion, WittyerConstants.DefaultBins.SetItem(0, (50, false)), WittyerConstants.DefaultBpOverlap, 0.05, WittyerConstants.DefaultExcludeFilters, WittyerConstants.DefaultIncludeFilters, null); var outputDirectory = Path.GetRandomFileName().ToDirectoryInfo(); var wittyerSettings = WittyerSettings.Create(outputDirectory, SomaticTruth, SomaticQuery, ImmutableList <ISamplePair> .Empty, EvaluationMode.SimpleCounting, InputSpecs.SetItem(WittyerType.Insertion, insertionSpec)); var results = MainLauncher.GenerateResults(wittyerSettings).Select(i => i.GetOrThrow()).ToList(); var(_, query, truth) = results.First(); MultiAssert.Equal(((IMutableWittyerResult)query).NumEntries, (uint)WittyerVcfWriter.ProcessVariants(query, false).Count()); MultiAssert.Equal(((IMutableWittyerResult)truth).NumEntries, (uint)WittyerVcfWriter.ProcessVariants(truth, true).Count()); var testStrings = WittyerVcfWriter.GenerateVcfStrings(query, null, null).Where(line => !line.StartsWith(VcfConstants.Header.Prefix)); MultiAssert.True(testStrings.All(s => ParseVariantGetTag(s, WitDecision.FalsePositive))); testStrings = WittyerVcfWriter.GenerateVcfStrings(null, truth, null).Where(line => !line.StartsWith(VcfConstants.Header.Prefix)); MultiAssert.True(testStrings.All(s => ParseVariantGetTag(s, WitDecision.FalseNegative))); var actualStats = GeneralStats.Create(results, wittyerSettings.Mode == EvaluationMode.Default, wittyerSettings.InputSpecs, EmptyCmd).PerSampleStats .First(); var expectedStats = JsonConvert.DeserializeObject <GeneralStats>(File.ReadAllText(SvJsonSc.FullName)) .PerSampleStats.First(); var expectedOverallEventStats = expectedStats.OverallStats.Single(x => x.StatsType.Equals(StatsType.Event)); var actualOverallEventStats = actualStats.OverallStats.Single(x => x.StatsType.Equals(StatsType.Event)); MultiAssert.Equal(expectedOverallEventStats.QueryFpCount, actualOverallEventStats.QueryFpCount); MultiAssert.Equal(expectedOverallEventStats.QueryTpCount, actualOverallEventStats.QueryTpCount); MultiAssert.Equal(expectedOverallEventStats.QueryTotalCount, actualOverallEventStats.QueryTotalCount); MultiAssert.Equal(expectedOverallEventStats.TruthTpCount, actualOverallEventStats.TruthTpCount); MultiAssert.Equal(expectedOverallEventStats.TruthFnCount, actualOverallEventStats.TruthFnCount); MultiAssert.Equal(expectedOverallEventStats.TruthTotalCount, actualOverallEventStats.TruthTotalCount); var expectedInsertionStats = expectedStats.DetailedStats .Single(s => s.VariantType == WittyerType.Insertion.Name).PerBinStats; var actualInsertionStats = actualStats.DetailedStats .Single(s => s.VariantType == WittyerType.Insertion.Name).PerBinStats; foreach (var(expectedInsBinStat, actualInsBinStat) in expectedInsertionStats.Zip(actualInsertionStats, (a, b) => (a, b))) { var expectedSingleStat = expectedInsBinStat.Stats.Single(); var actualSingleStat = actualInsBinStat.Stats.Single(); if (!expectedSingleStat.Equals(actualSingleStat)) { MultiAssert.Equal(string.Empty, expectedInsBinStat.Bin); } MultiAssert.Equal(expectedSingleStat, actualSingleStat); } MultiAssert.AssertAll(); }