END_TEST START_TEST (test_KineticLaw_getParameterById) { Parameter_t *k1 = Parameter_create(2, 4); Parameter_t *k2 = Parameter_create(2, 4); Parameter_setId(k1, "k1"); Parameter_setId(k2, "k2"); Parameter_setValue(k1, 3.14); Parameter_setValue(k2, 2.72); KineticLaw_addParameter(kl, k1); KineticLaw_addParameter(kl, k2); Parameter_free(k1); Parameter_free(k2); fail_unless( KineticLaw_getNumParameters(kl) == 2 ); k1 = KineticLaw_getParameterById(kl, "k1"); k2 = KineticLaw_getParameterById(kl, "k2"); fail_unless( !strcmp(Parameter_getId(k1), "k1") ); fail_unless( !strcmp(Parameter_getId(k2), "k2") ); fail_unless( Parameter_getValue(k1) == 3.14 ); fail_unless( Parameter_getValue(k2) == 2.72 ); }
SBML_ODESOLVER_API int IntegratorInstance_updateModel(integratorInstance_t *engine) { int i; Species_t *s; Compartment_t *c; Parameter_t *p; odeModel_t *om = engine->om; cvodeData_t *data = engine->data; cvodeResults_t *results = engine->results; int nout = results->nout; int nvalues = data->nvalues; Model_t *m = om->m; for ( i=0; i<nvalues; i++ ) { if ( (s = Model_getSpeciesById(m, om->names[i])) != NULL ) { Species_setInitialConcentration(s, results->value[i][nout]); } else if ( (c = Model_getCompartmentById(m, om->names[i])) != NULL ) { Compartment_setSize(c, results->value[i][nout]); } else if ( (p = Model_getParameterById(m, om->names[i])) != NULL ) { Parameter_setValue(p, results->value[i][nout]); } else return 0; } return 1; }
END_TEST START_TEST (test_Parameter_setValue1) { int i = Parameter_setValue(P, 2.0); fail_unless( i == LIBSBML_OPERATION_SUCCESS ); fail_unless( Parameter_getValue(P) == 2.0 ); fail_unless( Parameter_isSetValue(P)); i = Parameter_unsetValue(P); fail_unless( i == LIBSBML_OPERATION_SUCCESS ); fail_unless( !Parameter_isSetValue(P)); }
END_TEST START_TEST (test_L3_Parameter_value) { fail_unless( !Parameter_isSetValue(P)); fail_unless( isnan(Parameter_getValue(P))); Parameter_setValue(P, 1.5); fail_unless( Parameter_isSetValue(P)); fail_unless( Parameter_getValue(P) == 1.5); Parameter_unsetValue(P); fail_unless( !Parameter_isSetValue(P)); fail_unless( isnan(Parameter_getValue(P))); }
END_TEST START_TEST (test_create_l1v1_units) { Model_t *m; Compartment_t *c; KineticLaw_t *kl; Parameter_t *p; Reaction_t *r; Species_t *s; SpeciesReference_t *sr; Unit_t *u; UnitDefinition_t *ud; /** * <sbml level="1" version="1"> */ m = Model_create(2, 4); /** * <unitDefinition name="substance"> * <listOfUnits> * <unit kind="mole" scale="-3"/> * </listOfUnits> * </unitDefinition> */ ud = Model_createUnitDefinition(m); UnitDefinition_setName(ud, "substance"); u = Model_createUnit(m); Unit_setKind(u,UNIT_KIND_MOLE); Unit_setScale(u, -3); /** * <unitDefinition name="mls"> * <listOfUnits> * <unit kind="mole" scale="-3"/> * <unit kind="liter" exponent="-1"/> * <unit kind="second" exponent="-1"/> * </listOfUnits> * </unitDefinition> */ ud = Model_createUnitDefinition(m); UnitDefinition_setName(ud, "mls"); u = Model_createUnit(m); Unit_setKind(u, UNIT_KIND_MOLE); Unit_setScale(u, -3); u = Model_createUnit(m); Unit_setKind(u, UNIT_KIND_LITER); Unit_setExponent(u, -1); u = Model_createUnit(m); Unit_setKind(u, UNIT_KIND_SECOND); Unit_setExponent(u, -1); /** * <listOfCompartments> * <compartment name="cell"/> * </listOfCompartments> */ c = Model_createCompartment(m); Compartment_setName(c, "cell"); /** * <listOfSpecies> * <specie name="x0" compartment="cell" initialAmount="1"/> * <specie name="x1" compartment="cell" initialAmount="1"/> * <specie name="s1" compartment="cell" initialAmount="1"/> * <specie name="s2" compartment="cell" initialAmount="1"/> * </listOfSpecies> */ s = Model_createSpecies(m); Species_setName(s, "x0"); Species_setCompartment(s, "cell"); Species_setInitialAmount(s, 1); s = Model_createSpecies(m); Species_setName(s, "x1"); Species_setCompartment(s, "cell"); Species_setInitialAmount(s, 1); s = Model_createSpecies(m); Species_setName(s, "s1"); Species_setCompartment(s, "cell"); Species_setInitialAmount(s, 1); s = Model_createSpecies(m); Species_setName(s, "s2"); Species_setCompartment(s, "cell"); Species_setInitialAmount(s, 1); /** * <listOfParameters> * <parameter name="vm" value="2" units="mls"/> * <parameter name="km" value="2"/> * </listOfParameters> */ p = Model_createParameter(m); Parameter_setName (p, "vm"); Parameter_setUnits(p, "mls"); Parameter_setValue(p, 2); p = Model_createParameter(m); Parameter_setName (p, "km"); Parameter_setValue(p, 2); /** * <reaction name="v1"> * <listOfReactants> * <specieReference specie="x0"/> * </listOfReactants> * <listOfProducts> * <specieReference specie="s1"/> * </listOfProducts> * <kineticLaw formula="(vm * s1)/(km + s1)"/> * </reaction> */ r = Model_createReaction(m); Reaction_setName(r, "v1"); sr = Model_createReactant(m); SpeciesReference_setSpecies(sr, "x0"); sr = Model_createProduct(m); SpeciesReference_setSpecies(sr, "s1"); kl = Model_createKineticLaw(m); KineticLaw_setFormula(kl, "(vm * s1)/(km + s1)"); /** * <reaction name="v2"> * <listOfReactants> * <specieReference specie="s1"/> * </listOfReactants> * <listOfProducts> * <specieReference specie="s2"/> * </listOfProducts> * <kineticLaw formula="(vm * s2)/(km + s2)"/> * </reaction> */ r = Model_createReaction(m); Reaction_setName(r, "v2"); sr = Model_createReactant(m); SpeciesReference_setSpecies(sr, "s1"); sr = Model_createProduct(m); SpeciesReference_setSpecies(sr, "s2"); kl = Model_createKineticLaw(m); KineticLaw_setFormula(kl, "(vm * s2)/(km + s2)"); /** * <reaction name="v3"> * <listOfReactants> * <specieReference specie="s2"/> * </listOfReactants> * <listOfProducts> * <specieReference specie="x1"/> * </listOfProducts> * <kineticLaw formula="(vm * s1)/(km + s1)"/> * </reaction> */ r = Model_createReaction(m); Reaction_setName(r, "v3"); sr = Model_createReactant(m); SpeciesReference_setSpecies(sr, "s2"); sr = Model_createProduct(m); SpeciesReference_setSpecies(sr, "x1"); kl = Model_createKineticLaw(m); KineticLaw_setFormula(kl, "(vm * s1)/(km + s1)"); Model_free(m); }