Transitive closure: Difference between revisions
(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 ...) |
|||
Line 1: | Line 1: | ||
== Calculating the transitive closure: the old way == | == Calculating the transitive closure: the old way == | ||
Line 8: | Line 7: | ||
== Calculating the transitive closure: the new way == | == 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'' | The new way will take relations and semantics of those relations into account. See [[:Category::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: | 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: |
Revision as of 19:19, 16 May 2008
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 [[:Category::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:
- A simple tab-delimited file
- in the graph_path table in the database
Tab delimited file
This will mostly likely contain:
- subject GO ID (i.e. child)
- target GO ID (i.e. parent)
- relation ID (e.g. part_of)
- 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]]