Bio-GMOD

 view release on metacpan or  search on metacpan

GMOD/Admin/Update/WormBase.pm  view on Meta::CPAN

  my $adaptor = $self->adaptor;
  $adaptor->parse_params(@p);

  my $version = $adaptor->version;
  my $rsync_module = $adaptor->rsync_module;

  $self->analyze_logs(-version => $version,
		      -site    => `hostname`);
  $self->prepare_tmp_dir();
  $self->fetch_acedb(-version        => $version);
  $self->fetch_elegans_gff(-version  => $version);
  $self->fetch_briggsae_gff(-version => $version);
  $self->fetch_blast_blat(-version   => $version);
  $self->rsync_software(-module       => $rsync_module,
                        -install_root => '/usr/local/wormbase/');
}

sub fetch_acedb {
  my ($self,@p) = @_;
  $self->logit(-msg      => 'Fetching and installing Acedb',
	       -emphasis => 1);

  my $adaptor = $self->adaptor;
  $adaptor->parse_params(@p);

  # Version to update to
  my $version = $adaptor->version;

  # Where to find the database tarballs.
  my $databases = $adaptor->database_repository;

  # The acedb tarball
  my $acedb  = sprintf($adaptor->acedb_tarball,$version);

  # Local and remote paths
  my $remote_path = "$databases/$version/$acedb";
  my $local_path  = $adaptor->tmp_path . "/$version";

  # Make sure there is enough space first
  my $disk_space = $adaptor->acedb_disk_space;
  $self->check_disk_space(-path      => $local_path,
			  -required  => $disk_space,
			  -component => 'acedb');

  $self->mirror(-remote_path => $remote_path,
		-local_path  => $local_path);

  my $acedb_path = $adaptor->acedb_path;

  unless ($adaptor->dl_only) {
    $self->logit(-msg => "Unpacking and installing $acedb");
    chdir($acedb_path);
    system("gunzip -c $local_path/$acedb | tar -x --no-same-owner -f -");
    unlink($acedb_path . '/elegans');
    symlink("elegans_$version",'elegans');

    # Adjust permissions
    my $command = <<END;
chown -R acedb $acedb_path/elegans*
chgrp -R acedb $acedb_path/elegans*
chmod 2775 $acedb_path/elegans*
##chown acedb $acedb_path/bin/*
##chgrp acedb $acedb_path/bin/*
END

    $self->test_for_error(system($command),"Fetching and installing acedb for WormBase");
  }
}


sub fetch_elegans_gff {
  my ($self,@p) = @_;
  $self->logit(-msg=>'Fetching and installing C. elegans GFF database',
	       -emphasis => 1);
  my $adaptor = $self->adaptor;
  $adaptor->parse_params(@p);

  # Version to update to
  my $version = $adaptor->version;

  # Where to find the database tarballs.
  my $databases = $adaptor->database_repository;

  # The gff tarball
  my $gff       = sprintf($adaptor->elegans_gff_tarball,$version);

  # Local and remote paths
  my $remote_path = "$databases/$version/$gff";
  my $local_path  = $adaptor->tmp_path . "/$version";

  # Make sure there is enough space first
  my $disk_space = $adaptor->elegans_gff_disk_space;
  $self->check_disk_space(-path      => $local_path,
			  -required  => $disk_space,
			  -component => 'elegans_gff');

  $self->mirror(-remote_path => $remote_path,
		-local_path  => $local_path);

  my $mysql_path = $adaptor->mysql_path;


  unless ($adaptor->dl_only) {
    $self->logit(-msg => "Unpacking and installing $gff");
    my $command = <<END;
cd $mysql_path
mv elegans elegans.bak
mv elegans_pmap elegans_pmap.bak
gunzip -c $local_path/$gff | tar xvf -
rm -rf elegans.bak
rm -rf elegans_pmap.bak
chgrp -R mysql elegans_pmap
chgrp -R mysql elegans
chown -R mysql elegans_pmap
chown -R mysql elegans
END

    $self->test_for_error(system($command),"Fetching and installing C. elegans GFF database for WormBase");
  }
}

sub fetch_blast_blat {
  my ($self,@p) = @_;
  $self->logit(-msg=>'Fetching and installing BLAST databases',
	       -emphasis => 1);
  my $adaptor = $self->adaptor;
  $adaptor->parse_params(@p);

  # Version to update to
  my $version = $adaptor->version;

  # Where to find the database tarballs.
  my $databases = $adaptor->database_repository;

  # The gff tarball
  my $blast = sprintf($adaptor->blast_tarball,$version);

  # Local and remote paths
  my $remote_path = "$databases/$version/$blast";
  my $local_path  = $adaptor->tmp_path . "/$version";

  # Make sure there is enough space first
  my $disk_space = $adaptor->blast_disk_space;
  $self->check_disk_space(-path      => $local_path,
			  -required  => $disk_space,
			  -component => 'blast');

  $self->mirror(-remote_path => $remote_path,
		-local_path  => $local_path);

  unless ($adaptor->dl_only) {
    $self->logit(-msg => "Unpacking and installing $blast");
    my $command = <<END;
cd /usr/local/wormbase
# Deal with blat
rm -rf blat.previous
mkdir blat.previous
mv blat/* blat.previous/.

# Create the blast directory
mkdir blast
gunzip -c $local_path/$blast | tar -x --no-same-owner -f -
mv blast_$version blast/.
rm -f blast/blast
cd blast/
ln -s blast_$version blast

# Fix permissions as necessary
chgrp -R wormbase /usr/local/wormbase/blat
chmod 2775 /usr/local/wormbase/blat

END

  $self->test_for_error(system($command),"Fetching and installing blast databases for WormBase");
  }
}


sub fetch_briggsae_gff {
  my ($self,@p) = @_;
  $self->logit(-msg=>'Fetching and installing C. briggsae GFF database',
	       -emphasis => 1);
  my $adaptor = $self->adaptor;
  $adaptor->parse_params(@p);

  # Version to update to
  my $version = $adaptor->version;

  # Where to find the database tarballs.
  my $databases = $adaptor->database_repository;

  # The gff tarball
  my $gff       = sprintf($adaptor->briggsae_gff_tarball,$version);

  # Local and remote paths
  my $remote_path = "$databases/$version/$gff";
  my $local_path  = $adaptor->tmp_path . "/$version";

  my $disk_space = $adaptor->briggsae_disk_space;
  $self->check_disk_space(-path      => $local_path,
			  -required  => $disk_space,
			  -component => 'briggsae_gff');

  my $result = $self->mirror(-remote_path => $remote_path,
			     -local_path  => $local_path);

  # If the briggsae GFF isn't present it hasn't been updated
  # This is not yet complete!  Note that the packaging script also
  # needs to be updated.
  #  unless ($result) {
  #    # Do we have a briggsae DB installed? If not, fetch the stable version
  #    unless (-d "$mysql_path/briggsae") {
  #      my $stable = $adaptor->database_repository_stable;
  #      my $remote_path = $stable . "/briggsae/$gff";
  #    }
  #  }

  my $mysql_path = $adaptor->mysql_path;
  unless ($adaptor->dl_only) {
    $self->logit(-msg => "Unpacking and installing $gff");
    my $command = <<END;
cd $mysql_path
mv briggsae briggsae.bak
gunzip -c $local_path/$gff | tar -xf -
rm -rf briggsae.bak
chgrp -R mysql briggsae
chown -R mysql briggsae
END

    $self->test_for_error(system($command),"Fetching and installing C. briggsae GFF database for WormBase");



( run in 0.936 second using v1.01-cache-2.11-cpan-d8267643d1d )