Merge branch 'alpha/JAL-3066_Jalview_212_slivka-integration' into alpha/JAL-3362_Jalv...
[jalview.git] / src / jalview / ws / jws2 / jabaws2 / AAConClient.java
diff --git a/src/jalview/ws/jws2/jabaws2/AAConClient.java b/src/jalview/ws/jws2/jabaws2/AAConClient.java
new file mode 100644 (file)
index 0000000..18b6ce1
--- /dev/null
@@ -0,0 +1,108 @@
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ 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.jabaws2;
+
+import jalview.api.FeatureColourI;
+import jalview.datamodel.AlignmentAnnotation;
+import jalview.datamodel.AlignmentI;
+import jalview.datamodel.features.FeatureMatcherSetI;
+import jalview.util.MessageManager;
+import jalview.ws.uimodel.AlignAnalysisUIText;
+
+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;
+
+public class AAConClient extends JabawsAnnotationInstance
+{
+  // configuration for factory
+  public static String getServiceActionText()
+  {
+    return "calculating Amino acid consensus using AACon service";
+  }
+
+
+
+  private static String CALC_ID = "jabaws2.AACon";
+
+  public static AlignAnalysisUIText getAlignAnalysisUIText()
+  {
+    return new AlignAnalysisUIText(
+            compbio.ws.client.Services.AAConWS.toString(),
+            AAConClient.class, CALC_ID, false, true, true, true,
+            true, 2, MessageManager.getString("label.aacon_calculations"),
+            MessageManager.getString("tooltip.aacon_calculations"),
+            MessageManager.getString("label.aacon_settings"),
+            MessageManager.getString("tooltip.aacon_settings"));
+  }
+
+  // instance
+  public AAConClient(Jws2Instance handle)
+  {
+    super(handle);
+  }
+
+  @Override
+  List<AlignmentAnnotation> annotationFromScoreManager(AlignmentI seqs,
+          Map<String, FeatureColourI> featureColours,
+          Map<String, FeatureMatcherSetI> featureFilters)
+  {
+    return aacons_annotation(seqs.getWidth(), seqs, null);
+  }
+
+  private List<AlignmentAnnotation> aacons_annotation(int alWidth,
+          AlignmentI alignViewport, boolean[] gapMap)
+  {
+    Map<String, TreeSet<Score>> scoremap = scoremanager.asMap();
+    ArrayList<AlignmentAnnotation> ourAnnot = new ArrayList<>();
+    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(alignViewport, null, ourAnnot,
+                  getCalcId(),
+                  scr.getScores().size(), scr);
+        }
+      }
+    }
+    return ourAnnot;
+  }
+
+}