Spaces:
Build error
Build error
| # %% | |
| import datetime | |
| class SensorAgent: | |
| DEFAULT_SEQUENCE = [ | |
| {"site": "right_leg", "side": "right"}, | |
| {"site": "right_arm", "side": "right"}, | |
| {"site": "left_arm", "side": "left"}, | |
| {"site": "left_leg", "side": "left"} | |
| ] | |
| def __init__(self, sequence=None, change_days=10): | |
| """ | |
| sequence: Optional list of dicts like [{"site": "leg", "side": "left"}, ...] | |
| change_days: Number of days between sensor changes | |
| """ | |
| self.sequence = sequence or self.DEFAULT_SEQUENCE | |
| self.change_days = change_days | |
| def generate_schedule(self, start_date, starting_site): | |
| """ | |
| start_date: datetime.date object | |
| starting_site: dict with keys "site" and "side" | |
| """ | |
| if not isinstance(starting_site, dict): | |
| raise ValueError("starting_site must be a dict with 'site' and 'Side'") | |
| site = starting_site.get("site") | |
| side = starting_site.get("side") | |
| # Find index of starting site in sequence | |
| start_index = next( | |
| (i for i, s in enumerate(self.sequence) | |
| if s["site"] == starting_site["site"] and s["side"] == starting_site["side"]), | |
| None | |
| ) | |
| if start_index is None: | |
| raise ValueError(f"Starting site {starting_site} not found in sequence.") | |
| # Rotate sequence from starting point | |
| rotated_sequence = self.sequence[start_index:] + self.sequence[:start_index] | |
| # Generate schedule | |
| schedule = [] | |
| for i, entry in enumerate(rotated_sequence): | |
| scheduled_date = start_date + datetime.timedelta(days=i * self.change_days) | |
| schedule.append({ | |
| "date": scheduled_date, | |
| "site": entry["site"], | |
| "side": entry["side"] | |
| }) | |
| return schedule | |