annotate copyNextSeq.pl @ 0:d4ac6e05c96c default tip

initial commit
author Yusuf Ali <ali@yusuf.email>
date Wed, 25 Mar 2015 13:43:47 -0600
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
1 #!/usr/bin/perl
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
2 use strict;
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
3 use warnings;
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
4 use Getopt::Long;
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
5 use File::Find;
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
6 use File::Basename;
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
7 use vars qw(@fastq_files);
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
8
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
9 my $dirname = dirname(__FILE__);
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
10 my $pythonScript = "$dirname/rgFastQC.py";
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
11 my $tool_dir = shift @ARGV;
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
12 my $pythonJars = "$tool_dir/shared/jars/FastQC/fastqc";
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
13
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
14 # Site config
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
15 my $num_threads = 32;
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
16 my $fastq_sample_size = 400000;
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
17 my $seq_host = "10.81.192.138";
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
18 my $seq_username = "nextseq-user";
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
19 my $seq_dir = "Desktop/Share";
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
20
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
21 #get localdir
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
22 if(not -e "$tool_dir/transfer_convert_nextseq.loc"){
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
23 system("cat $dirname/tool-data/transfer_convert_nextseq.loc > $tool_dir/transfer_convert_nextseq.loc");
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
24 }
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
25 open FILE, "$tool_dir/transfer_convert_nextseq.loc" or die "Could not open configuration file: $!\n";
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
26 my @keys = split("=",<FILE>);
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
27 (my $local_dir = $keys[$#keys]) =~s/\s+//g;
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
28 close FILE;
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
29
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
30 # store arguments into variables
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
31 my $runName;
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
32 my $sampleSheet;
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
33 my $user;
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
34 my $accessFile;
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
35 my $outDir;
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
36 my $htmlFile;
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
37 my $archiveFile;
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
38
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
39 GetOptions ("run=s" => \$runName,
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
40 "samplesheet=s" => \$sampleSheet,
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
41 "user=s" => \$user,
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
42 "toolDir=s" => \$accessFile,
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
43 "out=s" => \$outDir,
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
44 "html=s" => \$htmlFile,
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
45 "archive=s" => \$archiveFile);
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
46
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
47 if(not defined $runName or not defined $sampleSheet or not defined $user or not defined $accessFile or not defined $outDir or not defined $htmlFile){
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
48 die "Usage: $0 -run <unique_suffix> -samplesheet <illumina.csv> -user <user\@domain in nextseq_access.conf> -toolDir <galaxy tool conf dir> ",
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
49 "-out <output dir for FASTQC report> -html <FASTQC report file name> -archive <SAV files.zip>\n";
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
50 }
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
51
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
52 $accessFile = "$accessFile/nextseq_access.conf";
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
53
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
54 # create access file if not already there
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
55 my $command = `touch $accessFile`;
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
56 open my $handle, '<', "$accessFile";
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
57 chomp(my @allowed_users = <$handle>);
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
58
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
59 $runName = quotemeta($runName);
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
60
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
61 my ($out_file, $out_path, $out_ext ) = fileparse( $htmlFile, "\.[^.]*" );
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
62
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
63 # check to make sure $user is allowed to run script
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
64 if (! ($user ~~ @allowed_users) ){
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
65 die "Please ask the administrator to add $user to $accessFile in order to gain access to this tool\n";
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
66 }
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
67
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
68 # First, sanity check the sample file
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
69 open(CSV, $sampleSheet)
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
70 or die "Cannot open $sampleSheet for reading: $!\n";
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
71 undef $/; # slurp up whole file at once by undefining record separator
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
72 my @CSV = split /\r?\n/, <CSV>; # allow different endings
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
73 close(CSV);
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
74 $/="\n"; # restore normal per-line reading
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
75 my ($has_header, $has_reads, $has_data);
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
76 for(@CSV){
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
77 if(/^\[Header\]/){
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
78 $has_header = 1;
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
79 }
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
80 elsif(/^\[Reads\]/){
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
81 $has_reads = 1;
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
82 }
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
83 elsif(/^\[Data\]/){
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
84 $has_data = 1;
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
85 }
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
86 }
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
87 if(not defined $has_header){
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
88 die "Header section is missing in sample sheet, please fix and resubmit this job\n";
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
89 }
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
90 if(not defined $has_reads){
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
91 die "Reads section is missing in sample sheet, please fix and resubmit this job\n";
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
92 }
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
93 if(not defined $has_data){
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
94 die "Data section is missing in sample sheet, please fix and resubmit this job\n";
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
95 }
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
96
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
97 # Expand the catridge ID into the full run name on the remote host, input should look something like "H35VJBGXX"
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
98 open(SSH, "ssh $seq_username\@$seq_host ls -1 $seq_dir |")
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
99 or die "Could not run ssh login to $seq_host: $!\n";
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
100 my @matchOptions;
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
101 my @mismatchOptions;
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
102 while(<SSH>){
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
103 chomp;
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
104 if(/$runName/o){
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
105 push @matchOptions, $_;
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
106 }
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
107 else{
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
108 push @mismatchOptions, $_;
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
109 }
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
110 }
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
111 close(SSH);
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
112 if(not @matchOptions){
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
113 if(not @mismatchOptions){
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
114 die "There was no data found on the rempote server at all, please ask the administrator to ",
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
115 "check this tool's setup (currently checking $seq_username\@$seq_host:$seq_dir)\n";
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
116 }
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
117 # Keep only the ones not already uploaded as options
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
118 @mismatchOptions = grep {not -e "$local_dir/$_"} @mismatchOptions;
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
119 die "No run folder matching $runName was found at $seq_username\@$seq_host:$seq_dir, please try with another ",
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
120 "run name. The following would work currently: ", join(", ", @mismatchOptions), "\n";
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
121 }
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
122 elsif(@matchOptions > 1){
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
123 die "Ambiguous run name specification, please revise \"$runName\" to distinguish between existing datasets: ",
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
124 join(", ", @matchOptions), "\n";
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
125 }
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
126 my $expandedRunName = $matchOptions[0]; # unambiguous, so proceed
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
127
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
128 # if sample already exits as a folder, die
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
129 if(-e "$local_dir/$expandedRunName"){
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
130 # die "Run $expandedRunName already exists on galaxy ($local_dir/$expandedRunName), cannot copy over\n";
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
131 }
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
132 # if not, copy to folder
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
133 else{
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
134 # system("scp -r $seq_username\@$seq_host\:$seq_dir/$expandedRunName $local_dir") >> 8 and die "Failed to copy from $seq_host to galaxy: scp exit status $?\n";
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
135 }
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
136
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
137 # Put the sample sheet where it needs to be with the transfered data
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
138 open(CSV, ">$local_dir/$expandedRunName/SampleSheet.csv")
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
139 or die "Cannot open $local_dir/$expandedRunName/SampleSheet.csv for writing: $!\nThe data files have been transfered, but no BCL to FASTQ conversion has taken place.\n";
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
140 print CSV join("\n", @CSV);
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
141 close(CSV);
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
142
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
143 # convert bcl files to fastq
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
144 #system("cd $local_dir/$expandedRunName; /export/common/programs/bcl2fastq/bin/bcl2fastq -r $num_threads -d $num_threads -p $num_threads -w $num_threads")>>8
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
145 # and die "BCL to FASTQ conversion had non-zero exit status ($?). The BCL files were transfered, but FASTQ files were not generated.\n";
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
146
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
147 # Find the FASTQ files generated
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
148 find(sub{push @fastq_files, $File::Find::name if /\.fastq.gz$/}, "$local_dir/$expandedRunName");
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
149
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
150 # Run FASTQC on sample of data from each lane/barcode
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
151 # open output file and write html
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
152 open(OUTFILE, ">$htmlFile")
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
153 or die "Cannot open $htmlFile for writing: $!\n";
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
154 print OUTFILE "<html><body><h1>Barcodes</h1>";
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
155 system("mkdir -p $outDir");
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
156
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
157 # generate html plot using python tool
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
158 $SIG{'PIPE'} = 'IGNORE';
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
159 my $cwd = dirname(__FILE__);
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
160 foreach my $file (@fastq_files){
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
161 my ($barcode, $path, $ext ) = fileparse( $file, "\.fastq\.gz" );
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
162 my $cmd = "gzip -cd $file | head -n $fastq_sample_size | python $pythonScript -i /dev/stdin "
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
163 . "-d $outDir/$barcode/. "
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
164 . "-o fastqc_report.html "
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
165 . "-n \"FASTQC $barcode\" "
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
166 . "-f \"FASTQ\" "
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
167 . "-j \"$barcode$ext\" "
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
168 . "-e $pythonJars";
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
169 # Assumes the bash shell is being used
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
170 open(CMD, "trap '' SIGPIPE; $cmd 2| grep -v \"Broken pipe\" |")
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
171 or die "Cannot run FASTQC: $!\n";
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
172 while(<CMD>){
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
173 # Can safely ignore blank lines and SIGPIPE warnings
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
174 next if /^\s*$/ or /Broken pipe/;
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
175 print STDERR $_; # forward any other errors
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
176 }
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
177 close(CMD);
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
178 system("perl -i.bak -pe \"s/>FastQC Report</>FastQC Report<div><a href='..\\/index.html'>Back to Table of Contents<\\\/a><\\\/div></;s/Images|Icons/./\" $outDir/$barcode/fastqc_report.html");
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
179 system("unzip -o -d $outDir/$barcode -qq -j $outDir/$barcode/$barcode\_fastqc.zip $barcode\_fastqc/Icons/*.png");
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
180 # append to html file
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
181 print OUTFILE "<div><a href='$barcode/fastqc_report.html'>$barcode</a></div>";
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
182 }
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
183
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
184
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
185 print OUTFILE "</body></html>";
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
186 close(OUTFILE);
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
187 system("cp $htmlFile $outDir/index.html");
d4ac6e05c96c initial commit
Yusuf Ali <ali@yusuf.email>
parents:
diff changeset
188 system("cd $local_dir/$expandedRunName; rm $archiveFile; zip -r $archiveFile RunInfo.xml RunParameters.xml InterOp -q");