23 |
21 Oct 05 |
enell |
1 |
/* |
784 |
18 Sep 08 |
jari |
$Id$ |
784 |
18 Sep 08 |
jari |
3 |
|
784 |
18 Sep 08 |
jari |
Copyright (C) 2005 Johan Enell |
800 |
01 Oct 08 |
jari |
Copyright (C) 2008 Jari Häkkinen |
784 |
18 Sep 08 |
jari |
6 |
|
784 |
18 Sep 08 |
jari |
This file is part of the se.lu.onk.ReplicateError plug-in for |
784 |
18 Sep 08 |
jari |
BASE. Available at http://baseplugins.thep.lu.se/ and BASE web |
784 |
18 Sep 08 |
jari |
site is http://base.thep.lu.se |
784 |
18 Sep 08 |
jari |
10 |
|
784 |
18 Sep 08 |
jari |
This is free software; you can redistribute it and/or modify it |
784 |
18 Sep 08 |
jari |
under the terms of the GNU General Public License as published by |
784 |
18 Sep 08 |
jari |
the Free Software Foundation; either version 3 of the License, or |
784 |
18 Sep 08 |
jari |
(at your option) any later version. |
784 |
18 Sep 08 |
jari |
15 |
|
784 |
18 Sep 08 |
jari |
The software is distributed in the hope that it will be useful, but |
784 |
18 Sep 08 |
jari |
WITHOUT ANY WARRANTY; without even the implied warranty of |
784 |
18 Sep 08 |
jari |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
784 |
18 Sep 08 |
jari |
General Public License for more details. |
784 |
18 Sep 08 |
jari |
20 |
|
784 |
18 Sep 08 |
jari |
You should have received a copy of the GNU General Public License |
784 |
18 Sep 08 |
jari |
along with BASE. If not, see <http://www.gnu.org/licenses/>. |
784 |
18 Sep 08 |
jari |
23 |
*/ |
23 |
21 Oct 05 |
enell |
24 |
package replicateerror.AcrossAssays; |
23 |
21 Oct 05 |
enell |
25 |
|
23 |
21 Oct 05 |
enell |
26 |
import java.io.FileNotFoundException; |
23 |
21 Oct 05 |
enell |
27 |
import java.io.PrintStream; |
52 |
25 Nov 05 |
enell |
28 |
import java.util.ArrayList; |
52 |
25 Nov 05 |
enell |
29 |
import java.util.Collections; |
52 |
25 Nov 05 |
enell |
30 |
import java.util.Comparator; |
27 |
07 Nov 05 |
enell |
31 |
import java.util.List; |
23 |
21 Oct 05 |
enell |
32 |
|
23 |
21 Oct 05 |
enell |
33 |
public class HTML |
23 |
21 Oct 05 |
enell |
34 |
{ |
27 |
07 Nov 05 |
enell |
35 |
private static PrintStream plots; |
23 |
21 Oct 05 |
enell |
36 |
|
27 |
07 Nov 05 |
enell |
37 |
private static PrintStream table; |
23 |
21 Oct 05 |
enell |
38 |
|
27 |
07 Nov 05 |
enell |
39 |
private static PrintStream group; |
27 |
07 Nov 05 |
enell |
40 |
|
27 |
07 Nov 05 |
enell |
41 |
private static int cnt; |
23 |
21 Oct 05 |
enell |
42 |
|
30 |
08 Nov 05 |
enell |
43 |
private static String noGroup = ""; |
27 |
07 Nov 05 |
enell |
44 |
|
27 |
07 Nov 05 |
enell |
45 |
private static String groupTable = ""; |
52 |
25 Nov 05 |
enell |
46 |
|
52 |
25 Nov 05 |
enell |
47 |
private static List<TR> tableRows = new ArrayList<TR>(); |
27 |
07 Nov 05 |
enell |
48 |
|
43 |
21 Nov 05 |
enell |
49 |
public static void openPlotsTable(String center) |
23 |
21 Oct 05 |
enell |
50 |
{ |
23 |
21 Oct 05 |
enell |
51 |
try |
23 |
21 Oct 05 |
enell |
52 |
{ |
23 |
21 Oct 05 |
enell |
53 |
plots = new PrintStream("data/plots.html"); |
27 |
07 Nov 05 |
enell |
54 |
plots.println("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd\">"); |
23 |
21 Oct 05 |
enell |
55 |
plots.println("<html>"); |
23 |
21 Oct 05 |
enell |
56 |
plots.println("<head>"); |
23 |
21 Oct 05 |
enell |
57 |
plots.println("<title>Plots generated by ReplicateError</title>"); |
30 |
08 Nov 05 |
enell |
58 |
plots.println("<link rel=\"stylesheet\" type=\"text/css\" href=\"base.css\" />"); |
23 |
21 Oct 05 |
enell |
59 |
plots.println("</head>"); |
23 |
21 Oct 05 |
enell |
60 |
plots.println("<body>"); |
23 |
21 Oct 05 |
enell |
61 |
plots.println("<table>"); |
23 |
21 Oct 05 |
enell |
62 |
|
23 |
21 Oct 05 |
enell |
63 |
table = new PrintStream("data/table.html"); |
27 |
07 Nov 05 |
enell |
64 |
table.println("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd\">"); |
23 |
21 Oct 05 |
enell |
65 |
table.println("<html>"); |
23 |
21 Oct 05 |
enell |
66 |
table.println("<head>"); |
23 |
21 Oct 05 |
enell |
67 |
table.println("<title>Values generated by ReplicateError</title>"); |
30 |
08 Nov 05 |
enell |
68 |
table.println("<link rel=\"stylesheet\" type=\"text/css\" href=\"base.css\" />"); |
23 |
21 Oct 05 |
enell |
69 |
table.println("</head>"); |
23 |
21 Oct 05 |
enell |
70 |
table.println("<body>"); |
23 |
21 Oct 05 |
enell |
71 |
table.println("<table cellpadding=\"1\" cellspacing=\"2\" border=\"0\">"); |
23 |
21 Oct 05 |
enell |
72 |
table.println("<tr>"); |
23 |
21 Oct 05 |
enell |
73 |
table.println("<th> </th>"); |
30 |
08 Nov 05 |
enell |
74 |
table.println("<th class=\"subhead\" colspan=\"3\">Before</th>"); |
30 |
08 Nov 05 |
enell |
75 |
table.println("<th class=\"subhead\" colspan=\"3\">After</th>"); |
30 |
08 Nov 05 |
enell |
76 |
table.println("<th class=\"subhead\" colspan=\"2\"> </th>"); |
23 |
21 Oct 05 |
enell |
77 |
table.println("</tr>"); |
23 |
21 Oct 05 |
enell |
78 |
table.println("<tr>"); |
43 |
21 Nov 05 |
enell |
79 |
table.println("<th>Group name</th>"); |
43 |
21 Nov 05 |
enell |
80 |
table.println("<th>"+center+"</th>"); |
23 |
21 Oct 05 |
enell |
81 |
table.println("<th>SD</th>"); |
794 |
28 Sep 08 |
jari |
82 |
table.println("<th># replicates</th>"); |
43 |
21 Nov 05 |
enell |
83 |
table.println("<th>"+center+"</th>"); |
23 |
21 Oct 05 |
enell |
84 |
table.println("<th>SD</th>"); |
794 |
28 Sep 08 |
jari |
85 |
table.println("<th># replicates</th>"); |
30 |
08 Nov 05 |
enell |
86 |
table.println("<th># removed</th>"); |
30 |
08 Nov 05 |
enell |
87 |
table.println("<th>% removed</th>"); |
23 |
21 Oct 05 |
enell |
88 |
table.println("</tr>"); |
23 |
21 Oct 05 |
enell |
89 |
} |
23 |
21 Oct 05 |
enell |
90 |
catch (FileNotFoundException e) |
23 |
21 Oct 05 |
enell |
91 |
{ |
23 |
21 Oct 05 |
enell |
92 |
e.printStackTrace(); |
27 |
07 Nov 05 |
enell |
93 |
} |
23 |
21 Oct 05 |
enell |
94 |
} |
23 |
21 Oct 05 |
enell |
95 |
|
30 |
08 Nov 05 |
enell |
96 |
public static void addPlotsTable(String group, float meanBefore, float sdBefore, int nbrBefore, float meanAfter, float sdAfter, int nbrAfter) |
23 |
21 Oct 05 |
enell |
97 |
{ |
52 |
25 Nov 05 |
enell |
98 |
tableRows.add(new TR(group, meanBefore, sdBefore, nbrBefore, meanAfter, sdAfter, nbrAfter)); |
23 |
21 Oct 05 |
enell |
99 |
} |
23 |
21 Oct 05 |
enell |
100 |
|
27 |
07 Nov 05 |
enell |
101 |
public static void closePlotsTable() |
23 |
21 Oct 05 |
enell |
102 |
{ |
52 |
25 Nov 05 |
enell |
103 |
Collections.sort(tableRows, new Comparator<HTML.TR>() |
52 |
25 Nov 05 |
enell |
104 |
{ |
52 |
25 Nov 05 |
enell |
105 |
|
52 |
25 Nov 05 |
enell |
106 |
public int compare(TR t1, TR t2) |
52 |
25 Nov 05 |
enell |
107 |
{ |
52 |
25 Nov 05 |
enell |
108 |
int r1 = t1.getNbrAfter() - t1.getNbrBefore(); |
52 |
25 Nov 05 |
enell |
109 |
int r2 = t2.getNbrAfter() - t2.getNbrBefore(); |
52 |
25 Nov 05 |
enell |
110 |
|
52 |
25 Nov 05 |
enell |
111 |
return r2 - r1; |
52 |
25 Nov 05 |
enell |
112 |
} |
52 |
25 Nov 05 |
enell |
113 |
}); |
52 |
25 Nov 05 |
enell |
114 |
|
52 |
25 Nov 05 |
enell |
115 |
for(int i = 0; i < tableRows.size(); i++) |
52 |
25 Nov 05 |
enell |
116 |
{ |
52 |
25 Nov 05 |
enell |
117 |
TR tr = tableRows.get(i); |
52 |
25 Nov 05 |
enell |
118 |
plots.printf("<tr id=\"%1$s\"><th align=\"left\" colspan=\"2\">%1$s</th></tr>%n", tr.getGroup()); |
52 |
25 Nov 05 |
enell |
119 |
plots.printf("<tr><td><div style=\"width:960px;height:480px\">" + |
52 |
25 Nov 05 |
enell |
120 |
"<img alt=\"\" src=\"./%1$s.png\" /><img alt=\"\" src=\"./%1$sfreq.png\" /></div></td></tr>%n", tr.getGroup()); |
52 |
25 Nov 05 |
enell |
121 |
|
52 |
25 Nov 05 |
enell |
122 |
table.printf("<tr class=\"%1$s\"><td><a href=\"plots.html#%2$s\">%2$s</a></td>%n", i % 2 == 0 ? "row1" : "row2", tr.getGroup()); |
52 |
25 Nov 05 |
enell |
123 |
table.printf("<td>%3.3f</td><td>%3.3f</td><td>%d</td>", tr.getMeanBefore(), tr.getSdBefore(), tr.getNbrBefore()); |
52 |
25 Nov 05 |
enell |
124 |
table.printf("<td>%3.3f</td><td>%3.3f</td><td>%d</td>", tr.getMeanAfter(), tr.getSdAfter(), tr.getNbrAfter()); |
52 |
25 Nov 05 |
enell |
125 |
table.printf("<td>%d</td><td>%3.2f</td></tr>%n", tr.getNbrBefore()-tr.getNbrAfter(), 100f*(tr.getNbrBefore()-tr.getNbrAfter())/(tr.getNbrBefore())); |
52 |
25 Nov 05 |
enell |
126 |
} |
52 |
25 Nov 05 |
enell |
127 |
|
23 |
21 Oct 05 |
enell |
128 |
plots.println("</table>"); |
23 |
21 Oct 05 |
enell |
129 |
plots.println("</body>"); |
23 |
21 Oct 05 |
enell |
130 |
plots.println("</html>"); |
23 |
21 Oct 05 |
enell |
131 |
plots.close(); |
23 |
21 Oct 05 |
enell |
132 |
|
23 |
21 Oct 05 |
enell |
133 |
table.println("</table>"); |
794 |
28 Sep 08 |
jari |
134 |
table.println("<table width=500>"); |
796 |
01 Oct 08 |
jari |
135 |
table.print("<tr><td>SD is the standard deviation of the log2ratio "); |
796 |
01 Oct 08 |
jari |
136 |
table.println("difference between replicates.</td></tr>"); |
794 |
28 Sep 08 |
jari |
137 |
table.print("<tr><td><strong>Note:</strong> Numbers presented "); |
796 |
01 Oct 08 |
jari |
138 |
table.print("here differ from the numbers shown in the bioassay listings. The table "); |
796 |
01 Oct 08 |
jari |
139 |
table.print("above display number of replicates in each bioassay whereas <br> i) "); |
796 |
01 Oct 08 |
jari |
140 |
table.print("bioassay set listings show total number of spots and reporters for "); |
796 |
01 Oct 08 |
jari |
141 |
table.print("bioassay sets, and <br> ii) bioassay listings show the total number of "); |
796 |
01 Oct 08 |
jari |
142 |
table.println("spots in each bioassay.</td></tr></table>"); |
23 |
21 Oct 05 |
enell |
143 |
table.println("</body>"); |
23 |
21 Oct 05 |
enell |
144 |
table.println("</html>"); |
23 |
21 Oct 05 |
enell |
145 |
table.close(); |
23 |
21 Oct 05 |
enell |
146 |
} |
27 |
07 Nov 05 |
enell |
147 |
|
27 |
07 Nov 05 |
enell |
148 |
public static void openGroup() |
27 |
07 Nov 05 |
enell |
149 |
{ |
27 |
07 Nov 05 |
enell |
150 |
try |
27 |
07 Nov 05 |
enell |
151 |
{ |
27 |
07 Nov 05 |
enell |
152 |
cnt = 0; |
27 |
07 Nov 05 |
enell |
153 |
group = new PrintStream("data/group.html"); |
27 |
07 Nov 05 |
enell |
154 |
group.println("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd\">"); |
27 |
07 Nov 05 |
enell |
155 |
group.println("<html>"); |
27 |
07 Nov 05 |
enell |
156 |
group.println("<head>"); |
27 |
07 Nov 05 |
enell |
157 |
group.println("<title>Plots generated by ReplicateError</title>"); |
30 |
08 Nov 05 |
enell |
158 |
group.println("<link rel=\"stylesheet\" type=\"text/css\" href=\"base.css\" />"); |
27 |
07 Nov 05 |
enell |
159 |
group.println("</head>"); |
27 |
07 Nov 05 |
enell |
160 |
group.println("<body>"); |
27 |
07 Nov 05 |
enell |
161 |
group.println("<table>"); |
27 |
07 Nov 05 |
enell |
162 |
} |
27 |
07 Nov 05 |
enell |
163 |
catch (FileNotFoundException e) |
27 |
07 Nov 05 |
enell |
164 |
{ |
27 |
07 Nov 05 |
enell |
165 |
e.printStackTrace(); |
27 |
07 Nov 05 |
enell |
166 |
} |
27 |
07 Nov 05 |
enell |
167 |
} |
27 |
07 Nov 05 |
enell |
168 |
|
27 |
07 Nov 05 |
enell |
169 |
public static void addGroup(String groupName, List<String> assayNames) |
27 |
07 Nov 05 |
enell |
170 |
{ |
52 |
25 Nov 05 |
enell |
171 |
groupTable += "<tr bgcolor=\""+(tableRows.size() % 2 == 0 ? "#e0e0e0" : "#cecece")+"\">"; |
52 |
25 Nov 05 |
enell |
172 |
groupTable += "<td><a href=\"plots.html#"+groupName+"\">"+groupName+"</a></td><td>"+assayNames.get(0); |
27 |
07 Nov 05 |
enell |
173 |
for (int i = 1; i < assayNames.size(); i++) |
27 |
07 Nov 05 |
enell |
174 |
{ |
27 |
07 Nov 05 |
enell |
175 |
groupTable += "<br/>"+assayNames.get(i); |
27 |
07 Nov 05 |
enell |
176 |
} |
27 |
07 Nov 05 |
enell |
177 |
groupName += "</td></tr>\n"; |
27 |
07 Nov 05 |
enell |
178 |
cnt++; |
27 |
07 Nov 05 |
enell |
179 |
} |
27 |
07 Nov 05 |
enell |
180 |
|
30 |
08 Nov 05 |
enell |
181 |
public static void addGroupNoGroup(String s) |
27 |
07 Nov 05 |
enell |
182 |
{ |
30 |
08 Nov 05 |
enell |
183 |
noGroup += "<tr><td align=\"left\" colspan=\"2\">"+s+"</td></tr>\n"; |
27 |
07 Nov 05 |
enell |
184 |
} |
27 |
07 Nov 05 |
enell |
185 |
|
27 |
07 Nov 05 |
enell |
186 |
public static void closeGroup() |
27 |
07 Nov 05 |
enell |
187 |
{ |
43 |
21 Nov 05 |
enell |
188 |
if (groupTable.length() > 0) |
43 |
21 Nov 05 |
enell |
189 |
{ |
43 |
21 Nov 05 |
enell |
190 |
group.println("<tr><th align=\"left\" colspan=\"2\">Replicates</th></tr>"); |
43 |
21 Nov 05 |
enell |
191 |
group.print(groupTable); |
43 |
21 Nov 05 |
enell |
192 |
} |
30 |
08 Nov 05 |
enell |
193 |
if (noGroup.length() > 0) |
30 |
08 Nov 05 |
enell |
194 |
{ |
30 |
08 Nov 05 |
enell |
195 |
group.println("<tr><th align=\"left\" colspan=\"2\">No Group</th></tr>"); |
30 |
08 Nov 05 |
enell |
196 |
group.print(noGroup); |
30 |
08 Nov 05 |
enell |
197 |
} |
27 |
07 Nov 05 |
enell |
198 |
|
27 |
07 Nov 05 |
enell |
199 |
group.println("</table>"); |
27 |
07 Nov 05 |
enell |
200 |
group.println("</body>"); |
27 |
07 Nov 05 |
enell |
201 |
group.println("</html>"); |
27 |
07 Nov 05 |
enell |
202 |
group.close(); |
30 |
08 Nov 05 |
enell |
203 |
groupTable = ""; |
30 |
08 Nov 05 |
enell |
204 |
noGroup = ""; |
27 |
07 Nov 05 |
enell |
205 |
} |
52 |
25 Nov 05 |
enell |
206 |
|
52 |
25 Nov 05 |
enell |
207 |
private static class TR |
52 |
25 Nov 05 |
enell |
208 |
{ |
52 |
25 Nov 05 |
enell |
209 |
private final String group; |
52 |
25 Nov 05 |
enell |
210 |
private final float meanBefore; |
52 |
25 Nov 05 |
enell |
211 |
private final float sdBefore; |
52 |
25 Nov 05 |
enell |
212 |
private final int nbrBefore; |
52 |
25 Nov 05 |
enell |
213 |
private final float meanAfter; |
52 |
25 Nov 05 |
enell |
214 |
private final float sdAfter; |
52 |
25 Nov 05 |
enell |
215 |
private final int nbrAfter; |
52 |
25 Nov 05 |
enell |
216 |
|
52 |
25 Nov 05 |
enell |
217 |
public TR(String group, float meanBefore, float sdBefore, int nbrBefore, float meanAfter, float sdAfter, int nbrAfter) |
52 |
25 Nov 05 |
enell |
218 |
{ |
52 |
25 Nov 05 |
enell |
219 |
this.group = group; |
52 |
25 Nov 05 |
enell |
220 |
this.meanBefore = meanBefore; |
52 |
25 Nov 05 |
enell |
221 |
this.sdBefore = sdBefore; |
52 |
25 Nov 05 |
enell |
222 |
this.nbrBefore = nbrBefore; |
52 |
25 Nov 05 |
enell |
223 |
this.meanAfter = meanAfter; |
52 |
25 Nov 05 |
enell |
224 |
this.sdAfter = sdAfter; |
52 |
25 Nov 05 |
enell |
225 |
this.nbrAfter = nbrAfter; |
52 |
25 Nov 05 |
enell |
226 |
} |
52 |
25 Nov 05 |
enell |
227 |
|
52 |
25 Nov 05 |
enell |
228 |
public final String getGroup() |
52 |
25 Nov 05 |
enell |
229 |
{ |
52 |
25 Nov 05 |
enell |
230 |
return group; |
52 |
25 Nov 05 |
enell |
231 |
} |
52 |
25 Nov 05 |
enell |
232 |
|
52 |
25 Nov 05 |
enell |
233 |
public final float getMeanAfter() |
52 |
25 Nov 05 |
enell |
234 |
{ |
52 |
25 Nov 05 |
enell |
235 |
return meanAfter; |
52 |
25 Nov 05 |
enell |
236 |
} |
52 |
25 Nov 05 |
enell |
237 |
|
52 |
25 Nov 05 |
enell |
238 |
public final float getMeanBefore() |
52 |
25 Nov 05 |
enell |
239 |
{ |
52 |
25 Nov 05 |
enell |
240 |
return meanBefore; |
52 |
25 Nov 05 |
enell |
241 |
} |
52 |
25 Nov 05 |
enell |
242 |
|
52 |
25 Nov 05 |
enell |
243 |
public final int getNbrAfter() |
52 |
25 Nov 05 |
enell |
244 |
{ |
52 |
25 Nov 05 |
enell |
245 |
return nbrAfter; |
52 |
25 Nov 05 |
enell |
246 |
} |
52 |
25 Nov 05 |
enell |
247 |
|
52 |
25 Nov 05 |
enell |
248 |
public final int getNbrBefore() |
52 |
25 Nov 05 |
enell |
249 |
{ |
52 |
25 Nov 05 |
enell |
250 |
return nbrBefore; |
52 |
25 Nov 05 |
enell |
251 |
} |
52 |
25 Nov 05 |
enell |
252 |
|
52 |
25 Nov 05 |
enell |
253 |
public final float getSdAfter() |
52 |
25 Nov 05 |
enell |
254 |
{ |
52 |
25 Nov 05 |
enell |
255 |
return sdAfter; |
52 |
25 Nov 05 |
enell |
256 |
} |
52 |
25 Nov 05 |
enell |
257 |
|
52 |
25 Nov 05 |
enell |
258 |
public final float getSdBefore() |
52 |
25 Nov 05 |
enell |
259 |
{ |
52 |
25 Nov 05 |
enell |
260 |
return sdBefore; |
52 |
25 Nov 05 |
enell |
261 |
} |
52 |
25 Nov 05 |
enell |
262 |
} |
23 |
21 Oct 05 |
enell |
263 |
} |