https://github.com/CuppenResearch/IAP
Raw File
Tip revision: 8231e0cfdf0b5c1f092ecf5062c1aa344800267a authored by rernst on 12 June 2015, 14:11:51 UTC
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;
back to top