*/\r
public class AlignmentAnnotation\r
{\r
+ public SequenceI sequenceRef;\r
+\r
/** DOCUMENT ME!! */\r
public String label;\r
\r
/** DOCUMENT ME!! */\r
public Annotation[] annotations;\r
\r
+ public java.util.Hashtable sequenceMapping;\r
\r
/** DOCUMENT ME!! */\r
public float graphMin;\r
/** DOCUMENT ME!! */\r
public float graphMax;\r
\r
+ public GraphLine threshold;\r
\r
// Graphical hints and tips\r
\r
/** DOCUMENT ME!! */\r
public boolean visible = true;\r
\r
+ public int graphGroup = -1;\r
+\r
/** DOCUMENT ME!! */\r
public int height = 0;\r
\r
public int graph = 0;\r
\r
- public static int NO_GRAPH = 0;\r
+ public int graphHeight = 40;\r
+\r
+ public static final int NO_GRAPH = 0;\r
\r
- public static int BAR_GRAPH = 1;\r
+ public static final int BAR_GRAPH = 1;\r
\r
- public static int LINE_GRAPH = 2;\r
+ public static final int LINE_GRAPH = 2;\r
+\r
+ public static int getGraphValueFromString(String string)\r
+ {\r
+ if(string.equalsIgnoreCase("BAR_GRAPH"))\r
+ return BAR_GRAPH;\r
+ else if(string.equalsIgnoreCase("LINE_GRAPH"))\r
+ return LINE_GRAPH;\r
+ else\r
+ return NO_GRAPH;\r
+ }\r
\r
/**\r
* Creates a new AlignmentAnnotation object.\r
this.annotations = annotations;\r
graph = graphType;\r
\r
+ boolean drawValues = true;\r
+\r
if (min == max)\r
{\r
+ min = 999999999;\r
for (int i = 0; i < annotations.length; i++)\r
{\r
if (annotations[i] == null)\r
continue;\r
}\r
\r
+ if(drawValues && annotations[i].displayCharacter.length() > 1 )\r
+ {\r
+ drawValues = false;\r
+ }\r
+\r
if (annotations[i].value > max)\r
{\r
max = annotations[i].value;\r
}\r
}\r
\r
+ if(!drawValues)\r
+ {\r
+ for (int i = 0; i < annotations.length; i++)\r
+ {\r
+ if (annotations[i] != null)\r
+ annotations[i].displayCharacter = "";\r
+ }\r
+ }\r
+\r
graphMin = min;\r
graphMax = max;\r
\r
}\r
\r
return buffer.toString();\r
- }\r
+ }\r
+\r
+ public void setThreshold(GraphLine line)\r
+ {\r
+ threshold = line;\r
+ }\r
+\r
+ public GraphLine getThreshold()\r
+ {\r
+ return threshold;\r
+ }\r
+\r
+ /**\r
+ * This\r
+ */\r
+ public void createSequenceMapping(SequenceI seqRef, int startRes)\r
+ {\r
+ if(seqRef == null)\r
+ return;\r
+\r
+ sequenceMapping = new java.util.Hashtable();\r
+\r
+ sequenceRef = seqRef;\r
+\r
+ if(startRes < sequenceRef.getStart())\r
+ startRes = sequenceRef.getStart();\r
+\r
+ int seqPos;\r
+\r
+ int fileOffset = 0;\r
+ if(startRes > sequenceRef.getStart())\r
+ {\r
+ fileOffset = startRes - sequenceRef.getStart();\r
+ }\r
+\r
+ for(int i = 0; i < annotations.length; i++)\r
+ {\r
+ seqPos = sequenceRef.findPosition(i + fileOffset);\r
+ if(seqPos<annotations.length)\r
+ {\r
+ if (annotations[i] != null)\r
+ {\r
+ sequenceMapping.put(new Integer(seqPos),\r
+ annotations[i]);\r
+ }\r
+ }\r
+ }\r
+\r
+ adjustForAlignment();\r
+\r
+ }\r
+\r
+ public void adjustForAlignment()\r
+ {\r
+ int a=0, aSize = sequenceRef.getLength();\r
+\r
+ int position;\r
+ Annotation[] temp = new Annotation[aSize];\r
+ Integer index;\r
+ for (a = sequenceRef.getStart(); a <= sequenceRef.getEnd(); a++)\r
+ {\r
+ index = new Integer(a);\r
+ if(sequenceMapping.containsKey(index))\r
+ {\r
+ position = sequenceRef.findIndex(a)-1;\r
+\r
+ temp[position] = (Annotation)sequenceMapping.get(index);\r
+ }\r
+ }\r
+\r
+ annotations = temp;\r
+ }\r
}\r
+\r
+\r