Skip to content

Commit

Permalink
Fix for #1138: no initial assignments in getCurrentSBML()
Browse files Browse the repository at this point in the history
This turned out to be super simple:  just delete the initial assignments from the initially-generated SBML.  All the values are set afterwards, an
  • Loading branch information
luciansmith committed Jul 21, 2023
1 parent 88b8b24 commit c92b79a
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 2 deletions.
6 changes: 4 additions & 2 deletions source/rrRoadRunner.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4437,9 +4437,11 @@ namespace rr {

std::stringstream stream;
libsbml::SBMLDocument doc(*impl->document);
libsbml::Model *model = 0;
libsbml::Model *model = doc.getModel();

model = doc.getModel();
while (model->getNumInitialAssignments() > 0) {
model->removeInitialAssignment(0);
}

std::vector<std::string> array = getFloatingSpeciesIds();
for (int i = 0; i < array.size(); i++) {
Expand Down
23 changes: 23 additions & 0 deletions test/model_editing/model_editing.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -591,6 +591,29 @@ TEST_F(ModelEditingTests, REMOVE_INITIAL_ASSIGNMENT) {
}


TEST_F(ModelEditingTests, GET_CURRENT_SBML_NO_INITIAL_ASSIGNMENTS) {
RoadRunner rri;
//Logger::setLevel(Logger::LOG_DEBUG);
rri.addParameter("k1", 0.5, false);
rri.addCompartment("compartment", 3.5, false);
rri.addSpeciesAmount("S1", "compartment", 10.3, true, false, "", false);
rri.addInitialAssignment("k1", "5/3", false);
rri.addInitialAssignment("compartment", "k1*3", false);
rri.addInitialAssignment("S1", "k1/5", true);

string doc = rri.getCurrentSBML();
EXPECT_EQ(string::npos, doc.find("initialAssignment"));

rri.setValue("k1", 1.1);
rri.setValue("S1", 2.2);
rri.setValue("compartment", 3.3);
doc = rri.getCurrentSBML();
RoadRunner rri2(doc);
EXPECT_EQ(rri2.getValue("k1"), 1.1);
EXPECT_EQ(rri2.getValue("S1"), 2.2);
EXPECT_EQ(rri2.getValue("compartment"), 3.3);
}

TEST_F(ModelEditingTests, SET_BOUNDARY_INIT) {
RoadRunner rri;
//Logger::setLevel(Logger::LOG_DEBUG);
Expand Down

0 comments on commit c92b79a

Please sign in to comment.