From 9fff97021c2c637e426f6971d54dcf3fd4191985 Mon Sep 17 00:00:00 2001 From: amwaterhouse Date: Mon, 15 Aug 2005 12:08:41 +0000 Subject: [PATCH] IgnoreGapsConsensus --- src/jalview/appletgui/APopupMenu.java | 6 ++-- src/jalview/appletgui/AlignFrame.java | 14 +++++++-- src/jalview/appletgui/AlignViewport.java | 38 ++++++++++++++++++---- src/jalview/appletgui/AnnotationLabels.java | 21 ++++++++++++- src/jalview/appletgui/AnnotationPanel.java | 2 +- src/jalview/appletgui/SliderPanel.java | 2 +- src/jalview/appletgui/UserDefinedColours.java | 23 +------------- src/jalview/gui/AlignFrame.java | 15 +++++---- src/jalview/gui/AlignViewport.java | 42 ++++++++++++++++++++----- src/jalview/gui/AnnotationLabels.java | 19 +++++++++++ src/jalview/gui/AnnotationPanel.java | 3 +- src/jalview/gui/Jalview2XML.java | 24 ++++++++------ src/jalview/gui/PopupMenu.java | 6 ++-- src/jalview/gui/SliderPanel.java | 2 +- src/jalview/gui/TreeCanvas.java | 2 +- src/jalview/gui/UserDefinedColours.java | 3 +- 16 files changed, 151 insertions(+), 71 deletions(-) diff --git a/src/jalview/appletgui/APopupMenu.java b/src/jalview/appletgui/APopupMenu.java index 858770a..0cfa537 100755 --- a/src/jalview/appletgui/APopupMenu.java +++ b/src/jalview/appletgui/APopupMenu.java @@ -387,11 +387,11 @@ public class APopupMenu getGroup().getName()); if (sg.cs instanceof ResidueColourScheme) { - ( (ResidueColourScheme) sg.cs).setThreshold(threshold); + ( (ResidueColourScheme) sg.cs).setThreshold(threshold, ap.av.getIgnoreGapsConsensus()); } else if (sg.cs instanceof ScoreColourScheme) { - ( (ScoreColourScheme) sg.cs).setThreshold(threshold); + ( (ScoreColourScheme) sg.cs).setThreshold(threshold, ap.av.getIgnoreGapsConsensus()); } SliderPanel.showPIDSlider(); @@ -400,7 +400,7 @@ public class APopupMenu else // remove PIDColouring { ResidueColourScheme rcs = (ResidueColourScheme) sg.cs; - rcs.setThreshold(0); + rcs.setThreshold(0, ap.av.getIgnoreGapsConsensus()); sg.cs = rcs; } diff --git a/src/jalview/appletgui/AlignFrame.java b/src/jalview/appletgui/AlignFrame.java index 0bdcb55..db1f9c9 100755 --- a/src/jalview/appletgui/AlignFrame.java +++ b/src/jalview/appletgui/AlignFrame.java @@ -808,14 +808,14 @@ public class AlignFrame if (cs instanceof ResidueColourScheme) { - ( (ResidueColourScheme) cs).setThreshold(threshold); + ( (ResidueColourScheme) cs).setThreshold(threshold, viewport.getIgnoreGapsConsensus()); } viewport.setGlobalColourScheme(cs); } else if (cs instanceof ResidueColourScheme) { - ( (ResidueColourScheme) cs).setThreshold(0); + ( (ResidueColourScheme) cs).setThreshold(0, viewport.getIgnoreGapsConsensus()); } if (viewport.getConservationSelected()) @@ -885,7 +885,7 @@ public class AlignFrame { if (sg.cs instanceof ResidueColourScheme) { - ( (ResidueColourScheme) sg.cs).setThreshold(threshold); + ( (ResidueColourScheme) sg.cs).setThreshold(threshold, viewport.getIgnoreGapsConsensus()); } sg.cs.setConsensus(AAFrequency.calculate(sg.sequences, 0, sg.getWidth())); @@ -914,6 +914,8 @@ public class AlignFrame } } + updateCSConsensus(); + if (alignPanel.getOverviewPanel() != null) { alignPanel.getOverviewPanel().updateOverviewImage(); @@ -922,6 +924,12 @@ public class AlignFrame alignPanel.repaint(); } + public void updateCSConsensus() + { + //Colour schemes must have their consensus updated + + } + protected void modifyPID_actionPerformed(ActionEvent e) { if (viewport.getAbovePIDThreshold()) diff --git a/src/jalview/appletgui/AlignViewport.java b/src/jalview/appletgui/AlignViewport.java index 51478f2..e7cae44 100755 --- a/src/jalview/appletgui/AlignViewport.java +++ b/src/jalview/appletgui/AlignViewport.java @@ -74,6 +74,9 @@ public class AlignViewport boolean scaleLeftWrapped = true; boolean scaleRightWrapped = true; + + boolean ignoreGapsInConsensusCalculation = false; + public AlignViewport(AlignmentI al, JalviewLite applet) { setAlignment(al); @@ -264,18 +267,21 @@ public class AlignViewport for (int i = 0; i < alignment.getWidth(); i++) { hash = (Hashtable) vconsensus.elementAt(i); - float value = new Float(hash.get("maxCount").toString()).floatValue(); - value /= new Float(hash.get("size").toString()).floatValue(); + float value = 0; + if(ignoreGapsInConsensusCalculation) + value = ((Float)hash.get("pid_nogaps")).floatValue(); + else + value = ((Float)hash.get("pid_gaps")).floatValue(); - value *= 100; - String maxRes = hash.get("maxResidue") + " "; + String maxRes = hash.get("maxResidue").toString(); String mouseOver = hash.get("maxResidue") + " "; - if (maxRes.length() > 2) + if (maxRes.length() > 1) { mouseOver = "[" + maxRes + "] "; - maxRes = "+ "; + maxRes = "+"; } + mouseOver += (int) value + "%"; annotations[i] = new Annotation(maxRes, mouseOver, ' ', value); @@ -643,4 +649,24 @@ public class AlignViewport scaleRightWrapped = b; } + public void setIgnoreGapsConsensus(boolean b) + { + ignoreGapsInConsensusCalculation = b; + updateConsensus(); + if (globalColourScheme!=null && globalColourScheme instanceof ResidueColourScheme) + { + ( (ResidueColourScheme) globalColourScheme).setThreshold( + ( (ResidueColourScheme) globalColourScheme).getThreshold(), + ignoreGapsInConsensusCalculation); + + } + + } + + public boolean getIgnoreGapsConsensus() + { + return ignoreGapsInConsensusCalculation; + } + + } diff --git a/src/jalview/appletgui/AnnotationLabels.java b/src/jalview/appletgui/AnnotationLabels.java index 38013d1..1a83b09 100755 --- a/src/jalview/appletgui/AnnotationLabels.java +++ b/src/jalview/appletgui/AnnotationLabels.java @@ -121,7 +121,26 @@ public class AnnotationLabels item = new MenuItem(OUTPUT_TEXT); item.addActionListener(this); pop.add(item); - pop.show(this, evt.getX(), evt.getY()); + + if (aa[selectedRow].label.equals("Consensus")) + { + pop.addSeparator(); + final CheckboxMenuItem cbmi = new CheckboxMenuItem( + "Ignore gaps in calculation", + ap.av.getIgnoreGapsConsensus()); + + cbmi.addItemListener(new ItemListener() + { + public void itemStateChanged(ItemEvent e) + { + ap.av.setIgnoreGapsConsensus(cbmi.getState()); + ap.repaint(); + } + }); + pop.add(cbmi); + } + + pop.show(this, evt.getX(), evt.getY()); } diff --git a/src/jalview/appletgui/AnnotationPanel.java b/src/jalview/appletgui/AnnotationPanel.java index ad4aeb8..8e9469a 100755 --- a/src/jalview/appletgui/AnnotationPanel.java +++ b/src/jalview/appletgui/AnnotationPanel.java @@ -336,7 +336,7 @@ public class AnnotationPanel fm.charWidth(row.annotations[j].displayCharacter. charAt(0))) / 2; g.setColor(row.annotations[j].colour); - if (j == 0) + if (j == 0 || row.isGraph) { if (row.annotations[0].secondaryStructure == 'H' || row.annotations[0].secondaryStructure == 'E') diff --git a/src/jalview/appletgui/SliderPanel.java b/src/jalview/appletgui/SliderPanel.java index caabbf9..d2eeff3 100755 --- a/src/jalview/appletgui/SliderPanel.java +++ b/src/jalview/appletgui/SliderPanel.java @@ -224,7 +224,7 @@ public class SliderPanel } else { - ( (ResidueColourScheme) toChange).setThreshold(i); + ( (ResidueColourScheme) toChange).setThreshold(i, ap.av.getIgnoreGapsConsensus()); } groupIndex--; diff --git a/src/jalview/appletgui/UserDefinedColours.java b/src/jalview/appletgui/UserDefinedColours.java index 80d91ef..86e1f5d 100755 --- a/src/jalview/appletgui/UserDefinedColours.java +++ b/src/jalview/appletgui/UserDefinedColours.java @@ -214,7 +214,7 @@ public class UserDefinedColours } UserColourScheme ucs = new UserColourScheme(newColours); - ucs.setThreshold(0); + ucs.setThreshold(0, ap.av.getIgnoreGapsConsensus()); if (seqGroup != null) { @@ -228,27 +228,6 @@ public class UserDefinedColours ap.repaint(); } - public static UserColourScheme loadDefaultColours(String file) - { - UserColourScheme ucs = null; - try - { - BufferedReader in = new BufferedReader(new FileReader(file)); - Color[] newColours = new Color[24]; - for (int i = 0; i < 24; i++) - { - newColours[i] = new Color(Integer.parseInt(in.readLine())); - } - - ucs = new UserColourScheme(newColours); - ucs.setThreshold(0); - - } - catch (Exception ex) - {} - - return ucs; - } protected void cancelButton_actionPerformed(ActionEvent e) { diff --git a/src/jalview/gui/AlignFrame.java b/src/jalview/gui/AlignFrame.java index 727e1c6..a41fb36 100755 --- a/src/jalview/gui/AlignFrame.java +++ b/src/jalview/gui/AlignFrame.java @@ -1336,22 +1336,22 @@ public class AlignFrame extends GAlignFrame if (cs instanceof ResidueColourScheme) { - ((ResidueColourScheme) cs).setThreshold(threshold); + ((ResidueColourScheme) cs).setThreshold(threshold, viewport.getIgnoreGapsConsensus()); } else if (cs instanceof ScoreColourScheme) { - ((ScoreColourScheme) cs).setThreshold(threshold); + ((ScoreColourScheme) cs).setThreshold(threshold, viewport.getIgnoreGapsConsensus()); } viewport.setGlobalColourScheme(cs); } else if (cs instanceof ResidueColourScheme) { - ((ResidueColourScheme) cs).setThreshold(0); + ((ResidueColourScheme) cs).setThreshold(0, viewport.getIgnoreGapsConsensus()); } else if (cs instanceof ScoreColourScheme) { - ((ScoreColourScheme) cs).setThreshold(0); + ((ScoreColourScheme) cs).setThreshold(0, viewport.getIgnoreGapsConsensus()); } if (viewport.getConservationSelected()) @@ -1368,8 +1368,7 @@ public class AlignFrame extends GAlignFrame ccs = new ConservationColourScheme(c, cs); - // MUST NOTIFY THE COLOURSCHEME OF CONSENSUS! - ccs.setConsensus(viewport.vconsensus); + viewport.setGlobalColourScheme(ccs); ccs.inc = SliderPanel.setConservationSlider(alignPanel, ccs, @@ -1421,11 +1420,11 @@ public class AlignFrame extends GAlignFrame { if (sg.cs instanceof ResidueColourScheme) { - ((ResidueColourScheme) sg.cs).setThreshold(threshold); + ((ResidueColourScheme) sg.cs).setThreshold(threshold, viewport.getIgnoreGapsConsensus()); } else if (sg.cs instanceof ScoreColourScheme) { - ((ScoreColourScheme) sg.cs).setThreshold(threshold); + ((ScoreColourScheme) sg.cs).setThreshold(threshold, viewport.getIgnoreGapsConsensus()); } sg.cs.setConsensus(AAFrequency.calculate(sg.sequences, 0, diff --git a/src/jalview/gui/AlignViewport.java b/src/jalview/gui/AlignViewport.java index 05927b6..e98fb9f 100755 --- a/src/jalview/gui/AlignViewport.java +++ b/src/jalview/gui/AlignViewport.java @@ -85,6 +85,8 @@ public class AlignViewport // JBPNote Prolly only need this in the applet version. private java.beans.PropertyChangeSupport changeSupport = new java.beans.PropertyChangeSupport(this); + boolean ignoreGapsInConsensusCalculation = false; + /** * Creates a new AlignViewport object. * @@ -147,6 +149,7 @@ public class AlignViewport if (globalColourScheme instanceof UserColourScheme) { globalColourScheme = UserDefinedColours.loadDefaultColours(); + ((UserColourScheme)globalColourScheme).setThreshold(0, getIgnoreGapsConsensus()); } if (globalColourScheme != null) @@ -304,18 +307,19 @@ public class AlignViewport { hash = (Hashtable) vconsensus.elementAt(i); - float value = Float.parseFloat(hash.get("maxCount").toString()); - value /= Float.parseFloat(hash.get("size").toString()); - - value *= 100; + float value = 0; + if(ignoreGapsInConsensusCalculation) + value = ((Float)hash.get("pid_nogaps")).floatValue(); + else + value = ((Float)hash.get("pid_gaps")).floatValue(); - String maxRes = hash.get("maxResidue") + " "; - String mouseOver = hash.get("maxResidue") + " "; + String maxRes = hash.get("maxResidue").toString(); + String mouseOver = hash.get("maxResidue")+" "; - if (maxRes.length() > 2) + if (maxRes.length() > 1) { mouseOver = "[" + maxRes + "] "; - maxRes = "+ "; + maxRes = "+"; } mouseOver += ((int) value + "%"); @@ -336,6 +340,9 @@ public class AlignViewport { consensus.annotations = annotations; } + + if(globalColourScheme!=null) + globalColourScheme.setConsensus(vconsensus); } /** @@ -1027,4 +1034,23 @@ public class AlignViewport { changeSupport.firePropertyChange(prop, oldvalue, newvalue); } + + public void setIgnoreGapsConsensus(boolean b) + { + ignoreGapsInConsensusCalculation = b; + updateConsensus(); + if(globalColourScheme!=null && globalColourScheme instanceof ResidueColourScheme) + { + ((ResidueColourScheme) globalColourScheme).setThreshold( + ((ResidueColourScheme) globalColourScheme).getThreshold(), ignoreGapsInConsensusCalculation); + + + } + + } + + public boolean getIgnoreGapsConsensus() + { + return ignoreGapsInConsensusCalculation; + } } diff --git a/src/jalview/gui/AnnotationLabels.java b/src/jalview/gui/AnnotationLabels.java index 2a972ea..099d1d1 100755 --- a/src/jalview/gui/AnnotationLabels.java +++ b/src/jalview/gui/AnnotationLabels.java @@ -171,6 +171,7 @@ public class AnnotationLabels extends JPanel implements MouseListener, cap.setText(aa[selectedRow].toString()); } + ap.annotationPanel.adjustPanelHeight(); Dimension d = ap.annotationScroller.getPreferredSize(); @@ -319,6 +320,24 @@ public class AnnotationLabels extends JPanel implements MouseListener, item = new JMenuItem(OUTPUT_TEXT); item.addActionListener(this); pop.add(item); + + if (aa[selectedRow].label.equals("Consensus")) + { + pop.addSeparator(); + final JCheckBoxMenuItem cbmi = new JCheckBoxMenuItem( + "Ignore gaps in calculation", + ap.av.getIgnoreGapsConsensus()); + cbmi.addActionListener(new ActionListener() + {public void actionPerformed(ActionEvent e) + { + ap.av.setIgnoreGapsConsensus(cbmi.getState()); + ap.repaint(); + } + }); + pop.add(cbmi); + + } + pop.show(this, evt.getX(), evt.getY()); } diff --git a/src/jalview/gui/AnnotationPanel.java b/src/jalview/gui/AnnotationPanel.java index 9ae103e..b8570a9 100755 --- a/src/jalview/gui/AnnotationPanel.java +++ b/src/jalview/gui/AnnotationPanel.java @@ -688,12 +688,13 @@ public class AnnotationPanel extends JPanel implements MouseListener, if (validRes && (row.annotations[j].displayCharacter.length() > 0)) { + int charOffset = (av.charWidth - fm.charWidth(row.annotations[j].displayCharacter.charAt( 0))) / 2; g.setColor(row.annotations[j].colour); - if (j == 0) + if (j == 0 || row.isGraph) { g.drawString(row.annotations[j].displayCharacter, x+charOffset, y + iconOffset + 2); diff --git a/src/jalview/gui/Jalview2XML.java b/src/jalview/gui/Jalview2XML.java index 70608c4..5d94c3c 100755 --- a/src/jalview/gui/Jalview2XML.java +++ b/src/jalview/gui/Jalview2XML.java @@ -523,6 +523,7 @@ public class Jalview2XML } catch (Exception ex) { + ex.printStackTrace(); System.err.println("Exception whilst loading jalview XML file : " + ex + "\n"); JOptionPane.showInternalMessageDialog(Desktop.desktop, @@ -631,11 +632,11 @@ public class Jalview2XML if (cs instanceof ResidueColourScheme) { - ((ResidueColourScheme) cs).setThreshold(groups[i].getPidThreshold()); + ((ResidueColourScheme) cs).setThreshold(groups[i].getPidThreshold(), true); } else if (cs instanceof ScoreColourScheme) { - ((ScoreColourScheme) cs).setThreshold(groups[i].getPidThreshold()); + ((ScoreColourScheme) cs).setThreshold(groups[i].getPidThreshold(), true); } } @@ -729,25 +730,28 @@ public class Jalview2XML cs = ColourSchemeProperty.getColour(al, view.getBgColour()); } - if (cs instanceof ConservationColourScheme) - { - ((ConservationColourScheme) cs).inc = view.getConsThreshold(); - } - if (cs instanceof ResidueColourScheme) { - ((ResidueColourScheme) cs).setThreshold(view.getPidThreshold()); + ((ResidueColourScheme) cs).setThreshold(view.getPidThreshold(), true); } else if (cs instanceof ScoreColourScheme) { - ((ScoreColourScheme) cs).setThreshold(view.getPidThreshold()); + ((ScoreColourScheme) cs).setThreshold(view.getPidThreshold(), true); } + + if(cs!=null) + cs.setConsensus(af.viewport.vconsensus); } + af.setColourSelected(view.getBgColour()); af.viewport.setGlobalColourScheme(cs); - af.viewport.setColourAppliesToAllGroups(false); af.changeColour(af.viewport.getGlobalColourScheme()); + if (view.getConservationSelected()) + { + ( (ConservationColourScheme) af.viewport.getGlobalColourScheme()).inc = view.getConsThreshold(); + } + af.viewport.setColourAppliesToAllGroups(true); if (view.getShowSequenceFeatures()) diff --git a/src/jalview/gui/PopupMenu.java b/src/jalview/gui/PopupMenu.java index 0b53111..26fc93c 100755 --- a/src/jalview/gui/PopupMenu.java +++ b/src/jalview/gui/PopupMenu.java @@ -595,11 +595,11 @@ public class PopupMenu extends JPopupMenu if (sg.cs instanceof ResidueColourScheme) { - ((ResidueColourScheme) sg.cs).setThreshold(threshold); + ((ResidueColourScheme) sg.cs).setThreshold(threshold, ap.av.getIgnoreGapsConsensus()); } else if (sg.cs instanceof ScoreColourScheme) { - ((ScoreColourScheme) sg.cs).setThreshold(threshold); + ((ScoreColourScheme) sg.cs).setThreshold(threshold, ap.av.getIgnoreGapsConsensus()); } SliderPanel.showPIDSlider(); @@ -607,7 +607,7 @@ public class PopupMenu extends JPopupMenu else // remove PIDColouring { ResidueColourScheme rcs = (ResidueColourScheme) sg.cs; - rcs.setThreshold(0); + rcs.setThreshold(0, ap.av.getIgnoreGapsConsensus()); sg.cs = rcs; } diff --git a/src/jalview/gui/SliderPanel.java b/src/jalview/gui/SliderPanel.java index c18cc05..a9020c3 100755 --- a/src/jalview/gui/SliderPanel.java +++ b/src/jalview/gui/SliderPanel.java @@ -294,7 +294,7 @@ public class SliderPanel extends GSliderPanel } else { - ((ResidueColourScheme) toChange).setThreshold(i); + ((ResidueColourScheme) toChange).setThreshold(i, ap.av.getIgnoreGapsConsensus()); } groupIndex--; diff --git a/src/jalview/gui/TreeCanvas.java b/src/jalview/gui/TreeCanvas.java index d8ed3ee..d05aee1 100755 --- a/src/jalview/gui/TreeCanvas.java +++ b/src/jalview/gui/TreeCanvas.java @@ -715,7 +715,7 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable, if (sg.cs != null) { - ((ResidueColourScheme) sg.cs).setThreshold(25); + ((ResidueColourScheme) sg.cs).setThreshold(25, av.getIgnoreGapsConsensus()); } if (av.getGlobalColourScheme() instanceof ConservationColourScheme) diff --git a/src/jalview/gui/UserDefinedColours.java b/src/jalview/gui/UserDefinedColours.java index 651f40c..4ad129b 100755 --- a/src/jalview/gui/UserDefinedColours.java +++ b/src/jalview/gui/UserDefinedColours.java @@ -267,7 +267,7 @@ public class UserDefinedColours extends GUserDefinedColours } UserColourScheme ucs = new UserColourScheme(newColours); - ucs.setThreshold(0); + ucs.setThreshold(0, ap.av.getIgnoreGapsConsensus()); if (seqGroup != null) { @@ -346,7 +346,6 @@ public class UserDefinedColours extends GUserDefinedColours if (cols != null) { ucs = new UserColourScheme(cols); - ucs.setThreshold(0); } return ucs; -- 1.7.10.2