def test_batch_sim(self): # specify start_time as the beginning of today now = datetime.now() start_time = datetime.combine(now.date(), datetime.min.time()) # --------- Create Random Scenario -------------- # Create a simulation environment patient = T1DPatient.withName('adolescent#001') sensor = CGMSensor.withName('Dexcom', seed=1) pump = InsulinPump.withName('Insulet') scenario = RandomScenario(start_time=start_time, seed=1) env = T1DSimEnv(patient, sensor, pump, scenario) # Create a controller controller = BBController() # Put them together to create a simulation object s1 = SimObj(env, controller, timedelta( days=2), animate=True, path=save_folder) results1 = sim(s1) # --------- Create Custom Scenario -------------- # Create a simulation environment patient = T1DPatient.withName('adolescent#001') sensor = CGMSensor.withName('Dexcom', seed=1) pump = InsulinPump.withName('Insulet') # custom scenario is a list of tuples (time, meal_size) scen = [(7, 45), (12, 70), (16, 15), (18, 80), (23, 10)] scenario = CustomScenario(start_time=start_time, scenario=scen) env = T1DSimEnv(patient, sensor, pump, scenario) # Create a controller controller = BBController() # Put them together to create a simulation object s2 = SimObj(env, controller, timedelta( days=2), animate=False, path=save_folder) results2 = sim(s2) # --------- batch simulation -------------- s1.reset() s2.reset() s1.animate = False s = [s1, s2] results_para = batch_sim(s, parallel=True) s1.reset() s2.reset() s = [s1, s2] results_serial = batch_sim(s, parallel=False) assert_frame_equal(results_para[0], results1) assert_frame_equal(results_para[1], results2) for r1, r2 in zip(results_para, results_serial): assert_frame_equal(r1, r2)
print(results1) # --------- Create Custom Scenario -------------- # Create a simulation environment patient = T1DPatient.withName('adolescent#001') sensor = CGMSensor.withName('Dexcom', seed=1) pump = InsulinPump.withName('Insulet') # custom scenario is a list of tuples (time, meal_size) scen = [(7, 45), (12, 70), (16, 15), (18, 80), (23, 10)] scenario = CustomScenario(start_time=start_time, scenario=scen) env = T1DSimEnv(patient, sensor, pump, scenario) # Create a controller controller = BBController() # Put them together to create a simulation object s2 = SimObj(env, controller, timedelta(days=1), animate=False, path=path) results2 = sim(s2) print(results2) # --------- batch simulation -------------- # Re-initialize simulation objects s1.reset() s2.reset() # create a list of SimObj, and call batch_sim s = [s1, s2] results = batch_sim(s, parallel=True) print(results)
from simglucose.simulation.sim_engine import SimObj, sim, batch_sim from datetime import timedelta from datetime import datetime # specify start_time as the beginning of today now = datetime.now() start_time = datetime.combine(now.date(), datetime.min.time()) print(start_time) # --------- Create Random Scenario -------------- # Specify results saving path path = './results' # Create a simulation environment patient = T1DPatient.withName('adolescent#001') sensor = CGMSensor.withName('Navigator', seed=1) pump = InsulinPump.withName('Insulet') scenario = RandomScenario(start_time=start_time, seed=1) env = T1DSimEnv(patient, sensor, pump, scenario) # Create a controller controller = BBController() # Put them together to create a simulation object s1 = SimObj(env, controller, timedelta(hours=1), animate=False, path=path) results1 = sim(s1) print(results1) # --------- batch simulation -------------- # Re-initialize simulation objects s1.reset()