Chado Schema Documentation HOWTO

From GMOD
Revision as of 07:30, 22 November 2010 by Clements (Talk | contribs)

Jump to: navigation, search
Under Construction

This page or section is under construction.

You bet it is.

The Chado schema documentation on this wiki is a mixture of generated content and material directly entered by GMOD users into this wiki. The generated part of the documentation consists of the table definitions that are included on the Chado module pages and on the Chado Tables page, listing all the tables in Chado.

All of the table descriptions on Chado module pages and the Chado Tables page are generated every time their is a new release of Chado. The column and table details, including comments, come from the PostgreSQL data dictionary.

Using Module and Table Documentation

This section describes how to use the Chado Schema Documentation when updating/creating content on this wiki.

Showing a Table Description

To show the information about any table, use the Chado Table Template for that table:

 {{ChadoTable_tablename}}

For example,

 {{ChadoTable_cvterm}}

will show the table description for cvterm:

<protect>

Table: cvterm
Module: CV

A term, class, universal or type within an ontology or controlled vocabulary. This table is also used for relations and properties. cvterms constitute nodes in the graph defined by the collection of cvterms and cvterm_relationships.

cvterm columns
FK Name Type Description
cvterm_id serial PRIMARY KEY
cv cv_id integer UNIQUE#1

NOT NULL
The cv or ontology or namespace to which this cvterm belongs.

name character varying(1024) UNIQUE#1

NOT NULL
A concise human-readable name or label for the cvterm. Uniquely identifies a cvterm within a cv.

definition text A human-readable text

definition.

dbxref dbxref_id integer UNIQUE

NOT NULL
Primary identifier dbxref - The unique global OBO identifier for this cvterm. Note that a cvterm may have multiple secondary dbxrefs - see also table: cvterm_dbxref.

is_obsolete integer UNIQUE#1

NOT NULL
Boolean 0=false,1=true; see GO documentation for details of obsoletion. Note that two terms with different primary dbxrefs may exist if one is obsolete.

is_relationshiptype integer NOT NULL

Boolean 0=false,1=true relations or relationship types (also known as Typedefs in OBO format, or as properties or slots) form a cv/ontology in themselves. We use this flag to indicate whether this cvterm is an actual term/class/universal or a relation. Relations may be drawn from the OBO Relations ontology, but are not exclusively drawn from there.

Tables referencing cvterm via foreign key constraints:

</protect>

Linking to Module Documentation

To link to a module page from another wiki page use:

 {{ChadoModuleLink|Module Name|text to show}}

For example:

 {{ChadoModuleLink|Publication|pub module}}

Which is shown as:

pub module

Linking to Table Documentation

To link to a specific table's description on a wiki page, use:

 {{ChadoTableLink|table_name}}

For example:

 {{ChadoTableLink|feature}}

will result in:

feature

Note that this links to the table description on the Chado Tables page, not to the description on the table's module page.

Updating Table Documentation Part I

Chado Table Templates are the building blocks of the Chado schema documentation. They are also auto-generated, and cannot be directly updated by editing them on the wiki. Preventing editing of the templates ensures that user updates are not just written over and lost the next time the templates are auto-generated.

However, it is possible to update table documentation. It is a two-step process and you must take the first step. Here's the recipe:

  1. Enter your update on the wiki.
    1. Login to the wiki
    2. Go to the module page for the module the table is in.
    3. Click on the [edit] link to the right of the table you want to comment on.
    4. Go to the edit window towards the bottom of the page, and add your comments below the section "Additional Comments"
    5. Save the edits.
  2. The next time Chado is released, all the module pages will be reviewed for any comments that have been added since the last update.
    1. New comments will be added to the Chado SQL table definitions (and probably dropped from the "Additional Comments" sections).
    2. The table documentation will be regenerated and reposted to the wiki as part of the Chado release.

See Updating Table Documentation Part II for more on how step #2 is done.


Updating Module and Table Documentation Part II

Table Templates are themselves a nest of smaller MediaWiki templates. This means it's hard to figure out how the wiki decides what to show. However, all this complexity doesn't really matter to the wiki user or even to the wiki editor. It is all auto-generated, and it is never directly updated using the wiki interface. The upside of this complexity is that it is easy to change the appearance of all Chado tables in the wiki. All you do is modify the appropriate template.

This section describes how to regenerate the Table Templates from a live Chado database as part of creating a new release of Chado. If you are not creating a Chado release, or not a GMOD web site manager, then you don't care about this section.

This step is itself a multistep process:

  1. Integrate new comments on module pages with comments in the SQL schema.
  2. Regenerate the wiki content
  3. Push new wiki content to GMOD.org.

Integrate New Comments Into SQL DDL

This step involves walking through all the Chado Module pages, looking at any "Additional Comments" that have been added since the last Chado release, and then integrating them with the comments in the SQL DDL definitions of the tables. Integrated comments should then be removed from the module pages.

Regenerate Wiki Content

Next regenerate the wiki content after you have created a Chado instance using the newly updated SQL. This is done with scripts in the Chado source tree:

cd chado/doc/wiki

Edit generateChadoWikiTables.py and update the DB_NAME, DB_USER, MODULE_TABLE_PATH, and WIKI_DIR variables according to your situation.

Before you can run it, please make sure that the postgresql_autodoc package is installed. The script won't run without it. Now run:

./generateChadoWikiTables.py

This program generates all the wiki content you will need in the WIKI_DIR directory, which by default is:

/tmp/ChadoWikiFiles/ Determined by what WIKI_DIR is set to.
Modules/
Contains one file per module. These become the "Tables" sections of the Chado module pages
Tables/
Contains one file per table; these will become Table Templates.
allTables.wiki
List of all tables; will become the module/table list on Chado Tables.

Push Regenerated Wiki Text to GMOD.org

  1. Now we need to update the wiki itself. First tar/compress the directory containing all the generated wiki files.
  2. Now copy it to the GMOD web server. You'll need shell access to the GMOD web server to do this.
  3. Unpack the file on the GMOD web server.
  4. Upload the pages to the wiki using automated (Table Templates) and manual (everything else) methods.

Update Table Templates

Use Mediawiki maintenance script ImportTextFile.php to upload the Table Templates.


The basic command for pushing the table templates is:

path/to/wiki/maintenance/ImportTextFile.php \
  -title "Template:ChadoTable_tablename" \
  -user "WikiUserName" \
  -comment "Table definition for Chado version x.yy on yyyy/mm/dd." \
  path/to/ChadoWikiFiles/tablename.wiki

Update Module Pages

Update Chado Tables Page