[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.217, Sat Feb 12 03:50:04 2005 UTC revision 1.218, Sat Feb 12 04:01:01 2005 UTC
# Line 5823  Line 5823 
5823      my @cand = @$known;      my @cand = @$known;
5824      my $hits = {};      my $hits = {};
5825      my $seen = {};      my $seen = {};
5826      my $how_many = (@cand > 10) ? 9 : scalar @cand;      my $how_many = (@cand > 10) ? 9 : $#cand;
5827      &try_to_locate($self,$genome,$hits,[@cand[0..$how_many]],$seen,$cutoff);      &try_to_locate($self,$genome,$hits,[@cand[0..$how_many]],$seen,$cutoff);
5828      if (keys(%$hits) == 0)      if (keys(%$hits) == 0)
5829      {      {
# Line 5860  Line 5860 
5860                              $x = $hits->{$id2a};                              $x = $hits->{$id2a};
5861                              if ((! $x) || ($x->[0] > $psc))                              if ((! $x) || ($x->[0] > $psc))
5862                              {                              {
5863                                  $hits->{$id2a} = [$sim->psc,$prot];                                  $hits->{$id2a} = [$psc,$prot];
5864                              }                              }
5865                          }                          }
5866                          elsif ($psc < 1.0e-20)  #                       elsif (&neg_log($psc) > (2 * &neg_log($cutoff)))
5867                          {  #                       {
5868                              {  #                           $seen->{$id2a} = 1;
5869                                  $seen->{$id2a} = 1;  #                       }
5870                              }                              }
5871    
5872                          }                          }
5873                      }                      }
   
5874                  }                  }
5875              }              }
5876          }          }
5877    
5878    sub neg_log {
5879        my($x) = @_;
5880    
5881        if ($x == 0)
5882        {
5883            return 200;
5884        }
5885        else
5886        {
5887            return -log($x) / log(10);
5888      }      }
5889  }  }
5890    
5891    
5892    
5893  =pod  =pod
5894    
5895  =head1 best_bbh_candidates  =head1 best_bbh_candidates
# Line 7846  Line 7858 
7858      return @ret;      return @ret;
7859  }  }
7860    
 #  
 # Mark in $hits the pegs in $org that are similar to  
 # pegs in other organisms that have the given role.  
 #  
 sub try_to_locate {  
     my($self,$org,$hits,$to_try,$seen, $cutoff) = @_;  
     my($prot,$id2,$psc,$id2a,$x,$sim);  
   
     if (! $cutoff) { $cutoff = 1.0e-5 }  
   
     #  
     # @$to_try is a list of pegs  
     #  
     foreach $prot (@$to_try)  
     {  
         #  
         # If we've not looked at it before ...  
         #  
         if (! $seen->{$prot})  
         {  
             #  
             # Retrieve the top 1000 sims for this peg.  raw  
             # means don't expand.  
             #  
             foreach $sim ($self->sims($prot,1000,$cutoff,"raw",0))  
             {  
                 $id2 = $sim->id2;  
                 $psc = $sim->psc;  
   
                 #  
                 # Retrieve the proteins that the sims map to.  
                 #  
   
                 foreach $id2a (map { $_->[0] } $self->mapped_prot_ids($id2))  
                 {  
                     #  
                     # If it's a protein in the organism we're looking in,  
                     # and if it's a better hit than the hit we had before,  
                     # mark it in $hits->{id} with the score and the  
                     # protein id.  
                     #  
                     if (($id2a =~ /^fig\|(\d+\.\d+)/) && ($1 eq $org))  
                     {  
                         $x = $hits->{$id2a};  
                         if ((! $x) || ($x->[0] > $psc))  
                         {  
                             $hits->{$id2a} = [$sim->psc,$prot];  
                         }  
                     }  
                     #  
                     # Otherwise, mark it as having been seen if the score is good enough.  
                     #  
                     elsif ($psc < 1.0e-20)  
                     {  
                         {  
                             $seen->{$id2a} = 1;  
                         }  
                     }  
   
                 }  
             }  
         }  
     }  
 }  
7861    
7862  #  #
7863  # Background job support.  # Background job support.

Legend:
Removed from v.1.217  
changed lines
  Added in v.1.218

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3