X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fworkers%2FColumnCounterSetWorker.java;fp=src%2Fjalview%2Fworkers%2FColumnCounterSetWorker.java;h=085852752008bfaee35f9fb82aaa000db9b1246c;hb=3459a8a691cb22508d7067f240b7254e588e77d3;hp=74695fe2bd494f63ce4d866f3f16b02ee2a8691d;hpb=5b27f1062b2203c4c31702e205f4c78e1992063e;p=jalview.git diff --git a/src/jalview/workers/ColumnCounterSetWorker.java b/src/jalview/workers/ColumnCounterSetWorker.java index 74695fe..0858527 100644 --- a/src/jalview/workers/ColumnCounterSetWorker.java +++ b/src/jalview/workers/ColumnCounterSetWorker.java @@ -20,21 +20,22 @@ */ package jalview.workers; +import java.awt.Color; +import java.util.ArrayList; +import java.util.List; + import jalview.api.AlignViewportI; import jalview.api.AlignmentViewPanel; import jalview.datamodel.AlignmentAnnotation; import jalview.datamodel.AlignmentI; import jalview.datamodel.Annotation; +import jalview.datamodel.MappedFeatures; import jalview.datamodel.SequenceFeature; import jalview.datamodel.SequenceI; import jalview.renderer.seqfeatures.FeatureRenderer; import jalview.util.ColorUtils; import jalview.util.Comparison; -import java.awt.Color; -import java.util.ArrayList; -import java.util.List; - /** * A class to compute alignment annotations with column counts for a set of * properties of interest on positions in an alignment.
@@ -147,11 +148,6 @@ class ColumnCounterSetWorker extends AlignCalcWorker max[crow] = 0; } - int[] minC = counter.getMinColour(); - int[] maxC = counter.getMaxColour(); - Color minColour = new Color(minC[0], minC[1], minC[2]); - Color maxColour = new Color(maxC[0], maxC[1], maxC[2]); - for (int col = 0; col < width; col++) { int[] count = counts[col]; @@ -181,6 +177,11 @@ class ColumnCounterSetWorker extends AlignCalcWorker for (int anrow = 0; anrow < rows; anrow++) { + int[] minC = counter.getMinColour(anrow); + int[] maxC = counter.getMaxColour(anrow); + Color minColour = new Color(minC[0], minC[1], minC[2]); + Color maxColour = new Color(maxC[0], maxC[1], maxC[2]); + Annotation[] anns = new Annotation[width]; long rmax = 0; /* @@ -223,6 +224,26 @@ class ColumnCounterSetWorker extends AlignCalcWorker return annotationAdded; } + void removeOldAnnotations(String[] annotDescs) + { + // TODO use the commented out code once JAL-2075 is fixed + // to get adequate performance on genomic length sequence + AlignmentI alignment = alignViewport.getAlignment(); + ArrayList toRemove = new ArrayList(); + for (String toRemoveDesc : annotDescs) + { + for (AlignmentAnnotation aa : ourAnnots) + { + if (toRemoveDesc.equals(aa.getCalcId())) + toRemove.add(aa); + } + } + for (AlignmentAnnotation deleted : toRemove) + { + alignment.deleteAnnotation(deleted); + } + } + /** * Returns a count of any feature types present at the specified position of * the alignment @@ -256,6 +277,12 @@ class ColumnCounterSetWorker extends AlignCalcWorker */ // see JAL-2075 List features = fr.findFeaturesAtColumn(seq, col + 1); + if (fr.hasRenderOrder()) + { + MappedFeatures mappedFeatres = fr.findComplementFeaturesAtResidue(seq, + seq.findPosition(col)); + features.addAll(mappedFeatres.features); + } int[] count = this.counter.count(String.valueOf(res), features); return count; }