Skip to content

Commit 7740692

Browse files
committed
deploy: 2a68b75
0 parents  commit 7740692

File tree

328 files changed

+93756
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

328 files changed

+93756
-0
lines changed

.nojekyll

Whitespace-only changes.

404.html

Lines changed: 1 addition & 0 deletions
Large diffs are not rendered by default.

api/_modules/index.html

Lines changed: 486 additions & 0 deletions
Large diffs are not rendered by default.

api/_modules/mesa_frames/concrete/agentset.html

Lines changed: 1221 additions & 0 deletions
Large diffs are not rendered by default.

api/_modules/mesa_frames/concrete/agentsetregistry.html

Lines changed: 1279 additions & 0 deletions
Large diffs are not rendered by default.

api/_modules/mesa_frames/concrete/datacollector.html

Lines changed: 1130 additions & 0 deletions
Large diffs are not rendered by default.

api/_modules/mesa_frames/concrete/model.html

Lines changed: 722 additions & 0 deletions
Large diffs are not rendered by default.

api/_modules/mesa_frames/concrete/space.html

Lines changed: 707 additions & 0 deletions
Large diffs are not rendered by default.

api/_sources/index.rst.txt

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
mesa-frames API
2+
===============
3+
4+
.. toctree::
5+
:caption: Shortcuts
6+
:maxdepth: 1
7+
:hidden:
8+
9+
reference/agents/index
10+
reference/model
11+
reference/space/index
12+
reference/datacollector
13+
14+
15+
16+
Overview
17+
--------
18+
19+
mesa-frames provides a DataFrame-first API for agent-based models. Instead of representing each agent as a distinct Python object, agents are stored in AgentSets (backed by DataFrames) and manipulated via vectorised operations. This leads to much lower memory overhead and faster bulk updates while keeping an object-oriented feel for model structure and lifecycle management.
20+
21+
22+
Mini usage flow
23+
---------------
24+
25+
1. Create a Model and register AgentSets on ``model.sets``.
26+
2. Populate AgentSets with agents (rows) and attributes (columns) via adding a DataFrame to the AgentSet.
27+
3. Implement AgentSet methods that operate on DataFrames
28+
4. Use ``model.sets.do("step")`` from the model loop to advance the simulation; datacollectors and reporters can sample model- and agent-level columns at each step.
29+
30+
.. grid::
31+
:gutter: 2
32+
33+
.. grid-item-card:: Manage agent collections
34+
:link: reference/agents/index
35+
:link-type: doc
36+
37+
Create and operate on ``AgentSets`` and ``AgentSetRegisties``: add/remove agents.
38+
39+
.. grid-item-card:: Model orchestration
40+
:link: reference/model
41+
:link-type: doc
42+
43+
``Model`` API for registering sets, stepping the simulation, and integrating with datacollectors/reporters.
44+
45+
.. grid-item-card:: Spatial support
46+
:link: reference/space/index
47+
:link-type: doc
48+
49+
Placement and neighbourhood utilities for ``Grid`` and space
50+
51+
.. grid-item-card:: Collect simulation data
52+
:link: reference/datacollector
53+
:link-type: doc
54+
55+
Record model- and agent-level metrics over time with ``DataCollector``. Sample columns, run aggregations, and export cleaned frames for analysis.
Lines changed: 189 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,189 @@
1+
Agents
2+
======
3+
4+
.. currentmodule:: mesa_frames
5+
6+
Quick intro
7+
-----------
8+
9+
- ``AgentSet`` stores agents as rows in a Polars-backed table and provides vectorised operations for high-performance updates.
10+
11+
- ``AgentSetRegistry`` (available at ``model.sets``) is the container that holds all ``AgentSet`` instances for a model and provides convenience operations (add/remove sets, step all sets, rename).
12+
13+
- Keep agent logic column-oriented and prefer Polars expressions for updates.
14+
15+
Minimal example
16+
---------------
17+
18+
.. code-block:: python
19+
20+
from mesa_frames import Model, AgentSet
21+
import polars as pl
22+
23+
class MySet(AgentSet):
24+
def __init__(self, model):
25+
super().__init__(model)
26+
self.add(pl.DataFrame({"age": [0, 5, 10]}))
27+
28+
def step(self):
29+
# vectorised update: increase age for all agents
30+
self.df = self.df.with_columns((pl.col("age") + 1).alias("age"))
31+
32+
class MyModel(Model):
33+
def __init__(self):
34+
super().__init__()
35+
# register an AgentSet on the model's registry
36+
self.sets += MySet(self)
37+
38+
m = MyModel()
39+
# step all registered sets (delegates to each AgentSet.step)
40+
m.sets.do("step")
41+
42+
API reference
43+
---------------------------------
44+
45+
.. tab-set::
46+
47+
.. tab-item:: AgentSet
48+
49+
.. tab-set::
50+
51+
.. tab-item:: Overview
52+
53+
.. rubric:: Lifecycle / Core
54+
55+
.. autosummary::
56+
:nosignatures:
57+
:toctree:
58+
59+
AgentSet.__init__
60+
AgentSet.step
61+
AgentSet.rename
62+
AgentSet.copy
63+
64+
.. rubric:: Accessors & Views
65+
66+
.. autosummary::
67+
:nosignatures:
68+
:toctree:
69+
70+
AgentSet.df
71+
AgentSet.model
72+
AgentSet.random
73+
AgentSet.space
74+
AgentSet.active_agents
75+
AgentSet.inactive_agents
76+
AgentSet.index
77+
AgentSet.pos
78+
AgentSet.name
79+
AgentSet.get
80+
AgentSet.contains
81+
AgentSet.__len__
82+
AgentSet.__iter__
83+
AgentSet.__getitem__
84+
AgentSet.__contains__
85+
86+
.. rubric:: Mutators
87+
88+
.. autosummary::
89+
:nosignatures:
90+
:toctree:
91+
92+
AgentSet.add
93+
AgentSet.remove
94+
AgentSet.discard
95+
AgentSet.set
96+
AgentSet.select
97+
AgentSet.shuffle
98+
AgentSet.sort
99+
AgentSet.do
100+
101+
.. rubric:: Operators / Internal helpers
102+
103+
.. autosummary::
104+
:nosignatures:
105+
:toctree:
106+
107+
AgentSet.__add__
108+
AgentSet.__iadd__
109+
AgentSet.__sub__
110+
AgentSet.__isub__
111+
AgentSet.__repr__
112+
AgentSet.__reversed__
113+
114+
.. tab-item:: Full API
115+
116+
.. autoclass:: AgentSet
117+
:autosummary:
118+
:autosummary-nosignatures:
119+
120+
.. tab-item:: AgentSetRegistry
121+
122+
.. tab-set::
123+
124+
.. tab-item:: Overview
125+
126+
.. rubric:: Lifecycle / Core
127+
128+
.. autosummary::
129+
:nosignatures:
130+
:toctree:
131+
132+
AgentSetRegistry.__init__
133+
AgentSetRegistry.copy
134+
AgentSetRegistry.rename
135+
136+
.. rubric:: Accessors & Queries
137+
138+
.. autosummary::
139+
:nosignatures:
140+
:toctree:
141+
142+
AgentSetRegistry.get
143+
AgentSetRegistry.contains
144+
AgentSetRegistry.ids
145+
AgentSetRegistry.keys
146+
AgentSetRegistry.items
147+
AgentSetRegistry.values
148+
AgentSetRegistry.model
149+
AgentSetRegistry.random
150+
AgentSetRegistry.space
151+
AgentSetRegistry.__len__
152+
AgentSetRegistry.__iter__
153+
AgentSetRegistry.__getitem__
154+
AgentSetRegistry.__contains__
155+
156+
.. rubric:: Mutators / Coordination
157+
158+
.. autosummary::
159+
:nosignatures:
160+
:toctree:
161+
162+
AgentSetRegistry.add
163+
AgentSetRegistry.remove
164+
AgentSetRegistry.discard
165+
AgentSetRegistry.replace
166+
AgentSetRegistry.shuffle
167+
AgentSetRegistry.sort
168+
AgentSetRegistry.do
169+
AgentSetRegistry.__setitem__
170+
AgentSetRegistry.__add__
171+
AgentSetRegistry.__iadd__
172+
AgentSetRegistry.__sub__
173+
AgentSetRegistry.__isub__
174+
175+
.. rubric:: Representation
176+
177+
.. autosummary::
178+
:nosignatures:
179+
:toctree:
180+
181+
AgentSetRegistry.__repr__
182+
AgentSetRegistry.__str__
183+
AgentSetRegistry.__reversed__
184+
185+
.. tab-item:: Full API
186+
187+
.. autoclass:: AgentSetRegistry
188+
:autosummary:
189+
:autosummary-nosignatures:

0 commit comments

Comments
 (0)