Merge branch 'develop' into menard
[jalview.git] / src / jalview / analysis / StructureFrequency.java
index 08bb3fd..d57e1c5 100644 (file)
@@ -59,11 +59,15 @@ public class StructureFrequency
    */
   public static int findPair(SequenceFeature[] pairs, int indice)
   {
+         System.out.print("indice"+indice+"    ");
     for (int i = 0; i < pairs.length; i++)
     {
       if (pairs[i].getBegin() == indice)
+        
       {
+         System.out.println(pairs[i].getEnd());
         return pairs[i].getEnd();
+        
       }
     }
     return -1;
@@ -84,15 +88,26 @@ public class StructureFrequency
           int end, Hashtable[] result, boolean profile,
           AlignmentAnnotation rnaStruc)
   {
+//     System.out.println("longueur="+sequences.length);
+//     for(int l=0;l<=(sequences.length-1);l++){  
+//     System.out.println("sequences "+l+":"+sequences[l].getSequenceAsString());
+//     }
+//     System.out.println("start="+start);
+       System.out.println("end="+end);
+//     System.out.println("result="+result.length);
+//
+//     System.out.println("profile="+profile);
+//     System.out.println("rnaStruc="+rnaStruc);
     Hashtable residueHash;
     String maxResidue;
-    char[] seq, struc = rnaStruc.getRNAStruc().toCharArray();
+    char[] struc = rnaStruc.getRNAStruc().toCharArray();
     SequenceFeature[] rna = rnaStruc._rnasecstr;
     char c, s, cEnd;
-    int count, nonGap = 0, i, bpEnd = -1, j, jSize = sequences.length;
+    int count = 0, nonGap = 0, i, bpEnd = -1, j, jSize = sequences.length;
     int[] values;
     int[][] pairs;
     float percentage;
+    boolean wooble = true;
 
     for (i = start; i < end; i++) // foreach column
     {
@@ -101,9 +116,11 @@ public class StructureFrequency
       values = new int[255];
       pairs = new int[255][255];
       bpEnd = -1;
+      //System.out.println("s="+struc[i]);
       if (i < struc.length)
       {
         s = struc[i];
+        
       }
       else
       {
@@ -114,7 +131,7 @@ public class StructureFrequency
         s = '-';
       }
 
-      if (s != '(')
+      if (s != '(' && s != '[')
       {
         if (s == '-')
         {
@@ -123,41 +140,57 @@ public class StructureFrequency
       }
       else
       {
+        
+         
         bpEnd = findPair(rna, i);
-        if (bpEnd > -1)
+       
+        if (bpEnd>-1)
         {
-          for (j = 0; j < jSize; j++) // foreach row
+        for (j = 0; j < jSize; j++) // foreach row
+        {
+          if (sequences[j] == null)
           {
-            if (sequences[j] == null)
+            System.err
+                    .println("WARNING: Consensus skipping null sequence - possible race condition.");
+            continue;
+          }
+          c = sequences[j].getCharAt(i);
+          //System.out.println("c="+c);
+          
+
+            // standard representation for gaps in sequence and structure
+            if (c == '.' || c == ' ')
             {
               System.err
                       .println("WARNING: Consensus skipping null sequence - possible race condition.");
               continue;
             }
-            c = sequences[j].getCharAt(i);
+            cEnd = sequences[j].getCharAt(bpEnd);
+         
+         
+            System.out.println("pairs ="+c+","+cEnd);
+            if (checkBpType(c, cEnd)==true)
             {
-
-              // standard representation for gaps in sequence and structure
-              if (c == '.' || c == ' ')
-              {
-                c = '-';
-              }
-
-              if (c == '-')
-              {
-                values['-']++;
-                continue;
-              }
-              cEnd = sequences[j].getCharAt(bpEnd);
-              if (checkBpType(c, cEnd))
-              {
-                values['(']++; // H means it's a helix (structured)
-              }
-              pairs[c][cEnd]++;
-
+              values['(']++; // H means it's a helix (structured)
               maxResidue = "(";
+              wooble=true;
+              System.out.println("It's a pair wc");
+              
             }
-          }
+            if (checkBpType(c, cEnd)==false)
+            {
+              wooble =false;
+              values['[']++; // H means it's a helix (structured)
+              maxResidue = "[";
+              System.out.println("It's an pair non canonic");
+              System.out.println(sequences[j].getRNA());
+              System.out.println(rnaStruc.getRNAStruc().charAt(i));
+            }
+            pairs[c][cEnd]++;  
+           
+          
+               }
+
         }
         // nonGap++;
       }
@@ -170,9 +203,14 @@ public class StructureFrequency
 
         residueHash.put(PAIRPROFILE, pairs);
       }
-
+      if (wooble==true)
+      {
       count = values['('];
-
+      }
+      if (wooble==false)
+      {
+      count = values['['];
+      }
       residueHash.put(MAXCOUNT, new Integer(count));
       residueHash.put(MAXRESIDUE, maxResidue);
 
@@ -187,12 +225,19 @@ public class StructureFrequency
       }
       if (bpEnd > 0)
       {
-        values[')'] = values['('];
+       values[')'] = values['('];
+        values[']'] = values['['];
         values['('] = 0;
-
+        values['['] = 0;
         residueHash = new Hashtable();
-        maxResidue = ")";
-
+        if (wooble==true){
+               System.out.println(maxResidue+","+wooble);
+               maxResidue = ")";
+        }
+        if(wooble==false){
+               System.out.println(maxResidue+","+wooble);
+               maxResidue = "]";
+        }
         if (profile)
         {
           residueHash.put(PROFILE, new int[][]
@@ -209,6 +254,7 @@ public class StructureFrequency
         residueHash.put(PID_GAPS, new Float(percentage));
 
         result[bpEnd] = residueHash;
+        
       }
     }
   }