f3d6aed41f5b5db1382369ceaa7a4a595a00a886
[htsworkflow.git] / htswanalysis / scripts / CollectLibraries.pm
1 #!/usr/bin/perl -w
2
3 use strict;
4 use warnings;
5
6 my %libraries;
7
8 for my $filename (@ARGV) {
9   chomp $filename;
10
11   my $base_file = `basename $filename`;
12   chomp $base_file;
13   $base_file =~ /^(\d+)_(.+?)_s(\d+)_.+?([Ss][Ll]\d+)\.align_.*/;
14   my($date,$flowcell,$lanes,$lib) = ($1,$2,$3,$4);
15
16   open(COUNT,$filename.".count");
17   my $count = <COUNT>; chomp $count;
18   if(!defined($count)) { print STDERR $filename,"\n"; }
19   close(COUNT);
20
21   if(!defined($lib)) {
22     print STDERR "MISSING LIB: ", $filename,"\n"; 
23   }
24
25   if(!exists($libraries{$lib})) { my @a; $libraries{$lib} = \@a; }
26   push @{$libraries{$lib}}, "$flowcell\t$lanes\t$filename\t$count\t$date";
27 }
28
29   print "<?xml version=\"1.0\" ?>\n";
30   print "<Libraries>\n";
31
32   for my $lib (sort {$a =~ /[sS][lL](\d+)/; my $a1 = $1; $b =~ /[sS][lL](\d+)/; my $b1 = $1; $a1 <=> $b1} keys %libraries) {
33     print "<Library Name=\"$lib\">\n";
34     for my $data (@{$libraries{$lib}}) {
35       my($f,$l,$fn,$N,$D) = split(/\t/,$data);
36       print "<Track Flowcell=\"$f\" Lane=\"$l\" Filename=\"$fn\" Count=\"$N\" Date=\"$D\" />\n";
37     }
38     print "</Library>\n";
39   }
40
41   print "</Libraries>\n";
42