| 0 | 1 #!/usr/bin/perl | 
|  | 2 | 
|  | 3 # 17/12/2013 | 
|  | 4 | 
|  | 5 if($#ARGV==0){ | 
|  | 6 	print "This program takes the Saint Output File and produces two matrices.\n"; | 
|  | 7 	print "One has average spectral counts and the other FDR scores,\n"; | 
|  | 8 	print "\nusage:\n $0\n-i [csv saint output file]\n-s [FDR cutoff, default=0.01]\n\n"; | 
|  | 9 	die; | 
|  | 10 } | 
|  | 11 else{ | 
|  | 12 	$i=0; | 
|  | 13 	$cutoff=0.01; | 
|  | 14         $spec_cutoff=0; | 
|  | 15 	while($i<=$#ARGV){ | 
|  | 16 		if($ARGV[$i] eq '-i'){ | 
|  | 17 			$i++; | 
|  | 18 			$ifile=$ARGV[$i]; | 
|  | 19 		} | 
|  | 20 		elsif($ARGV[$i] eq '-s'){ | 
|  | 21 			$i++; | 
|  | 22 			if($ARGV[$i]>1 || $ARGV[$i]<0){ | 
|  | 23 				die "\nFDR cutoff must be between 0 and 1 \n\n"; | 
|  | 24 			} | 
|  | 25 			$cutoff=$ARGV[$i]; | 
|  | 26 		} | 
|  | 27 	        elsif($ARGV[$i] eq '-x'){ | 
|  | 28 			$i++; | 
|  | 29 			if($ARGV[$i]<0){ | 
|  | 30 				die "\nAvgSpec cutoff must be > 0 \n\n"; | 
|  | 31 			} | 
|  | 32 			$spec_cutoff=$ARGV[$i]; | 
|  | 33 		} | 
|  | 34 		else{ | 
|  | 35 			die "\Incorrect program usage\n\n"; | 
|  | 36 		} | 
|  | 37 		$i++; | 
|  | 38 	} | 
|  | 39 } | 
|  | 40 | 
|  | 41 $baitn=0, $bait[0]=xxxx, $sig_preysn=0; | 
|  | 42 $file=''; | 
|  | 43 open(IFILE,"<$ifile") || die "$ifile can't be opened: $!"; | 
|  | 44 { local $/=undef;  $file=<IFILE>; } | 
|  | 45 @lines=split /[\r\n]+/, $file; | 
|  | 46 foreach $line (@lines) { | 
|  | 47    	if($line =~ /^Bait/){ | 
|  | 48 	} | 
|  | 49 	elsif($line =~ /^([^\t]+)\t[^\t]+\t([^\t]+)\t[^\t]+\t[\d]+\t([\d\.]+)\t[\d]+\t[^\t]+\t[^\t]+\t[^\t]+\t[^\t]+\t[^\t]+\t([^\t]+)\t[^\t]+\t([^\t]+)\t/){ | 
|  | 50 		if($1 ne $bait[$baitn]){ | 
|  | 51 			$baitn++; | 
|  | 52 			$bait[$baitn]=$1; | 
|  | 53 			$preyn[$baitn]=0; | 
|  | 54 		} | 
|  | 55 		$preyn[$baitn]++; | 
|  | 56 		$preys[$baitn][$preyn[$baitn]]=$2; | 
|  | 57 		$avgspec[$baitn][$preyn[$baitn]]=$3; | 
|  | 58 		$saint[$baitn][$preyn[$baitn]]=$4; | 
|  | 59 		$fdr[$baitn][$preyn[$baitn]]=$5; | 
|  | 60 		if($5 <= $cutoff && $3 >= $spec_cutoff){ | 
|  | 61 			$check_prey=0; | 
|  | 62 			for($i=1; $i<=$sig_preysn; $i++){ | 
|  | 63 				if($sig_preys[$i] eq $2){ | 
|  | 64 					$check_prey=1; | 
|  | 65 				} | 
|  | 66 			} | 
|  | 67 			if($check_prey==0){ | 
|  | 68 				$sig_preysn++; | 
|  | 69 				$sig_preys[$sig_preysn]=$2; | 
|  | 70 			} | 
|  | 71 		} | 
|  | 72 	} | 
|  | 73 	else{ | 
|  | 74 	} | 
|  | 75 } | 
|  | 76 close(IFILE); | 
|  | 77 | 
|  | 78 open(SC_FILE, ">SC_data.txt"); | 
|  | 79 open(FDR_FILE, ">FDR_data.txt"); | 
|  | 80 | 
|  | 81 for($i=1; $i<=$baitn; $i++){ | 
|  | 82 	print SC_FILE "\t$bait[$i]"; | 
|  | 83 	print FDR_FILE "\t$bait[$i]"; | 
|  | 84 } | 
|  | 85 print SC_FILE "\n"; | 
|  | 86 print FDR_FILE "\n"; | 
|  | 87 for($i=1; $i<=$sig_preysn; $i++){ | 
|  | 88 	print SC_FILE "$sig_preys[$i]"; | 
|  | 89 	print FDR_FILE "$sig_preys[$i]"; | 
|  | 90 	for($j=1; $j<=$baitn; $j++){ | 
|  | 91 		$krem=0; | 
|  | 92 		for($k=1; $k<=$preyn[$j]; $k++){; | 
|  | 93 			if($preys[$j][$k] eq $sig_preys[$i]){ | 
|  | 94 				$krem=$k; | 
|  | 95 				last; | 
|  | 96 			} | 
|  | 97 		} | 
|  | 98 		if($krem != 0){ | 
|  | 99 			print SC_FILE "\t$avgspec[$j][$krem]"; | 
|  | 100 			print FDR_FILE "\t$fdr[$j][$krem]"; | 
|  | 101 		} | 
|  | 102 		else{ | 
|  | 103 			print SC_FILE "\t0"; | 
|  | 104 			print FDR_FILE "\t1"; | 
|  | 105 		} | 
|  | 106 	} | 
|  | 107 	print SC_FILE "\n"; | 
|  | 108 	print FDR_FILE "\n"; | 
|  | 109 } | 
|  | 110 close(SC_FILE); | 
|  | 111 close(FDR_FILE); | 
|  | 112 |