96 lines
3.1 KiB
Perl
Executable File
96 lines
3.1 KiB
Perl
Executable File
#!/usr/bin/perl -w
|
|
|
|
use strict;
|
|
use FindBin;
|
|
use lib "$FindBin::Bin/../../";
|
|
|
|
use StingArgs;
|
|
use DistributedMake;
|
|
use Data::Dumper;
|
|
use File::Basename;
|
|
|
|
sub getCSV {
|
|
my ($file) = @_;
|
|
|
|
my @header;
|
|
my @csv;
|
|
|
|
open(CSV, $file);
|
|
while (my $csvline = <CSV>) {
|
|
if ($csvline !~ /#/) {
|
|
chomp(my @columns = split(/,/, $csvline));
|
|
|
|
if (scalar(@columns) > 1) {
|
|
if (scalar(@header) < 2) {
|
|
@header = @columns;
|
|
} else {
|
|
my %entry;
|
|
for (my $column = 0; $column <= $#header; $column++) {
|
|
$entry{$header[$column]} = $columns[$column];
|
|
}
|
|
|
|
push(@csv, \%entry);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
close(CSV);
|
|
|
|
return @csv;
|
|
}
|
|
|
|
my %args = &getCommandArguments("EVAL_ROOT" => undef, "OUT_ROOT" => undef, "POP" => undef);
|
|
|
|
my %values;
|
|
|
|
my @header;
|
|
my @counts = &getCSV("$args{'EVAL_ROOT'}.Count_Variants.csv");
|
|
my @titv = &getCSV("$args{'EVAL_ROOT'}.Ti_slash_Tv_Variant_Evaluator.csv");
|
|
|
|
my $varout = "$args{'OUT_ROOT'}.kvp";
|
|
open(VAROUT, ">$varout");
|
|
foreach my $entry (@counts) {
|
|
my %entry = %$entry;
|
|
|
|
print VAROUT "$entry{'jexl_expression'}.$entry{'filter_name'}.$entry{'novelty_name'}.nVariantLoci\t$entry{'nVariantLoci'}\n";
|
|
|
|
if ($entry{'jexl_expression'} eq 'Intersection') { $values{'Intersection'} = $entry{'nVariantLoci'}; }
|
|
if ($entry{'jexl_expression'} eq 'UG') { $values{'UG-only'} = $entry{'nVariantLoci'}; }
|
|
if ($entry{'jexl_expression'} eq 'QCALL') { $values{'QCALL-only'} = $entry{'nVariantLoci'}; }
|
|
}
|
|
|
|
foreach my $entry (@titv) {
|
|
my %entry = %$entry;
|
|
|
|
print VAROUT "$entry{'jexl_expression'}.$entry{'filter_name'}.$entry{'novelty_name'}.ti/tv_ratio\t$entry{'ti/tv ratio'}\n";
|
|
}
|
|
|
|
my $outpng = "$args{'OUT_ROOT'}.png";
|
|
print VAROUT "venndiagram\t$args{'OUT_ROOT'}\n";
|
|
print VAROUT "population\t$args{'POP'}\n";
|
|
print VAROUT "timestamp\t" . gmtime() . "\n";
|
|
close(VAROUT);
|
|
|
|
my $ug = $values{'UG-only'} + $values{'Intersection'};
|
|
my $qcall = $values{'QCALL-only'} + $values{'Intersection'};
|
|
|
|
my $scaledug = ($ug > $qcall) ? 100 : int($ug*100/$qcall);
|
|
my $scaledqcall = ($qcall > $ug) ? 100 : int($qcall*100/$ug);
|
|
my $scaledint = ($ug > $qcall) ? int($values{'Intersection'}*100/$ug) : int($values{'Intersection'}*100/$qcall);
|
|
|
|
my $dm = new DistributedMake("dryRun" => 0);
|
|
|
|
my $vennCmd = "wget -O $outpng \"http://chart.apis.google.com/chart?cht=v&chd=t:$scaledqcall,$scaledug,0,$scaledint&chco=FF3355,00BBFF&chs=600x480&chdl=QCALL|UnifiedGenotyper&chtt=Callset+concordance+($args{'POP'})&chts=000000,20&chma=100,0,0,0\"";
|
|
$dm->addRule($outpng, $varout, $vennCmd);
|
|
|
|
my $render = "$args{'OUT_ROOT'}.tex";
|
|
my $renderCmd = "$ENV{'STING_DIR'}/perl/reports/1KG/RenderTemplate.pl KVP=$varout TEMPLATE=$ENV{'STING_DIR'}/perl/reports/1KG/venn_template.tex TEMPLATE_OUT=$render";
|
|
$dm->addRule($render, $outpng, $renderCmd);
|
|
|
|
my $pdf = "$args{'OUT_ROOT'}.pdf";
|
|
my $pdfdir = dirname($args{'OUT_ROOT'});
|
|
my $pdfCmd = "pdflatex -output-directory $pdfdir $render";
|
|
$dm->addRule($pdf, $render, $pdfCmd);
|
|
|
|
$dm->execute();
|