package affectors; import main.Node; import main.Globals; /** Txn6a takes two activators which synergize such that only in the presence of both can the target achieve full activity, and one inhibitor which reduces the effective concentration of the SECOND of these. This is like Txn3a but with an inhibitor that interferes with the cofactor. Parameters include as usual the half-life of the target and the K's and nu's for each regulator, but also a "leak" parameter delta which enables one to specify that one of the two activators can reach some fraction (equal to delta) in the absence of the other (which behaves as a non-essential cofactor). All inputs may be either cytoplasmic or membrane-bound as long as they reside in the same cell as the target.
Formula
INHIBITION = 1 - (INHIBITOR^nu_INH / (K_INH^nu_INH + INHIBITOR^nu_INH))
ACTIVATION1 = ACTIVATOR1^nu_ACT1 / (K_ACT1^nu_ACT1 + ACTIVATOR1^nu_ACT1)
ACTIVATION2 = (ACTIVATOR2 * INHIBITION)^nu_ACT2 / (K_ACT2^nu_ACT2 + (ACTIVATOR2 * INHIBITION)^nu_ACT2)
dnodex/dt = (1 / H_nodex) * ACTIVATION1 * (delta + (1 - delta) * ACTIVATION2)
Parameters
Inhibitor [INHIBITOR] | The inhibitor Node |
Activator1 [ACTIVATOR1] | The first transcriptional activator Node |
Activator2 [ACTIVATOR2] | The second transcriptional activator Node, the "cofactor" |
mRNA Half-life [H_nodex] | The half life of the product mRNA |
Half-max activation level for first activator [K_ACTIVATOR1nodex] | The half-maximal concentration of the first activator |
Activator 1 cooperativity [nu_ACTIVATOR1nodex] | The non-linearity for the first activator. The higher the value, the sharper the curves in the S-shaped activation function |
Half-max activation level for second activator [K_ACTIVATOR2nodex] | The half-maximal concentration of the cofactor |
Activator 2 cooperativity [nu_ACTIVATOR2nodex] | The non-linearity for the second activator. The higher the value, the sharper the curves in the S-shaped activation function |
Half-max inhibition level [K_INHIBITOR] | The concentration of inhibitor at which half the cofactor is depleted |
Inhibition Cooperativity [nu_INHIBITOR] | The non-linearity of the inhibiting function. The higher the value, the sharper the curves in the upside-down S-shaped inhibition function |
Leak fraction [delta_ACTIVATOR1nodex] | The fraction of activation achievable in the absence of the cofactor |
Usage
*/
public class Txn6aAff extends Affector {
/** The half-life of the transcript. */
int halfLifeParam;
/** The level of activator 1 at which transcription proceeds half-maximally. */
int kA1Param;
/** The "cooperativity" exponent for activator 1. */
int nuA1Param;
/** The level of activator 2 at which transcription proceeds half-maximally. */
int kA2Param;
/** The "cooperativity" exponent for activator 2. */
int nuA2Param;
/** The level of inhibitor at which half the activator has been depleted. */
int kLParam;
/** The "cooperativity" exponent for inhibition. */
int nuLParam;
/** The leak fraction. */
int deltaParam;
static final String desc = "Transcription dependent on two synergizing activators, one competing with an inhibitor";
static final String [] nodeDescriptions = {"Inhibitor of activator 2", "Activator 1", "Activator 2"};
static final String [] paramDescriptions = {"Half-life of transcript produced",
"Kappa activator 1: half-maximal level of activator 1",
"nu1: cooperativity of activator 1",
"Kappa activator 2: half-maximal level of activator 2",
"nu2: cooperativity of activator 2",
"Kappa inhibitor: half-maximal level of inhibitor",
"nu_I: cooperativity of inhibition",
"delta: leak fraction"};
public Txn6aAff() {}
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)
{
halfLifeParam = param_nums[0];
kA1Param = param_nums[1];
nuA1Param = param_nums[2];
kA2Param = param_nums[3];
nuA2Param = param_nums[4];
kLParam = param_nums[5];
nuLParam = param_nums[6];
deltaParam = param_nums[7];
}
public float getValue(Node which_node) {
float psi_I=0, phi_A1=0, phi_A2=0;
psi_I = Psi(Nodes[0].getIntegrationValue(), params[kLParam], params[nuLParam]);
phi_A1 = Phi(Nodes[1].getIntegrationValue(), params[kA1Param], params[nuA1Param]);
phi_A2 = Phi((Nodes[2].getIntegrationValue() * psi_I), params[kA2Param], params[nuA2Param]);
return ((Globals.characteristicTime / params[halfLifeParam]) * phi_A1 * (params[deltaParam] + ((1 - params[deltaParam]) * phi_A2)));
}
}
&nodex
&Txn6aAff INHIBITOR ACTIVATOR1 ACTIVATOR2 H_nodex K_ACTIVATOR1nodex nu_ACTIVATOR1nodex K_ACTIVATOR2nodex nu_ACTIVATOR2nodex K_INHIBITORnodex nu_INHIBITORnodex delta_ACTIVATOR1nodex
&endnodex