Merge branch 'features/JAL-2360colourSchemeApplicability' into
[jalview.git] / src / jalview / workers / ConsensusThread.java
index 2b11477..0278a3b 100644 (file)
@@ -26,9 +26,9 @@ import jalview.api.AlignmentViewPanel;
 import jalview.datamodel.AlignmentAnnotation;
 import jalview.datamodel.AlignmentI;
 import jalview.datamodel.Annotation;
-import jalview.datamodel.ProfileI;
+import jalview.datamodel.ProfilesI;
 import jalview.datamodel.SequenceI;
-import jalview.schemes.ColourSchemeI;
+import jalview.schemes.CollectionColourSchemeI;
 
 public class ConsensusThread extends AlignCalcWorker
 {
@@ -124,10 +124,11 @@ public class ConsensusThread extends AlignCalcWorker
    */
   protected void computeConsensus(AlignmentI alignment)
   {
-    ProfileI[] hconsensus = new ProfileI[alignment.getWidth()];
 
     SequenceI[] aseqs = getSequences();
-    AAFrequency.calculate(aseqs, 0, alignment.getWidth(), hconsensus, true);
+    int width = alignment.getWidth();
+    ProfilesI hconsensus = AAFrequency.calculate(aseqs, width, 0,
+            width, true);
 
     alignViewport.setSequenceConsensusHash(hconsensus);
     setColourSchemeConsensus(hconsensus);
@@ -144,13 +145,12 @@ public class ConsensusThread extends AlignCalcWorker
   /**
    * @param hconsensus
    */
-  protected void setColourSchemeConsensus(ProfileI[] hconsensus)
+  protected void setColourSchemeConsensus(ProfilesI hconsensus)
   {
-    ColourSchemeI globalColourScheme = alignViewport
-            .getGlobalColourScheme();
-    if (globalColourScheme != null)
+    CollectionColourSchemeI cs = alignViewport.getViewportColourScheme();
+    if (cs != null)
     {
-      globalColourScheme.setConsensus(hconsensus);
+      cs.setConsensus(hconsensus);
     }
   }
 
@@ -177,7 +177,7 @@ public class ConsensusThread extends AlignCalcWorker
   public void updateResultAnnotation(boolean immediate)
   {
     AlignmentAnnotation consensus = getConsensusAnnotation();
-    ProfileI[] hconsensus = (ProfileI[]) getViewportConsensus();
+    ProfilesI hconsensus = (ProfilesI) getViewportConsensus();
     if (immediate || !calcMan.isWorking(this) && consensus != null
             && hconsensus != null)
     {
@@ -195,11 +195,14 @@ public class ConsensusThread extends AlignCalcWorker
    *          the computed consensus data
    */
   protected void deriveConsensus(AlignmentAnnotation consensusAnnotation,
-          ProfileI[] hconsensus)
+          ProfilesI hconsensus)
   {
+
     long nseq = getSequences().length;
-    AAFrequency.completeConsensus(consensusAnnotation, hconsensus, 0,
-            hconsensus.length, alignViewport.isIgnoreGapsConsensus(),
+    AAFrequency.completeConsensus(consensusAnnotation, hconsensus,
+            hconsensus.getStartColumn(),
+            hconsensus.getEndColumn() + 1,
+            alignViewport.isIgnoreGapsConsensus(),
             alignViewport.isShowSequenceLogo(), nseq);
   }
 
@@ -208,7 +211,7 @@ public class ConsensusThread extends AlignCalcWorker
    * 
    * @return
    */
-  protected Object[] getViewportConsensus()
+  protected Object getViewportConsensus()
   {
     // TODO convert ComplementConsensusThread to use Profile
     return alignViewport.getSequenceConsensusHash();