import sys import os sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))) from basal_bolus_ctrller import BBController import pandas as pd import numpy as np from collections import namedtuple # Create a namedtuple to mimic the observation structure Observation = namedtuple('Observation', ['CGM']) def generate_bb_data(num_samples=1000, patient_names=None): if patient_names is None: patient_names = ['adult#001', 'adolescent#001', 'child#001'] controller = BBController() data = [] for _ in range(num_samples): for patient in patient_names: # Generate random glucose level (mg/dL) glucose = np.random.randint(40, 400) # Generate random meal amount (g/min) meal = np.random.choice([0, np.random.uniform(0, 5)], p=[0.8, 0.2]) # Create observation obs = Observation(CGM=glucose) # Get action from controller action = controller.policy(obs, reward=0, done=False, sample_time=5, patient_name=patient, meal=meal) # Store data data.append({ 'patient': patient, 'glucose': glucose, 'meal': meal, 'basal': action.basal, 'bolus': action.bolus }) return pd.DataFrame(data) # Generate data df = generate_bb_data(num_samples=1000) # Save to CSV df.to_csv('bb_controller_data.csv', index=False) print("Data generation complete. Check 'bb_controller_data.csv'.")