JAL-974 show thresholds for disorder predictor annotation rows
authorjprocter <jprocter@compbio.dundee.ac.uk>
Mon, 3 Sep 2012 16:23:40 +0000 (17:23 +0100)
committerjprocter <jprocter@compbio.dundee.ac.uk>
Mon, 3 Sep 2012 16:23:52 +0000 (17:23 +0100)
src/jalview/ws/jws2/AADisorderClient.java

index 8a6e9cc..f3f8ae3 100644 (file)
@@ -4,6 +4,7 @@ import jalview.api.AlignCalcWorkerI;
 import jalview.bin.Cache;
 import jalview.datamodel.AlignmentAnnotation;
 
+import jalview.datamodel.GraphLine;
 import jalview.datamodel.SequenceFeature;
 import jalview.datamodel.SequenceI;
 import jalview.gui.AlignFrame;
@@ -29,6 +30,8 @@ public class AADisorderClient extends JabawsAlignCalcWorker implements
         AlignCalcWorkerI
 {
 
+  private static final String THRESHOLD = "THRESHOLD";
+
   String typeName;
 
   String methodName;
@@ -66,6 +69,7 @@ public class AADisorderClient extends JabawsAlignCalcWorker implements
   private static String INVISIBLE = "INVISIBLE";
   static
   {
+    // TODO: turn this into some kind of configuration file that's a bit easier to edit
     featureMap = new HashMap<String, Map<String, String[]>>();
     Map<String, String[]> fmap;
     featureMap.put(compbio.ws.client.Services.IUPredWS.toString(),
@@ -94,13 +98,27 @@ public class AADisorderClient extends JabawsAlignCalcWorker implements
             amap = new HashMap<String, Map<String, Object>>());
     amap.put("Dydx", new HashMap<String, Object>());
     amap.get("Dydx").put(DONTCOMBINE, DONTCOMBINE);
+    amap.get("Dydx").put(THRESHOLD, new double[] {1, 0});
     amap.put("SmoothedScore", new HashMap<String, Object>());
     amap.get("SmoothedScore").put(INVISIBLE,INVISIBLE);
     amap.put("RawScore", new HashMap<String, Object>());
     amap.get("RawScore").put(INVISIBLE,INVISIBLE);
     annotMap.put(compbio.ws.client.Services.DisemblWS.toString(),
             amap = new HashMap<String, Map<String, Object>>());
+    amap.put("COILS", new HashMap<String, Object>());
+    amap.put("HOTLOOPS", new HashMap<String, Object>());
+    amap.put("REM465", new HashMap<String, Object>());
+    amap.get("COILS").put(THRESHOLD, new double[] { 1, 0.516});
+    amap.get("HOTLOOPS").put(THRESHOLD, new double[] { 1, 0.6});
+    amap.get("REM465").put(THRESHOLD, new double[] { 1, 0.1204});
     
+    annotMap.put(compbio.ws.client.Services.IUPredWS.toString(),
+            amap = new HashMap<String, Map<String, Object>>());
+    amap.put("Long", new HashMap<String, Object>());
+    amap.put("Short", new HashMap<String, Object>());
+    amap.get("Long").put(THRESHOLD, new double[] { 1, 0.5});
+    amap.get("Short").put(THRESHOLD, new double[] { 1, 0.5});
+
   }
 
   @Override
@@ -197,7 +215,7 @@ public class AADisorderClient extends JabawsAlignCalcWorker implements
                     base, 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(THRESHOLD);
             if (annotTypeMap==null || annotTypeMap.get(scr.getMethod())==null || annotTypeMap.get(scr.getMethod()).get(DONTCOMBINE) == null)
             {
               {
@@ -211,7 +229,14 @@ public class AADisorderClient extends JabawsAlignCalcWorker implements
               }
             }
             
-            annot.description = service.getActionText() + " - raw scores";
+            annot.description = "<html>"+service.getActionText() + " - raw scores";
+            if (thrsh!=null)
+            {
+              String threshNote=(thrsh[0]>0 ? "Above " : "Below ")+thrsh[1]+" indicates disorder";
+              annot.threshold=new GraphLine((float) thrsh[1], threshNote, Color.red);
+              annot.description+="<br/>"+threshNote;
+            }
+            annot.description+="</html>";
             Color col = new UserColourScheme(typeName)
                     .createColourFromName(typeName + scr.getMethod());
             for (int p = 0, ps = annot.annotations.length; p < ps; p++)