Tice / models.py
fierce74's picture
Upload folder using huggingface_hub
cc6e5ac verified
from openenv.core.env_server.types import Action, Observation
from pydantic import Field
B_CELL_ACTIONS = [
"INCREASE_HIGH",
"INCREASE_LOW",
"MAINTAIN",
"REDUCE",
]
T_CELL_ACTIONS = [
"ATTACK_HIGH",
"ATTACK_MEDIUM",
"ATTACK_LOW",
"REST",
]
class TICEAction(Action):
b_cell_action: str = Field(
...,
description=f"B cell command. One of: {B_CELL_ACTIONS}",
)
t_cell_action: str = Field(
...,
description=f"T cell command. One of: {T_CELL_ACTIONS}",
)
class TICEObservation(Observation):
tumor_trend: str = Field(description="'increasing', 'stable', or 'decreasing'")
detection_signal: float = Field(description="Noisy B cell detection level [0,1]")
t_cell_effectiveness: str = Field(description="'high', 'medium', or 'low'")
resource_level: str = Field(description="'abundant', 'moderate', or 'scarce'")
b_cell_fatigue: float = Field(description="B cell fatigue [0,1]")
t_cell_fatigue: float = Field(description="T cell fatigue [0,1]")
recent_outcome: str = Field(
description="'strong_response', 'weak_response', or 'no_effect'"
)
timestep: int = Field(description="Current timestep [0,50]")
episode_phase: str = Field(
description="'early' (t<15), 'mid' (15-35), or 'late' (t>35)"
)
archetype: str = Field(description="Tumor archetype for this episode")
difficulty: str = Field(description="Episode difficulty tier")
feedback: str = Field(default="", description="Step outcome description")
done: bool = Field(default=False)
reward: float = Field(default=0.0)
TiceAction = TICEAction
TiceObservation = TICEObservation