public static SimplePosition GetSimplePosition(string[] vcfFields, IDictionary <string, IChromosome> refNameToChromosome, bool isRecomposed = false) { var simplePosition = new SimplePosition { Start = Convert.ToInt32(vcfFields[VcfCommon.PosIndex]), Chromosome = ReferenceNameUtilities.GetChromosome(refNameToChromosome, vcfFields[VcfCommon.ChromIndex]), RefAllele = vcfFields[VcfCommon.RefIndex] }; simplePosition.End = vcfFields[VcfCommon.AltIndex].StartsWith("<") || vcfFields[VcfCommon.AltIndex] == "*" ? -1 : simplePosition.Start + simplePosition.RefAllele.Length - 1; simplePosition.AltAlleles = vcfFields[VcfCommon.AltIndex].Split(","); simplePosition.VcfFields = vcfFields; simplePosition.IsRecomposed = isRecomposed; simplePosition.IsDecomposed = new bool[simplePosition.AltAlleles.Length]; // fasle by default return(simplePosition); }
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()); }
public static SimplePosition GetSimplePosition(string[] vcfFields, IVcfFilter vcfFilter, IDictionary <string, IChromosome> refNameToChromosome, bool isRecomposed = false) { var simplePosition = new SimplePosition( ReferenceNameUtilities.GetChromosome(refNameToChromosome, vcfFields[VcfCommon.ChromIndex]), int.Parse(vcfFields[VcfCommon.PosIndex]), vcfFields[VcfCommon.RefIndex], vcfFields[VcfCommon.AltIndex].OptimizedSplit(',')); if (vcfFilter.PassedTheEnd(simplePosition.Chromosome, simplePosition.Start)) { return(null); } simplePosition.End = vcfFields[VcfCommon.AltIndex].OptimizedStartsWith('<') || vcfFields[VcfCommon.AltIndex] == "*" ? -1 : simplePosition.Start + simplePosition.RefAllele.Length - 1; simplePosition.VcfFields = vcfFields; simplePosition.IsRecomposed = isRecomposed; simplePosition.IsDecomposed = new bool[simplePosition.AltAlleles.Length]; // false by default simplePosition.Vids = new string[simplePosition.AltAlleles.Length]; simplePosition.LinkedVids = new List <string> [simplePosition.AltAlleles.Length]; return(simplePosition); }
internal static IPosition ParseVcfLine(string vcfLine, VariantFactory variantFactory, IDictionary <string, IChromosome> refNameToChromosome) { var simplePosition = SimplePosition.GetSimplePosition(vcfLine, refNameToChromosome); return(Position.CreatFromSimplePosition(simplePosition, variantFactory)); }