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

Diff of /FigKernelPackages/ProtFamLite.pm

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

revision 1.1, Thu Feb 26 16:55:26 2009 UTC revision 1.2, Wed Mar 4 00:31:29 2009 UTC
# Line 45  Line 45 
45      my $fig = $ProtFams_Obj->{fig} ||      my $fig = $ProtFams_Obj->{fig} ||
46          confess "ProtFams_Obj does not contain a FIG object";          confess "ProtFams_Obj does not contain a FIG object";
47    
48      ($fam_id =~ /^\d+$/) || confess "invalid family id: $fam_id";  #    ($fam_id =~ /\d+$/) || confess "invalid family id: $fam_id";
49    
50      my $fam = {};      my $fam = {};
51      $fam->{id}   = $fam_id;      $fam->{id}   = $fam_id;
52      $fam->{root} = $ProtFams_Obj->{root};      $fam->{root} = $ProtFams_Obj->{root};
53        $fam->{fig} = $fig;
54    
55      my $fams_dir = qq($fam->{root}/FAMS);      my $fams_dir = qq($fam->{root}/FAMS);
56      my $dir = &fam_dir($ProtFams_Obj, $fam_id);  #    my $dir = &fam_dir($ProtFams_Obj, $fam_id);
57        my $dir = $ProtFams_Obj->path_to($fam_id);
58      $fam->{dir} = $dir;      $fam->{dir} = $dir;
59      (-d $dir) || return undef;      (-d $dir) || return undef;
60    
61      $fam->{function} = $fig->file_read( qq($dir/function), 1) || qq();      $fam->{function} = $fig->file_read( qq($dir/function), 1) || qq();
62        chomp $fam->{function};
63        $fam->{protfams_obj} = $ProtFams_Obj;
64    
65      my ($prot, $prots);      my ($prot, $prots);
66      my $protsL = [ map { $_ =~ /^(\S+)/ ? ($1) : () }      my $protsL = [ map { $_ =~ /^(\S+)/ ? ($1) : () }
# Line 85  Line 89 
89          confess "$fam_id is missing PROTS.fasta";          confess "$fam_id is missing PROTS.fasta";
90      }      }
91    
92      if ($self->use_ross_bounds($dir) && (-s "$dir/bounds")) {      if ((-f $fam->{root}."/FIG") && (&use_ross_bounds($class,$dir)) && (-s "$dir/bounds")) {
93          $fam->{bounds} = &load_bounds("$dir/bounds");          $fam->{bounds} = &load_bounds("$dir/bounds");
94      }      }
95    
# Line 102  Line 106 
106  sub use_ross_bounds {  sub use_ross_bounds {
107      my ($self, $dir) = @_;      my ($self, $dir) = @_;
108    
109      return ( ((-s qq($self->{root}/FIG) && (! (-s "$dir/decision.procedure")))      return ( (! (-s "$dir/decision.procedure"))
110             ||             ||
111                &which_dec("$dir/dec",'ross')                &which_dec("$dir/dec",'ross')
112             );             );
# Line 238  Line 242 
242      }      }
243      else      else
244      {      {
245          @rc = &ross_hack($self,$debug,$loose,$seq,$dir,$debug_prot,$nuc);  #       @rc = &ross_hack($self,$debug,$loose,$seq,$dir,$debug_prot,$nuc);
246    
247            open(DEC,"<$dir/decision.procedure.blast");
248            $in = <DEC>;
249            $in =~ /^(\S+)(\s+(\S.*\S))?/;
250            my $procedure = $1;
251            my @args      = $3 ? split(/\s+/,$3) : ();
252            close(DEC);
253    
254            @rc = &blast_vote($self,$debug,$loose,$seq,$dir,$debug_prot,$nuc,@args);
255      }      }
256      $/ = $old_eol;      $/ = $old_eol;
257      return @rc;      return @rc;
# Line 258  Line 271 
271      (-s "$dir/PROTS") || return undef;      (-s "$dir/PROTS") || return undef;
272    
273      my $PFsO = ProtFamsLite->new($self->{root});      my $PFsO = ProtFamsLite->new($self->{root});
274        my $fig = $self->{fig};
275    
276      if ($debug) { print STDERR "checking: ",$self->family_id," min_bsc=$min_bsc\n" }      if ($debug) { print STDERR "checking: ",$self->family_id," min_bsc=$min_bsc\n" }
277      my %prots_in = map { $_ =~ /(\S+)/; $1 => 1 } $self->{fig}-fiel_read( qq($dir/PROTS), qq(*) );      my %prots_in = map { $_ =~ /(\S+)/; $1 => 1 } $self->{fig}->file_read( qq($dir/PROTS), qq(*) );
278    
279      my $N = &min(10,scalar keys(%prots_in) - ($debug_prot ? 1 : 0));      my $N = &min(10,scalar keys(%prots_in) - ($debug_prot ? 1 : 0));
280      my $tmpF = "$FIG_Config::temp/tmp$$.fasta";      my $tmpF = "$FIG_Config::temp/tmp$$.fasta";
# Line 294  Line 308 
308    
309          my $sim = [split(/\t/,$_)];          my $sim = [split(/\t/,$_)];
310          my $prot = $sim->[1];          my $prot = $sim->[1];
311            #next if ((! -f "$self->{root}/FIG") && ($prot =~ /fig\|/));
312          next if ($debug_prot && ($debug_prot eq $prot));          next if ($debug_prot && ($debug_prot eq $prot));
313          my $bit_score = $sim->[11];          my $bit_score = $sim->[11];
314          my $matched1 = abs($sim->[7] - $sim->[6]) + 1;          my $matched1 = abs($sim->[7] - $sim->[6]) + 1;
# Line 302  Line 317 
317          if (! $seen{$prot})          if (! $seen{$prot})
318          {          {
319              $seen{$prot} = 1;              $seen{$prot} = 1;
320              my $count_in = &count_in($self,$PFsO,\%prots_in,$loose,$prot);              my $count_in = &count_in($self,$PFsO,$fig,\%prots_in,$loose,$prot);
321              my $ln2 = &get_len2($self,$PFsO,$prot,\%prots_in);              my $ln2 = &get_len2($self,$PFsO,$fig,$prot,\%prots_in);
322    
323              if (sprintf("%3.2f",($bit_score / $matched2)) >= $min_bsc)              if (sprintf("%3.2f",($bit_score / $matched2)) >= $min_bsc)
324              {              {
# Line 401  Line 416 
416  }  }
417    
418  sub get_len2 {  sub get_len2 {
419      my($self,$PFsO,$prot,$prots_in) = @_;      my($self,$PFsO,$fig,$prot,$prots_in) = @_;
420    
421      if ($prots_in->{$prot})      if ($prots_in->{$prot})
422      {      {
423          return $self->{prot_lengths}->{$prot};          return $self->{prot_lengths}->{$prot};
424      }      }
425        elsif ($prot =~ /fig\|\d+/)
426        {
427            return $fig->translation_length($prot);
428        }
429      else      else
430      {      {
431          return length($PFsO->seq_of($prot));          return length($PFsO->seq_of($prot));
432      }      }
433  }  }
434    
435    use Digest::MD5;
436  sub count_in {  sub count_in {
437      my($self,$PFsO,$prots_in,$loose,$prot) = @_;      my($self,$PFsO,$fig,$prots_in,$loose,$prot) = @_;
438    
439      if ($prots_in->{$prot}) { return 1 }      if ($prots_in->{$prot}) { return 1 }
440    
441        # figure out if it should be count_in by md5 sequence
442        my $seq;
443        if ($prot =~ /^fig\|/)
444        {
445            $seq = $fig->get_translation($prot);
446        }
447        else
448        {
449            $seq = $PFsO->get_translation($prot);
450        }
451    
452        my $md5 = Digest::MD5::md5_hex( uc $seq );
453        my @proteins_with_md5;
454        push (@proteins_with_md5, split (/\n/, $PFsO->proteins_containing_md5($md5)));
455    
456        foreach my $md5_prot (@proteins_with_md5)
457        {
458            if ($prots_in->{$md5_prot}) { return 1 }
459        }
460    
461      if (! $loose)         { return 0 }      if (! $loose)         { return 0 }
462      my $fam_func = $self->family_function;      my $fam_func = $self->family_function;
463      my $prot_func = $PFsO->function_of($prot);      $fam_func =~ s/.*: //;
464        chomp $fam_func;
465        my $prot_func;
466        #my $fig = $self->{fig};
467    
468        if ($prot =~ /^fig\|/)
469        {
470            $prot_func = $fig->function_of($prot);
471        }
472        else
473        {
474            $prot_func = $PFsO->function_of($prot);
475        }
476    
477      if ($prot_func)      if ($prot_func)
478      {      {
479          $prot_func =~ s/\s*\#.*$//;          $prot_func =~ s/\s*\#.*$//;

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3