int startSeq;\r
int endSeq;\r
\r
- boolean showFullId = true;\r
+ boolean showJVSuffix = true;\r
boolean showText = true;\r
boolean showColourText = false;\r
boolean showBoxes = true;\r
\r
int charHeight;\r
int charWidth;\r
- int chunkWidth;\r
- int chunkHeight;\r
+ int wrappedWidth;\r
\r
Font font = new Font("SansSerif", Font.PLAIN, 10);\r
AlignmentI alignment;\r
boolean scaleLeftWrapped = true;\r
boolean scaleRightWrapped = true;\r
\r
+ // The following vector holds the features which are\r
+ // currently visible, in the correct order or rendering\r
+ Hashtable featuresDisplayed = null;\r
+\r
+\r
+ public Vector vconsensus;\r
+ AlignmentAnnotation consensus;\r
+ AlignmentAnnotation conservation;\r
+ AlignmentAnnotation quality;\r
+\r
+ public int ConsPercGaps = 25; // JBPNote : This should be a scalable property!\r
+\r
+ private java.beans.PropertyChangeSupport changeSupport = new java.beans.PropertyChangeSupport(this);\r
+\r
+ boolean ignoreGapsInConsensusCalculation = false;\r
+\r
public AlignViewport(AlignmentI al, JalviewLite applet)\r
{\r
setAlignment(al);\r
String param = applet.getParameter("showFullId");\r
if (param != null)\r
{\r
- showFullId = Boolean.valueOf(param).booleanValue();\r
+ showJVSuffix = Boolean.valueOf(param).booleanValue();\r
}\r
\r
param = applet.getParameter("showAnnotation");\r
showSequenceFeatures = b;\r
}\r
\r
- public Vector vconsensus;\r
- AlignmentAnnotation consensus;\r
- AlignmentAnnotation conservation;\r
- AlignmentAnnotation quality;\r
-\r
- public int ConsPercGaps = 25; // JBPNote : This should be a scalable property!\r
\r
public void updateConservation()\r
{\r
+ if(alignment.isNucleotide())\r
+ return;\r
+\r
Conservation cons = new jalview.analysis.Conservation("All",\r
jalview.schemes.ResidueProperties.propHash, 3,\r
alignment.getSequences(), 0,\r
annotations,\r
0f, // cons.qualityRange[0].floatValue(),\r
11f, // cons.qualityRange[1].floatValue()\r
- 1);\r
+ AlignmentAnnotation.BAR_GRAPH);\r
if (showConservation)\r
{\r
alignment.addAnnotation(conservation);\r
qannotations,\r
cons.qualityRange[0].floatValue(),\r
cons.qualityRange[1].floatValue(),\r
- 1);\r
+ AlignmentAnnotation.BAR_GRAPH);\r
if (showQuality)\r
{\r
alignment.addAnnotation(quality);\r
for (int i = 0; i < alignment.getWidth(); i++)\r
{\r
hash = (Hashtable) vconsensus.elementAt(i);\r
- float value = new Float(hash.get("maxCount").toString()).floatValue();\r
- value /= new Float(hash.get("size").toString()).floatValue();\r
+ float value = 0;\r
+ if(ignoreGapsInConsensusCalculation)\r
+ value = ((Float)hash.get("pid_nogaps")).floatValue();\r
+ else\r
+ value = ((Float)hash.get("pid_gaps")).floatValue();\r
\r
- value *= 100;\r
- String maxRes = hash.get("maxResidue") + " ";\r
+ String maxRes = hash.get("maxResidue").toString();\r
String mouseOver = hash.get("maxResidue") + " ";\r
- if (maxRes.length() > 2)\r
+ if (maxRes.length() > 1)\r
{\r
mouseOver = "[" + maxRes + "] ";\r
- maxRes = "+ ";\r
+ maxRes = "+";\r
}\r
\r
+\r
mouseOver += (int) value + "%";\r
annotations[i] = new Annotation(maxRes, mouseOver, ' ', value);\r
\r
if (consensus == null)\r
{\r
consensus = new AlignmentAnnotation("Consensus",\r
- "PID", annotations, 0f, 100f, 1);\r
+ "PID", annotations, 0f, 100f, AlignmentAnnotation.BAR_GRAPH);\r
if (showConsensus)\r
{\r
alignment.addAnnotation(consensus);\r
consensus.annotations = annotations;\r
}\r
\r
+ if(globalColourScheme!=null)\r
+ globalColourScheme.setConsensus(vconsensus);\r
+\r
}\r
\r
public SequenceGroup getSelectionGroup()\r
return charHeight;\r
}\r
\r
- public void setChunkWidth(int w)\r
- {\r
- this.chunkWidth = w;\r
- }\r
-\r
- public int getChunkWidth()\r
+ public void setWrappedWidth(int w)\r
{\r
- return chunkWidth;\r
+ this.wrappedWidth = w;\r
}\r
\r
- public void setChunkHeight(int h)\r
+ public int getwrappedWidth()\r
{\r
- this.chunkHeight = h;\r
- }\r
-\r
- public int getChunkHeight()\r
- {\r
- return chunkHeight;\r
+ return wrappedWidth;\r
}\r
\r
public AlignmentI getAlignment()\r
return colourAppliesToAllGroups;\r
}\r
\r
- public boolean getShowFullId()\r
+ public boolean getShowJVSuffix()\r
{\r
- return showFullId;\r
+ return showJVSuffix;\r
}\r
\r
- public void setShowFullId(boolean b)\r
+ public void setShowJVSuffix(boolean b)\r
{\r
- showFullId = b;\r
+ showJVSuffix = b;\r
}\r
\r
public boolean getShowAnnotation()\r
scaleRightWrapped = b;\r
}\r
\r
+ public void setIgnoreGapsConsensus(boolean b)\r
+ {\r
+ ignoreGapsInConsensusCalculation = b;\r
+ updateConsensus();\r
+ if (globalColourScheme!=null)\r
+ {\r
+ globalColourScheme.setThreshold(globalColourScheme.getThreshold(),\r
+ ignoreGapsInConsensusCalculation);\r
+\r
+ }\r
+ }\r
+\r
+ /**\r
+ * Property change listener for changes in alignment\r
+ *\r
+ * @param listener DOCUMENT ME!\r
+ */\r
+ public void addPropertyChangeListener(\r
+ java.beans.PropertyChangeListener listener)\r
+ {\r
+ changeSupport.addPropertyChangeListener(listener);\r
+ }\r
+\r
+ /**\r
+ * DOCUMENT ME!\r
+ *\r
+ * @param listener DOCUMENT ME!\r
+ */\r
+ public void removePropertyChangeListener(\r
+ java.beans.PropertyChangeListener listener)\r
+ {\r
+ changeSupport.removePropertyChangeListener(listener);\r
+ }\r
+\r
+ /**\r
+ * Property change listener for changes in alignment\r
+ *\r
+ * @param prop DOCUMENT ME!\r
+ * @param oldvalue DOCUMENT ME!\r
+ * @param newvalue DOCUMENT ME!\r
+ */\r
+ public void firePropertyChange(String prop, Object oldvalue, Object newvalue)\r
+ {\r
+ changeSupport.firePropertyChange(prop, oldvalue, newvalue);\r
+ }\r
+\r
+\r
+\r
+ public boolean getIgnoreGapsConsensus()\r
+ {\r
+ return ignoreGapsInConsensusCalculation;\r
+ }\r
+\r
+\r
}\r