[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.58, Wed Mar 31 19:20:24 2004 UTC revision 1.59, Thu Apr 1 14:54:57 2004 UTC
# Line 3904  Line 3904 
3904      return (($x->[1] eq $y->[1]) && (abs($x->[2] - $y->[2]) < 5000));      return (($x->[1] eq $y->[1]) && (abs($x->[2] - $y->[2]) < 5000));
3905  }  }
3906    
3907    sub candidates_for_role {
3908        my($self,$role,$genome,$cutoff,$user) = @_;
3909        my($peg);
3910        $user = $user ? $user : "master";
3911    
3912        my @cand = map { $_->[0] }
3913                   sort { $a->[1] <=> $b->[1] }
3914                   map { $peg = $_; [$peg,$self->crude_estimate_of_distance($genome,&FIG::genome_of($peg))] }
3915                   $self->seqs_with_role($role,$user);
3916    
3917        my $hits = {};
3918        my $seen = {};
3919        my $how_many = (@cand > 10) ? 10 : scalar @cand;
3920        &try_to_locate($self,$genome,$hits,[@cand[1..$how_many]],$seen,$cutoff);
3921        if (keys(%$hits) == 0)
3922        {
3923            splice(@cand,0,$how_many+1);
3924            &try_to_locate($self,$genome,$hits,\@cand,$seen,$cutoff);
3925        }
3926        return sort {$hits->{$a}->[0] <=> $hits->{$b}->[0]} keys(%$hits);
3927    }
3928    
3929    sub try_to_locate {
3930        my($self,$genome,$hits,$to_try,$seen,$cutoff) = @_;
3931        my($prot,$id2,$psc,$id2a,$x,$sim);
3932    
3933        if (! $cutoff) { $cutoff = 1.0e-5 }
3934    
3935        foreach $prot (@$to_try)
3936        {
3937            if (! $seen->{$prot})
3938            {
3939                if (($prot =~ /^fig\|(\d+\.\d+)/) && ($1 eq $genome))
3940                {
3941                    $hits->{$prot} = [0,$prot];
3942                }
3943                else
3944                {
3945                    foreach $sim ($self->sims($prot,1000,$cutoff,"raw",0))
3946                    {
3947                        $id2 = $sim->id2;
3948                        $psc = $sim->psc;
3949                        foreach $id2a (map { $_->[0] } $self->mapped_prot_ids($id2))
3950                        {
3951                            if (($id2a =~ /^fig\|(\d+\.\d+)/) && ($1 eq $genome))
3952                            {
3953                                $x = $hits->{$id2a};
3954                                if ((! $x) || ($x->[0] > $psc))
3955                                {
3956                                    $hits->{$id2a} = [$sim->psc,$prot];
3957                                }
3958                            }
3959                            elsif ($psc < 1.0e-20)
3960                            {
3961                                {
3962                                    $seen->{$id2a} = 1;
3963                                }
3964                            }
3965                        }
3966    
3967                    }
3968                }
3969            }
3970        }
3971    }
3972    
3973  #################################   DNA sequence Stuff ####################################  #################################   DNA sequence Stuff ####################################
3974    
3975  =pod  =pod

Legend:
Removed from v.1.58  
changed lines
  Added in v.1.59

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3