package affectors; import main.Node; import main.Globals; /** Txn3a takes two activators which synergize such that only in the presence of both can the target achieve full activity. 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). Delta should range from 0 (no leak in the absence of cofactor) to at most 1.0 (cofactor has no effect). All inputs may be either cytoplasmic or membrane-bound as long as they reside in the same cell as the target.

Formula
ACTIVATION1 = ACTIVATOR1^nu_ACT1 / (K_ACT1^nu_ACT1 + ACTIVATOR1^nu_ACT1)
ACTIVATION2 = ACTIVATOR2^nu_ACT2 / (K_ACT2^nu_ACT2 + ACTIVATOR2^nu_ACT2)
dnodex/dt = (1 / H_nodex) * ACTIVATION1 * (delta + (1 - delta) * ACTIVATION2)

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
Leak fraction [delta_ACTIVATOR1nodex] The fraction of activation achievable in the absence of the cofactor

Usage
&nodex

&Txn3aAff ACTIVATOR1 ACTIVATOR2 H_nodex K_ACTIVATOR1nodex nu_ACTIVATOR1nodex K_ACTIVATOR2nodex nu_ACTIVATOR2nodex delta_ACTIVATOR1nodex
&endnodex */ public class Txn3aAff 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 leak fraction. */ int deltaParam; 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", "delta: leak fraction"}; public Txn3aAff() {} 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]; deltaParam = param_nums[5]; } public float getValue(Node which_node) { float phi_A1=0, phi_A2=0; phi_A1 = Phi(Nodes[0].getIntegrationValue(), params[kA1Param], params[nuA1Param]); phi_A2 = Phi(Nodes[1].getIntegrationValue(), params[kA2Param], params[nuA2Param]); return ((Globals.characteristicTime / params[halfLifeParam]) * phi_A1 * (params[deltaParam] + ((1 - params[deltaParam]) * phi_A2))); } }