From b94b42970dda2cd5f640ebda31bbb835fd2914df Mon Sep 17 00:00:00 2001 From: gmungoc Date: Wed, 21 Dec 2016 15:16:34 +0000 Subject: [PATCH] JAL-2360 tidy up, simplify isApplicableTo test --- src/jalview/schemes/TCoffeeColourScheme.java | 54 +++++++++++--------------- 1 file changed, 22 insertions(+), 32 deletions(-) diff --git a/src/jalview/schemes/TCoffeeColourScheme.java b/src/jalview/schemes/TCoffeeColourScheme.java index 0611edc..6f55204 100644 --- a/src/jalview/schemes/TCoffeeColourScheme.java +++ b/src/jalview/schemes/TCoffeeColourScheme.java @@ -31,6 +31,7 @@ import jalview.io.TCoffeeScoreFile; import java.awt.Color; import java.util.ArrayList; import java.util.IdentityHashMap; +import java.util.List; import java.util.Map; /** @@ -44,19 +45,6 @@ import java.util.Map; */ public class TCoffeeColourScheme extends ResidueColourScheme { - - static final Color[] colors = { new Color(102, 102, 255), // #6666FF - new Color(0, 255, 0), // #00FF00 - new Color(102, 255, 0), // #66FF00 - new Color(204, 255, 0), // #CCFF00 - new Color(255, 255, 0), // #FFFF00 - new Color(255, 204, 0), // #FFCC00 - new Color(255, 153, 0), // #FF9900 - new Color(255, 102, 0), // #FF6600 - new Color(255, 51, 0), // #FF3300 - new Color(255, 34, 0) // #FF2000 - }; - IdentityHashMap seqMap; /** @@ -79,6 +67,13 @@ public class TCoffeeColourScheme extends ResidueColourScheme alignmentChanged(alignment, null); } + /** + * Finds the TCoffeeScore annotation (if any) for each sequence and notes the + * annotation colour for each column position. The colours are fixed for + * scores 0-9 and are set when annotation is parsed. + * + * @see TCoffeeScoreFile#annotateAlignment(AlignmentI, boolean) + */ @Override public void alignmentChanged(AnnotatedCollectionI alignment, Map hiddenReps) @@ -88,7 +83,7 @@ public class TCoffeeColourScheme extends ResidueColourScheme // assume only one set of TCOFFEE scores - but could have more than one // potentially. - ArrayList annots = new ArrayList(); + List annots = new ArrayList(); // Search alignment to get all tcoffee annotation and pick one set of // annotation to use to colour seqs. seqMap = new IdentityHashMap(); @@ -127,9 +122,12 @@ public class TCoffeeColourScheme extends ResidueColourScheme @Override public Color findColour(char c, int j, SequenceI seq) { - Color[] cols; - - if (seqMap == null || (cols = seqMap.get(seq)) == null) + if (seqMap == null) + { + return Color.WHITE; + } + Color[] cols = seqMap.get(seq); + if (cols == null) { // see above TODO about computing a colour for each residue in each // column: cc = _rcols[i][indexFor[c]]; @@ -151,28 +149,20 @@ public class TCoffeeColourScheme extends ResidueColourScheme } /** - * Answers true if the annotated data has TCoffee score annotation + * Answers true if the data has TCoffee score annotation */ @Override public boolean isApplicableTo(AnnotatedCollectionI ac) { - if (ac.getContext() != null) - { - ac = ac.getContext(); - } - AlignmentAnnotation[] anns = ac.getAlignmentAnnotation(); - if (anns == null) + AnnotatedCollectionI alcontext = ac instanceof AlignmentI ? ac : ac + .getContext(); + if (alcontext == null) { return false; } - for (AlignmentAnnotation ann : anns) - { - if (TCoffeeScoreFile.TCOFFEE_SCORE.equals(ann.getCalcId())) - { - return true; - } - } - return false; + Iterable anns = alcontext + .findAnnotation(TCoffeeScoreFile.TCOFFEE_SCORE); + return anns.iterator().hasNext(); } @Override -- 1.7.10.2