9593c8940ba4e984fe08c7ca3fc33225fc543a03
[htsworkflow.git] / htswanalysis / scripts / WriteQCSummary.pm
1 #!/usr/bin/perl -w
2
3 use strict;
4 use warnings;
5
6 use XML::Simple;
7
8 my $library_info = shift;
9 my $xml = XMLin($library_info, ForceArray => 1);
10
11 my %num_align;
12
13 my $qpcr_filename = shift;
14 open(QPCR,$qpcr_filename);
15
16 my %qpcr_sum;
17
18 while(<QPCR>) {
19   chomp;
20   my($lane,$factor,$enrich) = split(/ /,$_);
21   my $line2 = <QPCR>; chomp $line2;
22   my($lane2,$factor2,$enrich2) = split(/ /,$line2);
23    
24   next if(!defined($enrich));
25
26   my @a = split(/\//,$factor);
27   $factor = $a[scalar(@a)-1];
28   @a = split(/\//,$factor2);
29   $factor2 = $a[scalar(@a)-1];
30
31   my $bgcolor;
32   if($enrich < 2) { $bgcolor = "FF6600"; }
33   elsif($enrich< 5) { $bgcolor = "FFCC33"; }
34   elsif($enrich< 10) { $bgcolor = "00CCFF"; }
35   elsif($enrich eq "nan") { $bgcolor = "FFFFFF"; }
36   else { $bgcolor = "66FF66"; }
37
38   $lane =~ /^(\d\d\d\d\d\d)_(.+?)_s(\d+)_(.+?)\.align_\d+\.(.+?)\.txt\.qPCR$/;
39   my($date,$fc,$lanes,$name,$genome) = ($1,$2,$3,$4,$5,$6);
40
41   $qpcr_sum{$lanes}{'best'} = $factor;
42   $qpcr_sum{$lanes}{'enrich'} = $enrich;
43   $qpcr_sum{$lanes}{'bgcolor'} = $bgcolor;
44
45   $qpcr_sum{$lanes}{'best2'} = $factor2;
46   $qpcr_sum{$lanes}{'enrich2'} = $enrich2;
47   $qpcr_sum{$lanes}{'bgcolor2'} = $bgcolor;
48 }
49
50 for my $i (0..scalar(@{$xml->{Library}})-1) {
51   my $lib = $xml->{Library}->[$i]->{Name};
52   for my $t (0..scalar(@{$xml->{Library}->[$i]->{Track}})-1) {
53     my $N = scalar(@{$xml->{Library}->[$i]->{Track}});
54     my($date,$fc,$lane,$desc);
55     my $filename = $xml->{Library}->[$i]->{Track}->[$t]->{Filename};
56     $filename =~ /^(\d+)_(.+?)_s(\d+)_(.+?)_$lib.align/;
57     ($date,$fc,$lane,$desc) = ($1,$2,$3,$4);
58     my $num_reads = $xml->{Library}->[$i]->{Track}->[$t]->{Count};
59
60     my $bgcolor;
61     if($num_reads < 3000000) { $bgcolor = "FF3300"; }
62     elsif($num_reads < 5000000) { $bgcolor = "FFCC33"; }
63     elsif($num_reads < 10000000) { $bgcolor = "00CCFF"; }
64     else { $bgcolor = "66FF66"; }
65
66     $num_align{$lane}{'num'} = $num_reads;
67     $num_align{$lane}{'bgcolor'} = $bgcolor;
68   }
69 }
70   
71 print "<TABLE BORDER=1>";
72 print "<TR><TD><EM>Lane\(s\)</EM></TD><TD><EM>Lib</EM></TD><TD><EM>Library Name</EM></TD><TD><EM>Aligned Reads</EM></TD><TD><EM>qPCR Factor</EM></TD><TD><EM>Fold enr.</EM></TD><TD><EM>Profile at TSS</EM></TD><TD>IVC Calls</TD></TR>\n";
73
74 my @files = `ls -1 *.align_??.*.txt.profile.png`;
75 for my $file (@files) {
76   $file =~ /(\d\d\d\d\d\d)_(.+?)_s(\d+)_(.+?)_([Ss][Ll]\d+)/;
77   my($date,$fc,$lanes,$libname,$lib) = ($1,$2,$3,$4,$5);
78   my $lane = substr($lanes,0,1);
79   print "<TR>\n";
80   print "<TD>$lanes</TD>";
81   print "<TD>$lib</TD>\n";
82   print "<TD>$libname</TD>\n";
83   printf "<TD BGCOLOR=#%s>%0.2fM</TD>\n",$num_align{$lanes}{'bgcolor'},$num_align{$lanes}{'num'}/1000000.0;
84   printf "<TD BGCOLOR=#%s>%s</TD><TD BGCOLOR=#%s>%0.2f<BR>%0.2f</TD>\n",$qpcr_sum{$lanes}{'bgcolor'},$qpcr_sum{$lanes}{'best'}."<BR>".$qpcr_sum{$lanes}{'best2'},$qpcr_sum{$lanes}{'bgcolor'},$qpcr_sum{$lanes}{'enrich'},$qpcr_sum{$lanes}{'enrich2'};
85   print "<TD><OBJECT DATA=\"",`basename $file`,"\" WIDTH=\"300\" HEIGHT=\"300\"></OBJECT></TD>";
86   print "<TD><IMG SRC=\"",$date,"_",$fc,"_s",$lanes,"_",$libname,"_",$lib,".percent_base.png\" WIDTH=\"300\" HEIGHT=\"300\"></TD>";
87   print "</TR>\n";
88 }
89 print "</TABLE>\n";
90
91 print "</BODY></HTML>\n";