private bool setPositionsBasedOnAlignment(GenomeSlice slice) { Sequence s = new Sequence(DnaAlphabet.Instance, slice.Node.Sequence, false); var delts = assemblyAligner.GetDeltaAlignments(s).SelectMany(x => x).ToList(); if (delts.Count > 0) { //check if reversed if (delts[0].IsReverseQueryDirection) { slice.Node.ReversePath(); s = new Sequence(DnaAlphabet.Instance, slice.Node.Sequence, false); delts = assemblyAligner.GetDeltaAlignments(s).SelectMany(x => x).ToList(); } if (delts.Count == 1) { slice.SuggestedLeftSidePosition = delts[0].FirstSequenceStart; slice.SuggestedRightSidePosition = delts[0].FirstSequenceEnd; } else if (delts.Count == 2) //split, happens in event of wrap around { slice.SuggestedLeftSidePosition = delts.MaxBy(x => x.FirstSequenceStart).FirstSequenceStart; slice.SuggestedRightSidePosition = delts.MinBy(x => x.FirstSequenceEnd).FirstSequenceEnd; } else { return(false); } return(true); } return(false); }
public static IEnumerable <IEnumerable <DeltaAlignment> > GetDeltaAlignments(ISequence querySequence) { return(nucmer.GetDeltaAlignments(querySequence)); }