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 LIGAND. Use the Rec version in the RECEPTOR and the * Com version in the COMPLEX. 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
*
dLigand/dt = ratio * 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
*
*
* @author Josselin Milloz
*
* @see DissociationEC_Rec_Aff
* @see DissociationEC_Lig_Aff
*/
public class DissociationEC_Lig_Aff extends Affector {
/** The half-life in minutes of the "ligand"-bound "receptor" complex; reciprocal of the dissociation rate. */
int halfLifeParam;
int maxComplexParam;
int maxLigandParam;
static final String desc = "Dissociation of a two-component complex; version for ligand";
static final String [] nodeDescriptions = {"Complex this side", "Complex, other side"};
static final String [] paramDescriptions = {"Half-life of complex",
"Max value of complex", "max value of ligand"};
static final int [] whichSides = { -1, 1 };
public DissociationEC_Lig_Aff() {}
protected void setLabelsAndTypes() {
setDescriptions(this.desc, nodeDescriptions, paramDescriptions);
setSided(true, whichSides);
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];
maxComplexParam = param_nums[1];
maxLigandParam = param_nums[2];
}
public float getValue(Node which_node) {
float totalComplex = Nodes[0].getIntegrationValue(side) + Nodes[1].getIntegrationValue(otherSide);
return ((0.5f*Globals.characteristicTime / params[halfLifeParam]) * (params[maxComplexParam]/params[maxLigandParam])*totalComplex);
}
}
&LIGAND
* &DissociationEC_Lig_Aff COMPLEX H_complex R_ratio
*
* &endLIGAND