[Bio] / FigKernelScripts / generate_partitions_worker.pl Repository:
ViewVC logotype

Diff of /FigKernelScripts/generate_partitions_worker.pl

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

revision 1.2, Mon Dec 22 07:13:27 2008 UTC revision 1.3, Thu Oct 8 19:00:18 2009 UTC
# Line 1  Line 1 
1  use FIG;  use FIG;
2    use Digest::MD5;
3  my $fig = new FIG;  my $fig = new FIG;
4  my $dbf = $fig->db_handle;  my $dbf = $fig->db_handle;
5  use FIGO;  use FIGO;
# Line 28  Line 29 
29  my $ofh = select OUT; $| = 1; select $ofh;  my $ofh = select OUT; $| = 1; select $ofh;
30  my %done_fam;  my %done_fam;
31    
32  my(%fam_to_pegs,%peg_to_fams);  my(%fam_to_pegs,%peg_to_fams,%peg_to_md5);
33  while (defined($_ = <FAMS>))  while (defined($_ = <FAMS>))
34  {  {
35      if ($_ =~ /^(\S+)\t(\S+)/)      if ($_ =~ /^(\S+)\t(\S+)/)
36      {      {
37          my($fam,$peg) = ($1,$2);          my($fam,$peg) = ($1,$2);
38          if ((! $fig->is_deleted_fid($peg)) && (! $done_fam{$fam}))          if (((is_fid($peg)) && (! $fig->is_deleted_fid($peg)) && (! $done_fam{$fam})) ||
39                (!is_fid($peg)))
40          {          {
41              push(@{$fam_to_pegs{$fam}},$peg);              push(@{$fam_to_pegs{$fam}},$peg);
42              push(@{$peg_to_fams{$peg}},$fam);              push(@{$peg_to_fams{$peg}},$fam);
43                #my $md5 = Digest::MD5::md5_hex( uc $seq );
44                #$peg_to_md5{$peg}=$md5;
45          }          }
46      }      }
47  }  }
# Line 52  Line 56 
56          $dbf = $fig->db_handle;          $dbf = $fig->db_handle;
57      }      }
58    
59        chomp $_;
60      my $cond = "fam = '".$_."'";      my $cond = "fam = '".$_."'";
61      my $x = $dbf->SQL("select fam from tmp_sync_partitions where $cond");      my $x = $dbf->SQL("select fam from tmp_sync_partitions where $cond");
62    
# Line 63  Line 68 
68    
69          my $todo = { $ff => 1 };          my $todo = { $ff => 1 };
70          my $loaded_fams = {};          my $loaded_fams = {};
71          my $state = [$fig,$figO,\%done_fam,$todo,$loaded_fams,\%fam_to_pegs,\%peg_to_fams,$sim_thresh];          my $state = [$fig,$figO,\%done_fam,$todo,$loaded_fams,\%fam_to_pegs,\%peg_to_fams,$sim_thresh,\%peg_to_md5];
72          &load_fam($ff,$state);          &load_fam($ff,$state);
73    
74          my @todo;          my @todo;
# Line 79  Line 84 
84  sub load_fam {  sub load_fam {
85      my($ff,$state) = @_;      my($ff,$state) = @_;
86    
87      my($fig,$figO,$done_fam,$todo,$loaded_fams,$fam_to_pegs,$peg_to_fams,$sim_thresh) = @$state;      my($fig,$figO,$done_fam,$todo,$loaded_fams,$fam_to_pegs,$peg_to_fams,$sim_thresh,$peg_to_md5) = @$state;
88    
89      my $loaded_fam = $loaded_fams->{$ff};      my $loaded_fam = $loaded_fams->{$ff};
90      if (! $loaded_fam)      if (! $loaded_fam)
91      {      {
92          my $pegs = $fam_to_pegs{$ff};          my $pegs = $fam_to_pegs{$ff};
93          my @clean_pegs = ();          my @clean_pegs = ();
94            my $id_flag = 'fid';
95          foreach my $peg (@$pegs)          foreach my $peg (@$pegs)
96          {          {
97              my $featureO = new FeatureO($figO,$peg);              my $featureO = new FeatureO($figO,$peg) if (&is_fid($peg));
98              if ($featureO && (! $fig->possibly_truncated($peg)) && (! $featureO->possible_frameshift))              if ($featureO && (! $fig->possibly_truncated($peg)) && (! $featureO->possible_frameshift))
99              {              {
100                  push(@clean_pegs,$peg);                  push(@clean_pegs,$peg);
101              }              }
102                #elsif (! is_fid($peg))
103                #{
104                #   # get the md5 sequence
105                #   my $md5 = $peg_to_md5->{$peg};
106                #   push(@clean_pegs, "gnl|md5|".$md5);
107                #   $id_flag = 'non_fid';
108                #}
109          }          }
110    
111          my @sims = ();          my @sims = ();
112          foreach my $sim ($fig->sims(\@clean_pegs,100000,$sim_thresh,'fig'))          my @presims = ();
113            if ($id_flag eq 'fid')
114            {
115                @presims = $fig->sims(\@clean_pegs,100000,$sim_thresh,'fig');
116            }
117            else {
118                @presims = $fig->sims(\@clean_pegs,100000,$sim_thresh,'raw');
119            }
120    
121            foreach my $sim (@presims)
122          {          {
123              my $match1 = $sim->e1 - $sim->b1;              my $match1 = $sim->e1 - $sim->b1;
124              my $match2 = $sim->e2 - $sim->b2;              my $match2 = $sim->e2 - $sim->b2;
# Line 151  Line 173 
173  sub process {  sub process {
174      my($fam,$state) = @_;      my($fam,$state) = @_;
175    
176      my($fig,$figO,$done_fam,$todo,$loaded_fams,$fam_to_pegs,$peg_to_fams,$sim_thresh) = @$state;      my($fig,$figO,$done_fam,$todo,$loaded_fams,$fam_to_pegs,$peg_to_fams,$sim_thresh,$peg_to_md5) = @$state;
177      my $loaded = $loaded_fams->{$fam};      my $loaded = $loaded_fams->{$fam};
178      my($worst_hit,$other_fams,$others_not_in_fam) = @$loaded;      my($worst_hit,$other_fams,$others_not_in_fam) = @$loaded;
179    
# Line 216  Line 238 
238  sub write_set {  sub write_set {
239      my($set,$state,$not_contained_in) = @_;      my($set,$state,$not_contained_in) = @_;
240    
241      my($fig,$figO,$done_fam,$todo,$loaded_fams,$fam_to_pegs,$peg_to_fams,$sim_thresh) = @$state;      my($fig,$figO,$done_fam,$todo,$loaded_fams,$fam_to_pegs,$peg_to_fams,$sim_thresh,$peg_to_md5) = @$state;
242      my %all_pegs;      my %all_pegs;
243    
244      my @fams_with_worst = ();      my @fams_with_worst = ();
# Line 250  Line 272 
272      print OUT "//\t",join(" ",@fams_with_worst),"\n";      print OUT "//\t",join(" ",@fams_with_worst),"\n";
273  }  }
274    
275    sub is_fid {
276        my ($fid) = @_;
277    
278        if ($fid =~ /^fig\|\d+\.\d+\.peg.\d+/){
279            return 1;
280        }
281        return 0;
282    }

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

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3