{
int[] result = null;
MapList map = mapping.getMap();
+
+ /*
+ * mapping may be in either direction, so handle either case;
+ * limit feature extent to the range of the mapping if it is greater
+ * (e.g. an overlapping exon); if that still fails, try reducing by
+ * 3 positions (to omit a mapped stop codon)
+ */
if (mapping.to == featureSequence)
{
+ begin = Math.max(begin, map.getToLowest());
+ end = Math.min(end, map.getToHighest());
result = map.locateInFrom(begin, end);
if (result == null)
{
- // fudge for feature (e.g. CDS) extending to a mapped stop codon
result = map.locateInFrom(begin, end-3);
}
}
else
{
+ begin = Math.max(begin, map.getFromLowest());
+ end = Math.min(end, map.getFromHighest());
result = map.locateInTo(begin, end);
if (result == null)
{
- // fudge for feature (e.g. CDS) extending to a mapped stop codon
result = map.locateInTo(begin, end-3);
}
}