Mercurial > repos > stef > falco
changeset 67:61c0e184e50d draft
Uploaded
author | stef |
---|---|
date | Fri, 27 Feb 2015 08:56:05 -0500 |
parents | 78ed71c3ddfd |
children | aaa240cf978b |
files | falco-filter-report |
diffstat | 1 files changed, 94 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/falco-filter-report Fri Feb 27 08:56:05 2015 -0500 @@ -0,0 +1,94 @@ +#!/usr/bin/perl +use strict; +use Cwd 'abs_path'; +use Getopt::Long; +use File::Basename; + +my $absPath = abs_path($0); +my $dir = dirname($absPath); +my $lib = "$dir/../lib/"; + +my $vcf2tsv = "$lib/perl/vcf2tsv.pl"; +my $spliteff = "$lib/perl/splitEff.pl"; +my $filter = "$lib/perl/filter.pl"; +my $plotPng = "$lib/R/plotsPng.R"; +my $mkReport = "$lib/perl/mkHtmlReportGalaxy.pl"; + +my $locifilt = "$dir/../ref/filters/filter.tsv"; +my $manifest = "$dir/../ref/TSACP/TruSeq_Amplicon_Cancer_Panel_Manifest_AFP1_PN15032433.txt"; + +my $canonicals = "$dir/../ref/TSACP/canonicals.tsv"; +my $clinvar = "$dir/../ref/filters/clinvar_00-latest.f.vcf"; +my $cosmic = "$dir/../ref/filters/CosmicCodingMuts_v64_26032013_noLimit_wgs.f.vcf"; +my $cosmicNC = "$dir/../ref/filters/CosmicNonCodingVariants_v64_26032013_noLimit_wgs.f.vcf"; + +my $base = undef; +my $vcf = undef; +my $vcfOther = undef; +my $noFilt = undef; +my $noPlot = undef; + +my $qc_ann_qual_txt = undef; +my $qc2_ann_txt = undef +my $qc_targets_txt = undef; + +GetOptions ( + "vcf=s" => \$vcf, + "vcfOther=s" => \$vcfOther, + "output=s" => \$base, + "canonicals=s" => \$canonicals, + "clinvar=s" => \$clinvar, + "cosmic=s" => \$cosmic, + "cosmicNC=s" => \$cosmicNC, + "noFilt" => \$noFilt, + "noPlot" => \$noPlot, + "qc_ann_qual_txt=s" => \$qc_ann_qual_txt, + "qc2_ann_txt=s" => \$qc2_ann_txt, + "qc_targets_txt=s" => \$qc_targets_txt, +) +or die("Error in command line arguments\n"); + +## sanity checks +die( "No base name provided [-output]\n" ) unless defined($base) and $base ne ''; +die( "No VCF file provided [-vcf]\n" ) unless defined($vcf) and -f $vcf; +die( "Missing input [-qc_ann_qual_txt]\n" ) unless defined($qc_ann_qual_txt) and -f $qc_ann_qual_txt; +die( "Missing input [-qc2_ann_txt]\n" ) unless defined($qc2_ann_txt) and -f $qc2_ann_txt; +die( "Missing input [-qc_targets_txt]\n" ) unless defined($qc_targets_txt) and -f $qc_targets_txt; +die( "Required file does not exists [$canonicals]\n" ) unless -f $canonicals; +die( "Required file does not exists [$clinvar]\n" ) unless -f $clinvar; +die( "Required file does not exists [$cosmic]\n" ) unless -f $cosmic; +die( "Required file does not exists [$cosmicNC]\n" ) unless -f $cosmicNC; + + +## Rscript check +my $rscript = `which Rscript`; +chomp $rscript; +if ($rscript !~ /Rscript$/) { + print STDERR "No Rscript present in PATH\n"; + exit 1; +} + +## FILTERING +print STDOUT localtime() . " [$$] converting vcf to tsv\n"; +system( "$vcf2tsv $vcf > $base\.tsv" ); + +print STDOUT localtime() . " [$$] splitting vcf columns\n"; +system( "$spliteff $base\.tsv Falco >> $base\.res\.tsv" ); + +if ( defined($vcfOther) ){ + print STDOUT localtime() . " [$$] converting vcf to tsv\n"; + system( "$vcf2tsv $vcf > $base\.Other\.tsv" ); + print STDOUT localtime() . " [$$] splitting vcf columns\n"; + system( "$spliteff $base\.Other\.tsv Other >> $base\.res\.tsv" ); +} + +print STDOUT localtime() . " [$$] filtering data\n"; +system( "$filter $base\.res\.tsv $canonicals $clinvar $cosmic $cosmicNC > $base\.res\.filtered\.tsv" ); + +## PLOTTING +print STDOUT localtime() . " [$$] Creating plots\n"; +system( "Rscript $plotPng $qc_ann_qual_txt $qc2_ann_txt $qc_targets_txt $base\.res\.filtered\.tsv $clinvar $locifilt $base" ); + +## REPORTING +print STDOUT localtime() . " [$$] Creating HTML report\n"; +system( "perl $mkReport $base" );