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); } }
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")); }
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")); }
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); }
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); }
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(); }
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)); }
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); }