https://github.com/CuppenResearch/IAP
Tip revision: 8231e0cfdf0b5c1f092ecf5062c1aa344800267a authored by rernst on 12 June 2015, 14:11:51 UTC
Merge branch 'hotfix-v1.2.4'
Merge branch 'hotfix-v1.2.4'
Tip revision: 8231e0c
illumina_prestats.pm
#!/usr/bin/perl -w
##################################################################################################################################################
###This script is designed to run FastQC on a set of fastq.gz files. Currently this script can only be run using the illumina_pipeline.pl script.
###In a later version I also plan to add per-sample summary PDFs, this is currrently not supported yet.
###
###Author: S.W.Boymans
###Latest change: Created first version
###
###TODO: Add system call actually firing jobs off
##################################################################################################################################################
package illumina_prestats;
use strict;
use POSIX qw(tmpnam);
sub runPreStats {
my $configuration = shift;
my %opt = %{$configuration};
my $jobIds = {};
my $mainJobID = "$opt{OUTPUT_DIR}/jobs/PreStatsMainJob_".get_job_id().".sh";
open (QSUB,">$mainJobID") or die "ERROR: Couldn't create $mainJobID\n";
print QSUB "\#!/bin/sh\n\n. $opt{CLUSTER_PATH}/settings.sh\n\n";
print "Creating FASTQC report for the following fastq.gz files:\n";
foreach my $input (keys %{$opt{FASTQ}}){
my $coreName = undef;
$coreName = (split("/", $input))[-1];
$coreName =~ s/\.fastq.gz//;
my ($sampleName) = split("_", $coreName);
print "\t$input\n"; #print fastq filename
if(! -e "$opt{OUTPUT_DIR}/$sampleName/logs/PreStats_$sampleName.done"){
my $preStatsJobId = "PreStat_$coreName\_".get_job_id();
push(@{$jobIds->{$sampleName}}, $preStatsJobId);
open PS,">$opt{OUTPUT_DIR}/$sampleName/jobs/$preStatsJobId.sh";
print PS "\#!/bin/sh\n\n";
print PS "cd $opt{OUTPUT_DIR}/$sampleName\n\n";
print PS "echo \"Start PreStats\t\" `date` \"\t$coreName\t\" `uname -n` >> $opt{OUTPUT_DIR}/$sampleName/logs/$sampleName.log\n";
print PS "$opt{FASTQC_PATH}/fastqc $input -o QCStats --noextract -t $opt{PRESTATS_THREADS}\n";
print PS "touch logs/PreStats_$sampleName.done\n";
print PS "echo \"End PreStats\t\" `date` \"\t$coreName\t\" `uname -n` >> $opt{OUTPUT_DIR}/$sampleName/logs/$sampleName.log\n";
close PS;
print QSUB "qsub -pe threaded $opt{PRESTATS_THREADS} -m a -M $opt{MAIL} -q $opt{PRESTATS_QUEUE} -P $opt{PRESTATS_PROJECT} -R $opt{CLUSTER_RESERVATION} -o $opt{OUTPUT_DIR}/$sampleName/logs/PreStat_$coreName.out -e $opt{OUTPUT_DIR}/$sampleName/logs/PreStats_$coreName.err -N $preStatsJobId $opt{OUTPUT_DIR}/$sampleName/jobs/$preStatsJobId.sh\n";
} else {
print "\t WARNING: FASTQC report for $input already exists, skipping.\n";
}
}
close QSUB;
system("sh $mainJobID");
}
############
sub get_job_id {
my $id = tmpnam();
$id=~s/\/tmp\/file//;
return $id;
}
############
1;