Skip to content
Snippets Groups Projects
Commit ad5b87f9 authored by Brandi Cantarel's avatar Brandi Cantarel
Browse files

update union.sh

parent 735e89ce
No related merge requests found
......@@ -118,7 +118,7 @@ foreach $vcf (@vcffiles) {
push @gtdesc, join(":",$id,$afinfo{$id});
push @newgts, $newgts{$id};
}
$lines{$chrom}{$pos}{$caller} = [$chrom,$pos,$id,$ref,$alt,$score,$filter,$annot,$newformat,\@newgts,\@gtdesc];
$lines{$chrom}{$pos}{$alt}{$caller} = [$chrom,$pos,$id,$ref,$alt,$score,$filter,$annot,$newformat,\@newgts,\@gtdesc];
}
close VCF;
}
......@@ -128,37 +128,39 @@ if (grep(/mutect/,@vcffiles)) {
}
F1:foreach $chr (sort {$a cmp $b} keys %lines) {
F2:foreach $pos (sort {$a <=> $b} keys %{$lines{$chr}}) {
my @callset;
my %csets;
F3:foreach $caller (sort {$a cmp $b} keys %{$lines{$chr}{$pos}}) {
my ($chrom, $pos,$id,$ref,$alt,$score,$filter,$annot,
$format,$gtsref,$gtdescref) = @{$lines{$chr}{$pos}{$caller}};
@gtdesc = @{$gtdescref};
foreach $gtd (@gtdesc) {
my ($id,$dp,$maf) = split(/:/,$gtd);
push @{$csets{$id}}, [$caller,$dp,$maf];
}
push @callset, join("|",$caller,$alt,@gtdesc);
}
my $consistent = 1;
foreach $id (keys %csets) {
my @calls = @{$csets{$id}};
my @calls = sort {$a[2] <=> $b[2]} @calls;
$consistent = 0 if ($calls[0][2] < 0.25 && $calls[-1][2] - $calls[0][2] > 0.10 && $calls[-1][2]/($calls[0][2]+0.001) > 3);
}
F3:foreach $caller (@callers) {
if ($lines{$chr}{$pos}{$caller}) {
F4:foreach $alt (sort {$a <=> $b} keys %{$lines{$chr}{$pos}}) {
my @callset;
my %csets;
F3:foreach $caller (sort {$a cmp $b} keys %{$lines{$chr}{$pos}{$alt}}) {
my ($chrom, $pos,$id,$ref,$alt,$score,$filter,$annot,
$format,$gtsref,$gtdescref) = @{$lines{$chr}{$pos}{$caller}};
@gts = @{$gtsref};
$format,$gtsref,$gtdescref) = @{$lines{$chr}{$pos}{$alt}{$caller}};
@gtdesc = @{$gtdescref};
$annot = $annot.";CallSet=".join(",",@callset);
unless ($consistent) {
$annot = $annot.";CallSetInconsistent=1";
foreach $gtd (@gtdesc) {
my ($id,$dp,$maf) = split(/:/,$gtd);
push @{$csets{$id}}, [$caller,$dp,$maf];
}
push @callset, join("|",$caller,$alt,@gtdesc);
}
my $consistent = 1;
foreach $id (keys %csets) {
my @calls = @{$csets{$id}};
my @calls = sort {$a[2] <=> $b[2]} @calls;
$consistent = 0 if ($calls[0][2] < 0.25 && $calls[-1][2] - $calls[0][2] > 0.10 && $calls[-1][2]/($calls[0][2]+0.001) > 3);
}
F3:foreach $caller (@callers) {
if ($lines{$chr}{$pos}{$alt}{$caller}) {
my ($chrom, $pos,$id,$ref,$alt,$score,$filter,$annot,
$format,$gtsref,$gtdescref) = @{$lines{$chr}{$pos}{$alt}{$caller}};
@gts = @{$gtsref};
@gtdesc = @{$gtdescref};
$annot = $annot.";CallSet=".join(",",@callset);
unless ($consistent) {
$annot = $annot.";CallSetInconsistent=1";
}
print OUT join("\t",$chrom,$pos,$id,$ref,$alt,$score,
$filter,$annot,$format,@gts),"\n";
last F3;
}
print OUT join("\t",$chrom,$pos,$id,$ref,$alt,$score,
$filter,$annot,$format,@gts),"\n";
last F3;
}
}
}
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment