private ISimplePosition GetNextSimplePosition() { while (_queuedPositions.Count == 0) { VcfLine = _reader.ReadLine(); var simplePositions = _recomposer.ProcessSimplePosition(SimplePosition.GetSimplePosition(VcfLine, _refNameToChromosome)); foreach (var simplePosition in simplePositions) { _queuedPositions.Enqueue(simplePosition); } if (VcfLine == null) { break; } } return(_queuedPositions.Count == 0 ? null: _queuedPositions.Dequeue()); }
private ISimplePosition GetNextSimplePosition() { while (_queuedPositions.Count == 0) { VcfLine = _vcfFilter.GetNextLine(_reader); SimplePosition vcfPosition = null; if (VcfLine != null) { string[] vcfFields = VcfLine.OptimizedSplit('\t'); var chromosome = ReferenceNameUtilities.GetChromosome(_refNameToChromosome, vcfFields[VcfCommon.ChromIndex]); CheckVcfOrder(vcfFields[VcfCommon.ChromIndex]); (int start, bool foundError) = vcfFields[VcfCommon.PosIndex].OptimizedParseInt32(); if (foundError) { throw new InvalidDataException($"Unable to convert the VCF position to an integer: {vcfFields[VcfCommon.PosIndex]}"); } if (InconsistentSampleFields(vcfFields)) { int sampleCount = _sampleNames?.Length ?? 0; throw new UserErrorException($"Inconsistent number of sample fields in line:\n{VcfLine}\nExpected number of sample fields: {sampleCount}"); } vcfPosition = SimplePosition.GetSimplePosition(chromosome, start, vcfFields, _vcfFilter); } IEnumerable <ISimplePosition> simplePositions = _recomposer.ProcessSimplePosition(vcfPosition); foreach (var simplePosition in simplePositions) { _queuedPositions.Enqueue(simplePosition); } if (VcfLine == null) { break; } } return(_queuedPositions.Count == 0 ? null : _queuedPositions.Dequeue()); }