package affectors; import main.Node; import main.Globals; /** *

This is one half of an affector that phosphorylates a single node based on a kinase * activity. Use this affector in the unphosphorylated species. Use {@link PhosphorylateB_Aff} * in the product (phosphorylated) species. For cytoplasmic proteins.

* *

Formula *
dNODE/dt = -PMax * NODE Phi(KINASE,K_kinase,nu_kinase) * *

Parameters * * * * * * *
Node [NODE] The unphosphorylated Node
Kinase [KINASE] The kinase Node
Pmax [Pmax] Maximal rate of phosporylation.
k_kinase [K_Kinase] Concentration of kinase where activity is half maximal.
nu_kinase [nu_Kinase] Apparent cooperativity of kinase activity.
* *

Usage *
&Node *

* &PhosphorylateA_Aff Node Kinase Pmax k_kinase nu_kinase *
* &endNode * * @author Kerry Kim * @see PhosphorylateB_Aff * */ public class PhosphorylateA_Aff extends Affector { int pmax; int k_kinase; int nu_kinase; static final String affectorDescription = "Phosphorylation of cytoplasmic protein, use version B for phosphorylated"; static final String [] nodeDescriptions = {"Protein to be phosphorylated", "Kinase"}; static final String [] paramDescriptions = {"Maximal rate of phosphorylation", "half maximal kinase concentration", "Cooperativity of kinase"}; static final int [] whichSides = { -1,-1 }; public PhosphorylateA_Aff() {} protected void setLabelsAndTypes() { setDescriptions(affectorDescription, nodeDescriptions, paramDescriptions); setContainsTarget(true); this.Type[GUI_CAPABLE] = 1; this.Type[CERTIFICATION] = Affector.RETURNS_DERIV; this.Type[MATHTYPE] = Affector.GG; this.Type[TERMTYPE] = Affector.CONVERSION; } public void setParameterNumbers(int [] param_nums) { pmax = param_nums[0]; k_kinase = param_nums[1]; nu_kinase = param_nums[2]; } public float getValue(Node which_node) { float total_kinase = Nodes[1].getIntegrationValue(); float source = Nodes[0].getIntegrationValue(); float theTerm = params[pmax] * source * Phi(total_kinase, params[k_kinase], params[nu_kinase]); return -Globals.characteristicTime * theTerm; } public float getNCValue(Node which_node) { float total_kinase = Nodes[1].getIntegrationValue(); float theTerm = params[pmax] * Phi(total_kinase, params[k_kinase], params[nu_kinase]); return -Globals.characteristicTime * theTerm; } }