public bool GetNextAlignment(Read read)
        {
            if (_bamReader == null)
            {
                throw new Exception("Already disposed.");
            }

            if (!_bamReader.GetNextAlignment(ref _rawAlignment, false) ||
                (_bamIndexFilter > -1 && _rawAlignment.RefID != _bamIndexFilter))
            {
                Dispose();
                return(false);
            }

            read.Reset(_bamReader.GetReferenceNameByID(_rawAlignment.RefID), _rawAlignment, _stitchReads);

            return(true);
        }
Exemple #2
0
        private List <Region> GetIntervalsForChr(int chrIndex)
        {
            if (_remainingIntervals != null)
            {
                var chrName = _bamReader.GetReferenceNameByID(chrIndex);

                if (!_remainingIntervals.ContainsKey(chrName))
                {
                    return new List <Region>()
                           {
                               new Region(1, 1)
                           }
                }
                ;                                                 // return tiny interval of 1 so we essentially skip the chr

                return(_remainingIntervals[chrName]);
            }

            return(null); // return null to signal that we shouldn't apply any interval optimization
        }