Ejemplo n.º 1
0
        public static TypeOfUpdateNeeded ProcessLocus(VcfConsumerAppOptions options, RecalibrationResults results,
                                                      List <CalledAllele> incomingAlleles, out List <CalledAllele> outGoingAlleles)
        {
            // Use somatic call for chrM
            if (GenotypeCreator.GetPloidyForThisChr(
                    options.VariantCallingParams.PloidyModel,
                    options.VariantCallingParams.IsMale,
                    incomingAlleles.First().Chromosome) != PloidyModel.DiploidByAdaptiveGT)
            {
                return(GetTypeOfUpdate((AdaptiveGtOptions)options, incomingAlleles, TypeOfUpdateNeeded.NoChangeNeeded,
                                       out outGoingAlleles));
            }

            var orderedAlleles = GetTopTwoAlleles(incomingAlleles);

            if (orderedAlleles.Count == 1)
            {
                var alleles = ProcessSingleVariantLocus(incomingAlleles[0], results);
                return(GetTypeOfUpdate((AdaptiveGtOptions)options, alleles, TypeOfUpdateNeeded.Modify, out outGoingAlleles));
            }
            else
            {
                var alleles = ProcessMultiAllelicLocus(orderedAlleles, results);
                return(GetTypeOfUpdate((AdaptiveGtOptions)options, alleles, TypeOfUpdateNeeded.Modify, out outGoingAlleles));
            }
        }
        public void ChrYMaleTests()
        {
            var diploidPars       = new DiploidThresholdingParameters(new float[] { 0.2f, 0.7f, 0.8f });
            var genotypeCaculator = GenotypeCreator.CreateGenotypeCalculator(PloidyModel.Diploid, 0.05f, 30, diploidPars, diploidPars, 0, 100, 0.05f, 0.02f, "chrY", true);

            Assert.True(genotypeCaculator is HaploidGenotyeCalculator);
        }
        public CallableNeighborhood(VcfNeighborhood vcfNeighborhood, VariantCallingParameters variantCallingParams, ChrReference chrReference = null)
        {
            //housekeeping

            _nbhdGTcalculator = GenotypeCreator.CreateGenotypeCalculator(variantCallingParams.PloidyModel, variantCallingParams.MinimumFrequencyFilter,
                                                                         variantCallingParams.MinimumCoverage,
                                                                         variantCallingParams.DiploidSNVThresholdingParameters,
                                                                         variantCallingParams.DiploidINDELThresholdingParameters,
                                                                         variantCallingParams.AdaptiveGenotypingParameters,
                                                                         variantCallingParams.MinimumGenotypeQScore, variantCallingParams.MaximumGenotypeQScore, variantCallingParams.TargetLODFrequency);


            _vcfNeighborhood        = vcfNeighborhood;
            _acceptedPhasedVariants = new List <CalledAllele>();
            _rejectedPhasedVariants = new List <CalledAllele>();
            UsedRefCountsLookup     = new Dictionary <int, SuckedUpRefRecord>();
            MaxQScore = variantCallingParams.MaximumVariantQScore;

            //prep vcf nbhd for use, so we know the final range of loci in play
            vcfNeighborhood.OrderVariantSitesByFirstTrueStartPosition();
            vcfNeighborhood.SetRangeOfInterest();

            //set reference bases here, then let go of the chr
            if ((chrReference == null) || (chrReference.Sequence == null)) //be gentle if they did not include a ref genome
            {
                NbhdReferenceSequenceSubstring = new String('R', vcfNeighborhood.LastPositionOfInterestWithLookAhead - vcfNeighborhood.FirstPositionOfInterest);
            }
            else
            {
                NbhdReferenceSequenceSubstring = chrReference.Sequence.Substring(vcfNeighborhood.FirstPositionOfInterest - 1, vcfNeighborhood.LastPositionOfInterestWithLookAhead - vcfNeighborhood.FirstPositionOfInterest);
            }
        }
Ejemplo n.º 4
0
        public void ChrYUnknownGenderTests_thresholding()
        {
            var diploidPars       = new DiploidThresholdingParameters(new float[] { 0.2f, 0.7f, 0.8f });
            var genotypeCaculator = GenotypeCreator.CreateGenotypeCalculator(PloidyModel.DiploidByThresholding, 0.05f, 30, diploidPars, diploidPars, null, 0, 100, 0.05f, 0.02f, "chrY");

            Assert.True(genotypeCaculator is DiploidThresholdingGenotyper);

            Assert.Equal(PloidyModel.DiploidByThresholding, GenotypeCreator.GetPloidyForThisChr(PloidyModel.DiploidByThresholding, null, "chrY"));
        }
Ejemplo n.º 5
0
        public void ChrMMaleTests_adaptive()
        {
            var adaptiveGTparams  = new AdaptiveGenotypingParameters();
            var diploidPars       = new DiploidThresholdingParameters(new float[] { 0.2f, 0.7f, 0.8f });
            var genotypeCaculator = GenotypeCreator.CreateGenotypeCalculator(PloidyModel.DiploidByAdaptiveGT, 0.05f, 30, diploidPars, diploidPars, adaptiveGTparams,
                                                                             0, 100, 0.05f, 0.02f, "chrM", true);

            Assert.True(genotypeCaculator is SomaticGenotyper);

            Assert.Equal(PloidyModel.Somatic, GenotypeCreator.GetPloidyForThisChr(PloidyModel.DiploidByAdaptiveGT, true, "chrM"));
        }
Ejemplo n.º 6
0
        public void ChrMGenotypeCalculatorTests()
        {
            var genotypeCaculator = GenotypeCreator.CreateGenotypeCalculator(PloidyModel.DiploidByThresholding, 0.05f, 30, null, null, null, 0, 100, 0.05f, 0.02f, "chrM");

            Assert.True(genotypeCaculator is SomaticGenotyper);
            Assert.Equal(0.02f, genotypeCaculator.MinVarFrequency);
            genotypeCaculator.SetMinFreqFilter(0.05f);
            Assert.Equal(0.05f, genotypeCaculator.MinVarFrequencyFilter);

            genotypeCaculator.SetMinFreqFilter(0.01f);
            Assert.Equal(0.02f, genotypeCaculator.MinVarFrequencyFilter);
        }
Ejemplo n.º 7
0
        public void ChrXMaleGenotypeCalculatorTests()
        {
            var diploidPars       = new DiploidThresholdingParameters(new float[] { 0.2f, 0.7f, 0.8f });
            var genotypeCaculator = GenotypeCreator.CreateGenotypeCalculator(PloidyModel.DiploidByThresholding, 0.05f, 30, diploidPars, diploidPars, null, 0, 100, 0.05f, 0.02f, "chrX", true);

            Assert.True(genotypeCaculator is HaploidGenotyper);
            Assert.Equal(0.2f, genotypeCaculator.MinVarFrequency);
            genotypeCaculator.SetMinFreqFilter(0.05f);
            Assert.Equal(0.2f, genotypeCaculator.MinVarFrequencyFilter);

            genotypeCaculator.SetMinFreqFilter(0.3f);
            Assert.Equal(0.3f, genotypeCaculator.MinVarFrequencyFilter);
        }
Ejemplo n.º 8
0
        public VcfNeighborhood(VariantCallingParameters variantCallingParams, string refName, VariantSite vs1, VariantSite vs2, string interveningRef)
        {
            _nbhdGTcalculator = GenotypeCreator.CreateGenotypeCalculator(variantCallingParams.PloidyModel, variantCallingParams.MinimumFrequencyFilter,
                                                                         variantCallingParams.MinimumCoverage,
                                                                         variantCallingParams.DiploidThresholdingParameters,
                                                                         variantCallingParams.MinimumGenotpyeQScore, variantCallingParams.MaximumGenotpyeQScore);
            VcfVariantSites         = new List <VariantSite>();
            _referenceName          = refName;
            _acceptedPhasedVariants = new List <CalledAllele>();
            _rejectedPhasedVariants = new List <CalledAllele>();
            UsedRefCountsLookup     = new Dictionary <int, int>();

            AddVariantSite(vs1, vs1.VcfReferenceAllele.Substring(0, 1));
            AddVariantSite(vs2, interveningRef);

            SetID();
        }
Ejemplo n.º 9
0
        protected virtual IAlleleCaller CreateVariantCaller(ChrReference chrReference, ChrIntervalSet intervalSet)
        {
            var coverageCalculator = CreateCoverageCalculator();
            var genotypeCalculator = GenotypeCreator.CreateGenotypeCalculator(
                _options.PloidyModel, _options.FilteredVariantFrequency, _options.MinimumDepth, _options.DiploidThresholdingParameters, _options.MinimumGenotypeQScore, _options.MaximumGenotypeQScore);

            return(new AlleleCaller(new VariantCallerConfig
            {
                IncludeReferenceCalls = _options.OutputgVCFFiles,
                MinVariantQscore = _options.MinimumVariantQScore,
                MaxVariantQscore = _options.MaximumVariantQScore,
                MinGenotypeQscore = _options.MinimumGenotypeQScore,
                MaxGenotypeQscore = _options.MaximumGenotypeQScore,
                VariantQscoreFilterThreshold = _options.FilteredVariantQScore,
                MinCoverage = _options.MinimumDepth,
                MinFrequency = _options.MinimumFrequency,
                EstimatedBaseCallQuality = GetEstimatedBaseCallQuality(),
                StrandBiasModel = _options.StrandBiasModel,
                StrandBiasFilterThreshold = _options.StrandBiasAcceptanceCriteria,
                FilterSingleStrandVariants = _options.FilterOutVariantsPresentOnlyOneStrand,
                GenotypeCalculator = genotypeCalculator,
                VariantFreqFilter = _options.FilteredVariantFrequency,
                LowGTqFilter = _options.LowGenotypeQualityFilter,
                IndelRepeatFilter = _options.IndelRepeatFilter,
                LowDepthFilter = _options.LowDepthFilter,
                ChrReference = chrReference,
                RMxNFilterSettings = new RMxNFilterSettings
                {
                    RMxNFilterMaxLengthRepeat = _options.RMxNFilterMaxLengthRepeat,
                    RMxNFilterMinRepetitions = _options.RMxNFilterMinRepetitions,
                    RMxNFilterFrequencyLimit = _options.RMxNFilterFrequencyLimit
                },
                NoiseModel = _options.NoiseModel
            }, intervalSet,
                                    CreateVariantCollapser(chrReference.Name, coverageCalculator),
                                    coverageCalculator));
        }
Ejemplo n.º 10
0
        protected virtual IAlleleCaller CreateVariantCaller(ChrReference chrReference, ChrIntervalSet intervalSet, IAlignmentSource alignmentSource, HashSet <Tuple <string, int, string, string> > forceGtAlleles = null)
        {
            var coverageCalculator = CreateCoverageCalculator(alignmentSource);
            var genotypeCalculator = GenotypeCreator.CreateGenotypeCalculator(
                _options.VariantCallingParameters.PloidyModel, _options.VariantCallingParameters.MinimumFrequencyFilter,
                _options.VariantCallingParameters.MinimumCoverage,
                _options.VariantCallingParameters.DiploidSNVThresholdingParameters,
                _options.VariantCallingParameters.DiploidINDELThresholdingParameters,
                _options.VariantCallingParameters.AdaptiveGenotypingParameters,
                _options.VariantCallingParameters.MinimumGenotypeQScore,
                _options.VariantCallingParameters.MaximumGenotypeQScore,
                _options.VariantCallingParameters.TargetLODFrequency,
                _options.VariantCallingParameters.MinimumFrequency,
                chrReference.Name, _options.VariantCallingParameters.IsMale);

            genotypeCalculator.SetMinFreqFilter(_options.VariantCallingParameters.MinimumFrequencyFilter);

            var locusProcessor = _options.VariantCallingParameters.PloidyModel == PloidyModel.DiploidByThresholding
                ? (ILocusProcessor) new DiploidLocusProcessor()
                : new SomaticLocusProcessor();

            var variantCallerConfig = new VariantCallerConfig
            {
                IncludeReferenceCalls        = _options.VcfWritingParameters.OutputGvcfFile,
                MinVariantQscore             = _options.VariantCallingParameters.MinimumVariantQScore,
                MaxVariantQscore             = _options.VariantCallingParameters.MaximumVariantQScore,
                MinGenotypeQscore            = _options.VariantCallingParameters.MinimumGenotypeQScore,
                MaxGenotypeQscore            = _options.VariantCallingParameters.MaximumGenotypeQScore,
                VariantQscoreFilterThreshold = _options.VariantCallingParameters.MinimumVariantQScoreFilter,
                NoCallFilterThreshold        = _options.VariantCallingParameters.NoCallFilterThreshold,
                AmpliconBiasFilterThreshold  = _options.VariantCallingParameters.AmpliconBiasFilterThreshold,
                MinCoverage  = _options.VariantCallingParameters.MinimumCoverage,
                MinFrequency = genotypeCalculator.MinVarFrequency,
                NoiseLevelUsedForQScoring  = _options.VariantCallingParameters.NoiseLevelUsedForQScoring,
                StrandBiasModel            = _options.VariantCallingParameters.StrandBiasModel,
                StrandBiasFilterThreshold  = _options.VariantCallingParameters.StrandBiasAcceptanceCriteria,
                FilterSingleStrandVariants = _options.VariantCallingParameters.FilterOutVariantsPresentOnlyOneStrand,
                GenotypeCalculator         = genotypeCalculator,
                VariantFreqFilter          = genotypeCalculator.MinVarFrequencyFilter,
                LowGTqFilter       = _options.VariantCallingParameters.LowGenotypeQualityFilter,
                IndelRepeatFilter  = _options.VariantCallingParameters.IndelRepeatFilter,
                LowDepthFilter     = _options.VariantCallingParameters.LowDepthFilter,
                ChrReference       = chrReference,
                RMxNFilterSettings = new RMxNFilterSettings
                {
                    RMxNFilterMaxLengthRepeat = _options.VariantCallingParameters.RMxNFilterMaxLengthRepeat,
                    RMxNFilterMinRepetitions  = _options.VariantCallingParameters.RMxNFilterMinRepetitions,
                    RMxNFilterFrequencyLimit  = _options.VariantCallingParameters.RMxNFilterFrequencyLimit
                },
                NoiseModel     = _options.VariantCallingParameters.NoiseModel,
                LocusProcessor = locusProcessor
            };



            var alleleCaller = new AlleleCaller(variantCallerConfig, intervalSet,
                                                CreateVariantCollapser(chrReference.Name, coverageCalculator),
                                                coverageCalculator);

            alleleCaller.AddForcedGtAlleles(forceGtAlleles);

            return(alleleCaller);
        }