[Bio] / FigKernelPackages / PinnedRegions.pm Repository:
ViewVC logotype

Diff of /FigKernelPackages/PinnedRegions.pm

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

revision 1.30, Fri Apr 2 09:42:27 2010 UTC revision 1.31, Fri Apr 23 20:24:22 2010 UTC
# Line 21  Line 21 
21  use strict;  use strict;
22  use warnings;  use warnings;
23    
24    use Data::Dumper;
25    
26  use FIG;  use FIG;
27  use FigFams;  use FigFams;
28  use FIG_Config;  use FIG_Config;
# Line 478  Line 480 
480      my($fig, $regions, $extended) = @_;      my($fig, $regions, $extended) = @_;
481      my %feature_data;      my %feature_data;
482    
483        my %all_fids;
484    
485        foreach my $region ( @$regions )
486        {
487            my $fids       = $region->{'features'};
488            map { $all_fids{$_}++ } @$fids;
489        }
490    
491        my @all_fids = keys(%all_fids);
492        my @locations = $fig->feature_location_bulk(\@all_fids);
493        my %locations = map { $_->[0] => $_->[1] } @locations;
494    
495        my $aliases = $fig->feature_aliases_bulk(\@all_fids);
496        my $functions = $fig->function_of_bulk(\@all_fids);
497    
498    #    print STDERR Dumper(\%locations, $aliases, $functions);
499      foreach my $region ( @$regions )      foreach my $region ( @$regions )
500      {      {
501          my $region_mid = $region->{'mid'};          my $region_mid = $region->{'mid'};
# Line 489  Line 507 
507              #  this step when pegs occur in multiple regions              #  this step when pegs occur in multiple regions
508              if ( not exists $feature_data{$fid} )              if ( not exists $feature_data{$fid} )
509              {              {
510                  $feature_data{$fid} = &feature_entry($fig, $fid, $region_mid, $extended);                  $feature_data{$fid} = &feature_entry($fig, $fid, $region_mid, $extended, $functions, \%locations, $aliases );
511              }              }
512          }          }
513      }      }
# Line 517  Line 535 
535  }  }
536    
537  sub feature_entry {  sub feature_entry {
538      my($fig, $fid, $region_mid, $extended) = @_;      my($fig, $fid, $region_mid, $extended, $all_functions, $all_locations, $all_aliases) = @_;
539    
540      my $type                = $fig->ftype($fid);      my $type                = $fig->ftype($fid);
541      my $loc                 = $fig->feature_location($fid);      my $loc                 = $all_locations->{$fid};
542      my($contig, $beg, $end) = $fig->boundaries_of($loc);      my($contig, $beg, $end) = $fig->boundaries_of($loc);
543      my($left, $right)       = sort {$a <=> $b} ($beg, $end);      my($left, $right)       = sort {$a <=> $b} ($beg, $end);
544      my $strand              = ($beg <= $end)? '+' : '-';      my $strand              = ($beg <= $end)? '+' : '-';
545      my $offset              = int(($left + $right)/2) - $region_mid;      my $offset              = int(($left + $right)/2) - $region_mid;
546      my $offset_beg          = $left  - $region_mid;      my $offset_beg          = $left  - $region_mid;
547      my $offset_end          = $right - $region_mid;      my $offset_end          = $right - $region_mid;
548      my $func                = scalar $fig->function_of($fid) || '';      my $func                = $all_functions->{$fid};
549      my $genome              = $fig->genome_of($fid);      my $genome              = $fig->genome_of($fid);
550      my $location            = FullLocation->new($fig, $genome, $loc);      my $location            = FullLocation->new($fig, $genome, $loc);
551      my $size = 0;      my $size = 0;
# Line 546  Line 564 
564                     'offset_end' => $offset_end,                     'offset_end' => $offset_end,
565                     'function'   => $func };                     'function'   => $func };
566      if ($extended) {      if ($extended) {
567          my $aliases = $fig->feature_aliases($fid) || '';          my $a = $all_aliases->{$fid};
568            my $aliases = ref($a) ? join("|", @$a) : '';
569    
570          $retval->{aliases} = $aliases;          $retval->{aliases} = $aliases;
571      }      }
572    

Legend:
Removed from v.1.30  
changed lines
  Added in v.1.31

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3