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.util.Comparison
30 * Closure that defines a colour scheme where fully conserved residues are red,
31 * partly conserved (match consensus but < 100% consensus) are yellow,
32 * unconserved and gaps are white
38 * name shown in the colour menu
40 getSchemeName: { -> 'Conserved' },
43 * to make a new instance for each alignment view
45 getInstance: { AnnotatedCollectionI coll, Map<SequenceI, SequenceCollectionI> map -> conserved() },
48 * method only needed if colour scheme has to recalculate
49 * values when an alignment is modified
51 alignmentChanged: { AnnotatedCollectionI coll, Map<SequenceI, SequenceCollectionI> map -> },
54 * determine colour for a residue at an aligned position of a
55 * sequence, given consensus residue(s) for the column and the
56 * consensus percentage identity score for the column
58 findColour: { char res, int col, SequenceI seq, String consensus, float pid ->
59 if ('a' <= res && res <= 'z')
63 if (Comparison.isGap(res) || !consensus.contains(String.valueOf(res)))
76 * true means applicable to nucleotide or peptide data
78 isApplicableTo: {AnnotatedCollectionI coll -> true},
81 * simple colour schemes are those that depend on the residue
82 * only (these are also available to colour structure viewers)
88 ColourSchemes.instance.registerColourScheme(conserved())