Пример #1
0
        private void AddHitForSiteAndNeighbors(int i, IBins <bool> x, int toExtendTo)
        {
            x.AddHit(i);
            for (int j = 0; j <= toExtendTo; j++)
            {
                var binIndex = i - j;
                if (binIndex >= 0)
                {
                    x.AddHit(binIndex);
                }
                else
                {
                    break;
                }
            }

            for (int j = 0; j <= toExtendTo; j++)
            {
                var binIndex = i + j;
                if (binIndex < _binEvidence.NumBins)
                {
                    x.AddHit(binIndex);
                }
                else
                {
                    break;
                }
            }
        }
Пример #2
0
        private void SetIsMessyEnoughForSiteAndNeighborsIfNotSnv(int binsToExtendTo, int i)
        {
            _isMessyEnough.AddHit(i);
            for (int j = 0; j < binsToExtendTo; j++)
            {
                var binIndex = i - j;
                if (binIndex >= 0)
                {
                    if (!GetProbableTrueSnvRegion(binIndex))
                    {
                        _isMessyEnough.AddHit(binIndex);
                    }
                }
                else
                {
                    break;
                }
            }

            for (int j = 0; j < binsToExtendTo; j++)
            {
                var binIndex = i + j;
                if (!GetProbableTrueSnvRegion(binIndex))
                {
                    if (!_isMessyEnough.AddHit(binIndex))
                    {
                        break;
                    }
                }
            }
        }
Пример #3
0
        public void IncrementMessyHitForPosition(int i, int count)
        {
            var binId = (GetBinId(i));

            for (int j = 0; j < count; j++)
            {
                _messyHits.AddHit(binId);
            }
        }
Пример #4
0
        private void SetSiteAndNeighborsToUsable(int binsToExtendTo, int i)
        {
            _sitesUsable.AddHit(i);

            for (int j = 0; j < binsToExtendTo; j++)
            {
                var binIndex = i - j;
                if (binIndex >= 0)
                {
                    if (!_binConclusions.GetProbableTrueSnvRegion(binIndex))
                    {
                        _sitesUsable.AddHit(binIndex);
                    }
                }
                else
                {
                    break;
                }
            }

            for (int j = 0; j < binsToExtendTo; j++)
            {
                var binIndex = i + j;
                if (binIndex < _numBins)
                {
                    if (!_binConclusions.GetProbableTrueSnvRegion(binIndex))
                    {
                        _sitesUsable.AddHit(binIndex);
                    }
                }
                else
                {
                    break;
                }
            }
        }
Пример #5
0
 private void AddSingleMismatchHit(int i)
 {
     _singleMismatchHits.AddHit(i);
 }
Пример #6
0
        public void AddMessEvidence(bool isMessy, PairResult pairResult, bool isIndel, bool isSingleMismatch, bool isForwardOnlyMessy, bool isReverseOnlyMessy, bool isMapqMessy)
        {
            if (!_collectDepth && !isMessy && !isIndel && !isForwardOnlyMessy && !isMapqMessy && !isReverseOnlyMessy && !isSingleMismatch)
            {
                return;
            }

            foreach (var aln in pairResult.Alignments)
            {
                if (aln.RefID != _refId)
                {
                    continue;
                }

                var lastBinSpannedByRead = GetBinId(aln.EndPosition);
                var firstBin             = GetBinId(aln.Position);

                if (lastBinSpannedByRead + 1 > NumBins - 1)
                {
                    Console.WriteLine("LAST BIN SPANNED IS GREATER THAN ALLHITS!!!");
                }

                for (int i = firstBin; i <= Math.Min(lastBinSpannedByRead, NumBins - 1); i++)
                {
                    try
                    {
                        AllHits.AddHit(i);

                        if (isMessy)
                        {
                            AddMessyHit(i);
                            if (isForwardOnlyMessy)
                            {
                                _fwdOnlyMessyHits.AddHit(i);
                            }
                            else if (isReverseOnlyMessy)
                            {
                                _revOnlyMessyHits.AddHit(i);
                            }
                            else if (isMapqMessy)
                            {
                                _mapqMessyHits.AddHit(i);
                            }
                        }

                        if (isIndel)
                        {
                            AddIndelHit(i);
                        }

                        if (isSingleMismatch)
                        {
                            AddSingleMismatchHit(i);
                        }
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine($"FAILED ON {i} ({aln.Position}, {_regionStart})..." + e.Message);
                        throw new Exception($"FAILED ON {i} ({aln.Position}, {_regionStart})", e);
                    }
                }
            }
        }
Пример #7
0
 private bool AddProbableSnvHit(int i)
 {
     return(_probableTrueSnvRegions.AddHit(i));
 }
Пример #8
0
 public bool SetIndelRegionTrue(int i)
 {
     return(_indelRegions.AddHit(i));
 }