package affectors; import main.Node; import main.Globals; /** One third of a triplet of affectors which mediates dissociation of receptor-ligand complexes. * Use this one in the COMPLEX. Use the Rec version in the RECEPTOR and the * Lig version in the LIGAND. They reverse the Dimerization affectors. This can be used for both * cytoplasmic and membrane-bound proteins. As with the dimerization Affectors, * the ligand and receptor must be scaled by the ratio between their dimensional maximum * quantities, and that scaling happens in here only for the ligand (the complex is assumed * to be on the same scale as the receptor). * * The parameter that governs the ratio between receptor and ligand MUST BE THE SAME * FOR BOTH RECEPTOR AND LIGAND. * *

Formula *
dCOMPLEX/dt = -COMPLEX/half life * *

Parameters * * * * *
Complex [COMPLEX] The Node represeting the dimer
Half-life [H_COMPLEX] The half-life of the complex before it splits apart.
Ratio of ligand and receptor [R_RATIO] The stoichiometric ratio of receptor and ligand.
* *

Usage *
&COMPLEX *

&DissociationEC_Lig_Aff COMPLEX H_complex R_ratio *
* &endCOMPLEX * * @author Josselin Milloz * * @see DissociationEC_Rec_Aff * @see DissociationEC_Lig_Aff */ public class DissociationEC_Com_Aff extends Affector { /** The half-life in minutes of the "ligand"-bound "receptor" complex; reciprocal of the dissociation rate. */ int halfLifeParam; int ratioParam; static final String desc = "Dissociation of a two-component complex; version for ligand"; static final String [] nodeDescriptions = {"Complex"}; static final String [] paramDescriptions = {"Half-life of complex"}; static final int [] whichSides = { -1 }; public DissociationEC_Com_Aff() {} 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.KK; this.Type[TERMTYPE] = Affector.CONVERSION; } public void setParameterNumbers(int [] param_nums) { halfLifeParam = param_nums[0]; } public float getValue(Node which_node) { return -((Globals.characteristicTime / params[halfLifeParam]) * Nodes[0].getIntegrationValue(side)); } public float getNCValue(Node which_node) { return (-Globals.characteristicTime / params[halfLifeParam]); } }