NOTE: We are working on migrating this site away from MediaWiki, so editing pages will be disabled for now.
Chado Phylogeny Module
This page or section needs to be edited. Please help by editing this page to add your revisions or additions.
Contents
Introduction
For representing phylogenetic trees; the trees represent the phylogeny of some some kind of sequence feature, protein or nucleotide, or actual organism taxonomy trees.
This module also has the ability to easily create multiple trees, to easily create super trees, to retrieve nodes easily from different levels in a tree without recursion (nested sets), and the ability to associate trees with algorithms (referencing the Chado Companalysis Module).
This module relies heavily on the Sequence module. In particular, all the leaf nodes in a tree correspond to features; these will usually be features of type SO:protein or SO:polypeptide (but other trees are possible - e.g. intron trees). If it is desirable to store multiple alignments for each non-leaf node, then each node can be mapped to a feature of type SO:match. Please refer to the sequence module docs for details on storing multiple alignments.
Annotating nodes
Each node can have a feature attached; this 'feature' is the multiple alignment for non-leaf nodes. It is these features that are annotated rather than annotating the nodes themselves. This has lots of advantages - we can piggyback off of the sequence module and reuse the tables there the leaf nodes may have annotations already attached - for example, GO associations. In fact, it is even possible to annotate ranges along an alignment - this would entail creating a new feature which has a featureloc on the alignment feature.
The nested set tree implementation by way of Joe Celko; see the excellent introduction by Aaron Mackey at http://www.oreillynet.com/pub/a/network/2002/11/27/bioconf.html.
Open Issues
Should there be an additional table, phylonode_relationshipprop? This table would Increase the detail with which one can describe the edges between phylonodes, and these details could include such things as bootstrapping details or divergence times. The current thinking is that such a table should be created but input from the Chado designers would be useful here.
More Information
See the page on the related Organism module.
Tables
Table: phylonode
This is the most pervasive element in the phylogeny module, cataloging the "phylonodes" of tree graphs. Edges are implied by the parent_phylonode_id reflexive closure. For all nodes in a nested set implementation the left and right index will be *between* the parents left and right indexes.
FK | Name | Type | Description |
---|---|---|---|
phylonode_id | serial | PRIMARY KEY | |
phylotree_id | integer | UNIQUE#1 UNIQUE#2 NOT NULL | |
parent_phylonode_id | integer | Root phylonode can have null parent_phylonode_id value. | |
left_idx | integer | UNIQUE#1 NOT NULL | |
right_idx | integer | UNIQUE#2 NOT NULL | |
type_id | integer | Type: e.g. root, interior, leaf. | |
feature_id | integer | Phylonodes can have optional features attached to them e.g. a protein or nucleotide sequence usually attached to a leaf of the phylotree for non-leaf nodes, the feature may be a feature that is an instance of SO:match; this feature is the alignment of all leaf features beneath it. | |
label | character varying(255) | ||
distance | double precision |
Tables referencing this one via Foreign Key Constraints:
Table: phylonode_dbxref
For example, for orthology, paralogy group identifiers; could also be used for NCBI taxonomy; for sequences, refer to phylonode_feature, feature associated dbxrefs.
FK | Name | Type | Description |
---|---|---|---|
phylonode_dbxref_id | serial | PRIMARY KEY | |
phylonode_id | integer | UNIQUE#1 NOT NULL | |
dbxref_id | integer | UNIQUE#1 NOT NULL |
Table: phylonode_organism
This linking table should only be used for nodes in taxonomy trees; it provides a mapping between the node and an organism. One node can have zero or one organisms, one organism can have zero or more nodes (although typically it should only have one in the standard NCBI taxonomy tree).
FK | Name | Type | Description |
---|---|---|---|
phylonode_organism_id | serial | PRIMARY KEY | |
phylonode_id | integer | UNIQUE NOT NULL One phylonode cannot refer to >1 organism. | |
organism_id | integer | NOT NULL |
Table: phylonode_pub
FK | Name | Type | Description |
---|---|---|---|
phylonode_pub_id | serial | PRIMARY KEY | |
phylonode_id | integer | UNIQUE#1 NOT NULL | |
pub_id | integer | UNIQUE#1 NOT NULL |
Table: phylonode_relationship
This is for relationships that are not strictly hierarchical; for example, horizontal gene transfer. Most phylogenetic trees are strictly hierarchical, nevertheless it is here for completeness.
FK | Name | Type | Description |
---|---|---|---|
phylonode_relationship_id | serial | PRIMARY KEY | |
subject_id | integer | UNIQUE#1 NOT NULL | |
object_id | integer | UNIQUE#1 NOT NULL | |
type_id | integer | UNIQUE#1 NOT NULL | |
rank | integer | ||
phylotree_id | integer | NOT NULL |
Table: phylonodeprop
FK | Name | Type | Description |
---|---|---|---|
phylonodeprop_id | serial | PRIMARY KEY | |
phylonode_id | integer | UNIQUE#1 NOT NULL | |
type_id | integer | UNIQUE#1 NOT NULL type_id could designate phylonode hierarchy relationships, for example: species taxonomy (kingdom, order, family, genus, species), "ortholog/paralog", "fold/superfold", etc. | |
value | text | UNIQUE#1 NOT NULL DEFAULT ''::text | |
rank | integer | UNIQUE#1 NOT NULL |
Table: phylotree
Global anchor for phylogenetic tree.
FK | Name | Type | Description |
---|---|---|---|
phylotree_id | serial | PRIMARY KEY | |
dbxref_id | integer | NOT NULL | |
name | character varying(255) | ||
type_id | integer | Type: protein, nucleotide, taxonomy, for example. The type should be any SO type, or "taxonomy". | |
analysis_id | integer | ||
comment | text |
Tables referencing this one via Foreign Key Constraints:
Table: phylotree_pub
Tracks citations global to the tree e.g. multiple sequence alignment supporting tree construction.
FK | Name | Type | Description |
---|---|---|---|
phylotree_pub_id | serial | PRIMARY KEY | |
phylotree_id | integer | UNIQUE#1 NOT NULL | |
pub_id | integer | UNIQUE#1 NOT NULL |