https://github.com/CuppenResearch/IAP
Raw File
Tip revision: 831bf1add49b80e2c15f176cd152fb586d0dd295 authored by rernst on 01 March 2016, 07:54:59 UTC
Merge branch 'release_v2.0.0'
Tip revision: 831bf1a
illumina_nipt.pm
#!/usr/bin/perl -w

#######################################################
### illumina_nipt.pm
### - Run NIPT statistics
###
### Authors: R.F.Ernst
###
#######################################################

package illumina_nipt;

use strict;
use POSIX qw(tmpnam);
use FindBin;
use lib "$FindBin::Bin"; #locates pipeline directory
use illumina_sge;


sub runNipt {
    ###
    # Run NIPT statistics
    ###
    my $configuration = shift;
    my %opt = %{$configuration};
    my @runningJobs; #internal job array
    my $runName = (split("/", $opt{OUTPUT_DIR}))[-1];
    my $jobID = "NIPT_".get_job_id();
    my $jobIDCheck = "NIPT_Check_".get_job_id();

    ## Get running sample jobs
    foreach my $sample (@{$opt{SAMPLES}}){
	if (@{$opt{RUNNING_JOBS}->{$sample}}) {
	    push(@runningJobs, join(",",@{$opt{RUNNING_JOBS}->{$sample}}));
	}
    }

    ### Run Chromate
    if(! -e "$opt{OUTPUT_DIR}/logs/NIPT.done"){
	my $command = "python $opt{CHROMATE_PATH} -f ";
	$command .= "-d $opt{NIPT_REFERENCESET} ";
	$command .= "-x $opt{OUTPUT_DIR}/ ";
	
	# qsub options
	$command .= "-q $opt{NIPT_QUEUE} -c $opt{NIPT_TIME} -t $opt{NIPT_THREADS} -m $opt{NIPT_MEM} ";
	
	my $bashFile = $opt{OUTPUT_DIR}."/jobs/".$jobID.".sh";
	my $logDir = $opt{OUTPUT_DIR}."/logs";
        
	open NIPT_SH, ">$bashFile" or die "cannot open file $bashFile\n";
	print NIPT_SH "#!/bin/bash\n\n";
	print NIPT_SH "cd $opt{OUTPUT_DIR}\n";
	print NIPT_SH "echo \"Start NIPT\t\" `date` \"\t\" `uname -n` >> $opt{OUTPUT_DIR}/logs/$runName.log\n";
	print NIPT_SH "$command\n";
	close NIPT_SH;
	
	my $qsub = &qsubTemplate(\%opt,"NIPT_MASTER");
	if (@runningJobs){
	    system "$qsub -o $logDir/NIPT_$runName.out -e $logDir/NIPT_$runName.err -N $jobID -hold_jid ".join(",",@runningJobs)." $bashFile";
	} else {
	    system "$qsub -o $logDir/NIPT_$runName.out -e $logDir/NIPT_$runName.err -N $jobID $bashFile";
	}
	
	### Check Chromate result
	my $bashFileCheck = $opt{OUTPUT_DIR}."/jobs/".$jobIDCheck.".sh";
	open NIPTCHECK_SH, ">$bashFileCheck" or die "cannot open file $bashFileCheck\n";
	print NIPTCHECK_SH "cd $opt{OUTPUT_DIR}\n";
	print NIPTCHECK_SH "if [ -s $runName.pdf ]\nthen\n";
	print NIPTCHECK_SH "\ttouch logs/NIPT.done \n";
	print NIPTCHECK_SH "fi\n";
	print NIPTCHECK_SH "echo \"Finished NIPT\t\" `date` \"\t\" `uname -n` >> $opt{OUTPUT_DIR}/logs/$runName.log\n";
	close NIPTCHECK_SH;

	system "$qsub -o $logDir/NIPT_$runName.out -e $logDir/NIPT_$runName.err -N $jobIDCheck -hold_jid bamMetrics_report_".$runName.",$jobID $bashFileCheck";
	return $jobIDCheck;

    } else {
	print "WARNING: $opt{OUTPUT_DIR}/logs/NIPT.done exists, skipping\n";
    }
}

############
sub get_job_id {
   my $id = tmpnam(); 
      $id=~s/\/tmp\/file//;
   return $id;
}

############ 

1;
back to top