public VQRVcfWriter(string outputFilePath, VcfWriterConfig config, VcfWriterInputContext context, List <string> originalHeader, string phasingCommandLine, int bufferLimit = 2000) : base(outputFilePath, config, context, bufferLimit) { _originalHeader = originalHeader; _originalFilterLines = VcfVariantUtilities.GetFilterStringsByType(originalHeader); _formatter = new VcfFormatter(config); AllowMultipleVcfLinesPerLoci = config.AllowMultipleVcfLinesPerLoci; _vqrCommandLine = phasingCommandLine; }
public PhasedVcfWriter(string outputFilePath, VcfWriterConfig config, VcfWriterInputContext context, List <string> originalHeader, string phasingCommandLine, int bufferLimit = 2000) : base(outputFilePath, config, context, bufferLimit) { _originalHeader = originalHeader; _originalFilterLines = Extensions.GetFilterStringsByType(originalHeader); if (_originalFilterLines.ContainsKey(FilterType.RMxN)) { config = ExtractRMxNThresholds(config); } if (_originalFilterLines.ContainsKey(FilterType.IndelRepeatLength)) { config = ExtractR8Threshold(config); } //-ReportNoCalls True _formatter = new VcfFormatter(config); AllowMultipleVcfLinesPerLoci = config.AllowMultipleVcfLinesPerLoci; _phasingCommandLine = phasingCommandLine; }
public static void UpdateVariant(int maxQscore, int filterQScore, Dictionary <MutationCategory, int> qCalibratedRates, VcfVariant originalVar, MutationCategory cat) { int depth; int callCount; bool canUpdateQ = HaveInfoToUpdateQ(originalVar, out depth, out callCount); if (canUpdateQ) { int newQ = VariantQualityCalculator.AssignPoissonQScore( callCount, depth, qCalibratedRates[cat], maxQscore); InsertNewQ(qCalibratedRates, originalVar, cat, newQ); //update filters if needed if (newQ < filterQScore) { var vcfConfig = new VcfWriterConfig(); vcfConfig.VariantQualityFilterThreshold = filterQScore; var formatter = new VcfFormatter(vcfConfig); string lowQString = formatter.MapFilter(FilterType.LowVariantQscore); string passString = VcfFormatter.PassFilter; if (originalVar.Filters.Contains(lowQString)) { return; } if (originalVar.Filters == passString) { originalVar.Filters = lowQString; } else { originalVar.Filters += VcfFormatter.FilterSeparator + lowQString; } } } }
public void Initialize() { VcfWriterConfig config = new VcfWriterConfig { DepthFilterThreshold = 500, VariantQualityFilterThreshold = 20, StrandBiasFilterThreshold = 0.5f, FrequencyFilterThreshold = 0.007f, MinFrequencyThreshold = 0.007f, ShouldOutputNoCallFraction = true, ShouldOutputStrandBiasAndNoiseLevel = true, ShouldFilterOnlyOneStrandCoverage = true, EstimatedBaseCallQuality = _estimatedBaseCallQuality, //AllowMultipleVcfLinesPerLoci = true }; _formatter = new VcfFormatter(config); _v1 = TestHelper.CreatePassingVariant(false); _v2 = TestHelper.CreatePassingVariant(false); _v3 = TestHelper.CreatePassingVariant(false); }
public void FilterMerge() { Initialize(); _v1.Filters = new List <FilterType> { FilterType.LowDepth, FilterType.LowVariantQscore }; _v2.Filters = new List <FilterType> { FilterType.MultiAllelicSite }; _v3.Filters = new List <FilterType> { FilterType.LowDepth }; var mergedFilters = VcfFormatter.MergeFilters(new List <CalledAllele> { _v1, _v2, _v3 }); var expectedFilters = new List <FilterType> { FilterType.LowDepth, FilterType.LowVariantQscore, FilterType.MultiAllelicSite }; Assert.Equal(expectedFilters, mergedFilters); }
public void GenoytyeOthersRepresentedCorrectly() { var vcfFormatter = new VcfFormatter(); Assert.Equal("2/2", vcfFormatter.MapGenotype(Genotype.Others)); }
public static List <FilterType> CombineFilters(CalledAllele VariantA, CalledAllele VariantB) { return(VcfFormatter.MergeFilters(new List <CalledAllele> { VariantA, VariantB }).ToList()); }