JAL-1319 (blacklist fix) check for presence of a score object before we start making...
authorJim Procter <jprocter@compbio.dundee.ac.uk>
Mon, 17 Jun 2013 17:25:54 +0000 (18:25 +0100)
committerJim Procter <jprocter@compbio.dundee.ac.uk>
Mon, 17 Jun 2013 17:26:14 +0000 (18:26 +0100)
src/jalview/ws/jws2/AADisorderClient.java

index d64a956..3c19dc5 100644 (file)
@@ -191,99 +191,102 @@ public class AADisorderClient extends JabawsAlignCalcWorker implements
         ScoreHolder scores = scoremanager.getAnnotationForSequence(seqId);
         float last = Float.NaN, val = Float.NaN;
         int lastAnnot = ourAnnot.size();
-        for (Score scr : scores.scores)
-        {
-
-          if (scr.getRanges() != null && scr.getRanges().size() > 0)
+        if (scores!=null && scores.scores!=null) {
+          for (Score scr : scores.scores)
           {
-            Iterator<Float> vals = scr.getScores().iterator();
-            // make features on sequence
-            for (Range rn : scr.getRanges())
-            {
 
-              SequenceFeature sf;
-              String[] type = featureTypeMap.get(scr.getMethod());
-              if (type == null)
+            if (scr.getRanges() != null && scr.getRanges().size() > 0)
+            {
+              Iterator<Float> vals = scr.getScores().iterator();
+              // make features on sequence
+              for (Range rn : scr.getRanges())
               {
-                // create a default type for this feature
-                type = new String[]
-                { typeName + " (" + scr.getMethod() + ")",
-                    service.getActionText() };
+
+                SequenceFeature sf;
+                String[] type = featureTypeMap.get(scr.getMethod());
+                if (type == null)
+                {
+                  // create a default type for this feature
+                  type = new String[]
+                  { typeName + " (" + scr.getMethod() + ")",
+                      service.getActionText() };
+                }
+                if (vals.hasNext())
+                {
+                  sf = new SequenceFeature(type[0], type[1],
+                          base + rn.from, base + rn.to, val = vals.next()
+                                  .floatValue(), methodName);
+                }
+                else
+                {
+                  sf = new SequenceFeature(type[0], type[1], null, base
+                          + rn.from, base + rn.to, methodName);
+                }
+                dseq.addSequenceFeature(sf);
+                if (last != val && last != Float.NaN)
+                {
+                  fc.put(sf.getType(), sf);
+                }
+                last = val;
+                dispFeatures = true;
               }
-              if (vals.hasNext())
+            }
+            else
+            {
+              if (scr.getScores().size() == 0)
               {
-                sf = new SequenceFeature(type[0], type[1], base + rn.from,
-                        base + rn.to, val = vals.next().floatValue(),
-                        methodName);
+                continue;
               }
-              else
+              AlignmentAnnotation annot = createAnnotationRowsForScores(
+                      ourAnnot,
+                      service.serviceType + " (" + scr.getMethod() + ")",
+                      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(
+                              THRESHOLD);
+              if (annotTypeMap == null
+                      || annotTypeMap.get(scr.getMethod()) == null
+                      || annotTypeMap.get(scr.getMethod()).get(DONTCOMBINE) == null)
               {
-                sf = new SequenceFeature(type[0], type[1], null, base
-                        + rn.from, base + rn.to, methodName);
+                {
+                  if (!sameGroup)
+                  {
+                    graphGroup++;
+                    sameGroup = true;
+                  }
+
+                  annot.graphGroup = graphGroup;
+                }
               }
-              dseq.addSequenceFeature(sf);
-              if (last != val && last != Float.NaN)
+
+              annot.description = "<html>" + service.getActionText()
+                      + " - raw scores";
+              if (thrsh != null)
               {
-                fc.put(sf.getType(), sf);
+                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;
               }
-              last = val;
-              dispFeatures = true;
-            }
-          }
-          else
-          {
-            if (scr.getScores().size() == 0)
-            {
-              continue;
-            }
-            AlignmentAnnotation annot = createAnnotationRowsForScores(
-                    ourAnnot, service.serviceType + " (" + scr.getMethod()
-                            + ")",
-                    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(THRESHOLD);
-            if (annotTypeMap == null
-                    || annotTypeMap.get(scr.getMethod()) == null
-                    || annotTypeMap.get(scr.getMethod()).get(DONTCOMBINE) == null)
-            {
+              annot.description += "</html>";
+              Color col = new UserColourScheme(typeName)
+                      .createColourFromName(typeName + scr.getMethod());
+              for (int p = 0, ps = annot.annotations.length; p < ps; p++)
               {
-                if (!sameGroup)
+                if (annot.annotations[p] != null)
                 {
-                  graphGroup++;
-                  sameGroup = true;
+                  annot.annotations[p].colour = col;
                 }
-
-                annot.graphGroup = graphGroup;
-              }
-            }
-
-            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++)
-            {
-              if (annot.annotations[p] != null)
-              {
-                annot.annotations[p].colour = col;
               }
+              annot._linecolour = col;
             }
-            annot._linecolour = col;
           }
         }
         if (lastAnnot + 1 == ourAnnot.size())