JAL-4392 Secondary Structure Consensus save and load project
authorRenia Correya <rcorreya001@dundee.ac.uk>
Thu, 25 Jul 2024 09:24:30 +0000 (10:24 +0100)
committerRenia Correya <rcorreya001@dundee.ac.uk>
Thu, 25 Jul 2024 09:24:30 +0000 (10:24 +0100)
14 files changed:
resources/lang/Messages.properties
src/jalview/api/ViewStyleI.java
src/jalview/datamodel/SequenceGroup.java
src/jalview/gui/AlignFrame.java
src/jalview/gui/PopupMenu.java
src/jalview/gui/SeqPanel.java
src/jalview/gui/SliderPanel.java
src/jalview/gui/TreeCanvas.java
src/jalview/jbgui/GAlignFrame.java
src/jalview/project/Jalview2XML.java
src/jalview/renderer/AnnotationRenderer.java
src/jalview/viewmodel/AlignmentViewport.java
src/jalview/viewmodel/styles/ViewStyle.java
src/jalview/xml/binding/jalview/JalviewModel.java

index 9e71fb5..015a013 100644 (file)
@@ -83,7 +83,7 @@ action.remove_redundancy = Remove Redundancy...
 action.pairwise_alignment = Pairwise Alignment
 action.user_defined = User Defined...
 action.by_conservation = By Conservation
-action.by_consensus_secondary_structure = By Secondary Structure Consensus
+action.by_secondary_structure_conservation = By Secondary Structure Conservation
 action.wrap = Wrap
 action.show_gaps = Show Gaps
 action.show_hidden_markers = Show Hidden Markers
@@ -263,7 +263,7 @@ label.to_this_alignment = Add To This Alignment
 label.apply_colour_to_all_groups = Apply Colour To All Groups
 label.modify_identity_threshold = Modify Identity Threshold...
 label.modify_conservation_threshold = Modify Conservation Threshold...
-label.modify_consensus_secondary_structure_threshold = Modify Secondary Structure Consensus Threshold...
+label.modify_secondary_structure_conservation_threshold = Modify Secondary Structure Conservation Threshold...
 label.input_from_textbox = Input from textbox
 label.centre_column_labels = Centre column labels
 label.automatic_scrolling = Automatic Scrolling
@@ -906,7 +906,7 @@ label.copied_sequences = Copied sequences
 label.cut_sequences = Cut Sequences
 label.conservation_colour_increment = Conservation Colour Increment ({0})
 label.percentage_identity_threshold = Percentage Identity Threshold ({0})
-label.consensus_secondary_structure_threshold = Consensus Secondary Structure Threshold ({0})
+label.secondary_structure_conservation_threshold = Secondary Structure Conservation Threshold ({0})
 label.error_unsupported_owwner_user_colour_scheme = Unsupported owner for User Colour scheme dialog
 label.save_alignment_to_file = Save Alignment to file
 label.save_features_to_file = Save Features to File
index 1c7775e..8942477 100644 (file)
@@ -287,4 +287,14 @@ public interface ViewStyleI
   void setSecondaryStructureSources(List<String> secondaryStructureSources);
 
   List<String> getSecondaryStructureSources();
+
+  int getConsensusSecondaryStructureThreshold();
+
+  /**
+   * 
+   * @param val
+   *          set the scalar for bleaching colourschemes according to degree of
+   *          secondary structure conservation
+   */
+  void setConsensusSecondaryStructureThreshold(int val);
 }
index abadbac..38104e5 100755 (executable)
@@ -1247,6 +1247,23 @@ public class SequenceGroup implements AnnotatedCollectionI
       consensus = aan;
     }
   }
+  
+  public void setSSConsensusRow(AlignmentAnnotation aan)
+  {
+
+    if (ssConsensus == null)
+    {
+      ssConsensus = new ArrayList<AlignmentAnnotation>();
+      ssConsensus.add(aan);
+    }
+    else {
+      boolean annotExists = ssConsensus.stream()
+              .anyMatch(ssa -> ssa.label.equals(aan.label));
+      if(!annotExists) {
+        ssConsensus.add(aan);
+      }
+    }
+  }
 
   /**
    * 
index 4da845d..de8d1a0 100644 (file)
@@ -953,6 +953,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     viewTextMenuItem.setSelected(av.getShowText());
     showNonconservedMenuItem.setSelected(av.getShowUnconserved());
     showGroupConsensus.setSelected(av.isShowGroupConsensus());
+    showGroupSSConsensus.setSelected(av.isShowGroupSSConsensus());
     showGroupConservation.setSelected(av.isShowGroupConservation());
     showConsensusHistogram.setSelected(av.isShowConsensusHistogram());
     showSequenceLogo.setSelected(av.isShowSequenceLogo());
@@ -5236,6 +5237,15 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     {
       SliderPanel.hideConservationSlider();
     }
+    if (viewport.getByConsensusSecondaryStructureSelected())
+    {
+      SliderPanel.setConsensusSecondaryStructureSlider(alignPanel,
+              viewport.getResidueShading(), alignPanel.getViewName());
+    }
+    else
+    {
+      SliderPanel.hideConsensusSecondaryStructureSlider();
+    }
     if (viewport.getAbovePIDThreshold())
     {
       SliderPanel.setPIDSliderSource(alignPanel,
index aa5121a..a47a0a1 100644 (file)
@@ -1796,7 +1796,7 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener
     });
     
     byConsensusSecondaryStructureMenuItem.setText(
-            MessageManager.getString("action.by_consensus_secondary_structure"));
+            MessageManager.getString("action.by_secondary_structure_conservation"));
     byConsensusSecondaryStructureMenuItem.addActionListener(new ActionListener()
     {
       @Override
@@ -1826,7 +1826,7 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener
     });
     
     modifyConsensusSecondaryStructureThreshold.setText(MessageManager
-            .getString("label.modify_consensus_secondary_structure_threshold"));
+            .getString("label.modify_secondary_structure_conservation_threshold"));
     modifyConsensusSecondaryStructureThreshold.addActionListener(new ActionListener()
     {
       @Override
index 845004b..6f3fb2d 100644 (file)
@@ -2487,6 +2487,10 @@ public class SeqPanel extends JPanel
       {
         SliderPanel.setPIDSliderSource(ap, groupColourScheme, name);
       }
+      if (stretchGroup.cs.isConsensusSecondaryStructureColouring())
+      {
+        SliderPanel.setConsensusSecondaryStructureSlider(ap, groupColourScheme, name);
+      }
     }
     PaintRefresher.Refresh(this, av.getSequenceSetId());
     // TODO: structure colours only need updating if stretchGroup used to or now
index 62ac54f..5e1935d 100755 (executable)
@@ -287,7 +287,7 @@ public class SliderPanel extends GSliderPanel
     }
 
     consensusSecondaryStructureSlider.setTitle(MessageManager.formatMessage(
-            "label.consensus_secondary_structure_threshold", new String[]
+            "label.secondary_structure_conservation_threshold", new String[]
             { source == null ? BACKGROUND : source }));
 
     List<SequenceGroup> groups = ap.av.getAlignment().getGroups();
@@ -482,15 +482,15 @@ public class SliderPanel extends GSliderPanel
       scheme.setConservationApplied(true);
       scheme.setConservationInc(percent);
     }
-    else if(forConsensusSecondaryStructure)
-    {
-      scheme.setConsensusSecondaryStructureColouring(true);
-      scheme.setConsensusSecondaryStructureThreshold(percent);
-    }
     else
     {
       scheme.setThreshold(percent, ap.av.isIgnoreGapsConsensus());
     }
+    if(forConsensusSecondaryStructure)
+    {
+      scheme.setConsensusSecondaryStructureColouring(true);
+      scheme.setConsensusSecondaryStructureThreshold(percent);
+    }
   }
 
   /**
index 9180d52..ba2417e 100755 (executable)
@@ -1312,6 +1312,12 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable,
           c.verdict(false, viewport.getConsPercGaps());
           sg.cs.setConservation(c);
         }
+        if(viewport.getResidueShading().isConsensusSecondaryStructureColouring()) 
+        {
+          sg.getGroupColourScheme().setConsensusSecondaryStructureThreshold(
+                  viewport.getResidueShading().getThreshold());
+          sg.getGroupColourScheme().setConsensusSecondaryStructureColouring(true);
+        }
       }
       // indicate that associated structure views will need an update
       viewport.setUpdateStructures(true);
index de11724..d1d56ed 100755 (executable)
@@ -2147,7 +2147,7 @@ public class GAlignFrame extends JInternalFrame
     
 
     byConsensusSecondaryStructureMenuItem = new JCheckBoxMenuItem(
-            MessageManager.getString("action.by_consensus_secondary_structure"));
+            MessageManager.getString("action.by_secondary_structure_conservation"));
     byConsensusSecondaryStructureMenuItem.addActionListener(new ActionListener()
     {
       @Override
@@ -2190,7 +2190,7 @@ public class GAlignFrame extends JInternalFrame
     });
     
     modifyConsensusSecondaryStructureThreshold = new JMenuItem(MessageManager
-            .getString("label.modify_consensus_secondary_structure_threshold"));
+            .getString("label.modify_secondary_structure_conservation_threshold"));
     modifyConsensusSecondaryStructureThreshold.addActionListener(new ActionListener()
     {
       @Override
index e620c1c..ed57fe7 100644 (file)
@@ -1481,6 +1481,12 @@ public class Jalview2XML
           // group has references so set its ID field
           jGroup.setId(groupRefs.get(sg));
         }
+        
+        List<String> groupSecondaryStructureSources = sg.getSecondaryStructureSources();
+        if(groupSecondaryStructureSources != null && groupSecondaryStructureSources.size()>0) {
+          jGroup.setSecondaryStructureSources(groupSecondaryStructureSources);
+        }
+        
         ColourSchemeI colourScheme = sg.getColourScheme();
         if (colourScheme != null)
         {
@@ -1517,8 +1523,16 @@ public class Jalview2XML
           }
 
           jGroup.setPidThreshold(groupColourScheme.getThreshold());
+          
+          if(groupColourScheme.isConsensusSecondaryStructureColouring()) 
+          {
+            jGroup.setConsensusSecondaryStructureColouring(
+                    groupColourScheme.isConsensusSecondaryStructureColouring());
+            jGroup.setConsensusSecondaryStructureThreshold(
+                    groupColourScheme.getConsensusSecondaryStructureThreshold());
+          }
         }
-
+       
         jGroup.setOutlineColour(sg.getOutlineColour().getRGB());
         jGroup.setDisplayBoxes(sg.getDisplayBoxes());
         jGroup.setDisplayText(sg.getDisplayText());
@@ -1537,7 +1551,7 @@ public class Jalview2XML
           jGroup.getSeq().add(seqHash(seq));
         }
       }
-
+      
       // jms.setJGroup(groups);
       Object group;
       for (JGroup grp : groups)
@@ -1637,10 +1651,18 @@ public class Jalview2XML
           }
         }
         view.setPidThreshold(vcs.getThreshold());
+        
+        if(vcs.isConsensusSecondaryStructureColouring()) 
+        {
+          view.setConsensusSecondaryStructureThreshold(
+                  vcs.getConsensusSecondaryStructureThreshold());
+        }
       }
 
       view.setConservationSelected(av.getConservationSelected());
       view.setPidSelected(av.getAbovePIDThreshold());
+      view.setByConsensusSecondaryStructureSelected(
+              av.getByConsensusSecondaryStructureSelected());
       view.setCharHeight(av.getCharHeight());
       view.setCharWidth(av.getCharWidth());
       final Font font = av.getFont();
@@ -1669,6 +1691,7 @@ public class Jalview2XML
       view.setShowSequenceLogo(av.isShowSequenceLogo());
       view.setNormaliseSequenceLogo(av.isNormaliseSequenceLogo());
       view.setShowGroupConsensus(av.isShowGroupConsensus());
+      view.setShowGroupSSConsensus(av.isShowGroupSSConsensus());
       view.setShowGroupConservation(av.isShowGroupConservation());
       view.setShowNPfeatureTooltip(av.isShowNPFeats());
       view.setShowDbRefTooltip(av.isShowDBRefs());
@@ -4247,8 +4270,13 @@ public class Jalview2XML
                 safeBoolean(jGroup.isColourText()),
                 safeInt(jGroup.getStart()), safeInt(jGroup.getEnd()));
         sg.getGroupColourScheme().setThreshold(pidThreshold, true);
+        sg.getGroupColourScheme().setConsensusSecondaryStructureColouring(
+                safeBoolean(jGroup.isConsensusSecondaryStructureColouring()));
         sg.getGroupColourScheme()
                 .setConservationInc(safeInt(jGroup.getConsThreshold()));
+        sg.getGroupColourScheme().setConsensusSecondaryStructureThreshold(
+                safeInt(jGroup.getConsensusSecondaryStructureThreshold()));
+        
         sg.setOutlineColour(new Color(safeInt(jGroup.getOutlineColour())));
 
         sg.textColour = new Color(safeInt(jGroup.getTextCol1()));
@@ -4260,6 +4288,7 @@ public class Jalview2XML
         sg.setshowSequenceLogo(jGroup.isShowSequenceLogo());
         sg.setNormaliseSequenceLogo(jGroup.isNormaliseSequenceLogo());
         sg.setIgnoreGapsConsensus(jGroup.isIgnoreGapsinConsensus());
+        sg.setSecondaryStructureSources(jGroup.getSecondaryStructureSources());
         if (jGroup.getConsThreshold() != null
                 && jGroup.getConsThreshold().intValue() != 0)
         {
@@ -4294,6 +4323,10 @@ public class Jalview2XML
                 {
                   sg.setConservationRow(jaa);
                 }
+                if (jaa.label.startsWith("Secondary Structure Consensus"))
+                {
+                  sg.setSSConsensusRow(jaa);
+                }
               }
             }
           }
@@ -5217,6 +5250,10 @@ public class Jalview2XML
     viewport.setConservationSelected(
             safeBoolean(view.isConservationSelected()));
     viewport.setIncrement(safeInt(view.getConsThreshold()));
+    viewport.setByConsensusSecondaryStructureSelected(
+            safeBoolean(view.isByConsensusSecondaryStructureSelected()));
+    viewport.setConsensusSecondaryStructureThreshold(
+            safeInt(view.getConsensusSecondaryStructureThreshold()));
     viewport.setShowJVSuffix(safeBoolean(view.isShowFullId()));
     viewport.setRightAlignIds(safeBoolean(view.isRightAlignIds()));
     viewport.setFont(
@@ -5316,6 +5353,12 @@ public class Jalview2XML
       viewport.getResidueShading()
               .setConservationInc(safeInt(view.getConsThreshold()));
     }
+    if (safeBoolean(view.isByConsensusSecondaryStructureSelected()) && cs != null)
+    {
+      viewport.getResidueShading()
+              .setConsensusSecondaryStructureThreshold(
+                      safeInt(view.getConsensusSecondaryStructureThreshold()));
+    }
     af.changeColour(cs);
     viewport.setColourAppliesToAllGroups(true);
 
@@ -5332,6 +5375,7 @@ public class Jalview2XML
     viewport.setShowDBRefs(safeBoolean(view.isShowDbRefTooltip()));
     viewport.setShowNPFeats(safeBoolean(view.isShowNPfeatureTooltip()));
     viewport.setShowGroupConsensus(view.isShowGroupConsensus());
+    viewport.setShowGroupSSConsensus(view.isShowGroupSSConsensus());
     viewport.setShowGroupConservation(view.isShowGroupConservation());
     viewport.setShowComplementFeatures(view.isShowComplementFeatures());
     viewport.setShowComplementFeaturesOnTop(
index 3235624..7c9ecd7 100644 (file)
@@ -571,14 +571,17 @@ public class AnnotationRenderer
       // TODO: generalise this to have render styles for consensus/profile
       // data
       if (row.groupRef != null && 
-              (row == row.groupRef.getConsensus() || row.groupRef.getSSConsensus(null).contains(row)))
+              (row == row.groupRef.getConsensus() || 
+              (row.groupRef.getSSConsensus(null) !=null && row.groupRef.getSSConsensus(null).contains(row))))
       {
         renderHistogram = row.groupRef.isShowConsensusHistogram();
         renderProfile = row.groupRef.isShowSequenceLogo();
         normaliseProfile = row.groupRef.isNormaliseSequenceLogo();
       }
-      else if (row == consensusAnnot || row == structConsensusAnnot
-              || row == complementConsensusAnnot || (ssConsensusAnnot!=null && ssConsensusAnnot.contains(row)))
+      else if (row == consensusAnnot 
+              || row == structConsensusAnnot
+              || row == complementConsensusAnnot 
+              || (ssConsensusAnnot!=null && ssConsensusAnnot.contains(row)))
       {
         renderHistogram = av_renderHistogram;
         renderProfile = av_renderProfile;
index dc07645..0f9862d 100644 (file)
@@ -278,7 +278,28 @@ public abstract class AlignmentViewport
   public int getIncrement()
   {
     return viewStyle.getIncrement();
+  }  
+  
+  /**
+   * @param inc
+   * @see jalview.api.ViewStyleI#setConsensusSecondaryStructureThreshold(int)
+   */
+  @Override
+  public void setConsensusSecondaryStructureThreshold(int val)
+  {
+    viewStyle.setConsensusSecondaryStructureThreshold(val);
   }
+  
+  /**
+   * @return
+   * @see jalview.api.ViewStyleI#getConsensusSecondaryStructureThreshold()
+   */
+  @Override
+  public int getConsensusSecondaryStructureThreshold()
+  {
+    return viewStyle.getConsensusSecondaryStructureThreshold();
+  }  
+  
 
   /**
    * @param b
index c7c4086..502d0fc 100644 (file)
@@ -75,6 +75,8 @@ public class ViewStyle implements ViewStyleI
   private boolean displayReferenceSeq = false;
 
   private int increment;
+  
+  private int consensusSecondaryStructureThreshold;
 
   /**
    * display gap characters
@@ -192,6 +194,7 @@ public class ViewStyle implements ViewStyleI
     setColourByReferenceSeq(vs.isColourByReferenceSeq());
     setColourText(vs.getColourText());
     setByConsensusSecondaryStructureSelected(vs.getByConsensusSecondaryStructureSelected());
+    setConsensusSecondaryStructureThreshold(vs.getConsensusSecondaryStructureThreshold());
     setConservationColourSelected(vs.isConservationColourSelected());
     setConservationSelected(vs.getConservationSelected());
     setDisplayReferenceSeq(vs.isDisplayReferenceSeq());
@@ -265,6 +268,7 @@ public class ViewStyle implements ViewStyleI
             && getFontStyle() == vs.getFontStyle()
             && getIdWidth() == vs.getIdWidth()
             && getIncrement() == vs.getIncrement()
+            && getConsensusSecondaryStructureThreshold() == vs.getConsensusSecondaryStructureThreshold()
             && isRenderGaps() == vs.isRenderGaps()
             && isRightAlignIds() == vs.isRightAlignIds()
             && getScaleAboveWrapped() == vs.getScaleAboveWrapped()
@@ -574,6 +578,13 @@ public class ViewStyle implements ViewStyleI
   {
     return threshold;
   }
+  
+  @Override
+  public int getConsensusSecondaryStructureThreshold()
+  {
+    return consensusSecondaryStructureThreshold;
+  }
+  
 
   /**
    * @return the thresholdTextColour
@@ -793,6 +804,19 @@ public class ViewStyle implements ViewStyleI
   {
     increment = inc;
   }
+  
+  /**
+   * 
+   * @param val
+   *          set the scalar for bleaching colourschemes according to degree of
+   *          secondary structure conservation
+   */
+  @Override
+  public void setConsensusSecondaryStructureThreshold(int val)
+  {
+    consensusSecondaryStructureThreshold = val;
+  }
+  
 
   /**
    * DOCUMENT ME!
index 18a2571..dda2352 100644 (file)
@@ -946,7 +946,7 @@ public class JalviewModel
       protected Boolean colourByLabel;
 
       @XmlAttribute(name = "autoScale")
-      protected Boolean autoScale;
+      protected Boolean autoScale;      
 
       /**
        * Gets the value of the attributeName property.
@@ -1350,7 +1350,13 @@ public class JalviewModel
     protected Integer consThreshold;
 
     @XmlAttribute(name = "pidThreshold")
-    protected Integer pidThreshold;
+    protected Integer pidThreshold;    
+
+    @XmlAttribute(name = "consensusSecondaryStructureThreshold")
+    protected Integer consensusSecondaryStructureThreshold;
+
+    @XmlAttribute(name = "consensusSecondaryStructureColouring")
+    private boolean consensusSecondaryStructureColouring;
 
     @XmlAttribute(name = "outlineColour")
     protected Integer outlineColour;
@@ -1389,7 +1395,11 @@ public class JalviewModel
     protected Boolean normaliseSequenceLogo;
 
     @XmlAttribute(name = "id")
-    protected String id;
+    protected String id;    
+
+    @XmlAttribute(name = "secondaryStructureSources")
+    protected List<String> secondaryStructureSources;
+
 
     /**
      * Gets the value of the seq property.
@@ -1577,6 +1587,54 @@ public class JalviewModel
     {
       this.pidThreshold = value;
     }
+    
+    /**
+     * Gets the value of the consensusSecondaryStructureThreshold property.
+     * 
+     * @return possible object is {@link Integer }
+     * 
+     */
+    public Integer getConsensusSecondaryStructureThreshold()
+    {
+      return consensusSecondaryStructureThreshold;
+    }
+
+    /**
+     * Sets the value of the consensusSecondaryStructureThreshold property.
+     * 
+     * @param value
+     *          allowed object is {@link Integer }
+     * 
+     */
+    public void setConsensusSecondaryStructureThreshold(Integer value)
+    {
+      this.consensusSecondaryStructureThreshold = value;
+    }
+    
+    /**
+     * Sets the value of the consensusSecondaryStructureColouring property.
+     * 
+     * @param value
+     *          allowed object is {@link boolean }
+     * 
+     */
+    public void setConsensusSecondaryStructureColouring(boolean value)
+    {
+      this.consensusSecondaryStructureColouring = value;
+    }
+    
+    
+    /**
+     * Sets the value of the consensusSecondaryStructureColouring property.
+     * 
+     * @param value
+     *          allowed object is {@link boolean }
+     * 
+     */
+    public boolean isConsensusSecondaryStructureColouring()
+    {
+      return consensusSecondaryStructureColouring;
+    }
 
     /**
      * Gets the value of the outlineColour property.
@@ -1904,6 +1962,18 @@ public class JalviewModel
     {
       this.id = value;
     }
+    
+    
+    public List<String> getSecondaryStructureSources()
+    {
+      return secondaryStructureSources;
+    }
+
+    public void setSecondaryStructureSources(
+            List<String> secondaryStructureSources)
+    {
+      this.secondaryStructureSources = secondaryStructureSources;
+    }
 
   }
 
@@ -4947,6 +5017,9 @@ public class JalviewModel
 
     @XmlAttribute(name = "pidSelected")
     protected Boolean pidSelected;
+    
+    @XmlAttribute(name = "byConsensusSecondaryStructureSelected")
+    protected Boolean byConsensusSecondaryStructureSelected;    
 
     @XmlAttribute(name = "bgColour")
     protected String bgColour;
@@ -4957,6 +5030,9 @@ public class JalviewModel
     @XmlAttribute(name = "pidThreshold")
     protected Integer pidThreshold;
 
+    @XmlAttribute(name = "consensusSecondaryStructureThreshold")
+    protected Integer consensusSecondaryStructureThreshold;    
+
     @XmlAttribute(name = "title")
     protected String title;
 
@@ -5010,6 +5086,9 @@ public class JalviewModel
 
     @XmlAttribute(name = "showGroupConsensus")
     protected Boolean showGroupConsensus;
+    
+    @XmlAttribute(name = "showGroupSSConsensus")
+    protected Boolean showGroupSSConsensus;
 
     @XmlAttribute(name = "showConsensusHistogram")
     protected Boolean showConsensusHistogram;
@@ -5241,6 +5320,29 @@ public class JalviewModel
     {
       this.pidSelected = value;
     }
+    
+    /**
+     * Gets the value of the byConsensusSecondaryStructureSelected property.
+     * 
+     * @return possible object is {@link Boolean }
+     * 
+     */
+    public Boolean isByConsensusSecondaryStructureSelected()
+    {
+      return byConsensusSecondaryStructureSelected;
+    }
+    
+    /**
+     * Sets the value of the byConsensusSecondaryStructureSelected property.
+     * 
+     * @param value
+     *          allowed object is {@link Boolean }
+     * 
+     */
+    public void setByConsensusSecondaryStructureSelected(Boolean value)
+    {
+      this.byConsensusSecondaryStructureSelected = value;
+    }
 
     /**
      * Gets the value of the bgColour property.
@@ -5310,8 +5412,32 @@ public class JalviewModel
     {
       this.pidThreshold = value;
     }
+    
+    /**
+     * Gets the value of the consensusSecondaryStructureThreshold property.
+     * 
+     * @return possible object is {@link Integer }
+     * 
+     */
+    public Integer getConsensusSecondaryStructureThreshold()
+    {
+      return consensusSecondaryStructureThreshold;
+    }
 
     /**
+     * Sets the value of the consensusSecondaryStructureThreshold property.
+     * 
+     * @param value
+     *          allowed object is {@link Integer }
+     * 
+     */
+    public void setConsensusSecondaryStructureThreshold(Integer value)
+    {
+      this.consensusSecondaryStructureThreshold = value;
+    }
+    
+    
+    /**
      * Gets the value of the title property.
      * 
      * @return possible object is {@link String }
@@ -5766,6 +5892,36 @@ public class JalviewModel
     {
       this.showGroupConsensus = value;
     }
+    
+    /**
+     * Gets the value of the showGroupSSConsensus property.
+     * 
+     * @return possible object is {@link Boolean }
+     * 
+     */
+    public boolean isShowGroupSSConsensus()
+    {
+      if (showGroupSSConsensus == null)
+      {
+        return false;
+      }
+      else
+      {
+        return showGroupSSConsensus;
+      }
+    }
+    
+    /**
+     * Sets the value of the showGroupSSConsensus property.
+     * 
+     * @param value
+     *          allowed object is {@link Boolean }
+     * 
+     */
+    public void setShowGroupSSConsensus(Boolean value)
+    {
+      this.showGroupSSConsensus = value;
+    }
 
     /**
      * Gets the value of the showConsensusHistogram property.