NAME

Bio::GMOD - Unified API for Model Organism Databases

SYNOPSIS

Check the installed version of a MOD

use Bio::GMOD::Util::CheckVersions.pm
my $mod     = Bio::GMOD::Util::CheckVersions->new(-mod=>'WormBase');
my $version = $mod->live_version;

Update a MOD installation

use Bio::GMOD::Update;
my $mod = Bio::GMOD::Update->new(-mod=>'WormBase');
$gmod->update();

Fetch a list of genes from a MOD

use Bio::GMOD::Query;
my $mod = Bio::GMOD::Query->new(-mod=>'WormBase');
my @genes = $mod->fetch(-class=>'Gene',-name=>'unc-26');

DESCRIPTION

Bio::GMOD is a unified API for accessing various Model Organism Databases. It is a part of the Generic Model Organism Database project, as well as distributed on CPAN.

MODs are highly curated resources of biological data. Although they typically incorporate sequence data housed at community repositories such as NCBI, they place this information within a framework of biological fuction gelaned from the published literature of experiments in model organisms.

Given the great proliferation of MODs, cross-site data mining strategies have been difficult to implement. Such strategies typically require a familiarity with both the underlying data model and the historical vocabulary of the model system.

Furthermore, the quickly-evolving nature of these projects have made installing a MOD locally and keeping it up-to-date a delicate and time-consuming experience.

Bio::GMOD aims to solve these problems by:

1.  Enabling cross-MOD data mining through a unified API
2.  Insulating programmatic end users from model changes
3.  Making MODs easy to install
4.  Making MODs easy to upgrade

PUBLIC METHODS

Bio::GMOD->new(@options)
Name          : new()
Status        : public
Required args : mod || organism || species
Optional args : hash of system defaults to override
Returns       : Bio::GMOD::* object as appropriate, with embedded
                Bio::GMOD::Adaptor::* object

Bio::GMOD->new() is the generic factory new constructor for all of Bio::GMOD.pm (with the exception of Bio::GMOD::Adaptor, discussed elsewhere). new() will create an object of the appropriate class, including dynamic subclassing when necessary, as well as initializing an appropriate default Bio::GMOD::Adaptor::* object.

Options:
-mod       The symbolic name of the MOD to use (WormBase, FlyBase, SGD, etc)
-class     Force instantiation of a specific class (eg see Bio::GMOD::Monitor)

Any additional options, passed in the named parameter "-name => value" style will automatically be considered to be default values specific to the MOD adaptor of choice. These values will be parsed and loaded into the Bio::GMOD::Adaptor::"your_mod" object. A corresponding accessor method (ie $adaptor->name) will be generated. See Bio::GMOD::Adaptor for additional details.

if "--mod" is not specified, adaptors to all available MODs will be instantiated. Note that this probably does not make sense for classes like Update::*. It does provide a convenient mechanism to iteract with all MODs without too much extra coding. You can also specify a subset of MODs. Specifying a single MOD has special behavior fo use in things like updates.

$self->species2mod($species);
Name          : species2mod($species)
Status        : public
Required args : a species name
Optional args : none
Returns       : a MOD name as string

Provided with a single species, return the most appropriate MOD name. Species can be in the form of "G. species", "Genus species", or simple "species" for the lazy.

eg:
my $mod = $self->_species2mod('elegans');
# $mod contains 'WormBase'
$self->organism2mod($organism)
Name          : organism2mod($organism)
Status        : public
Required args : a general organism name
Optional args : none
Returns       : a MOD name as string

Like species2mod(), _organism2mod translates a general organism into the most appropriate hosting MOD.

eg:
my $mod = $self->_organism2mod('nematode');
# $mod contains 'WormBase'

NOTES FOR DEVELOPERS

Bio::GMOD.pm uses a generically subclass-able architecture that lets MOD developers support various features as needed or desired. For example, a developer may wish to override the default methods for Update.pm by building a Bio::GMOD::Update::FlyBase package that provides an update() method, as well as various supporting methods.

Currently, the only participating MOD is WormBase. The author hopes that this will change in the future!

BUGS

None reported.

SEE ALSO

Bio::GMOD::Update, Bio::GMOD::Adaptor

AUTHOR

Todd W. Harris <harris@cshl.org>.

Copyright (c) 2003-2005 Cold Spring Harbor Laboratory.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

ACKNOWLEDGEMENTS

Much thanks to David Craig (dacraig@stanford.edu) for extensive alpha testing.