package jalview.schemes; import jalview.analysis.SequenceIdMatcher; import jalview.datamodel.AlignmentAnnotation; import jalview.datamodel.AlignmentI; import jalview.datamodel.AnnotatedCollectionI; import jalview.datamodel.Annotation; import jalview.datamodel.SequenceI; import jalview.io.TCoffeeScoreFile; import java.awt.Color; import java.util.ArrayList; import java.util.IdentityHashMap; import java.util.TreeMap; /** * Defines the color score for T-Coffee MSA *

* See http://tcoffee.org * * * @author Paolo Di Tommaso * */ 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; /** * the color scheme needs to look at the alignment to get and cache T-COFFEE scores * * @param alignment - annotated sequences to be searched */ public TCoffeeColourScheme(AnnotatedCollectionI alignment) { alignmentChanged(alignment); } @Override public void alignmentChanged(AnnotatedCollectionI alignment) { // assume only one set of TCOFFEE scores - but could have more than one potentially. ArrayList annots = new ArrayList(); // Search alignment to get all tcoffee annotation and pick one set of annotation to use to colour seqs. seqMap = new IdentityHashMap(); int w=0; for (AlignmentAnnotation al:alignment.findAnnotation(TCoffeeScoreFile.TCOFFEE_SCORE)) { if (al.sequenceRef!=null && !al.belowAlignment) { annots.add(al); if (w= cols.length ) { return Color.white; } return cols[j]; } }