package affectors; import main.Globals; import main.Node; /** This is the one half of a dimerization where both undimerized Nodes reside in the same cell. The undimerized Nodes can be either cytoplasmic or membrane bound. Use this affector in each of the undimerized Nodes. Use the B version in the dimer. The node_scale (max) for each of the singleton proteins is the scaling factor for the >other< singleton.

Formula
dSINGLE_NODE1/dt = - r * max * SINGLE_NODE1 * SINGLE_NODE2

Parameters
Membrane Node [SINGLE_NODE1] One of the undimerized Nodes
Cytoplasmic Node [SINGLE_NODE2] The other of the undimerized Nodes
Dimerization rate [r_DIMER] The rate of the dimerization reaction.
Maximum Cyto [max] The maximum relative concentration of the >other< undimerized Node.

Usage
&SINGLE_NODE

&Dimerize_AAff SINGLE_NODE1 SINGLE_NODE2 r_DIMER max
&endSINGLE_NODE */ public class Dimerize_AAff extends Affector { /** The rate of the dimerization reaction. */ int kParam; /** The scaling factor of the other undimerized node in this reaction (i.e. max for other node). */ int nodeScaleParam; static final String desc = "Dimerize two nodes; version A for monomers"; static final String [] nodeDescriptions = {"Target node", "Other node"}; static final String [] paramDescriptions = {"Second-order reaction rate constant", "Scale factor (max value) for other node"}; static final int [] whichSides = {-1, -1}; public Dimerize_AAff() {} protected void setLabelsAndTypes() { setDescriptions(this.desc, nodeDescriptions, paramDescriptions); setSided(true, whichSides); setContainsTarget(true); this.Type[GUI_CAPABLE] = 1; this.Type[CERTIFICATION] = Affector.RETURNS_DERIV; this.Type[MATHTYPE] = Affector.GG; this.Type[TERMTYPE] = Affector.CONVERSION; } public void setParameterNumbers(int [] param_nums) { kParam = param_nums[0]; nodeScaleParam = param_nums[1]; } public float getValue(Node which_node) { return -Globals.characteristicTime * params[kParam] * params[nodeScaleParam] * Nodes[0].getIntegrationValue(side) * Nodes[1].getIntegrationValue(side); } public float getNCValue(Node which_node) { return -Globals.characteristicTime * params[kParam] * params[nodeScaleParam] * Nodes[1].getIntegrationValue(side); } }