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 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
Parameters
Substrate [SUBSTRATE] | The unphosphorylated Node |
Kinase [KINASE] | The kinase Node. |
Max reaction rate [P_KINASE] | The maximum rate at which kinase converts substrate. |
Usage
&SUBSTRATE
&Phosphorylation1StepA_ICAff SUBSTRATE KINASE P_KINASE
&endSUBSTRATE
@see Phosphor1StepB_ICAff
@see Dephosphor1StepB_ICAff
*/
public class Phosphor1StepA_ICAff extends Affector {
/** The maximal reaction rate. */
int pMaxParam;
static final String desc = "Intracellular direct phosphorylation of a substrate by a kinase; version A for substrate";
static final String [] nodeDescriptions = {"Unphosphorylated substrate", "Kinase"};
static final String [] paramDescriptions = {"Pmax: maximal reaction rate"};
static final int [] whichSides = {-1, -1};
public Phosphor1StepA_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)
{
pMaxParam = param_nums[0];
}
public float getValue(Node which_node) {
float total_kinase = Nodes[1].getIntegrationValue();
float source = Nodes[0].getIntegrationValue();
float theTerm = params[pMaxParam] * source * total_kinase;
return -Globals.characteristicTime * theTerm;
}
public float getNCValue(Node which_node) {
float total_kinase = Nodes[1].getIntegrationValue();
float theTerm = params[pMaxParam] * total_kinase;
return -Globals.characteristicTime * theTerm;
}
}