Thursday, August 19, 2010

How the autocompletion of reaction works

Each reaction is now defined by:

1. the family
2. the types, i.e. families, of nodes involved in the connection
3. the "role" of each node involved in the connection

ConnectionFamily::nodeFamilies and ConnectionFamily::nodeFunctions store this information (number 2 and 3 above)

For example, the family named "Enzyme Catalysis" would have:
participant families = Molecule, Molecule, Enzyme
participant roles = Reactant, Product, Catalyst

The roles MUST be unique. If there are multiple Reactants, the roles should define Reactant1, Reactant2, and so on.

The roles are used for:
1. Generating the stoichiometry (Stoichiometry and Rates plugin)
2. Identifying where to place the arrow-heads (Connection Insertion plugin)
3. Identifying how to merge components in a sub-model with the parent-model

The Connection Insertion inserts an arrow for any participant that has the role "Product" or "Target" (or contains those strings).
The Stoichiometry plugins assumes that any participant labeled "Reactant" will be consumed in the reaction and any participant labeled "Product" will be produced.

No comments: