Mercurial > repos > mcharles > rapsodyn
diff rapsodyn/mpileupfilterandstat.pl @ 25:39376c7204be draft
Uploaded
author | mcharles |
---|---|
date | Wed, 10 Sep 2014 05:12:05 -0400 |
parents | e8e6b962c1f2 |
children | 7b8646f46010 |
line wrap: on
line diff
--- a/rapsodyn/mpileupfilterandstat.pl Fri Sep 05 06:12:10 2014 -0400 +++ b/rapsodyn/mpileupfilterandstat.pl Wed Sep 10 05:12:05 2014 -0400 @@ -29,19 +29,19 @@ my $ONLY_UNFILTERED_VARIANT="OFF"; my $DO_STAT="NO"; -if ($#ARGV<0){ - print "\n"; - print "perl 020_FilterPileupv6 -input_file <mpileup_file> [OPTION]\n"; - print "-input_file \tinputfile in mpileup format\n"; - print "-log_file \tlogfile containing discarded mpileup lines and the errorcode associated\n"; - print "-min_depth \tminimum depth required [1]\n"; - print "-max_depth \tmaximim depth (position with more coverage will be discarded) [100]\n"; - print "-min_frequency \tminimum variant frequency (0->1) [1] (default 1 => 100% reads show the variant at this position)\n"; - print "-min_distance \tminimum distance between variant [0]\n"; - print "-min_forward_and_reverse \tminimum number of reads in forward and reverse covering the variant required [0]\n"; - print "\n"; - exit(0); -} + +my $STAT_MIN_DEPTH_MIN = 2; +my $STAT_MIN_DEPTH_MAX = 10; +my $STAT_MIN_DEPTH_STEP = 2; +my $STAT_MAX_DEPTH_MIN = 100; +my $STAT_MAX_DEPTH_MAX = 200; +my $STAT_MAX_DEPTH_STEP = 100; +my $STAT_FREQ_MIN = 0.8; +my $STAT_FREQ_MAX = 1; +my $STAT_FREQ_STEP = 0.1; +my $STAT_DIST_MIN = 0; +my $STAT_DIST_MAX = 50; +my $STAT_DIST_STEP = 50; GetOptions ( "input_file=s" => \$inputfile, @@ -53,10 +53,21 @@ "min_forward_and_reverse=i" => \$MIN_FORWARDREVERSE, "variant_only=s" => \$ONLY_UNFILTERED_VARIANT, "v=i" => \$VERBOSE, -"do_stat=s" => \$DO_STAT +"do_stat=s" => \$DO_STAT, +"stat_min_depth_min=i" => \$STAT_MIN_DEPTH_MIN, +"stat_min_depth_max=i" => \$STAT_MIN_DEPTH_MAX, +"stat_min_depth_step=i" => \$STAT_MIN_DEPTH_STEP, +"stat_max_depth_min=i" => \$STAT_MAX_DEPTH_MIN, +"stat_max_depth_max=i" => \$STAT_MAX_DEPTH_MAX, +"stat_max_depth_step=i" => \$STAT_MAX_DEPTH_STEP, +"stat_freq_min=f" => \$STAT_FREQ_MIN, +"stat_freq_max=f" => \$STAT_FREQ_MAX, +"stat_freq_step=f" => \$STAT_FREQ_STEP, +"stat_dist_min=i" => \$STAT_DIST_MIN, +"stat_dist_max=i" => \$STAT_DIST_MAX, +"stat_dist_step=i" => \$STAT_DIST_STEP ) or die("Error in command line arguments\n"); - open(IF, $inputfile) or die("Can't open $inputfile\n"); my @tbl_line; @@ -150,22 +161,24 @@ open(LF,">$logfile") or die ("Can't open $logfile\n"); if ($DO_STAT eq "YES"){ - for (my $idx_min_depth=2;$idx_min_depth<=32;$idx_min_depth = $idx_min_depth*2){ - for (my $idx_freq = 0.5;$idx_freq<=1;$idx_freq= $idx_freq+0.1){ - for (my $idx_dist=0;$idx_dist<=50;$idx_dist = $idx_dist + 50){ - for (my $idx_fr=0;$idx_fr<=1;$idx_fr++){ - my %stat_param; - $stat_param{"min_depth"}=$idx_min_depth; - $stat_param{"max_depth"}=250; - $stat_param{"min_freq"}=$idx_freq; - $stat_param{"min_fr"}=$idx_fr; - $stat_param{"min_dist"}=$idx_dist; + for (my $idx_min_depth=$STAT_MIN_DEPTH_MIN;$idx_min_depth<=$STAT_MIN_DEPTH_MAX;$idx_min_depth = $idx_min_depth + $STAT_MIN_DEPTH_STEP ){ + for (my $idx_max_depth=$STAT_MAX_DEPTH_MIN;$idx_max_depth<=$STAT_MAX_DEPTH_MAX;$idx_max_depth = $idx_max_depth + $STAT_MAX_DEPTH_STEP ){ + for (my $idx_freq = $STAT_FREQ_MIN;$idx_freq<=$STAT_FREQ_MAX;$idx_freq= $idx_freq+$STAT_FREQ_STEP){ + for (my $idx_dist=$STAT_DIST_MIN;$idx_dist<=$STAT_DIST_MAX;$idx_dist = $idx_dist + $STAT_DIST_STEP){ + for (my $idx_fr=0;$idx_fr<=1;$idx_fr++){ + my %stat_param; + $stat_param{"min_depth"}=$idx_min_depth; + $stat_param{"max_depth"}=$idx_max_depth; + $stat_param{"min_freq"}=$idx_freq; + $stat_param{"min_fr"}=$idx_fr; + $stat_param{"min_dist"}=$idx_dist; - print LF "#SNP = ",&test_check(\@tbl_line,\%stat_param),"\tdepth (min/max) = ",$stat_param{"min_depth"}," / ",$stat_param{"max_depth"},"\tmin_dist=",$stat_param{"min_dist"},"\tmin_freq=",$stat_param{"min_freq"},"\tmin_forwardreverse = ",$stat_param{"min_fr"},"\n"; - } - } + print LF "#SNP = ",&test_check(\@tbl_line,\%stat_param),"\tdepth (min/max) = ",$stat_param{"min_depth"}," / ",$stat_param{"max_depth"},"\tmin_dist=",$stat_param{"min_dist"},"\tmin_freq=",$stat_param{"min_freq"},"\tmin_forwardreverse = ",$stat_param{"min_fr"},"\n"; + } + } + } + print "\n"; } - print "\n"; } }