# 9.3.25 (c) Brassil # Simulation configuration # import uuid import init # File management items import os filePath = os.path.expanduser("~/Desktop/Simulator/New_System_Results/") myuuid = uuid.uuid4() # Make a unique string fot the simulation log filename current_scenario = init.current_scenario # Simulation setup # Items that may be set SCORE_TYPE = "consequentialHours" # Score Types can be pH, pO2, glucose, PFI, vectorLength, hours, hyperHours, consequentialHours STATE_TYPE = "discrete" # State type can also be unitFloat, an alternate state type that results in a 0 to 1 float value for each state element # CHECK that unitFloat is actually supported in the code ACTION_DIMENSION = 9 # This number is how many types of action may be taken action_value = 0 action = [0] * ACTION_DIMENSION out_24_list =[""]* 28 # CHECK THIS 28 if init.current_scenario == "VCA": # Action setup action_step = [1, 5, .1, 2.776, 200, 1, 1.2, 10, 10] # This is the standard step action_limit_max = [40, 120, .95, 50, 10000, 50, 60, 60, 60] action_limit_min = [20, 30, .2, 0, 0, 0, 0, 0, 0] # State scoring limits: L HH, H, L, LL (Only 13 of the 19 states are scored) criticalDepletion = [10, 20, 25, .26, 6.99, 50, 0, 0, 0, 2, 1, 0, 1, 10] depletion = [19, 30, 50, .4, 7.2, 100, 30, .3, 10, 3, 15, 0, 10, 15] excess = [38, 120, 200, 1.6, 7.5, 500, 500, .7, 50, 9, 45, 10, 60, 50] criticalExcess = [41, 150, 300, 3.2, 7.6, 700, 700, 1, 60, 30, 50, 20, 100, 100] # DOUBLE CHECK THIS elif init.current_scenario == "EYE": # NEED REVISION TO EYE VALUES THESE ARE ALL ESTIMATES # Action setup action_step = [1, 5, .1, .2776, 20, .1, 1.2, .0134, .0134] # This is the standard step action_limit_max = [40, 120, .95, 13.88, 1000, 5, 60, .134, .134] action_limit_min = [20, 30, .2, 0, 0, 0, 0, 0, 0] # State scoring limits: L HH, H, L, LL (Only 13 of the 19 states are scored) criticalDepletion = [10, 20, .1, 12.5, 6.99, 50, 0, 0, 0, 2, 1, 0, 1, 10] depletion = [19, 30, .2, 20, 7.2, 100, 30, .3, 10, 3, 15, 0, 10, 15] excess = [38, 120, 1.5, 600, 7.5, 500, 500, .7, 50, 9, 45, 10, 60, 50] criticalExcess = [41, 150, 1.6, 1500, 7.6, 700, 700, 1, 60, 30, 50, 20, 100, 100] # DOUBLE CHECK THIS else: raise ValueError(f"Unknown scenario {current_scenario}") # Big State Vector, 19D [0 to 18]. # 0. Temperature C (state0) * # 1. Pressure mmHg * # 2. Flow mL/min * # 3. VR (REVISED) (state1) * # 4. pH (state2) * # 5. pO2 mmHg * # 6. pvO2 mmHg (state3) * # 7. svO2 fraction * # 8. pCO2 mmHg (REVISED) * # 9. Glucose mM (state4) * # 10. Insulin mU (state5) * # 11. Lactate mM * # 12. Hematocrit % * # 13. Bicarb mM * # 14. FiO2 (REVISED) * # 15. Dialysis in mL per minute (REVISED) * # 16. Hours * # 17. Dialysis out mL per minute (REVISED) * # 18. Volume mL (REVISED) * # NOTE: This is revised since RT240040 to represent the observations from RT210029 # Changes: # Action 1 changes from Gas Flow lpm to Pressure # Action 2 changes from Gas Richness % to FiO2 # Action 3 changes from Glucose mM to Glucose millimoles # Action 5 changes from Bicarb mM to Bicarb millimoles # Action 7 new is Dialysis in mL/min # Action 8 new is Dialysis out mL/min # Action Vector, 9D, [0 to 8]. This is a single number encoding 8 ternary components (0 to 3 recoded at Step() to -1 to 1) # 0. Temperature C (simulated in 1 C steps) * # 1. Pressure mmHg (MAP) (simulated in 5 mmHg steps) * # 2. FiO2 (adjustable in 0.1 increments) (air mixed with carbogen) * # 3. Glucose millimoles (2.776 mmol per mL unit injection) * # 4. Insulin mU (200 mU per mL injection) * # 5. Bicarb millimoles (1 mmol per mL unit injection) * # 6. Vasodilator (Papavarine 1.2 mg per mL) * # 7. Dialysis in mL/min (up to 60 mL per minute) * # 8. Dialysis out mL/min (up to 60 mL per minute) *