27e179b39235203296e639878cdd0fb2707d0c27
[jalview.git] / examples / groovy / colourSchemes.groovy
1 import java.awt.Color;
2 import jalview.schemes.ResidueColourScheme;
3 import jalview.schemes.ColourSchemes;
4 import jalview.datamodel.AnnotatedCollectionI;
5 import jalview.datamodel.SequenceI;
6
7 /*
8  * Example script that registers two new alignment colour schemes
9  */
10
11 /*
12  * Class that defines a colour scheme where odd columns are red,
13  * even numbered columns are blue, and gaps are yellow  
14  */
15 class Stripy extends ResidueColourScheme {
16     Stripy() { }
17     String getSchemeName() { "stripy" }
18     Stripy getInstance(AnnotatedCollectionI coll, Map map) { new Stripy() }
19     Color findColour(char res, int col, SequenceI seq) 
20     {
21         if (res == ' ' || res == '-' || res == '.') 
22         {
23             Color.yellow
24          } else if (col % 2 == 0) 
25          {
26             Color.blue
27          } else 
28          {
29             Color.red
30          }
31     }
32 }
33
34 /*
35  * Class that defines a colour scheme graduated 
36  * (approximately) by amino acid weight  
37  */
38 class ByWeight extends ResidueColourScheme {
39     int min = 75
40     int max = 204
41     ByWeight() { }
42     boolean isPeptideSpecific() {true}
43     String getSchemeName() { "By Weight" }
44     ByWeight getInstance(AnnotatedCollectionI coll, Map map) { new ByWeight() }
45     Color makeColour(int weight) 
46     {
47       int i = 255 * (weight - min) / (max - min);
48       new Color(i, 0, i);
49     }
50     Color findColour(char res, int col, SequenceI seq) 
51     {
52         switch (res) {
53           case ' ':
54           case '-':
55           case '.':
56             Color.white
57              break
58           case 'A':
59             makeColour(89)
60             break
61           case 'R':
62             makeColour(174)
63             break
64           case 'N':
65           case 'D':
66           case 'B':
67           case 'I':
68           case 'L':
69             makeColour(132)
70             break
71           case 'C':
72             makeColour(121)
73             break
74           case 'Q':
75           case 'E':
76           case 'Z':
77           case 'K':
78           case 'M':
79             makeColour(146)
80             break
81           case 'G':
82             makeColour(75)
83             break
84           case 'H':
85             makeColour(155)
86             break
87           case 'F':
88             makeColour(165)
89             break
90           case 'P':
91             makeColour(115)
92             break
93           case 'S':
94             makeColour(105)
95             break
96           case 'T':
97             makeColour(119)
98             break
99           case 'W':
100             makeColour(204)
101             break
102           case 'Y':
103             makeColour(181)
104             break
105           case 'V':
106             makeColour(117)
107             break
108           default:
109             makeColour(150)
110         }
111       }
112 }
113
114 ColourSchemes.instance.registerColourScheme(new Stripy())
115 ColourSchemes.instance.registerColourScheme(new ByWeight())