package affectors; import main.Node; import main.Globals; /** This is one half of an affector that phosphrylates a single node. Use this affector in the product species. Use the A version in the unphosphorylated species. For either membrane-bound or cytoplasmic kinases, as long as target is cytoplasmic.
Formula
dPRODUCT/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
&PRODUCT
&PhosphorylationB_ICAff SUBSTRATE KINASE K_KINASE_SUBSTRATE nu_KINASE_SUBSTRATE P_KINASE
&endPRODUCT
@see PhosphorylationA_ICAff
@see DephosphorylationA_ICAff
*/
public class PhosphorylationB_ICAff extends Affector {
/** The level of kinase at which phosphorylation proceeds at 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 B for product";
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 PhosphorylationB_ICAff() {}
protected void setLabelsAndTypes() {
setDescriptions(this.desc, nodeDescriptions, paramDescriptions);
setSided(true, whichSides);
this.Type[GUI_CAPABLE] = 1;
this.Type[CERTIFICATION] = Affector.RETURNS_DERIV;
this.Type[MATHTYPE] = Affector.FF;
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;
}
}