X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fanalysis%2FAAFrequency.java;fp=src%2Fjalview%2Fanalysis%2FAAFrequency.java;h=0e055e450a3ae6983946062d4e28bf56c39ab551;hb=f0f7259c096ec06cc8579ed62717ca93a3a45982;hp=17874e636686181be850110af7485de817ef3924;hpb=abd0918cc633b946cfea588ef4b4d666edf9fc8b;p=jalview.git diff --git a/src/jalview/analysis/AAFrequency.java b/src/jalview/analysis/AAFrequency.java index 17874e6..0e055e4 100755 --- a/src/jalview/analysis/AAFrequency.java +++ b/src/jalview/analysis/AAFrequency.java @@ -20,6 +20,10 @@ */ package jalview.analysis; +import java.util.Arrays; +import java.util.Hashtable; +import java.util.List; + import jalview.datamodel.AlignedCodonFrame; import jalview.datamodel.AlignmentAnnotation; import jalview.datamodel.AlignmentI; @@ -37,10 +41,6 @@ import jalview.util.Format; import jalview.util.MappingUtils; import jalview.util.QuickSort; -import java.util.Arrays; -import java.util.Hashtable; -import java.util.List; - /** * Takes in a vector or array of sequences and column start and column end and * returns a new Hashtable[] of size maxSeqLength, if Hashtable not supplied. @@ -67,8 +67,8 @@ public class AAFrequency } } - public static final ProfilesI calculate(List list, - int start, int end) + public static final ProfilesI calculate(List list, int start, + int end) { return calculate(list, start, end, false); } @@ -289,6 +289,55 @@ public class AAFrequency } /** + * Derive the gap count annotation row. + * + * @param consensus + * the annotation row to add annotations to + * @param profiles + * the source consensus data + * @param startCol + * start column (inclusive) + * @param endCol + * end column (exclusive) + */ + public static void completeGapAnnot(AlignmentAnnotation consensus, + ProfilesI profiles, int startCol, int endCol, long nseq) + { + if (consensus == null || consensus.annotations == null + || consensus.annotations.length < endCol) + { + /* + * called with a bad alignment annotation row + * wait for it to be initialised properly + */ + return; + } + // always set ranges again + consensus.graphMax = nseq; + consensus.graphMin = 0; + for (int i = startCol; i < endCol; i++) + { + ProfileI profile = profiles.get(i); + if (profile == null) + { + /* + * happens if sequences calculated over were + * shorter than alignment width + */ + consensus.annotations[i] = null; + return; + } + + final int gapped = profile.getGapped(); + + String description = String.valueOf(gapped); + + consensus.annotations[i] = new Annotation("", description, '0', + gapped); + } + } + + /** * Returns a tooltip showing either *