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