Transitive closure

From GO Wiki
Revision as of 19:19, 16 May 2008 by Cjm (talk | contribs) (New page: == Calculating the transitive closure: the old way == See [http://www.geneontology.org/GO.database.shtml#schema_notes Schema notes] The old way was to ''ignore the relation'' in the GO ...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Calculating the transitive closure: the old way

See Schema notes

The old way was to ignore the relation in the GO graph and calculate a blind transitive closure. This works fine so long as GO consists of only a few relations like is_a and part_of. However, it results in false positives when used with regulates. These are not so serious as we had previously been treating regulates as part_of anyway. However, the relation does need to be taken into account for other relations, escpecially has_part

Calculating the transitive closure: the new way

The new way will take relations and semantics of those relations into account. See Reasoning. This may more accurately be called the deductive closure

3rd party consumers of the GO will have the option of calculating the closure themselves, or using a pre-computed closure. The pre-computed closure will be available as:

  1. A simple tab-delimited file
  2. in the graph_path table in the database

Tab delimited file

This will mostly likely contain:

  1. subject GO ID (i.e. child)
  2. target GO ID (i.e. parent)
  3. relation ID (e.g. part_of)
  4. distance

graph_path table

The graph_path table is being extended to include the relation:

       --- @@ graph_path.relationship_type_id
       --- References an entry in the term table corresponding
       --- to the INFERRED relation that holds between term2 and term1.
       --- At this time the value is always NULL - a blind transitive closure
       --- is calculated, ignoring the relationship_type_id in term2term.
       --- However, in future we want to calculate different closures for
       --- different relations. [See
       --- ]
       relationship_type_id integer,

foreign key (relationship_type_id) references term(id),

Using the closure

How it's calculated

Currently the blind transitive closure is calculated using perl code in go-db-perl

This code will be retired - instead we will use a reasoner; most likely the OboEdit reasoner. See the OE reasoner paper ([[:Category::Reasoning]]