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

Diff of /FigKernelPackages/FIG.pm

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

revision 1.360, Fri Sep 2 22:23:33 2005 UTC revision 1.361, Tue Sep 6 18:52:35 2005 UTC
# Line 12  Line 12 
12    
13  use DBrtns;  use DBrtns;
14  use Sim;  use Sim;
15    use Annotation;
16  use Blast;  use Blast;
17  use FIG_Config;  use FIG_Config;
18  use FullLocation;  use FullLocation;
# Line 7195  Line 7196 
7196          {          {
7197              my $anno_list = $genome_anno_list->{$peg};              my $anno_list = $genome_anno_list->{$peg};
7198    
7199              my @a = sort { $b->[1] <=> $a->[1] } @$anno_list;              #
7200                # Pull assignment annotations.
7201                #
7202    
7203                my @a = grep { $_->is_assignment() } @$anno_list;
7204    
7205                next unless @a > 0;
7206    
7207                #
7208                # and sort by date, descending.
7209                #
7210    
7211                @a = sort { $b->anno_time() <=> $a->anno_time() } @a;
7212    
7213              my $winner = $a[0];              my $winner = $a[0];
             my($mpeg, $time, $who, $anno) = @$winner;  
             $mpeg eq $peg or confess "KEY mismatch in annotations_made_fast output";  
7214    
7215              if ($anno =~ /Set.*function to\n(.*)\n?/s)              $winner->fid() eq $peg or confess "KEY mismatch in annotations_made_fast output";
7216              {  
7217                  push(@out, [$peg, $1, $time, $who]);              push(@out, $winner);
             }  
7218          }          }
7219      }      }
7220      return @out;      return @out;
# Line 7388  Line 7398 
7398          my $afh = new FileHandle("<$genome_dir/annotations");          my $afh = new FileHandle("<$genome_dir/annotations");
7399          if ($afh)          if ($afh)
7400          {          {
7401              my($fid, $anno_time, $who, $anno_text,$anno_who);              my($fid, $anno_time, $who, $anno_text,$anno_who, @rest);
   
             local $/ = "//\n";  
7402    
7403              while (my $ann = <$afh>)              while (not $afh->eof())
7404              {              {
7405                  chomp $ann;                  chomp($fid = <$afh>);
7406                    chomp($anno_time = <$afh>);
7407                    chomp($who = <$afh>);
7408                    @rest = ();
7409    
7410                  if ((($fid, $anno_time, $who, $anno_text, $anno_who) =                  while (<$afh>)
                      ($ann =~ /^(fig\|\d+\.\d+\.peg\.\d+)\n(\d+)\n(\S+)\n(Set\s+(\S+)\s+function\s+to.*\S)/s)) and  
                     not $self->is_deleted_fid($fid) and  
                     $anno_time >= $start_time and  
                     $anno_time <= $end_time and  
                     ($anno_by eq 'all' or ($master_anno ? ($anno_who eq 'FIG' or $anno_who eq 'master') : ($who eq $anno_by))))  
7411                  {                  {
7412                        chomp;
7413                        last if $_ eq "//";
7414                        push(@rest, $_);
7415                    }
7416    
7417                      #                      #
7418                      # Update users list.                  # Validate.
7419                      #                      #
7420    
7421                    if ($fid !~ /^fig\|\d+\.\d+\.peg\.\d+$/)
7422                      {                      {
7423                          my $d =  $self->is_deleted_fid($fid);                      warn "Invalid fid '$fid' in annotations ($genome_dir/annotations line $.)\n";
7424                        next;
7425                    }
7426                    elsif ($anno_time !~ /^\d+$/)
7427                    {
7428                        warn "Invalid annotation time '$anno_time' in annotations ($genome_dir/annotations line $.)\n";
7429                        next;
7430                      }                      }
7431    
7432                    #
7433                    # Filter deleted fids.
7434                    #
7435    
7436                    next if $self->is_deleted_fid($fid);
7437    
7438                    #
7439                    # Filter on date.
7440                    #
7441    
7442                    next if $anno_time < $start_time or $anno_time > $end_time;
7443    
7444                    my $aobj = new Annotation($fid, $anno_time, $who, @rest);
7445    
7446                    if ($aobj->is_assignment())
7447                    {
7448                        my $anno_who = $aobj->assignment_who();
7449    
7450                        #
7451                        # Filter on annotator.
7452                        #
7453                        if ($anno_by eq 'all' or
7454                            ($master_anno ?
7455                             ($anno_who eq 'FIG' or $anno_who eq 'master') :
7456                             ($who eq $anno_by)))
7457                        {
7458                      if ($replace_master_with_group)                      if ($replace_master_with_group)
7459                      {                      {
7460                          $anno_text =~ s/Set master function to/Set $group function to/;                              $aobj->set_assignment_who($group);
7461                            }
7462                        }
7463                        else
7464                        {
7465                            next;
7466                        }
7467                    }
7468                    #
7469                    # Non-assignment annotations are filtered such that:
7470                    # If master annotations are requested, we take all non-assignment annotations.
7471                    # Otherwise, we take only those where $who eq $anno_by.
7472                    #
7473                    elsif (not($anno_by eq 'all' or
7474                               $anno_by eq $who))
7475                    {
7476                        next;
7477                      }                      }
7478    
7479                      my $anno = [$fid, $anno_time, $who, $anno_text];                  #
7480                    # Fall through: save this anno. Note that we do not save the final newline.
7481                    #
7482    
7483                      push(@{$gpegs->{$fid}}, $anno);                  push(@{$gpegs->{$fid}}, $aobj);
                 }  
7484              }              }
7485    
7486    #           while (my $ann = <$afh>)
7487    #           {
7488    #               chomp $ann;
7489    
7490    #               if ((($fid, $anno_time, $who, $anno_text, $anno_who) =
7491    #                    ($ann =~ /^(fig\|\d+\.\d+\.peg\.\d+)\n(\d+)\n(\S+)\n(Set\s+(\S+)\s+function\s+to.*\S)/s)) and
7492    #                   not $self->is_deleted_fid($fid) and
7493    #                   $anno_time >= $start_time and
7494    #                   $anno_time <= $end_time and
7495    #                   ($anno_by eq 'all' or ($master_anno ? ($anno_who eq 'FIG' or $anno_who eq 'master') : ($who eq $anno_by))))
7496    #               {
7497    #                   #
7498    #                   # Update users list.
7499    #                   #
7500    #                   {
7501    #                       my $d =  $self->is_deleted_fid($fid);
7502    #                   }
7503    
7504    #                   if ($replace_master_with_group)
7505    #                   {
7506    #                       $anno_text =~ s/Set master function to/Set $group function to/;
7507    #                   }
7508    
7509    #                   my $anno = [$fid, $anno_time, $who, $anno_text];
7510    
7511    #                   push(@{$gpegs->{$fid}}, $anno);
7512    #               }
7513    #           }
7514    
7515          }          }
7516          push(@$annos, [$genome, $gpegs]);          push(@$annos, [$genome, $gpegs]);
7517      }      }
7518      return $annos;      return $annos;
7519  }  }
7520    
   
7521  ################################### ATTRIBUTES  ################################### ATTRIBUTES
7522    
7523  =head2 Attributes  =head2 Attributes

Legend:
Removed from v.1.360  
changed lines
  Added in v.1.361

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3