Esempio n. 1
0
        /// <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());
                    }
                }
            }
        }