Exemplo n.º 1
0
        private static List <CalledAllele> ProcessMultiAllelicLocus(List <CalledAllele> orderedVariants,
                                                                    RecalibrationResults results)
        {
            RecalibrationResult resultForVariant   = GetModelFromType(orderedVariants[0], results);
            MixtureModelResult  mixtureModelResult = GetModelResult(orderedVariants[0], resultForVariant);

            switch (mixtureModelResult.GenotypeCategory)
            {
            case SimplifiedDiploidGenotype.HomozygousRef:
            case SimplifiedDiploidGenotype.HomozygousAlt:
                var allele = UpdateGenotypeAndQScore(orderedVariants[0], mixtureModelResult);
                return(new List <CalledAllele> {
                    allele
                });

            case SimplifiedDiploidGenotype.HeterozygousAltRef:
                orderedVariants[0].Genotype = Genotype.HeterozygousAlt1Alt2;
                orderedVariants[1].Genotype = Genotype.HeterozygousAlt1Alt2;
                orderedVariants             = UpdateMultiAllelicQScores(orderedVariants, results);
                return(orderedVariants);

            default:
                throw new ArgumentException("Invalid model results");
            }
        }
Exemplo n.º 2
0
 private static CalledAllele UpdateGenotypeAndQScore(CalledAllele allele, MixtureModelResult mixtureModelResult)
 {
     allele = UpdateGenotype(allele, mixtureModelResult.GenotypeCategory);
     allele.GenotypePosteriors = mixtureModelResult.GenotypePosteriors;
     allele.GenotypeQscore     = mixtureModelResult.QScore;
     return(allele);
 }
 public RecalibratedVariant(int dp, int ad, int category, int qScore, float[] gp)
 {
     Dp = dp;
     Ad = ad;
     MixtureModelResult = new MixtureModelResult();
     MixtureModelResult.GenotypeCategory   = MixtureModelResult.IntToGenotypeCategory(category);
     MixtureModelResult.QScore             = qScore;
     MixtureModelResult.GenotypePosteriors = gp;
 }
Exemplo n.º 4
0
        public void GetMultiAllelicQScores()
        {
            CalledAllele variant1 = TestHelper.CreateDummyAllele("chr1", 1000, "A", "C", 30, 12);
            CalledAllele variant2 = TestHelper.CreateDummyAllele("chr1", 1000, "A", "T", 30, 11);

            MixtureModelResult result = AdaptiveGenotyperCalculator.GetMultiAllelicQScores(variant1, variant2,
                                                                                           new List <double[]> {
                Means, Means
            });

            // The 4th GP should always be the minimum because that reflects the 1/2 call
            Assert.Equal(4, result.GenotypePosteriors.ToList().IndexOf(result.GenotypePosteriors.Min()));
        }
Exemplo n.º 5
0
        private void TestCalculation(CalledAllele variant, double frequency, double depth, int expectedValue)
        {
            variant.TotalCoverage = (int)depth;
            variant.AlleleSupport = (int)(depth * frequency);

            if (variant.Genotype == Genotype.HomozygousRef)
            {
                variant.AlleleSupport = (int)(depth * (1.0 - frequency));
            }

            MixtureModelResult result = AdaptiveGenotyperCalculator.GetGenotypeAndQScore(variant, Means, Priors);

            Assert.Equal(expectedValue, result.QScore);
        }
Exemplo n.º 6
0
        public void GenotypeCategoryTests()
        {
            var mm = new MixtureModelResult {
                GenotypeCategory = SimplifiedDiploidGenotype.HeterozygousAltRef
            };

            Assert.Equal(1, mm.GenotypeCategoryAsInt);

            mm.GenotypeCategory = SimplifiedDiploidGenotype.HomozygousAlt;
            Assert.Equal(2, mm.GenotypeCategoryAsInt);

            mm.GenotypeCategoryAsInt = 0;
            Assert.Equal(SimplifiedDiploidGenotype.HomozygousRef, mm.GenotypeCategory);

            Assert.Throws <ArgumentException>(() => mm.GenotypeCategoryAsInt = 3);
        }