package affectors; import main.Node; import main.Globals; /** Txn3b takes two activators which synergize such that the second makes the first more potent. Parameters include as usual the half-life of the target and the K's and nu's for each regulator, but also a parameter eta which determines how much the potentiator changes the half-maximal activation level (K_ACT1) for the primary activator. Eta should range between 1 (no potentiation) to 10 (10-fold potentiation). NOTE: pay attention to the formula; the second activator in effect lowers K_ACT1, which may already be a small number. Half-maximal coefficients should not be allowed to become unrealistically small or one would run the risk of parameters such that fractional numbers of molecules would effect transcriptional activation! Therefore this affector limits the effect of the potentiator to a ten-fold reduction in K_ACT1. All inputs may be either cytoplasmic or membrane-bound as long as they reside in the same cell as the target.

Formula
ACTIVATION2 = ACTIVATOR2^nu_ACT2 / (K_ACT2^nu_ACT2 + ACTIVATOR2^nu_ACT2)
effective_K_ACT1 = K_ACT1 * (1 - (1 - (1 / Max[10,eta])) * ACTIVATION2)
dnodex/dt = (1 / H_nodex) * ACTIVATOR1^nu_ACT1 / (effective_K_ACT1^nu_ACT1 + ACTIVATOR1^nu_ACT1)

Parameters
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
Potentiation [eta_ACTIVATOR1nodex] The factor by which the potentiator reduces the hald-maximal concentration of the primary activator

Usage
&nodex

&Txn3bAff ACTIVATOR1 ACTIVATOR2 H_nodex K_ACTIVATOR1nodex nu_ACTIVATOR1nodex K_ACTIVATOR2nodex nu_ACTIVATOR2nodex eta_ACTIVATOR2nodex
&endnodex */ public class Txn3bAff 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 potentiation factor. */ int etaParam; static final String desc = "Transcription dependent on two synergizing activators, one able to achieve a fractional output in the absence of the second"; static final String [] nodeDescriptions = {"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", "eta: potentiation percent"}; public Txn3bAff() {} 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]; etaParam = param_nums[5]; } public float getValue(Node which_node) { float potentiation=0f; potentiation = (1-(1/Math.min(10.0f,params[etaParam]))) * Phi(Nodes[1].getIntegrationValue(), params[kA2Param], params[nuA2Param]); return ((Globals.characteristicTime / params[halfLifeParam]) * Phi(Nodes[0].getIntegrationValue(), (params[kA1Param] * (1 - potentiation)), params[nuA1Param])); } }