pipeline/script/neoantigen.variant.filter.pl

58 lines
2.0 KiB
Perl
Raw Normal View History

2023-08-25 10:06:31 +08:00
#!/usr/bin/perl
use strict;
use warnings;
die "usage:perl $0 germline/somatic tumor_prefix name input_file outputDir" unless @ARGV==5;
my($type,$tumor,$name,$input,$outputDir)=@ARGV;
`filter_vep -i $input -o ${outputDir}/${name}_${type}_vepanno_filter.vcf --format vcf --force_overwrite --filter "(Consequence != synonymous_variant) and (Consequence != intron_variant) and (Consequence != intergenic_variant) and (Consequence != 3_prime_UTR_variant) and (Consequence != upstream_gene_variant) and (Consequence != downstream_gene_variant) and (Consequence != 5_prime_UTR_variant)"`;
if($type eq "germline"){
open IN,"${outputDir}/${name}_${type}_vepanno_filter.vcf";
open OUT,">${outputDir}/${name}_${type}_vepanno_Filter.vcf";
while(<IN>){
if (/^##/){
print OUT;
next;
}elsif(/^#CHROM/){
$_=~s/TUMOR/$tumor/;
print OUT;
next;
}else{
chomp;
my @line=split("\t",$_);
next if $line[6] ne "PASS";
my $n_af=(split(":",$line[-2]))[-2];
my $t_af=(split(":",$line[-1]))[-2];
$n_af=~s/%//;
$t_af=~s/%//;
print OUT "$_\n" if ($n_af>=10 and $t_af>=10);
}
}
`rm ${outputDir}/${name}_${type}_vepanno_filter.vcf`;
`mv ${outputDir}/${name}_${type}_vepanno_Filter.vcf ${outputDir}/${name}_${type}_vepanno_filter.vcf`;
}elsif($type eq "somatic"){
open IN,"${outputDir}/${name}_${type}_vepanno_filter.vcf";
open OUT,">${outputDir}/${name}_${type}_vepanno_Filter.vcf";
while(<IN>){
if (/^##/){
print OUT;
next;
}elsif(/^#CHROM/){
$_=~s/TUMOR/$tumor/;
print OUT;
next;
}else{
chomp;
my @line=split("\t",$_);
next if $line[6] ne "PASS";
my $n_af=(split(":",$line[-2]))[-2];
my $t_af=(split(":",$line[-1]))[-2];
$n_af=~s/%//;
$t_af=~s/%//;
print OUT "$_\n" if ($n_af<2 and $t_af>=5);
}
}
`rm ${outputDir}/${name}_${type}_vepanno_filter.vcf`;
`mv ${outputDir}/${name}_${type}_vepanno_Filter.vcf ${outputDir}/${name}_${type}_vepanno_filter.vcf`;
}