2 * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
3 * Copyright (C) $$Year-Rel$$ The Jalview Authors
5 * This file is part of Jalview.
7 * Jalview is free software: you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation, either version 3
10 * of the License, or (at your option) any later version.
12 * Jalview is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty
14 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15 * PURPOSE. See the GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
19 * The Jalview Authors are detailed in the 'AUTHORS' file.
22 import jalview.schemes.ColourSchemeI
23 import jalview.schemes.ColourSchemes
24 import jalview.datamodel.AnnotatedCollectionI
25 import jalview.datamodel.SequenceI
26 import jalview.datamodel.SequenceCollectionI
27 import jalview.api.AlignViewportI
28 import jalview.util.Comparison
31 * Closure that defines a colour scheme where fully conserved residues are red,
32 * partly conserved (match consensus but < 100% consensus) are yellow,
33 * unconserved and gaps are white
39 * name shown in the colour menu
41 getSchemeName: { -> 'Conserved' },
44 * to make a new instance for each alignment view
46 getInstance: { AlignViewportI view, AnnotatedCollectionI coll -> conserved() },
49 * method only needed if colour scheme has to recalculate
50 * values when an alignment is modified
52 alignmentChanged: { AnnotatedCollectionI coll, Map<SequenceI, SequenceCollectionI> map -> },
55 * determine colour for a residue at an aligned position of a
56 * sequence, given consensus residue(s) for the column and the
57 * consensus percentage identity score for the column
59 findColour: { char res, int col, SequenceI seq, String consensus, float pid ->
60 if ('a' <= res && res <= 'z')
64 if (Comparison.isGap(res) || !consensus.contains(String.valueOf(res)))
77 * true means applicable to nucleotide or peptide data
79 isApplicableTo: {AnnotatedCollectionI coll -> true},
82 * simple colour schemes are those that depend on the residue
83 * only (these are also available to colour structure viewers)
89 ColourSchemes.instance.registerColourScheme(conserved())