*/
package jalview.datamodel;
+import jalview.util.Comparison;
import jalview.util.MapList;
import java.util.Iterator;
int truePos = sequencePos - (start - 1);
while (alignedBases < truePos && alignedColumn < alignedSeq.length)
{
- if (alignedSeq[alignedColumn++] != gap)
+ char c = alignedSeq[alignedColumn++];
+ if (c != gap && !Comparison.isGap(c))
{
alignedBases++;
}
}
- /**
+ /*
* Contains the start-end pairs mapping from the associated sequence to the
* sequence in the database coordinate system. It also takes care of step
* difference between coordinate systems.
*/
MapList map = null;
- /**
+ /*
* The sequence that map maps the associated sequence to (if any).
*/
SequenceI to = null;
+ /*
+ * optional sequence id for the 'from' ranges
+ */
+ private String mappedFromId;
+
public Mapping(MapList map)
{
super();
map = new MapList(map2.map);
}
to = map2.to;
+ mappedFromId = map2.mappedFromId;
}
}
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));
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 };
}
: this.to.getName());
}
+ /**
+ * Returns the identifier for the 'from' range sequence, or null if not set
+ *
+ * @return
+ */
+ public String getMappedFromId()
+ {
+ return mappedFromId;
+ }
+
+ /**
+ * Sets the identifier for the 'from' range sequence
+ */
+ public void setMappedFromId(String mappedFromId)
+ {
+ this.mappedFromId = mappedFromId;
+ }
+
}