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

Diff of /FigKernelPackages/P2Pupdate.pm

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

revision 1.28, Wed Mar 31 11:14:47 2004 UTC revision 1.29, Wed Mar 31 16:32:22 2004 UTC
# Line 369  Line 369 
369    
370  =head1 package_annotations  =head1 package_annotations
371    
372  usage: &package_annotations($fig_base,$genomes,$file)  usage: &package_annotations($fig,$genomes,$file)
   
 $fig_base must be an absolute filename (begins with "/") giving the FIG from which  
    the updated code release will be taken.  
373    
374  $genomes is a pointer to a list of genome IDs that will be exchanged.  $genomes is a pointer to a list of genome IDs that will be exchanged.
375    
# Line 381  Line 378 
378  =cut  =cut
379    
380  sub package_annotations {  sub package_annotations {
381      my($fig_base,$genomes,$file) = @_;      my($fig,$who,$date,$genomes,$file) = @_;
382        my $fig_base = "$FIG_Config::fig_disk/FIG";
383    
384      &force_absolute($fig_base);      if (open(ANNOTATIONS,">$file"))
     &force_absolute($file);  
     if (-d "$fig_base/Tmp/Annotations") { system "rm -rf $fig_base/Tmp/Annotations" }  
     mkdir("$fig_base/Tmp/Annotations",0777) || die "could not make $fig_base/Tmp/Annotations";  
     foreach $genome (@$genomes)  
385      {      {
386          if (-s "$fig_base/Data/Organisms/$genome/annotations")          my @annotations = sort { $a->[0] cmp $b->[0] } $fig->annotations_made($genomes,$who,$date);
387            foreach $x (@annotations)
388          {          {
389              &FIG::run("cp $fig_base/Data/Organisms/$genome/annotations $fig_base/Tmp/Annotations/$genome");              print ANNOTATIONS join("\n",@$x),"\n///\n";
         }  
390      }      }
391      &FIG::run("chmod -R 777 $fig_base/Tmp/Annotations");          print ANNOTATIONS "//\n";
392    
393      if (opendir(ANN,"$fig_base/Tmp/Annotations"))          foreach $x (@annotations)
394      {      {
395          my @tmp = grep { $_ !~ /^\./ } readdir(ANN);              $peg = $x->[0];
396          closedir(ANN);              my @aliases = grep { $_ =~ /^(sp\||gi\||pirnr\||kegg\||N[PGZ]_)/ } $self->feature_aliases($peg);
397          if (@tmp > 0)              print ANNOTATIONS join("\t",($peg,join(",",@aliases),$self->genus_species($self->genome_of($peg)),scalar $self->function_of($peg))) . "\n";
         {  
             &FIG::run("cd $fig_base/Tmp/Annotations; tar czf $file *");  
398          }          }
399          else          print ANNOTATIONS "//\n";
400    
401            foreach $x (@annotations)
402          {          {
403              system "touch $file";              ($peg,undef) = @$x;
404                my $seq = $self->get_translation($peg);
405                &FIG::display_id_and_seq($peg,\$seq,\*ANNOTATIONS);
406          }          }
407            close(ANNOTATIONS);
408      }      }
     system "rm -rf $fig_base/Tmp/Annotations";  
409  }  }
410    
411    
412  =pod  =pod
413    
414  =head1 install_annotations  =head1 install_annotations
# Line 426  Line 423 
423  =cut  =cut
424    
425  sub install_annotations {  sub install_annotations {
426      my($fig_disk,$from,$package) = @_;      my($fig,$package) = @_;
427        my($user,$who,$date,$userR,@assignments,$peg,$aliases,$org,$func);
428        my(%pegs,%seq_of,@seq,$peg_to,$trans_pegs,$seq,$line,@ann,$ann);
429      my($genome);      my($genome);
430    
431      &force_absolute($fig_disk);      my $fig_disk = $FIG_Config::fig_disk;
432      &force_absolute($package);      open(IN,"<$package") || die "could not open $package";
433      if (! -s $package) { return }      $/ = "\n//\n";
434        if (defined($line = <IN>))
435        {
436            $line =~ s/\n\/\/\n/\n/s;
437            $line =~ s/\n\/\/\/\n//s;
438            @ann = split(/\n\/\/\/\n/,$line);
439            foreach $ann (@ann)
440            {
441                if ($ann =~ /^(fig\|\d+\.\d+\.peg\.\d+)\n(\d+)\n(\S+)\n(.*)/s)
442                {
443                    push(@annotations,[$1,$2,$3,$4]);
444                }
445            }
446            $/ = "\n";
447            while ($line && defined($line = <IN>) && ($line !~ /^\/\//))
448            {
449                chop $line;
450                ($peg,$aliases,$org,$func) = split(/\t/,$line);
451                $pegs{$peg} = [$aliases,$org,$func];
452            }
453    
454            if ($line) { $line = <IN> }
455            while (defined($line) && ($line !~ /^\/\//))
456            {
457                if ($line =~ /^>(\S+)/)
458                {
459                    $peg = $1;
460                    @seq = ();
461                    while (defined($line = <IN>) && ($line !~ /^[>\/]/) && ($line !~ /^\/\//))
462                    {
463                        push(@seq,$line);
464                        $line = <IN>;
465                    }
466                    $seq = join("",@seq);
467                    $seq =~ s/[ \n\t]//gs;
468                    $seq_of{$peg} = uc $seq;
469                }
470            }
471            close(IN);
472            $trans_pegs = $fig->translate_pegs(\%pegs,\%seq_of);
473            @annotations = sort { ($a->[0] cmp $b->[0]) or ($a->[1] <=> $b->[1]) }
474                           map { ($peg = $trans_pegs->{$_->[0]}) ? [$peg,$_->[1],$_->[2],$_->[3]] : () }
475                           @annotations;
476    
477      if (-d "$fig_disk/BackupAnnotations") { system "rm -rf $fig_disk/BackupAnnotations" }      if (-d "$fig_disk/BackupAnnotations") { system "rm -rf $fig_disk/BackupAnnotations" }
478      mkdir("$fig_disk/BackupAnnotations",0777);      mkdir("$fig_disk/BackupAnnotations",0777);
479      mkdir("$fig_disk/BackupAnnotations/New",0777);      mkdir("$fig_disk/BackupAnnotations/New",0777);
480      &FIG::run("cd $fig_disk/BackupAnnotations/New; tar xzf $package");          for ($i=0; ($i < @annotation); $i++)
481            {
482                if (($i == 0) || ($fig->genome_of($annotations[$i]->[0]) ne $fig->genome_of($annotations[$i-1]->[0])))
483                {
484                    if ($i != 0)
485                    {
486                        close(OUT);
487                    }
488                    $genome = $fig->genome_of($annotations[$i]->[0]);
489                    open(OUT,">$fig_disk/BackupAnnotations/New/$genome")
490                        || die "could not open $fig_disk/BackupAnnotations/New/$genome";
491                }
492                print OUT join("\n",@{$annotations[$i]}),"\n//\n";
493            }
494            if ($i > 0) { close(OUT) }
495        }
496    
497      opendir(TMP,"$fig_disk/BackupAnnotations/New") || die "could not open $fig_disk/BackupAnnotations/New";      opendir(TMP,"$fig_disk/BackupAnnotations/New") || die "could not open $fig_disk/BackupAnnotations/New";
498      my @genomes = grep { $_ =~ /^\d+\.\d+$/ } readdir(TMP);      my @genomes = grep { $_ =~ /^\d+\.\d+$/ } readdir(TMP);
499      closedir(TMP);      closedir(TMP);
# Line 550  Line 607 
607  =cut  =cut
608    
609  sub install_assignments {  sub install_assignments {
610      my($package) = @_;      my($fig,$package) = @_;
611      my($genome);      my($user,$who,$date,$userR,@assignments,$peg,$aliases,$org,$func);
612        my(%pegs,%seq_of,@seq,$peg_to,$trans_pegs,$seq);
613    
614      open(IN,"<$package") || die "could not open $package";      open(IN,"<$package") || die "could not open $package";
615      my $line = <IN>;      my $line = <IN>;
# Line 559  Line 617 
617      ($user,$who,$date) = split(/\t/,$line);      ($user,$who,$date) = split(/\t/,$line);
618      $userR = $user;      $userR = $user;
619      $userR =~ s/^master://;      $userR =~ s/^master://;
620    
621        while (defined($line = <IN>) && ($line !~ /^\/\./))
622        {
623            if ($line =~ /^(fig\|\d+\.\d+\.peg\.\d+)\t(\S.*\S)/)
624            {
625                push(@assignments,[$1,$2]);
626            }
627        }
628        while ($line && defined($line = <IN>) && ($line !~ /^\/\//))
629        {
630            chop $line;
631            ($peg,$aliases,$org,$func) = split(/\t/,$line);
632            $pegs{$peg} = [$aliases,$org,$func];
633        }
634    
635        if ($line) { $line = <IN> }
636        while (defined($line) && ($line !~ /^\/\//))
637        {
638            if ($line =~ /^>(\S+)/)
639            {
640                $peg = $1;
641                @seq = ();
642                while (defined($line = <IN>) && ($line !~ /^[>\/]/) && ($line !~ /^\/\//))
643                {
644                    push(@seq,$line);
645                    $line = <IN>;
646                }
647                $seq = join("",@seq);
648                $seq =~ s/[ \n\t]//gs;
649                $seq_of{$peg} = uc $seq;
650            }
651        }
652        close(IN);
653        $trans_pegs = $fig->translate_pegs(\%pegs,\%seq_of);
654    
655      &FIG::verify_dir("$FIG_Config::data/Assignments/$userR");      &FIG::verify_dir("$FIG_Config::data/Assignments/$userR");
656      my $file = &FIG::epoch_to_readable($date) . ":$who";      my $file = &FIG::epoch_to_readable($date) . ":$who:imported";
657      $file =~ s/\//-/g;      $file =~ s/\//-/g;
658      open(OUT,">$FIG_Config::data/Assignments/$userR/$file")      open(OUT,">$FIG_Config::data/Assignments/$userR/$file")
659          || die "could not open $FIG_Config::data/Assignments/$userR/$file";          || die "could not open $FIG_Config::data/Assignments/$userR/$file";
660      while (defined($line = <IN>))  
661        foreach $peg (keys(%$trans_pegs))
662      {      {
663          print OUT $line;          $peg_to = $trans_pegs->{$peg};
664            $func   = $pegs{$peg}->[2];
665            if ($fig->function_of($peg_to) ne $func)
666            {
667                print OUT "$peg_to\t$func\n";
668      }      }
669      close(IN);      }
670    
671      close(OUT);      close(OUT);
672      if (! -s "$FIG_Config::data/Assignments/$userR/$file") { unlink("$FIG_Config::data/Assignments/$userR/$file") }      if (! -s "$FIG_Config::data/Assignments/$userR/$file") { unlink("$FIG_Config::data/Assignments/$userR/$file") }
673  }  }

Legend:
Removed from v.1.28  
changed lines
  Added in v.1.29

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3