Open
Description
📝 Description
Lets say we have a multi agent AgentsDF
agent1 : wealth , age
agent2 : age
if agents_df : AgentsDF
has these 2 agents and then agents_df["wealth"] will raise an error
🔄 Steps to Reproduce
class ExampleAgentSet1(AgentSetPolars):
def __init__(self, model: ModelDF):
super().__init__(model)
self["wealth"] = pl.Series("wealth", [1, 2, 3, 4])
self["age"] = pl.Series("age", [10, 20, 30, 40])
def add_wealth(self, amount: int) -> None:
self["wealth"] += amount
def step(self) -> None:
self.add_wealth(1)
class ExampleAgentSet2(AgentSetPolars):
def __init__(self, model: ModelDF):
super().__init__(model)
self["wealth"] = pl.Series("wealth", [10, 20, 30, 40])
self["age"] = pl.Series("age", [11, 22, 33, 44])
def add_wealth(self, amount: int) -> None:
self["wealth"] += amount
def step(self) -> None:
self.add_wealth(2)
class ExampleAgentSet3(AgentSetPolars):
def __init__(self, model: ModelDF):
super().__init__(model)
self["age"] = pl.Series("age", [1, 2, 3, 4])
def age_agents(self, amount: int) -> None:
self["age"] += amount
def step(self) -> None:
self.age_agents(1)
class ExampleModel(ModelDF):
def __init__(self, agents: AgentsDF):
super().__init__()
self.agents = agents
def step(self):
self.agents.do("step")
@pytest.fixture
def fix1_AgentSetPolars() -> ExampleAgentSet1:
return ExampleAgentSet1(ModelDF())
@pytest.fixture
def fix2_AgentSetPolars() -> ExampleAgentSet2:
return ExampleAgentSet2(ModelDF())
@pytest.fixture
def fix3_AgentSetPolars() -> ExampleAgentSet3:
return ExampleAgentSet3(ModelDF())
@pytest.fixture
def fix_AgentsDF(fix1_AgentSetPolars: ExampleAgentSet1,fix2_AgentSetPolars : ExampleAgentSet2, fix3_AgentSetPolars: ExampleAgentSet3) -> AgentsDF:
model = ModelDF()
agents = AgentsDF(model)
agents.add([fix1_AgentSetPolars,fix2_AgentSetPolars,fix3_AgentSetPolars])
return agents
@pytest.fixture
def fix1_model(fix_AgentsDF: AgentsDF) -> ExampleModel:
return ExampleModel(fix_AgentsDF)
model = fix1_mpdel
w = model.agents["wealth"]
🎯 Expected Behavior
I think it just needs to skip the agents without the specific column
🚨 Actual Behavior
No response
🖥️ Python Version
No response
Operating System
No response
Relevant Packages
No response
📊 Relevant Log Output
No response
➕ Additional Context
No response