Merge branch 'docs/2_8_1_Release' into Release_2_8_2_Branch
[jalview.git] / src / jalview / datamodel / AlignmentAnnotation.java
index 5145a4f..e39c0b7 100755 (executable)
 package jalview.datamodel;
 
 import jalview.analysis.Rna;
+import jalview.analysis.SecStrConsensus.SimpleBP;
+
 import jalview.analysis.WUSSParseException;
 
+import java.util.ArrayList;
 import java.util.Enumeration;
 import java.util.Hashtable;
 
+import fr.orsay.lri.varna.models.rna.RNA;
+
 /**
  * DOCUMENT ME!
  * 
@@ -50,7 +55,10 @@ public class AlignmentAnnotation
 
   /** DOCUMENT ME!! */
   public Annotation[] annotations;
+  
+  
 
+  public ArrayList<SimpleBP> bps=null;
   /**
    * RNA secondary structure contact positions
    */
@@ -69,13 +77,15 @@ public class AlignmentAnnotation
    */
   private void _updateRnaSecStr(CharSequence RNAannot)
   {
-    try
-    {
-      _rnasecstr = Rna.GetBasePairs(RNAannot);
-      invalidrnastruc = -1;
-    } catch (WUSSParseException px)
+    try {
+    _rnasecstr = Rna.GetBasePairs(RNAannot);
+    bps = Rna.GetModeleBP(RNAannot);
+    invalidrnastruc=-1;
+    }
+    catch (WUSSParseException px)
     {
-      invalidrnastruc = px.getProblemPos();
+      // DEBUG System.out.println(px);
+      invalidrnastruc=px.getProblemPos();
     }
     if (invalidrnastruc > -1)
     {
@@ -193,7 +203,11 @@ public class AlignmentAnnotation
       return NO_GRAPH;
     }
   }
-
+    // JBPNote: what does this do ?
+  public void ConcenStru(CharSequence RNAannot) throws WUSSParseException
+  {
+         bps = Rna.GetModeleBP(RNAannot);
+  }
   /**
    * Creates a new AlignmentAnnotation object.
    * 
@@ -241,7 +255,37 @@ public class AlignmentAnnotation
       else
       // Check for RNA secondary structure
       {
-        if (annotations[i].secondaryStructure == 'S')
+         //System.out.println(annotations[i].secondaryStructure);
+        if (annotations[i].secondaryStructure == '('
+                       || annotations[i].secondaryStructure == '['
+                       || annotations[i].secondaryStructure == '<'
+                       || annotations[i].secondaryStructure == '{'
+                       || annotations[i].secondaryStructure == 'A'
+                       || annotations[i].secondaryStructure == 'B'
+                       || annotations[i].secondaryStructure == 'C'
+                       || annotations[i].secondaryStructure == 'D'
+                       || annotations[i].secondaryStructure == 'E'
+                       || annotations[i].secondaryStructure == 'F'
+                       || annotations[i].secondaryStructure == 'G'
+                       || annotations[i].secondaryStructure == 'H'
+                       || annotations[i].secondaryStructure == 'I'
+                       || annotations[i].secondaryStructure == 'J'
+                       || annotations[i].secondaryStructure == 'K'
+                       || annotations[i].secondaryStructure == 'L'
+                       || annotations[i].secondaryStructure == 'M'
+                       || annotations[i].secondaryStructure == 'N'
+                       || annotations[i].secondaryStructure == 'O'
+                       || annotations[i].secondaryStructure == 'P'
+                       || annotations[i].secondaryStructure == 'Q'
+                       || annotations[i].secondaryStructure == 'R'
+                       || annotations[i].secondaryStructure == 'S'
+                       || annotations[i].secondaryStructure == 'T'
+                       || annotations[i].secondaryStructure == 'U'
+                       || annotations[i].secondaryStructure == 'V'
+                       || annotations[i].secondaryStructure == 'W'
+                       || annotations[i].secondaryStructure == 'X'
+                       || annotations[i].secondaryStructure == 'Y'
+                       || annotations[i].secondaryStructure == 'Z')
         {
           hasIcons |= true;
           isrna |= true;
@@ -272,9 +316,38 @@ public class AlignmentAnnotation
                 // &&
                 // annotations[i].displayCharacter.charAt(0)==annotations[i].secondaryStructure
                 firstChar != ' '
-                && firstChar != 'H'
+                && firstChar != '$'
+                && firstChar != 'ยต' // JBPNote should explicitly express as unicode number to avoid source code translation problems
+                && firstChar != '('
+                && firstChar != '['
+                && firstChar != '>'
+                && firstChar != '{'
+                && firstChar != 'A'
+                && firstChar != 'B'
+                && firstChar != 'C'
+                && firstChar != 'D'
                 && firstChar != 'E'
+                && firstChar != 'F'
+                && firstChar != 'G'
+                && firstChar != 'H'
+                && firstChar != 'I'
+                && firstChar != 'J'
+                && firstChar != 'K'
+                && firstChar != 'L'
+                && firstChar != 'M'
+                && firstChar != 'N'
+                && firstChar != 'O'
+                && firstChar != 'P'
+                && firstChar != 'Q'
+                && firstChar != 'R'
                 && firstChar != 'S'
+                && firstChar != 'T'
+                && firstChar != 'U'
+                && firstChar != 'V'
+                && firstChar != 'W'
+                && firstChar != 'X'
+                && firstChar != 'Y'
+                && firstChar != 'Z'
                 && firstChar != '-'
                 && firstChar < jalview.schemes.ResidueProperties.aaIndex.length)
         {
@@ -509,7 +582,7 @@ public class AlignmentAnnotation
       {
         if (annotations[i] != null)
         {
-          annotations[i].displayCharacter = "";
+          annotations[i].displayCharacter = "X";
         }
       }
     }
@@ -974,7 +1047,7 @@ public class AlignmentAnnotation
       {
         if (annotations[i] == null)
           annotations[i] = new Annotation(String.valueOf(gapchar), null,
-                  ' ', 0f);
+                  ' ', 0f,null);
         else if (annotations[i].displayCharacter == null
                 || annotations[i].displayCharacter.equals(" "))
           annotations[i].displayCharacter = String.valueOf(gapchar);
@@ -1035,5 +1108,4 @@ public class AlignmentAnnotation
   {
     this.calcId = calcId;
   }
-
 }