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