END_TEST START_TEST (test_SBMLConvert_convertToL1_Species_Amount) { SBMLDocument_t *d = SBMLDocument_createWithLevelAndVersion(2, 4); Model_t *m = SBMLDocument_createModel(d); const char *sid = "C"; Compartment_t *c = Compartment_create(2, 4); Species_t *s = Species_create(2, 4); Compartment_setId ( c, sid ); Model_addCompartment( m, c ); Species_setCompartment ( s, sid ); Species_setInitialAmount( s, 2.34 ); Model_addSpecies ( m, s ); fail_unless( SBMLDocument_setLevelAndVersion(d, 1, 2) == 1, NULL ); fail_unless( Species_getInitialAmount(s) == 2.34, NULL ); SBMLDocument_free(d); }
END_TEST START_TEST (test_Species_setInitialAmount) { fail_unless( !Species_isSetInitialAmount (S) ); fail_unless( !Species_isSetInitialConcentration(S) ); Species_setInitialAmount(S, 1.2); fail_unless( Species_isSetInitialAmount (S) ); fail_unless( !Species_isSetInitialConcentration(S) ); fail_unless( Species_getInitialAmount(S) == 1.2 ); }
END_TEST START_TEST (test_Species_setInitialAmount1) { int i = Species_setInitialAmount(C, 2.0); fail_unless( i == LIBSBML_OPERATION_SUCCESS ); fail_unless( Species_getInitialAmount(C) == 2.0 ); fail_unless( Species_isSetInitialAmount(C)); i = Species_unsetInitialAmount(C); fail_unless( i == LIBSBML_OPERATION_SUCCESS ); fail_unless( !Species_isSetInitialAmount(C)); }
END_TEST START_TEST (test_L3_Species_initialAmount) { double initialAmount = 0.2; fail_unless( !Species_isSetInitialAmount(S)); fail_unless( util_isNaN(Species_getInitialAmount(S))); Species_setInitialAmount(S, initialAmount); fail_unless( Species_getInitialAmount(S) == initialAmount ); fail_unless( Species_isSetInitialAmount(S) ); Species_unsetInitialAmount(S); fail_unless( !Species_isSetInitialAmount(S) ); fail_unless( util_isNaN(Species_getInitialAmount(S))); }
END_TEST START_TEST (test_Species_setInitialAmount2) { Species_t *c = Species_create(2, 2); int i = Species_setInitialAmount(c, 4); fail_unless( i == LIBSBML_OPERATION_SUCCESS ); fail_unless( Species_getInitialAmount(c) == 4.0 ); fail_unless( Species_isSetInitialAmount(c)); i = Species_unsetInitialAmount(c); fail_unless( i == LIBSBML_OPERATION_SUCCESS ); fail_unless( !Species_isSetInitialAmount(c)); Species_free(c); }
/* setValues: the user can enter a species name and change its initial condition (amount or concentration) */ static void setValues(Model_t *m) { char *species; char *newIA; char *newIC; Species_t *s; printf("Please enter the id of the species to change: "); species = get_line(stdin); species = util_trim(species); if ( (s = Model_getSpeciesById(m,species) ) ) { printf("\n"); printf("Id: %s\n", Species_getId(s)); if ( Species_isSetName(s) ) { printf("Name: %s\n", Species_getName(s)); } if ( Species_isSetInitialAmount(s) ) { printf("Initial Amount: %g", Species_getInitialAmount(s)); } else if (Species_isSetInitialConcentration(s) ) { printf("Initial Concentration: %g", Species_getInitialConcentration(s)); } if ( Species_getHasOnlySubstanceUnits(s) ) { if ( Species_isSetSubstanceUnits(s) ) { printf("%s ", Species_getSubstanceUnits(s)); } } else { if ( Species_isSetSubstanceUnits(s) ) { printf("%s ", Species_getSubstanceUnits(s)); } if ( Species_isSetSpatialSizeUnits(s) ) { printf("%s%s", "/", Species_getSpatialSizeUnits(s)); } } if ( Species_getHasOnlySubstanceUnits(s) ) { printf(" (has only substance units)"); } printf("\n"); if ( Species_isSetCharge(s) ) { printf("Charge: %-10d", Species_getCharge(s)); } printf("\n"); printf("%s ", Species_getBoundaryCondition(s) ? "Species is a Boundary\n" : "\n"); printf("%s ", Species_getConstant(s) ? "Species is set constant" : "\n"); printf("\n"); if ( Species_isSetInitialAmount(s) ) { printf("Please enter new initial Amount: "); newIA = get_line(stdin); newIA = util_trim(newIA); Species_setInitialAmount(s, (float) atof(newIA)); } else if ( Species_isSetInitialConcentration(s) ) { printf("Please enter new initial Concentration: "); newIC = get_line(stdin); newIC = util_trim(newIC); Species_setInitialConcentration(s, (float) atof(newIC)); } } else { printf("%s not found.\n", species); } }
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); }