/// <summary> /// Writes the variant /// </summary> public void WriteVariant(VcfVariant variant) { // sanity check if (!IsOpen) { throw new ApplicationException("ERROR: An attempt was made to write a variant to an unopened file."); } _writer.WriteLine(variant.ToString()); }
public void VennVcf_CombineTwoPoolVariants_MergeRefCalls() { //this is from an issue where there were multiple co-located variants in one pool, //and just ref in the other, at chr15 92604460. The consensus answer should be // a single ref call (and not multiple ref calls!). var outDir = TestPaths.LocalScratchDirectory; var vcfPathRoot = _TestDataPath; string VcfPath_PoolA = Path.Combine(vcfPathRoot, "C64-Ct-4_S17.genome.vcf"); string VcfPath_PoolB = Path.Combine(vcfPathRoot, "C64-Ct-4_S18.genome.vcf"); string VcfPath_Consensus = Path.Combine(vcfPathRoot, "ExpectedConsensus2.vcf"); string OutputPath = Path.Combine(outDir, "Consensus2.vcf"); if (File.Exists(OutputPath)) { File.Delete(OutputPath); } VennVcfOptions parameters = new VennVcfOptions(); parameters.VariantCallingParams.MinimumFrequencyFilter = 0.03f; parameters.InputFiles = new string[] { VcfPath_PoolA, VcfPath_PoolB }; parameters.OutputDirectory = outDir; //Path.Combine(outDir, "RefMergeOut.vcf"); parameters.ConsensusFileName = OutputPath; VennProcessor venn = new VennProcessor(parameters.InputFiles, parameters); venn.DoPairwiseVenn(false); Assert.Equal(File.Exists(OutputPath), true); List <VcfVariant> CombinedVariants = VcfReader.GetAllVariantsInFile(OutputPath); List <VcfVariant> ExpectedVariants = VcfReader.GetAllVariantsInFile(VcfPath_Consensus); Assert.Equal(ExpectedVariants.Count, CombinedVariants.Count); int NumVariantsAtPos92604460 = 0; for (int i = 0; i < ExpectedVariants.Count; i++) { VcfVariant EVariant = ExpectedVariants[i]; VcfVariant Variant = CombinedVariants[i]; if ((Variant.ReferencePosition == 92604460) && (Variant.ReferenceName == "chr15")) { NumVariantsAtPos92604460++; } Assert.Equal(EVariant.ToString(), Variant.ToString()); } Assert.Equal(NumVariantsAtPos92604460, 1); }
public void VennVcf_FxnlTest() { var outDir = TestPaths.LocalScratchDirectory; var VcfPathRoot = _TestDataPath; string VcfA = Path.Combine(VcfPathRoot, "control_S15.vcf"); string VcfB = Path.Combine(VcfPathRoot, "control_S18.vcf"); string OutputPath = Path.Combine(outDir, "Consensus.vcf"); string ExpectedPath = Path.Combine(VcfPathRoot, "ExpectedConsensus.vcf"); VennVcfOptions parameters = new VennVcfOptions(); parameters.VariantCallingParams.MinimumFrequencyFilter = 0.03f; parameters.VariantCallingParams.MinimumFrequency = 0.01f; parameters.ConsensusFileName = Path.Combine(outDir, "Consensus.vcf"); parameters.OutputDirectory = outDir; parameters.DebugMode = true; VennProcessor Venn = new VennProcessor(new string[] { VcfA, VcfB }, parameters); Venn.DoPairwiseVenn(false); Assert.True(File.Exists(OutputPath)); using (VcfReader ReaderE = new VcfReader(ExpectedPath)) { using (VcfReader ReaderO = new VcfReader(OutputPath)) { VcfVariant ExpectedVariant = new VcfVariant(); VcfVariant OutputVariant = new VcfVariant(); while (true) { bool ExpectedVariantExists = ReaderE.GetNextVariant(ExpectedVariant); bool OutputVariantExists = ReaderO.GetNextVariant(OutputVariant); Assert.Equal(ExpectedVariantExists, OutputVariantExists); if (!ExpectedVariantExists || !OutputVariantExists) { break; } Assert.Equal(ExpectedVariant.ToString(), OutputVariant.ToString()); } } } }