Mercurial > repos > mmaiensc > ember
diff GALAXY_FILES/tools/EMBER/Compare_Targets.pl @ 3:037c3edda16e
Uploaded
author | mmaiensc |
---|---|
date | Thu, 22 Mar 2012 13:49:52 -0400 |
parents | 003f802d4c7d |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/GALAXY_FILES/tools/EMBER/Compare_Targets.pl Thu Mar 22 13:49:52 2012 -0400 @@ -0,0 +1,148 @@ +#!/usr/bin/perl +# compares overlaps in the number of unique genes between two sets + +use Getopt::Long; + +# +# command line arguments +# +$t1 = ""; +$t2 = ""; +$o = ""; +$of = 0; +$n = 1; + +$options = "Usage: ./Compare_Targets.pl <OPTIONS> + -t1 .targets file 1 (EMBER output, required) + -t2 .targets file 2 (EMBER output, required) + -o output file (optional, if you want a gene list printed) + output list prints all unique genes + -of output type (default $of) + 0 - all shared targets + 1 - all targets in list 1 only + 2 - all targets in list 2 only + 3 - union of list 1 and 2 + -n compare gene names or probe ids (0 = ids, 1 = names, default $n) +\n"; + +GetOptions('t1=s' => \$t1, + 't2=s' => \$t2, + 'o=s' => \$o, + 'of=i' => \$of, + 'n=i' => \$n +) || die "\n$options\n"; + +if( $t1 eq "" ){ + print "\nError: set a value for -t1\n\n$options\n"; + exit; +} +if( $t2 eq "" ){ + print "\nError: set a value for -t2\n\n$options\n"; + exit; +} +if( $of != 0 && $of != 1 && $of != 2 && $of != 3 ){ + print "\nError: set -of to be 0, 1, 2, or 3\n\n$options\n"; + exit; +} +if( $n != 0 && $n != 1 ){ + print "\nError: set -n to be 0 or 1\n\n$options\n"; + exit; +} + +# +# read in gene list from each file +# +@list1 = &read_list( $t1 ); +@list2 = &read_list( $t2 ); + +printf("\nFound %i unique genes in %s, %i in %s\n", $#list1+1, $t1, $#list2+1, $t2); + +# +# compare lists and print out if desired +# +if( $o ne "" ){open(OUT,">$o");} +$i = 0; +$j = 0; +$end1 = $#list1; +$end2 = $#list2; +$l1o = (); +$l2o = (); +$l12 = (); +while( $i<= $end1 && $j<= $end2 ){ + if( $list1[$i] eq $list2[$j] ){ + if( $o ne "" && ($of == 0 || $of == 3) ){ + print OUT "$list1[$i]\n"; + } + $l12++; + $i++; + $j++; + } + elsif( $list1[$i] lt $list2[$j] ){ + if( $o ne "" && ($of == 1 || $of == 3) ){ + print OUT "$list1[$i]\n"; + } + $l1o++; + $i++; + } + else{ + if( $o ne "" && ($of == 2 || $of == 3) ){ + print OUT "$list2[$j]\n"; + } + $l2o++; + $j++; + } +} +if( $o ne "" ){close(OUT);} +printf("\n%s only: %i\n%s only: %i\nshared: %i\n\n", $t1, $l1o, $t2, $l2o, $l12); + + + + + +exit; +############## +# read in gene list from .targets file and sort it, then only print those genes that are unique +sub read_list{ + my @rval; + my @sval; + my @final; + + @rval = (); + open(IN,"$_[0]") || die "Error: can't open file $_[0]\n"; + while($line = <IN>){ + chomp($line); + @parts = split(' ',$line); + if( $parts[0] eq "GENE:" ){ + push(@rval, $parts[1+$n]); + } + if( $parts[0] eq "TGENE:" ){ + push(@rval, $parts[2+$n]); + } + } + close(IN); + + @sval = sort{ $a cmp $b } @rval; + + @final = (); + push(@final, @sval[0]); + for($i=1; $i<= $#sval; $i++){ + if( $sval[$i] ne $sval[$i-1] ){ + push(@final, $sval[$i]); + } + } + + return @final; +} + + + + + + + + + + + + +