Mercurial > repos > lsong10 > psiclass
comparison PsiCLASS-1.0.2/ManipulateIntronFile.pl @ 0:903fc43d6227 draft default tip
Uploaded
| author | lsong10 |
|---|---|
| date | Fri, 26 Mar 2021 16:52:45 +0000 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:903fc43d6227 |
|---|---|
| 1 #!/usr/bin/env perl | |
| 2 | |
| 3 use strict ; | |
| 4 use warnings ; | |
| 5 | |
| 6 die "usage: a.pl intronA intronB [op]\n" if (@ARGV == 0 ) ; | |
| 7 | |
| 8 my %intronInfo ; | |
| 9 my %chromRank ; | |
| 10 | |
| 11 sub sortIntron | |
| 12 { | |
| 13 my @cols1 = split /\s+/, $a ; | |
| 14 my @cols2 = split /\s+/, $b ; | |
| 15 | |
| 16 if ( $cols1[0] ne $cols2[0] ) | |
| 17 { | |
| 18 $chromRank{ $cols1[0] } cmp $chromRank{ $cols2[0] } ; | |
| 19 } | |
| 20 elsif ( $cols1[1] != $cols2[1] ) | |
| 21 { | |
| 22 $cols1[1] <=> $cols2[1] ; | |
| 23 } | |
| 24 else | |
| 25 { | |
| 26 $cols1[2] <=> $cols2[2] ; | |
| 27 } | |
| 28 } | |
| 29 | |
| 30 open FP1, $ARGV[0] ; | |
| 31 my $cnt = 0 ; | |
| 32 while ( <FP1> ) | |
| 33 { | |
| 34 chomp ; | |
| 35 my $line = $_ ; | |
| 36 my @cols = split /\s+/ ; | |
| 37 push @cols, 1 ; | |
| 38 @{ $intronInfo{ $cols[0]." ".$cols[1]." ".$cols[2] } } = @cols ; | |
| 39 if ( !defined $chromRank{ $cols[0]} ) | |
| 40 { | |
| 41 $chromRank{ $cols[0] } = $cnt ; | |
| 42 ++$cnt ; | |
| 43 } | |
| 44 } | |
| 45 close FP1 ; | |
| 46 | |
| 47 open FP1, $ARGV[1] ; | |
| 48 while ( <FP1> ) | |
| 49 { | |
| 50 chomp ; | |
| 51 my $line = $_ ; | |
| 52 my @cols = split /\s+/ ; | |
| 53 my $key = $cols[0]." ".$cols[1]." ".$cols[2] ; | |
| 54 next if ( !defined $intronInfo{ $key } ) ; | |
| 55 my @infoCols = @{ $intronInfo{ $key } } ; | |
| 56 $infoCols[4] = $cols[4] if ( $infoCols[4] ne "+" || $infoCols[4] ne "-" ) ; | |
| 57 $infoCols[9] |= 2 ; | |
| 58 | |
| 59 @{ $intronInfo{ $key } } = @infoCols ; | |
| 60 } | |
| 61 close FP1 ; | |
| 62 | |
| 63 foreach my $key (sort sortIntron keys %intronInfo ) | |
| 64 { | |
| 65 my @infoCols = @{ $intronInfo{ $key } } ; | |
| 66 #print join( " ", @infoCols ), "\n" ; | |
| 67 | |
| 68 next if ( $infoCols[9] != 3 ) ; | |
| 69 pop @infoCols ; | |
| 70 print join( " ", @infoCols ), "\n" ; | |
| 71 } |
