New files
[jalview.git] / src / jalview / gui / CpGRenderer.java
1 package jalview.gui;\r
2 import jalview.datamodel.*;\r
3 import jalview.schemes.*;\r
4 import jalview.util.*;\r
5 import jalview.analysis.*;\r
6 import java.awt.*;\r
7 import java.awt.geom.*;\r
8 import java.util.*;\r
9 \r
10 public class CpGRenderer implements RendererI {\r
11     protected Color   color = Color.black;\r
12 \r
13     public Color getResidueBoxColour(ColourSchemeI cs, SequenceI seq, int i) {\r
14         Color c = cs.findColour(seq,seq.getSequence(i,i+1),i,null);\r
15         return c;\r
16     }\r
17 \r
18     public void drawSequence(Graphics g,ColourSchemeI cs,SequenceI seq,int start, int end, int x1, int y1, double width, int height,boolean showScores, boolean displayBoxes, boolean displayText,Vector pid, int seqnum,AlignViewport av) {\r
19 \r
20         int i      = start;\r
21         int length = seq.getLength();\r
22 \r
23         Color currentColor = Color.white;\r
24 \r
25         g.setColor(Color.black);\r
26 \r
27         int window = 1000;\r
28         int max    = window/5;\r
29 \r
30         int step = window/10;\r
31 \r
32         if (step > window) {\r
33           step = window;\r
34         }\r
35 \r
36         if (window < 2) {\r
37            window = 2;\r
38            step = 1;\r
39         }\r
40 \r
41         int cpgstart = start;\r
42         int cpgend   = end;\r
43 \r
44         if (cpgstart <= window/2 ) {\r
45             cpgstart = window/2;\r
46         }\r
47         if (cpgend+window/2 >= length) {\r
48             cpgend = length-window/2;\r
49         }\r
50 \r
51         Hashtable vals = AAFrequency.findKmerCount(seq,cpgstart,cpgend,window,step,av.getKmers());\r
52 \r
53         Enumeration en = vals.keys();\r
54 \r
55         Vector valset = new Vector();\r
56 \r
57         while (en.hasMoreElements()) {\r
58             valset.add((Integer)en.nextElement());\r
59         }\r
60         Collections.sort(valset);\r
61 \r
62         g.setColor(Color.black);\r
63 \r
64         int j = 0;\r
65 \r
66         while (j < valset.size()) {\r
67 \r
68             Integer posInt = (Integer)valset.elementAt(j);\r
69             int     count  = ((Integer)vals.get(posInt)).intValue();\r
70             int     pos    = posInt.intValue();\r
71 \r
72             if (count > 40) {\r
73                g.setColor(Color.red);\r
74             } else {\r
75                g.setColor(Color.black);\r
76             }\r
77 \r
78             g.fillRect(x1 + (int)(width*(pos-start-width/2)),\r
79                        y1+height - (int)(count*height/max),\r
80                        (int)(step*width),\r
81                        (int)(count*height/max));\r
82 \r
83             j++;\r
84         }\r
85     }\r
86 \r
87 }\r