package affectors; import main.Node; import main.Globals; /** This is one half of an affector that phosphorylates a single node. Use this affector in the unphosphorylated species. Use the B version in the product species. For either membrane-bound or cytoplasmic kinases, as long as target is cytoplasmic.
Formula
dSUBSTRATE/dt = -Pmax * SUBSTRATE * (KINASE^nu / (K_KINASE^nu + KINASE^nu))
Parameters
Substrate [SUBSTRATE] | The unphosphorylated Node |
Kinase [KINASE] | The kinase Node. |
Half-max activation [K_KINASE_SUBSTRATE] | The concentration of kinase at which it phosphorylates at half its maximum rate. |
Cooperativity [nu_KINASE_SUBSTRATE] | The non-linearity in kinase activity as kinase concentration increases. |
Max reaction rate [P_KINASE] | The maximum reaction rate. |
Usage
&SUBSTRATE
&PhosphorylationA_ICAff SUBSTRATE KINASE K_KINASE_SUBSTRATE nu_KINASE_SUBSTRATE P_KINASE
&endSUBSTRATE
@see PhosphorylationB_ICAff
@see DephosphorylationB_ICAff
*/
public class PhosphorylationA_ICAff extends Affector {
/** The level of kinase at which phosphrylation proceeds half-maximally. */
int kappaParam;
/** The "cooperativity" exponent for the reaction. */
int nuParam;
/** The maximal reaction rate. */
int pMaxParam;
static final String desc = "Intracellular phosphorylation of a substrate; version A for substrate";
static final String [] nodeDescriptions = {"Unphosphorylated substrate", "Kinase"};
static final String [] paramDescriptions = {"Kappa: half-maximal activity of the phosphatase",
"nu: cooperativity of reaction",
"Pmax: maximal reaction rate"};
static final int [] whichSides = {-1, -1};
public PhosphorylationA_ICAff() {}
protected void setLabelsAndTypes() {
setDescriptions(this.desc, nodeDescriptions, paramDescriptions);
setSided(true, whichSides);
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)
{
kappaParam = param_nums[0];
nuParam = param_nums[1];
pMaxParam = param_nums[2];
}
public float getValue(Node which_node) {
float total_kinase = Nodes[1].getIntegrationValue();
float source = Nodes[0].getIntegrationValue();
float theTerm = params[pMaxParam] * source *
Phi(total_kinase, params[kappaParam], params[nuParam]);
return -Globals.characteristicTime * theTerm;
}
public float getNCValue(Node which_node) {
float total_kinase = Nodes[1].getIntegrationValue();
float theTerm = params[pMaxParam] *
Phi(total_kinase, params[kappaParam], params[nuParam]);
return -Globals.characteristicTime * theTerm;
}
}