X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fdatamodel%2FMapping.java;h=328b96a05ae88ba1e8ec40bc6e974e32c2a16f0c;hb=be762d8d9c71a7aa3121e845c45911c7192b7827;hp=fe396ce46a7e42603c216b9862b7838360cc6881;hpb=e327ac5df98f528afeb347ac9a79085ad0d0975b;p=jalview.git diff --git a/src/jalview/datamodel/Mapping.java b/src/jalview/datamodel/Mapping.java index fe396ce..328b96a 100644 --- a/src/jalview/datamodel/Mapping.java +++ b/src/jalview/datamodel/Mapping.java @@ -46,7 +46,7 @@ public class Mapping /* * The characters of the aligned sequence e.g. "-cGT-ACgTG-" */ - private final char[] alignedSeq; + private final SequenceI alignedSeq; /* * the sequence start residue @@ -102,7 +102,7 @@ public class Mapping */ public AlignedCodonIterator(SequenceI seq, char gapChar) { - this.alignedSeq = seq.getSequence(); + this.alignedSeq = seq; this.start = seq.getStart(); this.gap = gapChar; fromRanges = map.getFromRanges().iterator(); @@ -176,7 +176,7 @@ public class Mapping if (toPosition <= currentToRange[1]) { SequenceI seq = Mapping.this.to; - char pep = seq.getSequence()[toPosition - seq.getStart()]; + char pep = seq.getCharAt(toPosition - seq.getStart()); toPosition++; return String.valueOf(pep); } @@ -257,9 +257,10 @@ public class Mapping * allow for offset e.g. treat pos 8 as 2 if sequence starts at 7 */ int truePos = sequencePos - (start - 1); - while (alignedBases < truePos && alignedColumn < alignedSeq.length) + int length = alignedSeq.getLength(); + while (alignedBases < truePos && alignedColumn < length) { - char c = alignedSeq[alignedColumn++]; + char c = alignedSeq.getCharAt(alignedColumn++); if (c != gap && !Comparison.isGap(c)) { alignedBases++; @@ -530,9 +531,8 @@ public class Mapping SequenceFeature[] vf = new SequenceFeature[frange.length / 2]; for (int i = 0, v = 0; i < frange.length; i += 2, v++) { - vf[v] = new SequenceFeature(f); - vf[v].setBegin(frange[i]); - vf[v].setEnd(frange[i + 1]); + vf[v] = new SequenceFeature(f, frange[i], frange[i + 1], + f.getFeatureGroup(), f.getScore()); if (frange.length > 2) { vf[v].setDescription(f.getDescription() + "\nPart " + (v + 1)); @@ -541,27 +541,7 @@ public class Mapping return vf; } } - if (false) // else - { - int[] word = getWord(f.getBegin()); - if (word[0] < word[1]) - { - f.setBegin(word[0]); - } - else - { - f.setBegin(word[1]); - } - word = getWord(f.getEnd()); - if (word[0] > word[1]) - { - f.setEnd(word[0]); - } - else - { - f.setEnd(word[1]); - } - } + // give up and just return the feature. return new SequenceFeature[] { f }; }