GenDBWiki/DeveloperDocumentation/GenDBDemoScript
Jump to navigation
Jump to search
A simple GenDB Demo Script
This simple demo script listed below fetches all contigs from a GenDB project database and prints out their names.
#!/usr/bin/env perl
# simple GenDB demo script that reads all contigs and writes their names
use strict;
use Carp;
use Getopt::Std;
use Term::ReadKey;
use IO::Handle;
use GPMS::Application_Frame::GENDB;
#
# this is necessary if the script is started via rsh(1)
# otherwise you won't see any output until the first <RETURN>
#
STDOUT->autoflush(1);
sub usage {
print "gendb_demo - get all contig sequences and write their names\n";
print "usage: gendb_demo -p <project>\n\n";
}
# global variables
our($opt_p);
getopts('p:');
# start sanity checks
if (!$opt_p) {
usage;
print "ERROR: Can't initialize GenDB: No project name given!\n";
exit 1;
};
# get the login name of the current user
my $user = defined( $ENV{'LOGNAME'} ) ? $ENV{'LOGNAME'} : (getpwuid( $> ))[0];
print "Enter your database password: ";
ReadMode('noecho');
my $password = ReadLine(0);
chomp $password;
print "\n";
ReadMode('normal');
# try to initialize GenDB project
# initialize an Application_Frame for the current project
my $gendbAppFrame = GPMS::Application_Frame::GENDB->new($user, $password);
# check if the initialization succeeded
die "Unable to initialize ApplicationFrame for GenDB project!" unless (ref $gendbAppFrame);
# try to initialize a project for the given name
$gendbAppFrame->project($opt_p);
# check a basic privilege
exit unless $gendbAppFrame->right("basic_access");
# get a global O2DBI-2 master object
my $master = $gendbAppFrame->application_master();
# fetchall contigs and print their names
print "Contigs in GenDB project $opt_p:\n\n";
my $contigs = $master->Region->Source->Contig->fetchall();
foreach my $contig (@$contigs) {
print $contig->name."\n";
}
print "\nDone.\n\n";