Skip to content

Commit

Permalink
Remove configuration twice (#243)
Browse files Browse the repository at this point in the history
* changed the method to do create the solver in one method

* added a better comment

* removed box_mode instance
  • Loading branch information
montythind authored Sep 21, 2024
1 parent b49fe13 commit f1c8c27
Show file tree
Hide file tree
Showing 7 changed files with 24 additions and 67 deletions.
7 changes: 1 addition & 6 deletions src/acom_music_box/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -151,13 +151,8 @@ def main():
# Create and load a MusicBox object
myBox = MusicBox()
logger.debug(f"Configuration file = {musicBoxConfigFile}")
myBox.readConditionsFromJson(musicBoxConfigFile)
myBox.loadJson(musicBoxConfigFile)

# Create solver and solve
config_path = os.path.join(
os.path.dirname(musicBoxConfigFile),
myBox.config_file)
myBox.create_solver(config_path)
result = myBox.solve(musicBoxOutputPath)

if musicBoxOutputPath is None:
Expand Down
37 changes: 14 additions & 23 deletions src/acom_music_box/music_box.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,26 +69,6 @@ def add_evolving_condition(self, time_point, conditions):
time=[time_point], conditions=[conditions])
self.evolvingConditions.append(evolving_condition)

def create_solver(
self,
path_to_config,
solver_type=musica.micmsolver.rosenbrock,
number_of_grid_cells=1):
"""
Creates a micm solver object using the CAMP configuration files.
Args:
path_to_config (str): The path to CAMP configuration directory.
Returns:
None
"""
# Create a solver object using the configuration file
self.solver = musica.create_solver(
path_to_config,
solver_type,
number_of_grid_cells)

def solve(self, output_path=None, callback=None):
"""
Solves the box model simulation and optionally writes the output to a file.
Expand Down Expand Up @@ -246,13 +226,13 @@ def solve(self, output_path=None, callback=None):

return df

def readConditionsFromJson(self, path_to_json):
def loadJson(self, path_to_json):
"""
Reads and parses a JSON file from the CAMP JSON file to set up the box model simulation.
Reads and parses a JSON file and create a solver
Args:
path_to_json (str): The JSON path to the JSON file.
Returns:
None
Expand All @@ -279,6 +259,17 @@ def readConditionsFromJson(self, path_to_json):
# Set initial conditions
self.evolving_conditions = EvolvingConditions.from_config_JSON(
path_to_json, data, self.species_list, self.reaction_list)

camp_path = os.path.join(
os.path.dirname(path_to_json),
self.config_file)

# Creates a micm solver object using the CAMP configuration files.
self.solver = musica.create_solver(
camp_path,
musica.micmsolver.rosenbrock,
1)


def speciesOrdering(self):
"""
Expand Down
8 changes: 1 addition & 7 deletions tests/integration/test_analytical.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,9 @@ class TestAnalytical:
def test_run(self):
box_model = MusicBox()

# configures box model
conditions_path = Examples.Analytical.path
box_model.readConditionsFromJson(conditions_path)

camp_path = os.path.join(
os.path.dirname(conditions_path),
box_model.config_file)

box_model.create_solver(camp_path)
box_model.loadJson(conditions_path)

# solves and saves output
df = box_model.solve()
Expand Down
10 changes: 2 additions & 8 deletions tests/integration/test_carbon_bond_5.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,10 @@
class TestCarbonBond5:
def test_run(self):
box_model = MusicBox()

# configures box model

conditions_path = Examples.CarbonBond5.path
box_model.readConditionsFromJson(conditions_path)

camp_path = os.path.join(
os.path.dirname(conditions_path),
box_model.config_file)

box_model.create_solver(camp_path)
box_model.loadJson(conditions_path)

# solves and saves output
df = box_model.solve()
Expand Down
10 changes: 2 additions & 8 deletions tests/integration/test_chapman.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,9 @@ class TestChapman:
def test_run(self):
box_model = MusicBox()

# configures box model
conditions_path = Examples.Chapman.path
box_model.readConditionsFromJson(conditions_path)

camp_path = os.path.join(
os.path.dirname(conditions_path),
box_model.config_file)

box_model.create_solver(camp_path)

box_model.loadJson(conditions_path)

# solves and saves output
df = box_model.solve()
Expand Down
10 changes: 2 additions & 8 deletions tests/integration/test_flow_tube.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,10 @@ class TestWallLoss:
def test_run(self):
box_model = MusicBox()

# configures box model
conditions_path = Examples.FlowTube.path
box_model.readConditionsFromJson(conditions_path)

camp_path = os.path.join(
os.path.dirname(conditions_path),
box_model.config_file)

box_model.create_solver(camp_path)

box_model.loadJson(conditions_path)

# solves and saves output
df = box_model.solve()
model_output = [df.columns.values.tolist()] + df.values.tolist()
Expand Down
9 changes: 2 additions & 7 deletions tests/unit/test_callback.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,8 @@ def test_run(self, mocker):
box_model = MusicBox()

conditions_path = Examples.Analytical.path
box_model.readConditionsFromJson(conditions_path)

camp_path = os.path.join(
os.path.dirname(conditions_path),
box_model.config_file)

box_model.create_solver(camp_path)

box_model.loadJson(conditions_path)

# Mock the callback function
callback_mock = mocker.Mock(side_effect=callback)
Expand Down

0 comments on commit f1c8c27

Please sign in to comment.