Ejemplo n.º 1
0
 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());
 }
Ejemplo n.º 2
0
        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());
        }
Ejemplo n.º 3
0
        internal static IPosition ParseVcfLine(string vcfLine, VariantFactory variantFactory, IDictionary <string, IChromosome> refNameToChromosome)
        {
            var simplePosition = SimplePosition.GetSimplePosition(vcfLine, refNameToChromosome);

            return(Position.CreatFromSimplePosition(simplePosition, variantFactory));
        }