--- /dev/null
+/*
+ * 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;
+ }
+
+}