JAL-891; sequence logos are available on structure conservation row
[jalview.git] / src / jalview / gui / AlignViewport.java
index 98cae4c..f15d01a 100644 (file)
@@ -413,11 +413,20 @@ public class AlignViewport implements SelectionSource, VamsasSource
               new Annotation[1], 0f, 100f, AlignmentAnnotation.BAR_GRAPH);
       consensus.hasText = true;
       consensus.autoCalculated = true;
+      
+      //TODO check if this can done accordingly
+      strucConsensus = new AlignmentAnnotation("StrucConsensus", "PID",
+              new Annotation[1], 0f, 100f, AlignmentAnnotation.BAR_GRAPH);
+      strucConsensus.hasText = true;
+      strucConsensus.autoCalculated = true;
 
       if (Cache.getDefault("SHOW_IDENTITY", true))
       {
         alignment.addAnnotation(consensus);
+        //TODO: Make own if for structure
+        alignment.addAnnotation(strucConsensus);
       }
+      
     }
 
     if (jalview.bin.Cache.getProperty("DEFAULT_COLOUR") != null)
@@ -620,7 +629,7 @@ public class AlignViewport implements SelectionSource, VamsasSource
   //--------START Structure Conservation
   public void updateStrucConsensus(final AlignmentPanel ap)
   {
-    // see note in mantis : issue number 8585
+   // see note in mantis : issue number 8585
     if (strucConsensus == null || !autoCalculateStrucConsensus)
     {
       return;
@@ -640,7 +649,7 @@ public class AlignViewport implements SelectionSource, VamsasSource
 
     public void run()
     {
-      updatingStrucConsensus = true;
+         updatingStrucConsensus = true;
       while (UPDATING_STRUC_CONSENSUS)
       {
         try
@@ -676,9 +685,19 @@ public class AlignViewport implements SelectionSource, VamsasSource
         strucConsensus.annotations = new Annotation[aWidth];
 
         hStrucConsensus = new Hashtable[aWidth];
+        
+         AlignmentAnnotation[] aa = ap.av.getAlignment().getAlignmentAnnotation();
+         AlignmentAnnotation rnaStruc = null;
+         for(int i=0; i<aa.length;i++){
+                 if(aa[i].getRNAStruc() != null){
+                         rnaStruc=aa[i];
+                         break;
+                 }
+         }
+        
         AlignmentAnnotation rna = ap.av.getAlignment().getAlignmentAnnotation()[0];
         StructureFrequency.calculate(alignment.getSequencesArray(), 0,
-                alignment.getWidth(), hStrucConsensus, true, rna);
+                alignment.getWidth(), hStrucConsensus, true, rnaStruc);
         //TODO AlignmentAnnotation rnaStruc!!!
         updateAnnotation(true);
         if (globalColourScheme != null)
@@ -688,7 +707,7 @@ public class AlignViewport implements SelectionSource, VamsasSource
 
       } catch (OutOfMemoryError error)
       {
-        alignment.deleteAnnotation(consensus);
+        alignment.deleteAnnotation(strucConsensus);
 
         strucConsensus = null;
         hStrucConsensus = null;
@@ -717,10 +736,10 @@ public class AlignViewport implements SelectionSource, VamsasSource
       // TODO: make calls thread-safe, so if another thread calls this method,
       // it will either return or wait until one calculation is finished.
       if (immediate
-              || (!updatingConsensus && consensus != null && hconsensus != null))
-      {
+              || (!updatingStrucConsensus && strucConsensus != null && hStrucConsensus != null))
+      {          
         StructureFrequency.completeConsensus(strucConsensus, hStrucConsensus, 0,
-                hStrucConsensus.length, ignoreGapsInConsensusCalculation,
+                hStrucConsensus.length, false,
                 showSequenceLogo);
       }
     }
@@ -1854,7 +1873,6 @@ public class AlignViewport implements SelectionSource, VamsasSource
     {
       updateConsensus(ap);
     }
-    
     if(autoCalculateStrucConsensus)
     {
        updateStrucConsensus(ap);
@@ -2281,6 +2299,10 @@ public class AlignViewport implements SelectionSource, VamsasSource
       {
         consensusThread.updateAnnotation();
       }
+      if (strucConsensusThread != null)
+      {
+        strucConsensusThread.updateAnnotation();
+      }
     }
     this.showSequenceLogo = showSequenceLogo;
   }