Bio::GMOD - Unified API for Model Organism Databases
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');
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
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.
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'
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'
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!
Todd W. Harris <email@example.com>.
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.
Much thanks to David Craig (firstname.lastname@example.org) for extensive alpha testing.