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