package affectors; import main.Node; import main.Globals; /** *
This is one half of an affector that converts a single node into another * based on some enzymatic activity. Use this affector in the product. Use * {@link EnzymeConversionEC_Sub_Aff} in the substrate. For cases in which the * enzyme, product and the substrate are all on the membrane. * *
Formula
*
dPRODUCT/dt = max * SUBSTRATE Phi(ENZYME,K_enzyme,nu_enzyme)
*
*
Parameters *
Product Node [PRODUCT] | The product Node |
Substrate [SUBSTRATE] | The substrate Node |
Enzyme [ENZYME] | The enzyme Node |
max [max] | Maximal rate of reaction. |
k_enzyme [K_Enzyme] | Concentration of enzyme where activity is half maximal. |
nu_enzyme [nu_Enzyme] | Apparent cooperativity of enzyme activity. |
Usage
*
*
* @author Josselin Milloz
* @see EnzymeConversionEC_Sub_Aff
*/
public class EnzymeConversionEC_Pro_Aff extends Affector {
int max;
int k_enzyme;
int nu_enzyme;
static final String affectorDescription = "Enzymatic conversion. Use EnzymeConversionEC_Sub_Aff on substrate";
static final String [] nodeDescriptions = {"Substrate", "Enzyme"};
static final String [] paramDescriptions = {"Maximal rate of reaction",
"half maximal enzyme concentration",
"Cooperativity of enzyme"};
static final int [] whichSides = { -1,-1 };
public EnzymeConversionEC_Pro_Aff() {}
protected void setLabelsAndTypes() {
setDescriptions(affectorDescription, nodeDescriptions, paramDescriptions);
setContainsTarget(true);
setSided(true, whichSides);
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)
{
max = param_nums[0];
k_enzyme = param_nums[1];
nu_enzyme = param_nums[2];
}
public float getValue(Node which_node) {
float total_kinase = Nodes[1].getIntegrationValue(side);
float source = Nodes[0].getIntegrationValue(side);
float theTerm = params[max] * source *
Phi(total_kinase, params[k_enzyme], params[nu_enzyme]);
return Globals.characteristicTime * theTerm;
}
public float getNCValue(Node which_node) {
float total_kinase = Nodes[1].getIntegrationValue(side);
float theTerm = params[max] *
Phi(total_kinase, params[k_enzyme], params[nu_enzyme]);
return Globals.characteristicTime * theTerm;
}
}
&Product
*
* &EnzymeConversionEC_Pro_Aff SUBSTRATE ENZYME max K_enzyme nu_enzyme
*
* &endNodep