X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fdatamodel%2FSeqCigar.java;fp=src%2Fjalview%2Fdatamodel%2FSeqCigar.java;h=98b0de5f39a8aac0fe1083e2e902e156b36ad0d0;hb=99d5f1d805e530f23a53dad4484d44ecd0fbfdf3;hp=d279a2685049baf77716f1b41acca6d06fb4195f;hpb=e6134bccddc2c7faad28fad1a4e77ccd0ceb3d84;p=jalview.git diff --git a/src/jalview/datamodel/SeqCigar.java b/src/jalview/datamodel/SeqCigar.java index d279a26..98b0de5 100644 --- a/src/jalview/datamodel/SeqCigar.java +++ b/src/jalview/datamodel/SeqCigar.java @@ -68,10 +68,49 @@ public class SeqCigar extends CigarSimple } /** + * + * @param column + * @return position in sequence for column (or -1 if no match state exists) + */ + public int findPosition(int column) + { + int w = 0, ew, p = refseq.findPosition(start); + if (column < 0) + { + return -1; + } + if (range != null) + { + for (int i = 0; i < length; i++) + { + if (operation[i] == M || operation[i] == D) + { + p += range[i]; + } + if (operation[i] == M || operation[i] == I) + { + ew = w + range[i]; + if (column < ew) + { + if (operation[i] == I) + { + return -1; + } + return p - (ew - column); + } + w = ew; + } + } + } + return -1; + } + + /** * Returns sequence as a string with cigar operations applied to it * * @return String */ + @Override public String getSequenceString(char GapChar) { return (length == 0) ? "" : (String) getSequenceAndDeletions(