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 phosphorylated species. Use {@link PhosphorylateA_Aff} * in the source (unphosphorylated) species. For cytoplasmic proteins.

* *

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

Parameters * * * * * * * *
Phosphorylated Node [NODEp] The phosphorylated Node
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 *
&Nodep *

* &PhosphorylateB_Aff Node Kinase Pmax k_kinase nu_kinase *
* &endNodep * * @author Kerry Kim * @see PhosphorylateA_Aff */ public class PhosphorylateB_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 PhosphorylateB_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; } }