X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fschemes%2FTCoffeeColourScheme.java;h=db85cc842445951459e9a5166ec5e63a6f6694f1;hb=89350c76ad3884aa1394952979998ea58902063c;hp=6eb48c24f0f5420fe300f112f69c26c1dfad4325;hpb=865a855a4ca87eadb3e5ff284ed32ed307d9c34b;p=jalview.git diff --git a/src/jalview/schemes/TCoffeeColourScheme.java b/src/jalview/schemes/TCoffeeColourScheme.java index 6eb48c2..db85cc8 100644 --- a/src/jalview/schemes/TCoffeeColourScheme.java +++ b/src/jalview/schemes/TCoffeeColourScheme.java @@ -1,24 +1,26 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.0b1) - * Copyright (C) 2014 The Jalview Authors + * 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. + * 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 . + * You should have received a copy of the GNU General Public License + * along with Jalview. If not, see . * The Jalview Authors are detailed in the 'AUTHORS' file. */ package jalview.schemes; -import jalview.analysis.SequenceIdMatcher; +import jalview.api.AlignViewportI; import jalview.datamodel.AlignmentAnnotation; import jalview.datamodel.AlignmentI; import jalview.datamodel.AnnotatedCollectionI; @@ -30,8 +32,8 @@ import jalview.io.TCoffeeScoreFile; import java.awt.Color; import java.util.ArrayList; import java.util.IdentityHashMap; +import java.util.List; import java.util.Map; -import java.util.TreeMap; /** * Defines the color score for T-Coffee MSA @@ -44,21 +46,15 @@ import java.util.TreeMap; */ public class TCoffeeColourScheme extends ResidueColourScheme { + IdentityHashMap seqMap; - 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 - }; + /** + * Default constructor (required for Class.newInstance()) + */ + public TCoffeeColourScheme() + { - IdentityHashMap seqMap; + } /** * the color scheme needs to look at the alignment to get and cache T-COFFEE @@ -72,6 +68,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) @@ -81,12 +84,19 @@ 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(); + seqMap = new IdentityHashMap<>(); + AnnotatedCollectionI alcontext = alignment instanceof AlignmentI + ? alignment + : alignment.getContext(); + if (alcontext == null) + { + return; + } int w = 0; - for (AlignmentAnnotation al : alignment + for (AlignmentAnnotation al : alcontext .findAnnotation(TCoffeeScoreFile.TCOFFEE_SCORE)) { if (al.sequenceRef != null && !al.belowAlignment) @@ -114,9 +124,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]]; @@ -129,4 +142,40 @@ public class TCoffeeColourScheme extends ResidueColourScheme } return cols[j]; } + + @Override + public ColourSchemeI getInstance(AlignViewportI view, + AnnotatedCollectionI sg) + { + return new TCoffeeColourScheme(sg); + } + + /** + * Answers true if the data has TCoffee score annotation + */ + @Override + public boolean isApplicableTo(AnnotatedCollectionI ac) + { + AnnotatedCollectionI alcontext = ac instanceof AlignmentI ? ac + : ac.getContext(); + if (alcontext == null) + { + return false; + } + Iterable anns = alcontext + .findAnnotation(TCoffeeScoreFile.TCOFFEE_SCORE); + return anns.iterator().hasNext(); + } + + @Override + public String getSchemeName() + { + return JalviewColourScheme.TCoffee.toString(); + } + + @Override + public boolean isSimple() + { + return false; + } }