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

Diff of /FigKernelPackages/FigFam.pm

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

revision 1.61, Thu Oct 4 00:58:56 2007 UTC revision 1.62, Sat Oct 13 15:10:06 2007 UTC
# Line 802  Line 802 
802    
803      my $fig = $self->{fig};      my $fig = $self->{fig};
804      my $dir = $self->{dir};      my $dir = $self->{dir};
805      open(TMP,">$FIG_Config::temp/tmp$$.fasta")  
806        if ($ENV{DEBUG}) { print STDERR &Dumper([$self->family_id,$seq]) }
807    
808        my($in);
809        if (open(DEC,"<$dir/decision.procedure") && ($in = <DEC>) && ($in =~ /^(\S+)\s+(\S.*\S)/))
810        {
811            my $procedure = $1;
812            my @args      = split(/\s+/,$2);
813            return &{$procedure}($self,$fig,$loose,$seq,$dir,@args);
814        }
815        else
816        {
817            print STDERR $self->family_id," is missing a decision procedure\n";
818            return 0;
819        }
820    }
821    
822    sub blast_vote {
823        my($self,$fig,$loose,$seq,$dir,$min_bsc) = @_;
824    
825        (-s "$dir/PEGs") || return undef;
826        my %pegs_in = map { $_ =~ /(fig\|\d+\.\d+\.peg\.\d+)/; $1 => 1 } `cat $dir/PEGs`;
827    
828        my $N = &FIG::min(10,scalar keys(%pegs_in));
829        my $tmpF = "$FIG_Config::temp/tmp$$.fasta";
830        open(TMP,">$tmpF")
831          || die "could not open $FIG_Config::temp/tmp$$.fasta";          || die "could not open $FIG_Config::temp/tmp$$.fasta";
832      print TMP ">query\n$seq\n";      print TMP ">query\n$seq\n";
833      close(TMP);      close(TMP);
834        my $query_ln = length($seq);
835        my @tmp = `blastall -i $tmpF -d $dir/PEGs.fasta -m 8 -FF -p blastp`;
836    
837      if ($ENV{DEBUG}) { print STDERR &Dumper([$self->family_id,$seq]) }      my $sims = [];
838        my $in = 0;
839        my $out = 0;
840        my(%seen);
841        for (my $simI=0; $N && ($simI < @tmp); $simI++)
842        {
843            $_ = $tmp[$simI];
844            if ($ENV{DEBUG}) { print STDERR $_ }
845            chop;
846            my $sim = [split(/\t/,$_)];
847            my $peg = $sim->[1];
848            next if (($_ = $ENV{IGNORE}) && (&FIG::genome_of($peg) eq $_)); # for debugging
849            my $bit_score = $sim->[11];
850            my $matched1 = abs($sim->[7] - $sim->[6]) + 1;
851            my $matched2 = abs($sim->[9] - $sim->[8]) + 1;
852            my $ln2 = $self->{peg_lengths}->{$peg};
853            my $normalized_bsc = $bit_score / $ln2;
854            if (! $seen{$peg})
855            {
856                $seen{$peg} = 1;
857                if ($pegs_in{$peg} &&
858                    ($matched1 >= (0.8 * $query_ln)) &&
859                    ($matched2 >= (0.8 * $ln2)) &&
860                    ($normalized_bsc >= $min_bsc))
861                {
862                    push @$sim, $query_ln, $self->{peg_lengths}->{$peg};
863                    bless $sim, 'Sim';
864                    push @$sims, $sim;
865                    $in++;
866                }
867                else
868                {
869                    $out++;
870                }
871                $N--;
872            }
873        }
874        return (($in > $out),$sims);
875    }
876    
877      my $query_ln = length($seq);  sub ross_hack {
878        my($self,$fig,$loose,$seq,$dir,$min_bsc) = @_;
879    
880      my @tmp = `blastall -i $FIG_Config::temp/tmp$$.fasta -d $dir/PEGs.fasta -m 8 -FF -p blastp`;      my $tmpF = "$FIG_Config::temp/tmp$$.fasta";
881        open(TMP,">$tmpF")
882            || die "could not open $FIG_Config::temp/tmp$$.fasta";
883        print TMP ">query\n$seq\n";
884        close(TMP);
885    
886        my $query_ln = length($seq);
887        my @tmp = `blastall -i $tmpF -d $dir/PEGs.fasta -m 8 -FF -p blastp`;
888    
889      my %seen;      my %seen;
890      my $should_be = 0;      my $should_be = 0;

Legend:
Removed from v.1.61  
changed lines
  Added in v.1.62

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3