X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Futil%2FMapList.java;h=c7a32f75c98b18773232f2582fd319355658530c;hb=b2f9a8d7bce642ff4011bc6d49e02bb0569fbb11;hp=90dfc8cd642ae63017594b92c6fdbd8a1716dd6e;hpb=fc39960f80e807d9bfa3e3636fa39e72fdfb247c;p=jalview.git
diff --git a/src/jalview/util/MapList.java b/src/jalview/util/MapList.java
index 90dfc8c..c7a32f7 100644
--- a/src/jalview/util/MapList.java
+++ b/src/jalview/util/MapList.java
@@ -1,20 +1,20 @@
/*
- * Jalview - A Sequence Alignment Editor and Viewer
- * Copyright (C) 2007 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.1)
+ * Copyright (C) 2014 The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with Jalview. If not, see .
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
*/
package jalview.util;
@@ -333,20 +333,21 @@ public class MapList
* addShift
*
* @param pos
- * start position for shift (in original reference frame)
+ * start position for shift (in original reference frame)
* @param shift
- * length of shift
+ * length of shift
*
- * public void addShift(int pos, int shift) { int sidx = 0; int[] rshift=null;
- * while (sidx-1)
+ if (fe_s > -1)
{
endpos = iv[0]; // start counting from beginning of interval
endindx--; // inclusive of endpos
@@ -569,11 +570,12 @@ public class MapList
if (endpos + endindx <= iv[1])
{
fe = i;
- endpos = endpos + endindx; // end of end token is within this interval
+ endpos = endpos + endindx; // end of end token is within this
+ // interval
}
else
{
- endindx -= iv[1] - endpos; // skip all this interval too
+ endindx -= iv[1] - endpos; // skip all this interval too
}
}
}
@@ -595,11 +597,12 @@ public class MapList
if (endpos - endindx >= iv[1])
{
fe = i;
- endpos = endpos - endindx; // end of end token is within this interval
+ endpos = endpos - endindx; // end of end token is within this
+ // interval
}
else
{
- endindx -= endpos-iv[1]; // skip all this interval too
+ endindx -= endpos - iv[1]; // skip all this interval too
}
}
}
@@ -684,7 +687,7 @@ public class MapList
* get the 'initial' position of mpos in To
*
* @param mpos
- * position in from
+ * position in from
* @return position of first word in to reference frame
*/
public int getToPosition(int mpos)
@@ -701,7 +704,7 @@ public class MapList
* get range of positions in To frame for the mpos word in From
*
* @param mpos
- * position in From
+ * position in From
* @return null or int[] first position in To for mpos, last position in to
* for Mpos
*/
@@ -922,10 +925,13 @@ public class MapList
// test internal consistency
int to[] = new int[51];
MapList.testMap(ml, 1, 60);
- MapList mldna = new MapList(new int[] { 2,2,6,8,12,16}, new int[] { 1,3},3,1);
- int[] frm = mldna.locateInFrom(1,1);
- testLocateFrom(mldna, 1,1,new int[] { 2,2,6,7});
- MapList.testMap(mldna, 1,3);
+ MapList mldna = new MapList(new int[]
+ { 2, 2, 6, 8, 12, 16 }, new int[]
+ { 1, 3 }, 3, 1);
+ int[] frm = mldna.locateInFrom(1, 1);
+ testLocateFrom(mldna, 1, 1, new int[]
+ { 2, 2, 6, 7 });
+ MapList.testMap(mldna, 1, 3);
/*
* for (int from=1; from<=51; from++) { int[] too=ml.shiftTo(from); int[]
* toofrom=ml.shiftFrom(too[0]);
@@ -933,17 +939,19 @@ public class MapList
* "+too[1]+"\t+-+\tShiftTo("+too[0]+")=="+toofrom[0]+" % "+toofrom[1]); }
*/
System.out.print("Success?\n"); // if we get here - something must be
- // working!
+ // working!
}
private static void testLocateFrom(MapList mldna, int i, int j, int[] ks)
{
int[] frm = mldna.locateInFrom(i, j);
- if (frm==ks || java.util.Arrays.equals(frm,ks))
+ if (frm == ks || java.util.Arrays.equals(frm, ks))
{
- System.out.println("Success test locate from "+i+" to "+j);
- } else {
- System.err.println("Failed test locate from "+i+" to "+j);
+ System.out.println("Success test locate from " + i + " to " + j);
+ }
+ else
+ {
+ System.err.println("Failed test locate from " + i + " to " + j);
for (int c = 0; c < frm.length; c++)
{
System.err.print(frm[c] + ((c % 2 == 0) ? "," : ";"));
@@ -966,4 +974,28 @@ public class MapList
return new MapList(getToRanges(), getFromRanges(), getToRatio(),
getFromRatio());
}
+
+ /**
+ * test for containment rather than equivalence to another mapping
+ *
+ * @param map
+ * to be tested for containment
+ * @return true if local or mapped range map contains or is contained by this
+ * mapping
+ */
+ public boolean containsEither(boolean local, MapList map)
+ {
+ if (local)
+ {
+ return ((getFromLowest() >= map.getFromLowest() && getFromHighest() <= map
+ .getFromHighest()) || (getFromLowest() <= map.getFromLowest() && getFromHighest() >= map
+ .getFromHighest()));
+ }
+ else
+ {
+ return ((getToLowest() >= map.getToLowest() && getToHighest() <= map
+ .getToHighest()) || (getToLowest() <= map.getToLowest() && getToHighest() >= map
+ .getToHighest()));
+ }
+ }
}