/
Filtration_of_Variants_Called_by_VarScan2.pl
60 lines (53 loc) · 1.58 KB
/
Filtration_of_Variants_Called_by_VarScan2.pl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
use strict;
use warnings;
use Getopt::Long;
sub prtHelp {
print "\n$0 options:\n\n";
print " -i | -inputFile <Input file>\n";
print " File format is VarScan2 VCF\n";
print " -p | -prefixOfOutputFile <Prefix of output file>\n";
print " -o | -outputFolder <Output folder name/path>\n";
print " Output folder should be created if not existing before processing\n";
print " -h | -help\n";
print " Prints this help\n";
print "\n";
}
sub prtUsage {
print "\nUsage: perl $0 <options>\n";
prtHelp();
}
my $inputFileName = "";
my $prefix= "";
my $outFolder = "";
my $helpAsked;
GetOptions(
"i|inputFile=s" => \$inputFileName,
"p|prefixOfOutputFile=s" => \$prefix,
"o|outputFolder=s" => \$outFolder,
"h|help" => \$helpAsked,
) or die $!;
if ($inputFileName && $prefix && $outFolder){
print "Options received\n";
} else {
prtHelp();
exit;
}
if($helpAsked) {
prtUsage();
exit;
}
my $outputFileName=$prefix."_filtered.vcf";
open(IN,"$inputFileName");
open(OUT,">$outFolder/$outputFileName");
while(<IN>)
{ if($_=~/#/){print OUT $_;next;}
chomp;
my $info=(split("\t",$_))[9];
my ($ref,$alt)=(split(":",$info))[4,5];
my $total_depth=$ref+$alt;
my $allele_freq=int($alt)/int($total_depth);
if($total_depth>=10 && $total_depth<=100 && $allele_freq>=0.25)
{
print OUT $_,"\n";
}
}