JAL-4366 JAL-728 simple hack to use 3di matrix when gecos-3di is enabled
[jalview.git] / src / jalview / workers / ConservationThread.java
index 5c303fd..0afa711 100644 (file)
@@ -21,6 +21,7 @@
 package jalview.workers;
 
 import jalview.analysis.Conservation;
+import jalview.analysis.scoremodels.ScoreModels;
 import jalview.api.AlignViewportI;
 import jalview.api.AlignmentViewPanel;
 import jalview.datamodel.AlignmentAnnotation;
@@ -55,7 +56,7 @@ public class ConservationThread extends AlignCalcWorker
     {
       calcMan.notifyStart(this); // updatingConservation = true;
 
-      while (!calcMan.notifyWorking(this))
+      while ((calcMan != null) && (!calcMan.notifyWorking(this)))
       {
         try
         {
@@ -69,12 +70,13 @@ public class ConservationThread extends AlignCalcWorker
           ex.printStackTrace();
         }
       }
-      if (alignViewport.isClosed())
+      if ((alignViewport == null) || (calcMan == null)
+              || (alignViewport.isClosed()))
       {
         abortAndDestroy();
         return;
       }
-      List<AlignmentAnnotation> ourAnnot = new ArrayList<AlignmentAnnotation>();
+      List<AlignmentAnnotation> ourAnnot = new ArrayList<>();
       AlignmentI alignment = alignViewport.getAlignment();
       conservation = alignViewport.getAlignmentConservationAnnotation();
       quality = alignViewport.getAlignmentQualityAnnot();
@@ -94,10 +96,10 @@ public class ConservationThread extends AlignCalcWorker
       }
       try
       {
+        // TODO - TDI is there a conservation measure ?
         cons = Conservation.calculateConservation("All",
-                jalview.schemes.ResidueProperties.propHash, 3,
                 alignment.getSequences(), 0, alWidth - 1, false,
-                ConsPercGaps, quality != null);
+                ConsPercGaps, quality != null, alignViewport.is3di() ? ScoreModels.getInstance().getFOLDSEEK3DI():ScoreModels.getInstance().getDefaultModel(true));
       } catch (IndexOutOfBoundsException x)
       {
         // probable race condition. just finish and return without any fuss.
@@ -115,9 +117,15 @@ public class ConservationThread extends AlignCalcWorker
     }
     calcMan.workerComplete(this);
 
+    if ((alignViewport == null) || (calcMan == null)
+            || (alignViewport.isClosed()))
+    {
+      abortAndDestroy();
+      return;
+    }
     if (ap != null)
     {
-      ap.paintAlignment(true);
+      ap.paintAlignment(true, true);
     }
 
   }