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
&nodex

&Txn1Aff ACTIVATOR K_ACTIVATORnodex nu ACTIVATORnodex H_nodex
&endnodex */ public class Txn1Aff extends Affector { /** The level of activator at which transcription proceeds half-maximally. */ int kParam; /** The "cooperativity" exponent for activation. */ int nuParam; /** The half-life of the transcript. */ int halfLifeParam; static final String desc = "Transcription dependent on an activator"; static final String [] nodeDescriptions = {"Activator"}; static final String [] paramDescriptions = {"Kappa: half-maximal level of activator", "nu: cooperativity of activation", "Half-life of transcript produced"}; public Txn1Aff() {} 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) { kParam = param_nums[0]; nuParam = param_nums[1]; halfLifeParam = param_nums[2]; } public float getValue(Node which_node) { return ((Globals.characteristicTime / params[halfLifeParam]) * Phi(Nodes[0].getIntegrationValue(),params[kParam],params[nuParam])); } }