annotate SNV/SNVMix2_source/SNVMix2-v0.12.1-rc1/misc/snvmix2summary.pl @ 0:74f5ea818cea

Uploaded
author ryanmorin
date Wed, 12 Oct 2011 19:50:38 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
1 #!/usr/bin/perl
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
2
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
3 use strict;
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
4
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
5 use Getopt::Std;
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
6 my $opt_string = 'hi:c:t:';
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
7 my %opt;
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
8 getopts( "$opt_string", \%opt ) or usage();
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
9 usage() if $opt{h};
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
10 my $SNVMIX_FILE = "-";
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
11 $SNVMIX_FILE = $opt{i} if $opt{i};
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
12 my $TYPE = 2;
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
13 $TYPE = $opt{c} if $opt{c};
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
14 my $THRESHOLD = 0;
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
15 $THRESHOLD = $opt{t} if $opt{t};
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
16 if($TYPE != 2 && $TYPE != 3) { die("ERROR: Unknown class TYPE\n"); }
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
17
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
18 print STDERR "Reading from ".($SNVMIX_FILE eq "-" ? "STDIN" : $SNVMIX_FILE)."\n";
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
19 print STDERR "Calculating for max between AA".($TYPE == 2 ? " and {AB u BB}" : ", AB and BB")."\n";
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
20 if($THRESHOLD) {
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
21 print STDERR "Applying threshold of $THRESHOLD, reporting only if ".($TYPE == 2 ? "P{AB u BB}" : "(P{AB} || P{BB})")." >= $THRESHOLD\n";
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
22 }
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
23
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
24 open(INPUT, "<$SNVMIX_FILE") || die("ERROR: Could not open '$SNVMIX_FILE' for reading\n");
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
25 while(<INPUT>) {
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
26 chomp;
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
27 s/ //;
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
28 my $line = $_;
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
29 my ($chr_pos, $ref, $nref, $call_str, @extra) = split(/\t/, $line);
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
30 my ($ref_num, $nref_num, $pAA, $pAB, $pBB, $call) = split(/,/, $call_str);
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
31 my $snv = 0;
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
32 if($TYPE == 2) {
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
33 if($pAA < ($pAB + $pBB)) {
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
34 if( ($pAB + $pBB) >= $THRESHOLD) {
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
35 $snv = 1;
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
36 }
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
37 }
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
38 } elsif($TYPE == 3) {
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
39 if($call == 2 || $call == 3) {
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
40 if( $pAB >= $THRESHOLD || $pBB >= $THRESHOLD) {
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
41 $snv = 1;
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
42 }
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
43 }
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
44 } else {
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
45 die("ERROR, and a weird one, script shouldn't even BE in here...\n");
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
46 }
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
47 if($snv) {
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
48 #print "$chr_pos\t$ref\t".( $snv ? $nref : "-")."\t$snv\n";
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
49 print "$line\n";
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
50 }
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
51 }
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
52 close(INPUT);
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
53
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
54 sub usage() {
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
55 print "Syntax:\n";
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
56 print "$0 [-i <file>] -c <TYPE> [-t <THRESHOLD>]\n";
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
57 print "\tIf file not given, STDIN is read\n";
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
58 print "\tTYPE is the number of classes to consider\n";
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
59 print "\t\t'2'\tconsiders only AA and {AB U BB} (default)\n";
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
60 print "\t\t'3'\tconsiders AA, AB and BB\n";
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
61 print "\tIf -t THRESHOLD is given, then SNVs will be reported\n";
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
62 print "\twhen the selected probability exceeds this\n";
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
63 exit;
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
64 }