X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fuk%2Fac%2Fvamsas%2Fobjects%2Futils%2FRange.java;h=8e4c314df620d64cd7e3065bd8a256409ff4a361;hb=844ccad5a3fcbedec17b2af66d460f31abc7cff1;hp=f66df316f8d31fa7f1927a3fcf4fc593f6787006;hpb=d6f378ff4d767169376e6f2489a00b75d8a36e39;p=vamsas.git
diff --git a/src/uk/ac/vamsas/objects/utils/Range.java b/src/uk/ac/vamsas/objects/utils/Range.java
index f66df31..8e4c314 100644
--- a/src/uk/ac/vamsas/objects/utils/Range.java
+++ b/src/uk/ac/vamsas/objects/utils/Range.java
@@ -1,3 +1,24 @@
+/*
+ * This file is part of the Vamsas Client version 0.1.
+ * Copyright 2009 by Jim Procter, Iain Milne, Pierre Marguerite,
+ * Andrew Waterhouse and Dominik Lindner.
+ *
+ * Earlier versions have also been incorporated into Jalview version 2.4
+ * since 2008, and TOPALi version 2 since 2007.
+ *
+ * The Vamsas Client is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * The Vamsas Client 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 Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with the Vamsas Client. If not, see .
+ */
package uk.ac.vamsas.objects.utils;
import java.util.Vector;
@@ -9,89 +30,80 @@ import uk.ac.vamsas.objects.core.RangeType;
import uk.ac.vamsas.objects.core.Seg;
/**
- * Utilities for working with RangeType and MapType objects.
- * Derived from bitter experience.
+ * Utilities for working with RangeType and MapType objects. Derived from bitter
+ * experience.
+ *
* @author JimP
- *
+ *
*/
public class Range {
+ static org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory
+ .getFactory().getLog(Range.class);
/**
* get start 0 && dseta.getPosCount() > 0)
- {
- throw new Error("Invalid vamsas RangeType - cannot resolve both lists of Pos and Seg from choice!");
+ if (dseta.getSegCount() > 0 && dseta.getPosCount() > 0) {
+ throw new Error(
+ "Invalid vamsas RangeType - cannot resolve both lists of Pos and Seg from choice!");
}
- if (dseta.getSegCount() > 0)
- {
+ if (dseta.getSegCount() > 0) {
se = getSegRange(dseta.getSeg(0), true);
- for (int s = 1, sSize = dseta.getSegCount(); s < sSize; s++)
- {
+ for (int s = 1, sSize = dseta.getSegCount(); s < sSize; s++) {
int nse[] = getSegRange(dseta.getSeg(s), true);
- if (se[0] > nse[0])
- {
+ if (se[0] > nse[0]) {
se[0] = nse[0];
}
- if (se[1] < nse[1])
- {
+ if (se[1] < nse[1]) {
se[1] = nse[1];
}
}
}
- if (dseta.getPosCount() > 0)
- {
- // could do a polarity for pos range too. and pass back indication of discontinuities.
+ if (dseta.getPosCount() > 0) {
+ // could do a polarity for pos range too. and pass back indication of
+ // discontinuities.
int pos = dseta.getPos(0).getI();
- se = new int[]
- {
- pos, pos};
- for (int p = 0, pSize = dseta.getPosCount(); p < pSize; p++)
- {
+ se = new int[] { pos, pos };
+ for (int p = 0, pSize = dseta.getPosCount(); p < pSize; p++) {
pos = dseta.getPos(p).getI();
- if (se[0] > pos)
- {
+ if (se[0] > pos) {
se[0] = pos;
}
- if (se[1] < pos)
- {
+ if (se[1] < pos) {
se[1] = pos;
}
}
@@ -102,49 +114,41 @@ public class Range {
}
/**
- * map from a rangeType's internal frame to the referenced object's coordinate frame.
+ * map from a rangeType's internal frame to the referenced object's coordinate
+ * frame.
+ *
* @param dseta
* @return int [] { ref(pos)...} for all pos in rangeType's frame.
*/
- public static int[] getMapping(RangeType dseta)
- {
+ public static int[] getMapping(RangeType dseta) {
Vector posList = new Vector();
- if (dseta != null)
- {
+ if (dseta != null) {
int[] se = null;
- if (dseta.getSegCount() > 0 && dseta.getPosCount() > 0)
- {
- throw new Error("Invalid vamsas RangeType - cannot resolve both lists of Pos and Seg from choice!");
+ if (dseta.getSegCount() > 0 && dseta.getPosCount() > 0) {
+ throw new Error(
+ "Invalid vamsas RangeType - cannot resolve both lists of Pos and Seg from choice!");
}
- if (dseta.getSegCount() > 0)
- {
- for (int s = 0, sSize = dseta.getSegCount(); s < sSize; s++)
- {
+ if (dseta.getSegCount() > 0) {
+ for (int s = 0, sSize = dseta.getSegCount(); s < sSize; s++) {
se = getSegRange(dseta.getSeg(s), false);
int se_end = se[1 - se[2]] + (se[2] == 0 ? 1 : -1);
- for (int p = se[se[2]]; p != se_end; p += se[2] == 0 ? 1 : -1)
- {
+ for (int p = se[se[2]]; p != se_end; p += se[2] == 0 ? 1 : -1) {
posList.add(new Integer(p));
}
}
- }
- else if (dseta.getPosCount() > 0)
- {
+ } else if (dseta.getPosCount() > 0) {
int pos = dseta.getPos(0).getI();
- for (int p = 0, pSize = dseta.getPosCount(); p < pSize; p++)
- {
+ for (int p = 0, pSize = dseta.getPosCount(); p < pSize; p++) {
pos = dseta.getPos(p).getI();
posList.add(new Integer(pos));
}
}
}
- if (posList != null && posList.size() > 0)
- {
+ if (posList != null && posList.size() > 0) {
int[] range = new int[posList.size()];
- for (int i = 0; i < range.length; i++)
- {
- range[i] = ( (Integer) posList.elementAt(i)).intValue();
+ for (int i = 0; i < range.length; i++) {
+ range[i] = ((Integer) posList.elementAt(i)).intValue();
}
posList.clear();
return range;
@@ -152,61 +156,52 @@ public class Range {
return null;
}
- public static int[] getIntervals(RangeType range)
- {
- int[] intervals=null;
+ public static int[] getIntervals(RangeType range) {
+ int[] intervals = null;
Vector posList = new Vector();
- if (range != null)
- {
+ if (range != null) {
int[] se = null;
- if (range.getSegCount() > 0 && range.getPosCount() > 0)
- {
- throw new Error("Invalid vamsas RangeType - cannot resolve both lists of Pos and Seg from choice!");
-}
- if (range.getSegCount() > 0)
- {
- for (int s = 0, sSize = range.getSegCount(); s < sSize; s++)
- {
+ if (range.getSegCount() > 0 && range.getPosCount() > 0) {
+ throw new Error(
+ "Invalid vamsas RangeType - cannot resolve both lists of Pos and Seg from choice!");
+ }
+ if (range.getSegCount() > 0) {
+ for (int s = 0, sSize = range.getSegCount(); s < sSize; s++) {
se = getSegRange(range.getSeg(s), false);
posList.addElement(new Integer(se[0]));
posList.addElement(new Integer(se[1]));
}
- }
- else if (range.getPosCount() > 0)
- {
+ } else if (range.getPosCount() > 0) {
int pos = range.getPos(0).getI();
- for (int p = 0, pSize = range.getPosCount(); p < pSize; p++)
- {
+ for (int p = 0, pSize = range.getPosCount(); p < pSize; p++) {
pos = range.getPos(p).getI();
posList.add(new Integer(pos));
posList.add(new Integer(pos));
}
}
}
- if (posList != null && posList.size() > 0)
- {
- intervals=new int[posList.size()];
+ if (posList != null && posList.size() > 0) {
+ intervals = new int[posList.size()];
java.util.Enumeration e = posList.elements();
- int i=0;
- while (e.hasMoreElements())
- {
- intervals[i++] = ((Integer)e.nextElement()).intValue();
+ int i = 0;
+ while (e.hasMoreElements()) {
+ intervals[i++] = ((Integer) e.nextElement()).intValue();
}
}
return intervals;
}
+
/**
* initialise a range type object from a set of start/end inclusive intervals
+ *
* @param mrt
* @param range
*/
- public static void initRangeType(RangeType mrt, int[] range)
- {
- for (int i=0; i " + map.toString())));
+ }
+ }
+ return parsemapType(map, 1, 1);
}
/**
* initialise a MapType object from a MapList object.
+ *
* @param maprange
* @param ml
* @param setUnits
*/
- public static void initMapType(MapType maprange, MapList ml, boolean setUnits)
- {
+ public static void initMapType(MapType maprange, MapList ml, boolean setUnits) {
initMapType(maprange, ml, setUnits, false);
}
+
/**
*
* @param maprange
* @param ml
* @param setUnits
- * @param reverse - reverse MapList mapping for Local and Mapped ranges and units
+ * @param reverse
+ * - reverse MapList mapping for Local and Mapped ranges and units
*/
- public static void initMapType(MapType maprange, MapList ml, boolean setUnits, boolean reverse)
- {
+ public static void initMapType(MapType maprange, MapList ml,
+ boolean setUnits, boolean reverse) {
maprange.setLocal(new Local());
maprange.setMapped(new Mapped());
- if (!reverse)
- {
+ if (!reverse) {
initRangeType(maprange.getLocal(), ml.getFromRanges());
initRangeType(maprange.getMapped(), ml.getToRanges());
- } else {
- initRangeType(maprange.getLocal(), ml.getToRanges());
- initRangeType(maprange.getMapped(), ml.getFromRanges());
- }
- if (setUnits)
- {
- if (!reverse)
- {
+ } else {
+ initRangeType(maprange.getLocal(), ml.getToRanges());
+ initRangeType(maprange.getMapped(), ml.getFromRanges());
+ }
+ if (setUnits) {
+ if (!reverse) {
maprange.getLocal().setUnit(ml.getFromRatio());
maprange.getMapped().setUnit(ml.getToRatio());
} else {
@@ -281,4 +286,4 @@ public class Range {
}
}
-}
\ No newline at end of file
+}