JAL-1364 use gapMap to map RNAalifold annotation onto correct columns
authorJim Procter <jprocter@compbio.dundee.ac.uk>
Sat, 5 Oct 2013 11:20:15 +0000 (12:20 +0100)
committerJim Procter <jprocter@compbio.dundee.ac.uk>
Sat, 5 Oct 2013 11:20:15 +0000 (12:20 +0100)
src/jalview/ws/jws2/RNAalifoldClient.java

index 2779732..ec40552 100644 (file)
@@ -216,9 +216,17 @@ public class RNAalifoldClient extends JabawsAlignCalcWorker implements
         basePairs.put(score.getRanges().first(), new Float(score
                 .getScores().get(0)));
       }
-      for (int i = 0; i < struct.length(); i++)
+      
+      for (int i = 0,ri=0,iEnd=struct.length();i<iEnd; i++,ri++)
       {
-
+        if (gapMap!=null)
+        {
+          // skip any gapped columns in the input data
+          while (!gapMap[ri])
+          {
+            ri++;
+          }
+        }
         // Return all the contacts associated with position i
         LinkedHashMap<Range, Float> contacts = isContact(basePairs, i + 1);
 
@@ -242,16 +250,23 @@ public class RNAalifoldClient extends JabawsAlignCalcWorker implements
           }
         }
 
-        anns[i] = new Annotation(struct.substring(i, i + 1), description,
+        anns[ri] = new Annotation(struct.substring(i, i + 1), description,
                 isSS(struct.charAt(i)), prob);
       }
     }
     else if (data == null || data.size() == 1)
     {
-      for (int i = 0; i < struct.length(); i++)
+      for (int i = 0,ri=0,iEnd=struct.length();i<iEnd; i++,ri++)
       {
-
-        anns[i] = new Annotation(struct.substring(i, i + 1), "",
+        if (gapMap!=null)
+        {
+          // skip any gapped columns in the input data
+          while (!gapMap[ri])
+          {
+            ri++;
+          }
+        }
+        anns[ri] = new Annotation(struct.substring(i, i + 1), "",
                 isSS(struct.charAt(i)), Float.NaN);
       }