package affectors; import main.Node; import main.Globals; import main.Cell; /** The simplest regulated transcription affector. Transcription rate is a sigmoid function of activator concentration with transcription proceeding at half its maximum possible rate when the activator concentration equals the half-max parameter, and with the rates on either side of this half-max dependent on how non-linear the sigmoid is. The activator may be either membrane-bound or intracellular, as long as it is on the same cell as the target mRNA.
Formula
dnodex/dt = (1 / H_nodex) * ACTIVATOR^nu / (K^nu + ACTIVATOR^nu)
Parameters
Activator [ACTIVATOR] | The transcriptional activator Node |
Half-max activation level [K_ACTIVATORnodex] | The concentration of activator at which transcription proceeds at half its maximal rate |
Cooperativity [nu_ACTIVATORnodex] | The non-linearity of the activating function. The higher the value, the sharper the curves in the S-shaped activation function |
mRNA Half-life [H_nodex] | The half life of the product mRNA |
Usage
*/
public class CompAct2Aff extends Affector {
/** the efficiency with which A and B activate transcription when bound. Should be
between 0 and 1 to be meaningful.
*/
int rhoParamA, rhoParamB;
/** The level of activator at which transcription proceeds half-maximally. */
int kParamA, kParamB;
/** The "cooperativity" exponent for activation. */
int nuParamA, nuParamB;
/** The half-life of the transcript. */
int halfLifeParam;
static final String desc = "Transcription dependent on an activator";
static final String [] nodeDescriptions = {"ActivatorA", "ActivatorB"};
static final String [] paramDescriptions = {"RhoA: the efficiency with which activator A promotes transcription when bound",
"KappaA: half-maximal level of activator",
"nuA: cooperativity of activation",
"RhoB: the efficiency with which activator B promotes transcription when bound",
"KappaB: half-maximal level of activator",
"nuB: cooperativity of activation",
"Half-life of transcript produced"};
public CompAct2Aff() {}
protected void setLabelsAndTypes() {
setDescriptions(this.desc, nodeDescriptions, paramDescriptions);
this.Type[GUI_CAPABLE] = 1;
this.Type[CERTIFICATION] = Affector.RETURNS_DERIV;
this.Type[MATHTYPE] = Affector.FF;
this.Type[TERMTYPE] = Affector.PRODUCTION;
}
public void setParameterNumbers(int [] param_nums)
{
rhoParamA = param_nums[0];
kParamA = param_nums[1];
nuParamA = param_nums[2];
rhoParamB = param_nums[3];
kParamB = param_nums[4];
nuParamB = param_nums[5];
halfLifeParam = param_nums[6];
}
public float getValue(Node which_node) {
return ((Globals.characteristicTime / params[halfLifeParam]) *
(params[rhoParamA]*theta(
Nodes[0].getIntegrationValue(),
Nodes[1].getIntegrationValue(),
params[kParamA],
params[nuParamA],
params[kParamB],
params[nuParamB]
) + params[rhoParamB]*theta(
Nodes[1].getIntegrationValue(),
Nodes[0].getIntegrationValue(),
params[kParamB],
params[nuParamB],
params[kParamA],
params[nuParamA]
))
);
}
private float theta(float A, float B, float kA, float nuA, float kB, float nuB) {
float phiA = Phi(A,kA,nuA);
float phiB = Phi(B,kB,nuB);
return (phiA*(1 - phiB))/(1 - phiA*phiB);
}
}
&nodex
&Txn1Aff ACTIVATOR K_ACTIVATORnodex nu ACTIVATORnodex H_nodex
&endnodex