The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
=head1 Support for the Chado database schema

The Chado schema (L<http://gmod.org/Chado>) is a comprehensive 
database schema developed largely by developers at UC Berkeley and 
Harvard working on FlyBase.  It is intended to be a generic database 
schema for model organism use.  Its use with GBrowse is supported via 
a limited implementation of the Das interface from BioPerl.  It is 
limited in that it implements only parts of Bio::DasI interface that 
is required to make GBrowse work.

The Chado adaptor works through three perl modules that are part of a
separate distribution that can be obtained from CPAN:

  cpan> install Bio::DB::Das::Chado 

In addition to the standard Chado schema, this adaptor requires a few
additional views and functions.  These are found in two files in the
Chado CVS or in a gmod distribution.  These are:

  schema/Chado/modules/sequence/gff-bridge/sequence-gff-views.sql
  schema/Chado/modules/sequence/gff-bridge/sequence-gff-funcs.plpgsql

It is currently included in the default Chado schema that can be
obtained as part of the gmod distribution.

If you already have a Chado instance and want to add these items,
the easiest way to do that is to cat the files
to stdout and pipe that to a psql command:

  % cat sequence-gff-views.sql   | psql <Chado-database-name>
  % cat sequence-gff-funcs.pgsql | psql <Chado-database-name>

A sample Chado configuration file is included in contrib/conf_files/.  
Since Chado uses the Sequence Ontology for its controlled vocabulary, it
is quite likely that this configuration file should work for any
instance of Chado once the database-specific parameters are set.
Also, depending on what the "reference type" is (usually something
like 'chromosome' or 'contig'), the line in the configuration for 
reference class will need to be modified to agree with your data.

After the tables are created, the user that is running Apache must
be granted privileges to select on several tables.  Usually that
user is 'nobody', although on RedHat systems using RPM installed Apache
the user is 'apache'.  First create that user in Postgres, then in the
psql shell grant select permissions:

  CREATE USER nobody;
  GRANT SELECT ON feature_synonym      TO nobody;
  GRANT SELECT ON synonym              TO nobody;
  GRANT SELECT ON feature_dbxref       TO nobody;
  GRANT SELECT ON dbxref               TO nobody;
  GRANT SELECT ON feature              TO nobody;
  GRANT SELECT ON featureloc           TO nobody;
  GRANT SELECT ON cvterm               TO nobody;
  GRANT SELECT ON feature_relationship TO nobody;
  GRANT SELECT ON cv                   TO nobody;
  GRANT SELECT ON feature_cvterm       TO nobody;
  GRANT SELECT ON featureprop          TO nobody;
  GRANT SELECT ON pub                  TO nobody;
  GRANT SELECT ON feature_pub          TO nobody;
  GRANT SELECT ON db                   TO nobody;

=head1 Creating a configuration file

The GBrowse configuration file for a Chado database is the same format
as for any other data source, but there are a few notes specific to
Chado for GBrowse configuration files.  A sample configuration file
called 07.Chado.conf is included in the contrib/conf_files directory
of this distribution, and is installed in $HTDOCS/gbrowse/contrib/conf_files.

Two items specific to Chado that must go into the configuration file:

=over

=item Reference class

The reference class in configuration file must be the Sequence Ontology-
Feature Annotation (SOFA) type that is the feature type in Chado that
is the foundation type, like 'chromosome', 'region' or 'contig', the 
the other features in the database are on.

=item Aggregators

Aggregators must not be used with the Chado adaptor, as they are not needed
and do not make sense in this context.  They are used in Bio::DB::GFF
to construct complex biological objects out of the flat data in
GFF files, for example, attaching exons to their mRNA.  In Chado, this
is not necessary since the relationship between features is clearly
defined in the feature_relationship table, and that information
is automatically obtained by the Chado adaptor.

=item URL

Once you are properly configured you should be able to use GBrowse 
with an URL like http://localhost/cgi-bin/gbrowse/chado/.

=back

=head2 Bugs

If you encounter any bugs or problems with this Chado adaptor, please
contact the gmod-schema or gmod-gbrowse mailing lists 
(http://sourceforge.net/mail/?group_id=27707).

Scott Cain
scain@cpan.org
2009/05/08