JAL-1517 fix copyright for 2.8.2
[jalview.git] / src / jalview / ws / jws2 / RNAalifoldClient.java
index 2779732..126266b 100644 (file)
@@ -1,3 +1,23 @@
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2)
+ * Copyright (C) 2014 The Jalview Authors
+ * 
+ * This file is part of Jalview.
+ * 
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License 
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *  
+ * Jalview is distributed in the hope that it will be useful, but 
+ * WITHOUT ANY WARRANTY; without even the implied warranty 
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
+ * PURPOSE.  See the GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
 package jalview.ws.jws2;
 
 import jalview.api.AlignCalcWorkerI;
@@ -198,7 +218,7 @@ public class RNAalifoldClient extends JabawsAlignCalcWorker implements
   private AlignmentAnnotation constructAnnotationFromScoreHolder(
           AlignmentAnnotation annotation, String struct, TreeSet<Score> data)
   {
-    Annotation[] anns = new Annotation[struct.length()];
+    Annotation[] anns = new Annotation[gapMap!= null ? gapMap.length+1 : struct.length()];
 
     if (data != null
             && data.size() > 1
@@ -216,9 +236,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 +270,27 @@ 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<gapMap.length)
+          {
+            ri++;
+          }
+          if (ri==gapMap.length)
+          {
+            break;
+          }
+        }
+        anns[ri] = new Annotation(struct.substring(i, i + 1), "",
                 isSS(struct.charAt(i)), Float.NaN);
       }