JAL-1517 fix copyright for 2.8.2
[jalview.git] / src / jalview / ws / jws2 / AADisorderClient.java
index 41f0fd5..c5fbf49 100644 (file)
@@ -1,25 +1,28 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8)
- * Copyright (C) 2012 J Procter, AM Waterhouse, LM Lui, J Engelhardt, G Barton, M Clamp, S Searle
+ * 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.
+ * 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/>.
+ * 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;
+import jalview.bin.Cache;
 import jalview.datamodel.AlignmentAnnotation;
-
 import jalview.datamodel.GraphLine;
 import jalview.datamodel.SequenceFeature;
 import jalview.datamodel.SequenceI;
@@ -36,6 +39,7 @@ import java.util.Hashtable;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+
 import compbio.data.sequence.Range;
 import compbio.data.sequence.Score;
 import compbio.data.sequence.ScoreManager.ScoreHolder;
@@ -46,6 +50,7 @@ public class AADisorderClient extends JabawsCalcWorker implements
 {
 
   private static final String THRESHOLD = "THRESHOLD";
+  private static final String RANGE = "RANGE";
 
   String typeName;
 
@@ -117,6 +122,9 @@ public class AADisorderClient extends JabawsCalcWorker implements
     amap.get("Dydx").put(DONTCOMBINE, DONTCOMBINE);
     amap.get("Dydx").put(THRESHOLD, new double[]
     { 1, 0 });
+    amap.get("Dydx").put(RANGE, new float[]
+            { -1, +1 });
+
     amap.put("SmoothedScore", new HashMap<String, Object>());
     amap.get("SmoothedScore").put(INVISIBLE, INVISIBLE);
     amap.put("RawScore", new HashMap<String, Object>());
@@ -128,10 +136,18 @@ public class AADisorderClient extends JabawsCalcWorker implements
     amap.put("REM465", new HashMap<String, Object>());
     amap.get("COILS").put(THRESHOLD, new double[]
     { 1, 0.516 });
+    amap.get("COILS").put(RANGE, new float[]
+            { 0, 1 });
+
     amap.get("HOTLOOPS").put(THRESHOLD, new double[]
     { 1, 0.6 });
+    amap.get("HOTLOOPS").put(RANGE, new float[]
+            { 0, 1 });
     amap.get("REM465").put(THRESHOLD, new double[]
     { 1, 0.1204 });
+    amap.get("REM465").put(RANGE, new float[]
+            { 0, 1 });
+
 
     annotMap.put(compbio.ws.client.Services.IUPredWS.toString(),
             amap = new HashMap<String, Map<String, Object>>());
@@ -139,13 +155,19 @@ public class AADisorderClient extends JabawsCalcWorker implements
     amap.put("Short", new HashMap<String, Object>());
     amap.get("Long").put(THRESHOLD, new double[]
     { 1, 0.5 });
+    amap.get("Long").put(RANGE, new float[]
+            { 0, 1 });
     amap.get("Short").put(THRESHOLD, new double[]
     { 1, 0.5 });
+    amap.get("Short").put(RANGE, new float[]
+            { 0, 1 });
     annotMap.put(compbio.ws.client.Services.JronnWS.toString(),
             amap = new HashMap<String, Map<String, Object>>());
     amap.put("JRonn", new HashMap<String, Object>());
     amap.get("JRonn").put(THRESHOLD, new double[]
     { 1, 0.5 });
+    amap.get("JRonn").put(RANGE, new float[]
+            { 0, 1 });
   }
 
   @Override
@@ -187,8 +209,18 @@ public class AADisorderClient extends JabawsCalcWorker implements
         {
           seq = seq.getDatasetSequence();
         }
-        ;
-        ScoreHolder scores = scoremanager.getAnnotationForSequence(seqId);
+        ScoreHolder scores = null;
+        try {
+          scores = scoremanager.getAnnotationForSequence(seqId);
+        } catch (Exception q)
+        {
+          Cache.log
+                  .info("Couldn't recover disorder prediction for sequence "
+                          + seq.getName()
+                          + "(Prediction name was "
+                          + seqId+")"
+                          + "\nSee http://issues.jalview.org/browse/JAL-1319 for one possible reason why disorder predictions might fail.");
+        }
         float last = Float.NaN, val = Float.NaN;
         int lastAnnot = ourAnnot.size();
         if (scores!=null && scores.scores!=null) {
@@ -243,16 +275,21 @@ public class AADisorderClient extends JabawsCalcWorker implements
                       service.getServiceTypeURI() + "/" + scr.getMethod(),
                       aseq, base + 1, scr);
               annot.graph = AlignmentAnnotation.LINE_GRAPH;
-              annot.visible = (annotTypeMap == null
-                      || annotTypeMap.get(scr.getMethod()) == null || annotTypeMap
-                      .get(scr.getMethod()).get(INVISIBLE) == null);
-              double[] thrsh = (annotTypeMap == null || annotTypeMap
-                      .get(scr.getMethod()) == null) ? null
-                      : (double[]) annotTypeMap.get(scr.getMethod()).get(
+              
+              Map<String,Object> styleMap = (annotTypeMap == null) ? null : annotTypeMap.get(scr.getMethod());
+              
+              annot.visible = (styleMap == null || styleMap.get(INVISIBLE) == null);
+              double[] thrsh = (styleMap==null) ? null
+                      : (double[]) styleMap.get(
                               THRESHOLD);
-              if (annotTypeMap == null
-                      || annotTypeMap.get(scr.getMethod()) == null
-                      || annotTypeMap.get(scr.getMethod()).get(DONTCOMBINE) == null)
+              float[] range = (styleMap==null) ? null : (float[]) styleMap.get(
+                      RANGE);
+              if (range!=null)
+              {
+                annot.graphMin = range[0];
+                annot.graphMax = range[1];
+              }
+              if (styleMap==null || styleMap.get(DONTCOMBINE) == null)
               {
                 {
                   if (!sameGroup)