9 my $standalone = shift;
26 if(defined($standalone)) { print "<HTML><HEAD><TITLE>Sequencing Summary</TITLE></HEAD><BODY>\n"; }
29 my $summary = SummarizeLibrary($filename);
31 printf ("<H1>Solexa Sequencing Summary</H1><H2>Over %0.2f Billion Bases (%0.2f Human Genomes) Served</H2>\n",25*$total_reads/1e9,25*$total_reads/3.3e9);
35 if(defined($standalone)) { print "</BODY></HTML>\n"; }
37 sub SummarizeLibrary {
39 my $xml = XMLin($xml_file, ForceArray => 1);
43 $summary .= "<TABLE BORDER=1><TR><TD><EM>Library</EM></TD><TD><EM>Name</EM></TD><TD><EM>Num Lanes</EM></TD><TD><EM>Num Reads</EM></TD><TD><EM>First Lane</EM></TD><TD><EM>Most Recent Lane</EM></TD><TD><EM>Qtr. Start</EM></TD><TD><EM>Qtr. Complete</EM></TD></TR>\n";
45 for my $x (0..scalar(@{$xml->{Library}})-1) {
46 my $i = scalar(@{$xml->{Library}})-1-$x;
47 my $lib = $xml->{Library}->[$i]->{Name};
48 my $N = scalar(@{$xml->{Library}->[$i]->{Track}});
49 my($date,$fc,$lane,$desc);
53 my($start_date,$end_date);
55 my $filename = `basename $xml->{Library}->[$i]->{Track}->[$t]->{Filename}`;
56 $filename =~ /^(\d+)_(.+?)_s(\d+)_(.+?)_$lib.align/;
57 ($date,$fc,$lane,$desc) = ($1,$2,$3,$4);
58 $num_lanes += length($lane);
59 $num_reads += $xml->{Library}->[$i]->{Track}->[$t]->{Count};
60 if(!defined($start_date)) {
65 if($date < $start_date) { $start_date = $date; }
66 if($date > $end_date) { $end_date = $date; }
70 if($num_reads < 3000000) { $bgcolor = "FF3300"; }
71 elsif($num_reads < 5000000) { $bgcolor = "FFCC33"; }
72 elsif($num_reads < 10000000) { $bgcolor = "00CCFF"; }
73 else { $bgcolor = "66FF66"; }
75 $total_reads += $num_reads;
77 $start_date =~ /(\d\d)(\d\d)(\d\d)/;
78 my $start_year = 2000+$1; my $start_mo_d = int($2); my $start_mo = $month{$start_mo_d}; my $start_day = $3;
79 my $start_q; my $start_color; if($start_mo_d <= 3) { $start_q = "Q1, $start_year"; $start_color = "#66FFFF"; } elsif($start_mo_d <= 6) { $start_q = "Q2, $start_year";$start_color = "#FFFF66"; } elsif($start_mo_d <= 9) { $start_q = "Q3, $start_year"; $start_color = "#FF66FF"; } else { $start_q = "Q4, $start_year"; $start_color = "#DEDEDE"; }
81 $end_date =~ /(\d\d)(\d\d)(\d\d)/;
82 my $end_year = 2000+$1; my $end_mo_d = int($2); my $end_mo = $month{$end_mo_d}; my $end_day = $3;
83 my $end_q; my $end_color; if($end_mo_d <= 3) { $end_q = "Q1, $end_year"; $end_color = "#66FFFF"; } elsif($end_mo_d <= 6) { $end_q = "Q2, $end_year";$end_color = "#FFFF66"; } elsif($end_mo_d <= 9) { $end_q = "Q3, $end_year"; $end_color = "#FF66FF"; } else { $end_q = "Q4, $end_year"; $end_color = "#DEDEDE"; }
85 if($num_reads < 10000000) { $end_color = "#FFFFFF"; $end_q = ""; }
87 if($start_day == 0) { $start_day = 1; } if($end_day == 0) { $end_day = 1; }
88 $summary .= sprintf("<TR BGCOLOR=#%s><TD>%s</TD><TD>%s</TD><TD>%d</TD><TD>%0.2fM</TD><TD>%s %d, %d</TD><TD>%s %d, %d</TD><TD BGCOLOR=$start_color>$start_q</TD><TD BGCOLOR=$end_color>$end_q</TD></TR>\n",$bgcolor,$lib,$desc,$num_lanes,$num_reads/1000000.0,$start_mo,$start_day,$start_year,$end_mo,$end_day,$end_year);
91 $summary .= "</TABLE>\n";