comparison scripts/excision.clustering.pl @ 0:28d1a6f8143f draft

planemo upload for repository https://github.com/portiahollyoak/Tools commit 132bb96bba8e7aed66a102ed93b7744f36d10d37-dirty
author portiahollyoak
date Mon, 25 Apr 2016 13:08:56 -0400
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:28d1a6f8143f
1 #! /usr/bin/perl
2
3 use strict;
4
5 my %position=();
6 my %names=();
7 open (input, "<$ARGV[0]") or die "Can't open $ARGV[0] since $!\n";
8 while (my $line=<input>) {
9 chomp($line);
10 my @a=split(/\t/, $line);
11 my @b=split(/\#/, $a[8]);
12
13 if (defined $position{$b[0]}) {
14 my @c=split(/\:/, $position{$b[0]});
15 if (($c[0] eq $a[0])&&($a[1] < $c[1])) {
16 $position{$b[0]} =~ s/$c[1]/$a[1]/;
17 }
18 if (($c[0] eq $a[0])&&($a[2] > $c[2])) {
19 $position{$b[0]} =~ s/$c[2]/$a[2]/;
20 }
21 my $transposon=$a[3];
22 if ($names{$b[0]} !~ /$transposon/) {$names{$b[0]}=$names{$b[0]}.",$transposon";}
23 }
24 else {
25 $position{$b[0]}="$a[0]\:$a[1]\:$a[2]";
26 $names{$b[0]}=$a[3];
27 }
28 }
29 close input;
30
31 open (output, ">>temp_for_sort") or die "Can't open temp_for_sort since $!\n";
32 while ((my $key, my $value) = each (%position)) {
33 my @z=split(/\:/, $value);
34 print output "$z[0]\t$z[1]\t$z[2]\t$names{$key}\n";
35 }
36 close output;
37
38 system("sort +0 -1 +1n -2 +2n -3 temp_for_sort > sorted");
39 system("uniq -c sorted > $ARGV[1]");
40 system("rm sorted temp_for_sort");