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

Diff of /FigKernelPackages/ProtFamsLite.pm

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

revision 1.1, Wed Feb 25 03:36:14 2009 UTC revision 1.2, Wed Mar 4 00:31:15 2009 UTC
# Line 27  Line 27 
27  use Data::Dumper;  use Data::Dumper;
28  use Carp;  use Carp;
29  use Digest::MD5;  use Digest::MD5;
30    use FIG;
31    
32  # This is the constructor.  Presumably, $class is 'ProtFamsLite'.  # This is the constructor.  Presumably, $class is 'ProtFamsLite'.
33  #  #
# Line 38  Line 39 
39    
40      defined($fam_data) || return undef;      defined($fam_data) || return undef;
41      $protfams->{dir} = $fam_data;      $protfams->{dir} = $fam_data;
42        $protfams->{root} = $fam_data;
43        $protfams->{fig} = new FIG;
44    
45      bless $protfams,$class;      bless $protfams,$class;
46      return $protfams;      return $protfams;
# Line 77  Line 80 
80      $self->{function_db} = \%function_hash;      $self->{function_db} = \%function_hash;
81  }  }
82    
83    sub check_db_family_function {
84        my($self) = @_;
85        my $fam_data = $self->{dir};
86    
87        my $db_function = "$fam_data/fam_function.db";
88        if (! -s $db_function) { return undef }
89        my %function_hash;
90        my $function_hash_tie = $self->create_tie(\%function_hash, $db_function,  $DB_HASH);
91        $function_hash_tie || die "tie $db_function failed: $!";
92        $self->{family_function_db} = \%function_hash;
93    }
94    
95  sub check_db_prot_to_fams {  sub check_db_prot_to_fams {
96      my($self) = @_;      my($self) = @_;
97      my $fam_data = $self->{dir};      my $fam_data = $self->{dir};
# Line 137  Line 152 
152      $self->{md5_fams_db} = \%md5_hash;      $self->{md5_fams_db} = \%md5_hash;
153  }  }
154    
155    sub check_db_md5_to_prots {
156        my($self) = @_;
157    
158        my $fam_data = $self->{dir};
159        my $db_md5_fams = "$fam_data/md5.prots.db";
160        if (! -s $db_md5_fams) { return undef }
161        my %md5_hash;
162        my $md5_hash_tie = $self->create_tie(\%md5_hash, $db_md5_fams, $DB_HASH);
163        $md5_hash_tie || die "tie $db_md5_fams failed: $!";
164        $self->{md5_prots_db} = \%md5_hash;
165    }
166    
167  sub check_db_family_id_map {  sub check_db_family_id_map {
168      my($self) = @_;      my($self) = @_;
169      my $fam_data = $self->{dir};      my $fam_data = $self->{dir};
# Line 178  Line 205 
205      return "";      return "";
206  }  }
207    
208    sub function_of_family {
209        my($self,$fam,$ignore_comments) = @_;
210    
211        $self->check_db_family_function;  # lazily tie DB
212    
213        my $func;
214        if ($func = $self->{family_function_db}->{$fam})
215        {
216            return $func;
217        }
218    }
219    
220  sub get_translation {  sub get_translation {
221      my($self,$prot,$ignore_comments) = @_;      my($self,$prot,$ignore_comments) = @_;
222    
# Line 192  Line 231 
231      return "";      return "";
232  }  }
233    
234    sub get_translation_bulk {
235        my($self,$prots,$ignore_comments) = @_;
236        my $seqs = {};
237    
238        $self->check_db_relevant_prot_data;  # lazily tie DB
239    
240        my $prot_data;
241        foreach my $prot (@$prots)
242        {
243            if ($prot_data = $self->{relevant_prot_data_db}->{$prot})
244            {
245                my($org,$func,$seq,$aliases) = split(/\t/,$prot_data);
246                $seqs->{$prot} = $seq;
247            }
248        }
249    
250        return $seqs;
251    }
252    
253    
254  sub md5_function_of {  sub md5_function_of {
255      my ($self, $md5, $preferred_db) = @_;      my ($self, $md5, $preferred_db) = @_;
# Line 244  Line 302 
302      $self->check_db_family_id_map;   # lazily tie DB      $self->check_db_family_id_map;   # lazily tie DB
303    
304      my $internal_id;      my $internal_id;
305      if ($internal_id = $self->{family_id_map_db}->{$family_name})      if ($internal_id = $self->{map_db}->{$family_name})
306      {      {
307          #my($internal_id) = split(/\t/,$family_name);          #my($internal_id) = split(/\t/,$family_name);
308    
# Line 341  Line 399 
399      }      }
400  }  }
401    
402    sub proteins_containing_md5 {
403        my ($self,$md5) = @_;
404    
405        $self->check_db_md5_to_prots; # lazily tie DB
406    
407        my $prots = $self->{md5_prots_db}->{$md5};
408        if ($prots){
409            return $prots;
410        }
411        else{
412            return undef;
413        }
414    }
415    
416  sub all_families {  sub all_families {
417      my($self) = @_;      my($self) = @_;
418    
# Line 369  Line 441 
441  }  }
442    
443  sub place_in_family {  sub place_in_family {
444      my($self,$seq,$debug,$loose,$debug_prot,$nuc) = @_;      my($self,$seq,$debug,$loose,$debug_prot,$nuc,$md5_flag) = @_;
445      my($protfam,$should_be,$sims);      my($protfam,$should_be,$sims);
446    
447      my $old_sep = $/;      my $old_sep = $/;
# Line 385  Line 457 
457      # check if sequence is in any protfam by md5 checksum      # check if sequence is in any protfam by md5 checksum
458      my $md5 = Digest::MD5::md5_hex( uc $seq );      my $md5 = Digest::MD5::md5_hex( uc $seq );
459      my $fams = $self->families_containing_md5($md5);      my $fams = $self->families_containing_md5($md5);
460      if (($fams) && ($fams !~ /\,/)){     # do regular check if the checksum returns more than one protfam      if ((!$md5_flag) && ($fams) && ($fams !~ /\,/)){     # do regular check if the checksum returns more than one protfam
461          my $got = new ProtFamLite($fams,$self);          my $got = new ProtFamLite($self,$fams);
462          ($should_be, $sims) = $got->should_be_member($seq,$debug,$loose,$debug_prot,$nuc);          ($should_be, $sims) = $got->should_be_member($seq,$debug,$loose,$debug_prot,$nuc);
463          return ($got,$sims);          return ($got,$sims);
464      }      }
# Line 424  Line 496 
496                  next;                  next;
497              }              }
498    
499              $protfam = new PrtoFamLite($fam_id,$dir);              $protfam = new ProtFamLite($self,$fam_id);
500    
501              if (not defined($protfam))              if (not defined($protfam))
502              {              {
# Line 524  Line 596 
596              $fams = $self->families_containing_md5($md5);              $fams = $self->families_containing_md5($md5);
597          }          }
598          if (($fams) && ($fams !~ /\,/)){     # do regular check if the checksum returns more than one prtofam          if (($fams) && ($fams !~ /\,/)){     # do regular check if the checksum returns more than one prtofam
599              my $got = new ProtFamLite($fams,$self);              my $got = new ProtFamLite($self, $fams);
600              ($should_be, $sims) = $got->should_be_member($seq,$debug,$loose,$debug_prot,$nuc);              ($should_be, $sims) = $got->should_be_member($seq,$debug,$loose,$debug_prot,$nuc);
601              $out->{$seq} = [$got, $sims];              $out->{$seq} = [$got, $sims];
602              #push (@$out, [$seq, $got, $sims]);              #push (@$out, [$seq, $got, $sims]);
# Line 582  Line 654 
654                  next;                  next;
655              }              }
656    
657              $protfam = new ProtFamLite($fam_id,$self);              $protfam = new ProtFamLite($self, $fam_id);
658    
659              if (not defined($protfam))              if (not defined($protfam))
660              {              {

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

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3