001package org.biopax.paxtools.model.level3;
002
003import java.util.Set;
004
005
006/**
007 * Definition: A control interaction in which a physical entity (a catalyst) increases the rate of a conversion
008 * interaction by lowering its activation energy. Instances of this class describe a pairing between a catalyzing
009 * entity and a catalyzed conversion.
010 *
011 * Rationale: Catalysis, theoretically, is always bidirectional since it acts by lowering the activation energy.
012 * Physiologically, however, it can have a direction because of the concentration of the participants. For example,
013 * the oxidative decarboxylation catalyzed by Isocitrate dehydrogenase always happens in one direction under
014 * physiological conditions since the produced carbon dioxide is constantly removed from the system.
015 *
016 * Usage: A separate catalysis instance should be created for each different conversion that a physicalEntity may
017 * catalyze and for each different physicalEntity that may catalyze a conversion. For example,
018 * a bifunctional enzyme that catalyzes two different biochemical reactions would be linked to each of those
019 * biochemical reactions by two separate instances of the catalysis class. Also, catalysis reactions from multiple
020 * different organisms could be linked to the same generic biochemical reaction (a biochemical reaction is generic if
021 * it only includes small molecules). Generally, the enzyme catalyzing a conversion is known and the use of this
022 * class is obvious, however, in the cases where a catalyzed reaction is known to occur but the enzyme is not known,
023 * a catalysis instance can be created without a controller specified.
024 *
025 * Synonyms: facilitation, acceleration.
026 *
027 * Examples: The catalysis of a biochemical reaction by an enzyme, the enabling of a transport interaction by a
028 * membrane pore complex, and the facilitation of a complex assembly by a scaffold protein. Hexokinase -> (The
029 * "Glucose + ATP -> Glucose-6-phosphate +ADP" reaction). A plasma membrane Na+/K+ ATPase is an active transporter
030 * (antiport pump) using the energy of ATP to pump Na+ out of the cell and K+ in. Na+ from cytoplasm to extracellular
031 * space would be described in a transport instance. K+ from extracellular space to cytoplasm would be described in a
032 * transport instance. The ATPase pump would be stored in a catalysis instance controlling each of the above
033 * transport instances. A biochemical reaction that does not occur by itself under physiological conditions,
034 * but has been observed to occur in the presence of cell extract, likely via one or more unknown enzymes present in
035 * the extract, would be stored in the CONTROLLED property, with the CONTROLLER property empty.
036 */
037public interface Catalysis extends Control
038{
039
040
041        /**
042         * Any cofactor(s) or coenzyme(s) required for catalysis of the conversion by the enzyme. This is a suproperty
043         * of participants.
044         * @return cofactor(s) or coenzyme(s) required for catalysis of the conversion
045         */
046        Set<PhysicalEntity> getCofactor();
047
048        /**
049         * Any cofactor(s) or coenzyme(s) required for catalysis of the conversion by the enzyme. This is a suproperty
050         * of participants.
051         * @param cofactor cofactor(s) or coenzyme(s) required for catalysis of the conversion
052         */
053        void addCofactor(PhysicalEntity cofactor);
054
055        /**
056         * Any cofactor(s) or coenzyme(s) required for catalysis of the conversion by the enzyme. This is a suproperty
057         * of participants.
058         * @param cofactor cofactor(s) or coenzyme(s) required for catalysis of the conversion
059         */
060        void removeCofactor(PhysicalEntity cofactor);
061
062
063        /**
064         * This property represents the direction of this catalysis under all physiological conditions if there is one.
065         * Note that chemically a catalyst will increase the rate of the reaction in both directions. In biology,
066         * however, there are cases where the enzyme is expressed only when the controlled bidirectional conversion is
067         * on one side of the chemical equilibrium. olled bidirectional conversion is on one side of the chemical
068         * equilibrium. For example E.Coli's lac operon ensures that lacZ gene is only synthesized when there is enough
069         * lactose in the medium. If that is the case and the controller, under biological conditions,
070         * is always catalyzing the conversion in one direction then this fact can be captured using this property. If
071         * the enzyme is active for both directions, or the conversion is not bidirectional,
072         * this property should be left empty.
073         * @return direction of this catalysis under all physiological conditions if there is one
074         */
075        CatalysisDirectionType getCatalysisDirection();
076
077        /**
078         * This property represents the direction of this catalysis under all physiological conditions if there is one.
079         * Note that chemically a catalyst will increase the rate of the reaction in both directions. In biology,
080         * however, there are cases where the enzyme is expressed only when the controlled bidirectional conversion is
081         * on one side of the chemical equilibrium. olled bidirectional conversion is on one side of the chemical
082         * equilibrium. For example E.Coli's lac operon ensures that lacZ gene is only synthesized when there is enough
083         * lactose in the medium. If that is the case and the controller, under biological conditions,
084         * is always catalyzing the conversion in one direction then this fact can be captured using this property. If
085         * the enzyme is active for both directions, or the conversion is not bidirectional,
086         * this property should be left empty.
087         * @param catalysisDirection direction of this catalysis under all physiological conditions if there is one
088         */
089        void setCatalysisDirection(CatalysisDirectionType catalysisDirection);
090}