From: jprocter Date: Fri, 24 Jul 2009 15:07:10 +0000 (+0000) Subject: sequence groups carry their own conservation and consensus annotation rows X-Git-Tag: Release_2_5~235 X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=336e0c59bfd53d054da0bb332f858834f57e7bec;p=jalview.git sequence groups carry their own conservation and consensus annotation rows --- diff --git a/src/jalview/datamodel/SequenceGroup.java b/src/jalview/datamodel/SequenceGroup.java index c0d8f5e..9236712 100755 --- a/src/jalview/datamodel/SequenceGroup.java +++ b/src/jalview/datamodel/SequenceGroup.java @@ -79,6 +79,8 @@ public class SequenceGroup public Color textColour2 = Color.white; + private boolean ignoreGapsInConsensusCalculation=true; + /** * Creates a new SequenceGroup object. */ @@ -149,6 +151,7 @@ public class SequenceGroup textColour2 = seqsel.textColour2; thresholdTextColour = seqsel.thresholdTextColour; width = seqsel.width; + ignoreGapsInConsensusCalculation = seqsel.ignoreGapsInConsensusCalculation; if (seqsel.conserve!=null) { recalcConservation(); // safer than @@ -438,35 +441,48 @@ public class SequenceGroup */ public void recalcConservation() { - if (cs == null) + if (cs == null && consensus == null && conservation == null) { return; } - + try { - cs.setConsensus(AAFrequency - .calculate(sequences, startRes, endRes + 1)); - + Hashtable cnsns[] = AAFrequency.calculate(sequences, startRes, endRes + 1); + if (consensus != null) + { + _updateConsensusRow(cnsns); + } + if (cs!=null) + { + cs.setConsensus(cnsns); + if (cs instanceof ClustalxColourScheme) { ((ClustalxColourScheme) cs).resetClustalX(sequences, getWidth()); } + } - if (cs.conservationApplied()) + if ((conservation!=null) || (cs!=null && cs.conservationApplied())) { Conservation c = new Conservation(groupName, ResidueProperties.propHash, 3, sequences, startRes, endRes + 1); c.calculate(); c.verdict(false, 25); - - cs.setConservation(c); - + if (conservation!=null) + { + _updateConservationRow(c); + } + if (cs!=null) + { + cs.setConservation(c); + if (cs instanceof ClustalxColourScheme) { ((ClustalxColourScheme) cs).resetClustalX(sequences, getWidth()); } + } } } catch (java.lang.OutOfMemoryError err) { @@ -476,6 +492,31 @@ public class SequenceGroup } + private void _updateConservationRow(Conservation c) + { + if (conservation==null) + { + getConservation(); + } + // preserve width if already set + int aWidth = (conservation.annotations!=null) ? (endRes