Bug-fixes in sequence repository code and projects code
[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; $count =~ s/\s//g;
18   if(!defined($count)) { print STDERR $filename,"\n"; }
19   close(COUNT);
20
21   if(!defined($lib)) {
22     print STDERR "MISSING LIB: ", $filename,"\n"; 
23     next;
24   }
25
26   if(!exists($libraries{$lib})) { my @a; $libraries{$lib} = \@a; }
27   push @{$libraries{$lib}}, "$flowcell\t$lanes\t$filename\t$count\t$date";
28 }
29
30   print "<?xml version=\"1.0\" ?>\n";
31   print "<Libraries>\n";
32
33   for my $lib (sort {$a =~ /[sS][lL](\d+)/; my $a1 = $1; $b =~ /[sS][lL](\d+)/; my $b1 = $1; $a1 <=> $b1} keys %libraries) {
34     print "<Library Name=\"$lib\">\n";
35     for my $data (@{$libraries{$lib}}) {
36       my($f,$l,$fn,$N,$D) = split(/\t/,$data);
37       print "<Track Flowcell=\"$f\" Lane=\"$l\" Filename=\"$fn\" Count=\"$N\" Date=\"$D\" />\n";
38     }
39     print "</Library>\n";
40   }
41
42   print "</Libraries>\n";
43