JAL-976 fix AACon name typo in source and GUI
[jalview.git] / src / jalview / ws / jws2 / AAConClient.java
diff --git a/src/jalview/ws/jws2/AAConClient.java b/src/jalview/ws/jws2/AAConClient.java
new file mode 100644 (file)
index 0000000..a88a221
--- /dev/null
@@ -0,0 +1,114 @@
+package jalview.ws.jws2;
+
+import jalview.datamodel.AlignmentAnnotation;
+import jalview.datamodel.AlignmentI;
+import jalview.gui.AlignFrame;
+import jalview.gui.AlignmentPanel;
+import jalview.ws.jws2.dm.AAConSettings;
+import jalview.ws.jws2.jabaws2.Jws2Instance;
+import jalview.ws.params.WsParamSetI;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeSet;
+
+import compbio.data.sequence.Score;
+import compbio.metadata.Argument;
+
+public class AAConClient extends JabawsAlignCalcWorker
+{
+
+  public AAConClient(Jws2Instance service, AlignFrame alignFrame,
+          WsParamSetI preset, List<Argument> paramset)
+  {
+    super(service, alignFrame, preset, paramset);
+    submitGaps = true;
+    alignedSeqs = true;
+    nucleotidesAllowed = false;
+    proteinAllowed = true;
+    gapMap = new boolean[0];
+    initViewportParams();
+  }
+
+  protected void initViewportParams()
+  {
+    ((jalview.gui.AlignViewport) alignViewport).setCalcIdSettingsFor(
+            getCalcId(),
+            new AAConSettings(true, service, this.preset,
+                    (arguments != null) ? JabaParamStore
+                            .getJwsArgsfromJaba(arguments) : null), true);
+  }
+
+  @Override
+  public void updateParameters(WsParamSetI newpreset,
+          java.util.List<Argument> newarguments)
+  {
+    super.updateParameters(newpreset, newarguments);
+    initViewportParams();
+  };
+
+  public String getServiceActionText()
+  {
+    return "calculating Amino acid consensus using AACon service";
+  }
+
+  /**
+   * update the consensus annotation from the sequence profile data using
+   * current visualization settings.
+   */
+
+  public void updateResultAnnotation(boolean immediate)
+  {
+    if (immediate || !calcMan.isWorking(this) && scoremanager != null)
+    {
+      Map<String, TreeSet<Score>> scoremap = scoremanager.asMap();
+      int alWidth = alignViewport.getAlignment().getWidth();
+      ArrayList<AlignmentAnnotation> ourAnnot = new ArrayList<AlignmentAnnotation>();
+      for (String score : scoremap.keySet())
+      {
+        Set<Score> scores = scoremap.get(score);
+        for (Score scr : scores)
+        {
+          if (scr.getRanges() != null && scr.getRanges().size() > 0)
+          {
+            /**
+             * annotation in range annotation = findOrCreate(scr.getMethod(),
+             * true, null, null); Annotation[] elm = new Annotation[alWidth];
+             * Iterator<Float> vals = scr.getScores().iterator(); for (Range rng
+             * : scr.getRanges()) { float val = vals.next().floatValue(); for
+             * (int i = rng.from; i <= rng.to; i++) { elm[i] = new
+             * Annotation("", "", ' ', val); } } annotation.annotations = elm;
+             * annotation.validateRangeAndDisplay();
+             */
+          }
+          else
+          {
+            createAnnotationRowsForScores(ourAnnot, getCalcId(), alWidth,
+                    scr);
+          }
+        }
+      }
+
+      if (ourAnnot.size() > 0)
+      {
+        updateOurAnnots(ourAnnot);
+      }
+    }
+  }
+
+  public String getCalcId()
+  {
+    return SequenceAnnotationWSClient.AAConCalcId;
+  }
+
+  public static void removeAAConsAnnotation(AlignmentPanel alignPanel)
+  {
+    for (AlignmentAnnotation aa : alignPanel.getAlignment().findAnnotation(
+            SequenceAnnotationWSClient.AAConCalcId))
+    {
+      alignPanel.getAlignment().deleteAnnotation(aa);
+    }
+  }
+}