plugins/base1/se.lu.onk.ReplicateError/trunk/src/replicateerror/AcrossAssays/HTML.java

Code
Comments
Other
Rev Date Author Line
23 21 Oct 05 enell 1 /*
784 18 Sep 08 jari 2   $Id$
784 18 Sep 08 jari 3
784 18 Sep 08 jari 4   Copyright (C) 2005 Johan Enell
800 01 Oct 08 jari 5   Copyright (C) 2008 Jari Häkkinen
784 18 Sep 08 jari 6
784 18 Sep 08 jari 7   This file is part of the se.lu.onk.ReplicateError plug-in for
784 18 Sep 08 jari 8   BASE. Available at http://baseplugins.thep.lu.se/ and BASE web
784 18 Sep 08 jari 9   site is http://base.thep.lu.se
784 18 Sep 08 jari 10
784 18 Sep 08 jari 11   This is free software; you can redistribute it and/or modify it
784 18 Sep 08 jari 12   under the terms of the GNU General Public License as published by
784 18 Sep 08 jari 13   the Free Software Foundation; either version 3 of the License, or
784 18 Sep 08 jari 14   (at your option) any later version.
784 18 Sep 08 jari 15
784 18 Sep 08 jari 16   The software is distributed in the hope that it will be useful, but
784 18 Sep 08 jari 17   WITHOUT ANY WARRANTY; without even the implied warranty of
784 18 Sep 08 jari 18   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
784 18 Sep 08 jari 19   General Public License for more details.
784 18 Sep 08 jari 20
784 18 Sep 08 jari 21   You should have received a copy of the GNU General Public License
784 18 Sep 08 jari 22   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>&nbsp;</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\">&nbsp;</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 }