package affectors; import main.Node; import main.Globals; /** Txn4 takes two activators and one inhibitor which titrates away the *second* activator. Parameters include not just the half-life of the target and the K's and nu's for each regulator, but also the weights alpha and beta, which determine the relative effectiveness of each activator. All inputs may be either cytoplasmic or membrane-bound as long as they reside in the same cell as the target.
Formula
INHIBITION_LEVEL = ( 1 - (INHIBITOR^nu_INHIB / (K_INHIBITOR^nu_INHIB + INHIBITOR^nu_INHIB)) )
ACTIVATION1 = ACTIVATOR1^nu_ACT1 / (K_ACT1^nu_ACT1 + ACTIVATOR1^nu_ACT1)
ACTIVATION2 = (ACTIVATOR2 * INHIBITION_LEVEL)^nu_ACT2 / (K_ACT2^nu_ACT2 + (ACTIVATOR2 * INHIBITION_LEVEL)^nu_ACT2)
dnodex/dt = (1 / H_nodex) * (alpha * ACTIVATION1) + (beta * ACTIVATION2) / (1 + (alpha * ACTIVATION1) + (beta * ACTIVATION2))
Parameters
Inhibitor [INHIBITOR] | The inhibitor Node |
Activator1 [ACTIVATOR1] | The first transcriptional activator Node |
Activator2 [ACTIVATOR2] | The second transcriptional activator Node, the target of the inhibitor |
mRNA Half-life [H_nodex] | The half life of the product mRNA |
Half-max activation level for first activator [K_ACTIVATOR1nodex] | The concentration of the first activator at which transcription proceeds at half its maximal rate |
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 |
Saturability coefficient for Activator 1 [alpha_nodex] | determines how completely the first activator can saturate the promoter |
Half-max activation level for second activator [K_ACTIVATOR2nodex] | The concentration of the second activator at which transcription proceeds at half its maximal rate |
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 |
Saturability coefficient for Activator 2 [beta_nodex] | determines how completely the second activator can saturate the promoter |
Half-max inhibition level [K_INHIBITOR] | The concentration of inhibitor at which transcription proceeds at half the rate it would have otherwise |
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 |
Usage
&nodex
&Txn4Aff INHIBITOR ACTIVATOR1 ACTIVATOR2 H_nodex K_ACTIVATOR1nodex nu_ACTIVATOR1nodex alpha K_ACTIVATOR2nodex nu_ACTIVATOR2nodex beta K_INHIBITORnodex nu_INHIBITORnodex
&endnodex
NOTE - you can accomplish this same function using the meta-enhancers, and those are a more general framework for putting together transcription terms. */ public class Txn4Aff 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 weight for the first activation complex. */ int alphaParam; /** The level of activator 2 at which transcription proceeds half-maximally. */ int kA2Param; /** The "cooperativity" exponent for activator 2. */ int nuA2Param; /** The weight for the second activation complex. */ int betaParam; /** The level of inhibitor at which half the activator has been neutralized. */ int kLParam; /** The "cooperativity" exponent for inhibition. */ int nuLParam; static final String desc = "Transcription dependent on two 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", "alpha: weight for activation complex 1", "Kappa activator 2: half-maximal level of activator 2", "nu2: cooperativity of activator 2", "beta: weight for activation complex 2", "Kappa inhibitor: half-maximal level of inhibitor", "nu_I: cooperativity of inhibition"}; public Txn4Aff() {} 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]; alphaParam = param_nums[3]; kA2Param = param_nums[4]; nuA2Param = param_nums[5]; betaParam = param_nums[6]; kLParam = param_nums[7]; nuLParam = param_nums[8]; } public float getValue(Node which_node) { float phi_A1=0, phi_A2=0, psi_I=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((params[alphaParam]*phi_A1 + params[betaParam]*phi_A2), 1, 1)); } }