[Bio] / FigKernelScripts / find_gaps.pl Repository:
ViewVC logotype

Diff of /FigKernelScripts/find_gaps.pl

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.6, Wed Oct 17 08:53:20 2007 UTC revision 1.7, Tue Oct 23 18:13:57 2007 UTC
# Line 21  Line 21 
21    
22  use constant LEFT   =>  0;  use constant LEFT   =>  0;
23  use constant RIGHT  =>  1;  use constant RIGHT  =>  1;
24  use constant FID    =>  2;  use constant LEN    =>  2;
25    use constant FID    =>  3;
26    
 use constant TRAN   =>  0;  
 use constant OTHERS =>  1;  
27    
28  $0 =~ m/([^\/]+)$/;   $this_tool = $1;  $0 =~ m/([^\/]+)$/;   $this_tool = $1;
29  $usage = "$this_tool  [-extend_5p=num] org_id  contigs  tbl_1 tbl_2 ... > gap_tbl";  $usage = "$this_tool  [-extend_5p=num] org_id  contigs  tbl_1 tbl_2 ... > gap_tbl";
# Line 91  Line 90 
90    
91  $gap_num = 0;  $gap_num = 0;
92  foreach $contig (sort keys %$len_of) {  foreach $contig (sort keys %$len_of) {
93      print STDERR "Scanning $contig ...\n" if $ENV{VERBOSE};      print STDERR "Processing $contig ...\n" if $ENV{VERBOSE};
94    
95      $x = $regions->{$contig};      $x = $regions->{$contig};
96      $x = defined($x) ? $x : [];      $x = defined($x) ? $x : [];
# Line 173  Line 172 
172                  $len = 1 + abs($end-$beg);                  $len = 1 + abs($end-$beg);
173    
174                  unless (defined($regions->{$contig})) { $regions->{$contig} = []; }                  unless (defined($regions->{$contig})) { $regions->{$contig} = []; }
175                  push(@ { $regions->{$contig} }, [ &FIG::min($beg, $end), &FIG::max($beg, $end), $fid ] );                  push(@ { $regions->{$contig} }
176                         , [ $left = &FIG::min($beg, $end), $right = &FIG::max($beg, $end), (1 + $right - $left), $fid ]
177                         );
178              }              }
179              else              else
180              {              {
# Line 186  Line 187 
187    
188      foreach my $contig (keys(%$regions))      foreach my $contig (keys(%$regions))
189      {      {
190          my $x = [ sort { $a->[LEFT] <=> $b->[LEFT] }  @ { $regions->{$contig} } ];          my $x = [ sort { ($a->[LEFT] <=> $b->[LEFT]) || ($b->[RIGHT] <=> $a->[RIGHT])
191                             }  @ { $regions->{$contig} }
192                      ];
193    
194          for (my $i=1; $i < @$x; ++$i)          for (my $i=1; $i < @$x; ++$i)
195          {          {
196              while (($i < @$x) && ($x->[$i-1]->[RIGHT] >= $x->[$i]->[LEFT]))              while (($i < @$x) && ($x->[$i-1]->[RIGHT] >= $x->[$i]->[LEFT]))
197              {              {
198                  print STDERR "Merging $i:\t$x->[$i-1]->[FID]\t$x->[$i]->[FID]\n"                  print STDERR "Merging $i:\t$x->[$i-1]->[FID]:$x->[$i-1]->[LEN]\t$x->[$i]->[FID]:$x->[$i]->[LEN]"
199                      if ($ENV{VERBOSE} && ($ENV{VERBOSE} > 1));                      if ($ENV{VERBOSE} && ($ENV{VERBOSE} > 1));
200    
201                  $x->[$i-1]->[RIGHT] = &FIG::max( $x->[$i-1]->[RIGHT], $x->[$i]->[RIGHT] );                  $x->[$i-1]->[RIGHT] = &FIG::max( $x->[$i-1]->[RIGHT], $x->[$i]->[RIGHT] );
202                    my $new_len = 1 + ($x->[$i-1]->[RIGHT] - $x->[$i-1]->[LEFT]);
203    
204                    print STDERR "\t--- new_len = $new_len\n"
205                        if ($ENV{VERBOSE} && ($ENV{VERBOSE} > 1));
206    
207                    $x->[$i-1]->[FID] .= ",$x->[$i]->[FID]";
208                    $x->[$i-1]->[LEN]  =   $new_len;
209    
210                  splice @$x, $i, 1;                  splice @$x, $i, 1;
211              }              }
212          }          }
213    
214          $regions->{$contig} = $x;          $regions->{$contig} = $x;
215          print STDERR "After merger, $contig has ", (scalar @$x), " regions\n\n" if $ENV{VERBOSE};          print STDERR "\nAfter mergers, $contig has ", (scalar @$x), " regions\n\n" if $ENV{VERBOSE};
216      }      }
217    
218      return $regions;      return $regions;

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.7

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3