Mesa 3.1.5__tar.gz → 3.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of Mesa might be problematic. Click here for more details.
- {mesa-3.1.5 → mesa-3.2.0}/.github/workflows/build_lint.yml +1 -1
- {mesa-3.1.5 → mesa-3.2.0}/.gitignore +1 -0
- {mesa-3.1.5 → mesa-3.2.0}/.pre-commit-config.yaml +1 -1
- mesa-3.2.0/CITATION.cff +62 -0
- {mesa-3.1.5 → mesa-3.2.0}/CONTRIBUTING.md +1 -1
- {mesa-3.1.5 → mesa-3.2.0}/HISTORY.md +97 -1
- {mesa-3.1.5 → mesa-3.2.0}/PKG-INFO +12 -8
- {mesa-3.1.5 → mesa-3.2.0}/README.md +10 -6
- {mesa-3.1.5 → mesa-3.2.0}/docs/apis/api_main.md +1 -0
- mesa-3.2.0/docs/apis/discrete_space.md +41 -0
- mesa-3.2.0/docs/apis/experimental.md +39 -0
- {mesa-3.1.5 → mesa-3.2.0}/docs/apis/visualization.md +9 -0
- {mesa-3.1.5 → mesa-3.2.0}/docs/conf.py +44 -19
- {mesa-3.1.5 → mesa-3.2.0}/docs/getting_started.md +19 -4
- mesa-3.2.0/docs/images/Discrete_Space.drawio.png +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/docs/index.md +13 -2
- {mesa-3.1.5 → mesa-3.2.0}/docs/overview.md +18 -1
- mesa-3.2.0/docs/tutorials/0_first_model.ipynb +612 -0
- mesa-3.2.0/docs/tutorials/1_adding_space.ipynb +391 -0
- mesa-3.2.0/docs/tutorials/2_collecting_data.ipynb +535 -0
- mesa-3.2.0/docs/tutorials/3_agentset.ipynb +338 -0
- mesa-3.2.0/docs/tutorials/4_visualization_basic.ipynb +317 -0
- mesa-3.2.0/docs/tutorials/5_visualization_dynamic_agents.ipynb +334 -0
- mesa-3.2.0/docs/tutorials/6_visualization_custom.ipynb +396 -0
- mesa-3.2.0/docs/tutorials/7_batch_run.ipynb +422 -0
- mesa-3.2.0/docs/tutorials/8_comparing_scenarios.ipynb +484 -0
- {mesa-3.1.5 → mesa-3.2.0}/mesa/__init__.py +3 -1
- {mesa-3.1.5 → mesa-3.2.0}/mesa/agent.py +26 -9
- {mesa-3.1.5/mesa/experimental/cell_space → mesa-3.2.0/mesa/discrete_space}/__init__.py +8 -8
- {mesa-3.1.5/mesa/experimental/cell_space → mesa-3.2.0/mesa/discrete_space}/cell.py +29 -10
- {mesa-3.1.5/mesa/experimental/cell_space → mesa-3.2.0/mesa/discrete_space}/cell_agent.py +1 -1
- {mesa-3.1.5/mesa/experimental/cell_space → mesa-3.2.0/mesa/discrete_space}/cell_collection.py +3 -3
- {mesa-3.1.5/mesa/experimental/cell_space → mesa-3.2.0/mesa/discrete_space}/discrete_space.py +65 -3
- {mesa-3.1.5/mesa/experimental/cell_space → mesa-3.2.0/mesa/discrete_space}/grid.py +2 -2
- {mesa-3.1.5/mesa/experimental/cell_space → mesa-3.2.0/mesa/discrete_space}/network.py +22 -2
- {mesa-3.1.5/mesa/experimental/cell_space → mesa-3.2.0/mesa/discrete_space}/property_layer.py +1 -10
- {mesa-3.1.5/mesa/experimental/cell_space → mesa-3.2.0/mesa/discrete_space}/voronoi.py +2 -2
- {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/README.md +1 -1
- {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/__init__.py +2 -0
- mesa-3.2.0/mesa/examples/advanced/alliance_formation/Readme.md +50 -0
- mesa-3.2.0/mesa/examples/advanced/alliance_formation/agents.py +20 -0
- mesa-3.2.0/mesa/examples/advanced/alliance_formation/app.py +71 -0
- mesa-3.2.0/mesa/examples/advanced/alliance_formation/model.py +184 -0
- {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/advanced/epstein_civil_violence/agents.py +1 -1
- {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/advanced/epstein_civil_violence/model.py +1 -1
- {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/advanced/pd_grid/Readme.md +4 -6
- {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/advanced/pd_grid/agents.py +1 -1
- {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/advanced/pd_grid/model.py +1 -1
- {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/advanced/sugarscape_g1mt/Readme.md +4 -5
- {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/advanced/sugarscape_g1mt/agents.py +1 -1
- {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/advanced/sugarscape_g1mt/model.py +2 -2
- {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/advanced/wolf_sheep/Readme.md +2 -17
- {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/advanced/wolf_sheep/agents.py +1 -1
- {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/advanced/wolf_sheep/app.py +2 -1
- {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/advanced/wolf_sheep/model.py +1 -1
- {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/basic/boid_flockers/Readme.md +6 -1
- {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/basic/boid_flockers/agents.py +1 -0
- {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/basic/boid_flockers/app.py +17 -2
- {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/basic/boid_flockers/model.py +12 -0
- {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/basic/boltzmann_wealth_model/Readme.md +2 -12
- {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/basic/boltzmann_wealth_model/agents.py +6 -11
- {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/basic/boltzmann_wealth_model/app.py +2 -2
- {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/basic/boltzmann_wealth_model/model.py +7 -11
- {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/basic/conways_game_of_life/Readme.md +1 -9
- {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/basic/conways_game_of_life/agents.py +13 -5
- {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/basic/conways_game_of_life/model.py +10 -7
- {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/basic/schelling/Readme.md +0 -8
- {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/basic/schelling/agents.py +13 -8
- {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/basic/schelling/model.py +6 -9
- {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/basic/virus_on_network/Readme.md +0 -4
- mesa-3.2.0/mesa/examples/basic/virus_on_network/__init__.py +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/basic/virus_on_network/agents.py +13 -17
- {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/basic/virus_on_network/model.py +20 -24
- {mesa-3.1.5 → mesa-3.2.0}/mesa/experimental/__init__.py +2 -2
- mesa-3.2.0/mesa/experimental/cell_space/__init__.py +60 -0
- mesa-3.2.0/mesa/experimental/meta_agents/__init__.py +25 -0
- mesa-3.2.0/mesa/experimental/meta_agents/meta_agent.py +387 -0
- {mesa-3.1.5 → mesa-3.2.0}/mesa/model.py +3 -3
- {mesa-3.1.5 → mesa-3.2.0}/mesa/space.py +1 -12
- {mesa-3.1.5 → mesa-3.2.0}/mesa/visualization/__init__.py +2 -0
- mesa-3.2.0/mesa/visualization/command_console.py +482 -0
- mesa-3.2.0/mesa/visualization/components/altair_components.py +450 -0
- {mesa-3.1.5 → mesa-3.2.0}/mesa/visualization/mpl_space_drawing.py +17 -9
- {mesa-3.1.5 → mesa-3.2.0}/mesa/visualization/solara_viz.py +150 -21
- {mesa-3.1.5 → mesa-3.2.0}/pyproject.toml +6 -7
- {mesa-3.1.5 → mesa-3.2.0}/tests/test_agent.py +12 -0
- mesa-3.1.5/tests/test_cell_space.py → mesa-3.2.0/tests/test_discrete_space.py +54 -1
- {mesa-3.1.5 → mesa-3.2.0}/tests/test_examples.py +14 -0
- mesa-3.2.0/tests/test_meta_agents.py +307 -0
- {mesa-3.1.5 → mesa-3.2.0}/tests/test_solara_viz.py +35 -10
- mesa-3.1.5/CITATION.bib +0 -19
- mesa-3.1.5/docs/apis/experimental.md +0 -68
- mesa-3.1.5/docs/tutorials/MoneyModel.py +0 -81
- mesa-3.1.5/docs/tutorials/intro_tutorial.ipynb +0 -1903
- mesa-3.1.5/docs/tutorials/visualization_tutorial.ipynb +0 -437
- mesa-3.1.5/mesa/visualization/components/altair_components.py +0 -190
- {mesa-3.1.5 → mesa-3.2.0}/.codespellignore +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/.coveragerc +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/.github/ISSUE_TEMPLATE/bug-report.md +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/.github/ISSUE_TEMPLATE/feature-request.md +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/.github/PULL_REQUEST_TEMPLATE/bug.md +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/.github/PULL_REQUEST_TEMPLATE/feature.md +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/.github/dependabot.yml +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/.github/pull_request_template.md +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/.github/release.yml +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/.github/workflows/benchmarks.yml +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/.github/workflows/release.yml +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/.readthedocs.yml +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/CODE_OF_CONDUCT.md +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/Dockerfile +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/LICENSE +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/NOTICE +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/benchmarks/compare_timings.py +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/benchmarks/configurations.py +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/benchmarks/global_benchmark.py +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/binder/environment.yml +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/codecov.yaml +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/docker-compose.yml +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/docs/Makefile +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/docs/README.md +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/docs/apis/agent.md +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/docs/apis/batchrunner.md +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/docs/apis/datacollection.md +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/docs/apis/mesa_logging.md +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/docs/apis/model.md +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/docs/apis/space.md +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/docs/best-practices.md +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/docs/example_template.txt +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/docs/examples_overview_template.txt +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/docs/images/mesa_logo.ico +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/docs/images/mesa_logo.png +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/docs/images/wolf_sheep.png +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/docs/make.bat +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/docs/mesa.md +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/docs/mesa_extension.md +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/docs/migration_guide.md +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/maintenance/fetch_unlabeled_prs.py +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/mesa/batchrunner.py +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/mesa/datacollection.py +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/advanced/__init__.py +0 -0
- /mesa-3.1.5/mesa/examples/advanced/epstein_civil_violence/__init__.py → /mesa-3.2.0/mesa/examples/advanced/alliance_formation/__init__ .py +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/advanced/epstein_civil_violence/Epstein Civil Violence.ipynb +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/advanced/epstein_civil_violence/Readme.md +0 -0
- {mesa-3.1.5/mesa/examples/advanced/pd_grid → mesa-3.2.0/mesa/examples/advanced/epstein_civil_violence}/__init__.py +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/advanced/epstein_civil_violence/app.py +0 -0
- {mesa-3.1.5/mesa/examples/advanced/sugarscape_g1mt → mesa-3.2.0/mesa/examples/advanced/pd_grid}/__init__.py +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/advanced/pd_grid/analysis.ipynb +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/advanced/pd_grid/app.py +0 -0
- {mesa-3.1.5/mesa/examples/advanced/wolf_sheep → mesa-3.2.0/mesa/examples/advanced/sugarscape_g1mt}/__init__.py +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/advanced/sugarscape_g1mt/app.py +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/advanced/sugarscape_g1mt/sugar-map.txt +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/advanced/sugarscape_g1mt/tests.py +0 -0
- {mesa-3.1.5/mesa/examples/basic → mesa-3.2.0/mesa/examples/advanced/wolf_sheep}/__init__.py +0 -0
- {mesa-3.1.5/mesa/examples/basic/boid_flockers → mesa-3.2.0/mesa/examples/basic}/__init__.py +0 -0
- {mesa-3.1.5/mesa/examples/basic/boltzmann_wealth_model → mesa-3.2.0/mesa/examples/basic/boid_flockers}/__init__.py +0 -0
- {mesa-3.1.5/mesa/examples/basic/conways_game_of_life → mesa-3.2.0/mesa/examples/basic/boltzmann_wealth_model}/__init__.py +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/basic/boltzmann_wealth_model/st_app.py +0 -0
- {mesa-3.1.5/mesa/examples/basic/schelling → mesa-3.2.0/mesa/examples/basic/conways_game_of_life}/__init__.py +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/basic/conways_game_of_life/app.py +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/basic/conways_game_of_life/st_app.py +0 -0
- {mesa-3.1.5/mesa/examples/basic/virus_on_network → mesa-3.2.0/mesa/examples/basic/schelling}/__init__.py +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/basic/schelling/analysis.ipynb +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/basic/schelling/app.py +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/basic/virus_on_network/app.py +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/mesa/experimental/continuous_space/__init__.py +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/mesa/experimental/continuous_space/continuous_space.py +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/mesa/experimental/continuous_space/continuous_space_agents.py +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/mesa/experimental/devs/__init__.py +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/mesa/experimental/devs/eventlist.py +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/mesa/experimental/devs/simulator.py +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/mesa/experimental/mesa_signals/__init__.py +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/mesa/experimental/mesa_signals/mesa_signal.py +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/mesa/experimental/mesa_signals/observable_collections.py +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/mesa/experimental/mesa_signals/signals_util.py +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/mesa/mesa_logging.py +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/mesa/visualization/components/__init__.py +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/mesa/visualization/components/matplotlib_components.py +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/mesa/visualization/user_param.py +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/mesa/visualization/utils.py +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/mypy.ini +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/tests/__init__.py +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/tests/read_requirements.py +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/tests/test_batch_run.py +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/tests/test_components_matplotlib.py +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/tests/test_continuous_space.py +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/tests/test_datacollector.py +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/tests/test_devs.py +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/tests/test_end_to_end_viz.sh +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/tests/test_grid.py +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/tests/test_import_namespace.py +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/tests/test_lifespan.py +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/tests/test_mesa_logging.py +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/tests/test_mesa_signals.py +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/tests/test_model.py +0 -0
- {mesa-3.1.5 → mesa-3.2.0}/tests/test_space.py +0 -0
mesa-3.2.0/CITATION.cff
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
cff-version: "1.2.0"
|
|
2
|
+
authors:
|
|
3
|
+
- family-names: Hoeven
|
|
4
|
+
given-names: Ewout
|
|
5
|
+
name-particle: ter
|
|
6
|
+
orcid: "https://orcid.org/0009-0002-0805-3425"
|
|
7
|
+
- family-names: Kwakkel
|
|
8
|
+
given-names: Jan
|
|
9
|
+
orcid: "https://orcid.org/0000-0001-9447-2954"
|
|
10
|
+
- family-names: Hess
|
|
11
|
+
given-names: Vincent
|
|
12
|
+
orcid: "https://orcid.org/0000-0002-9242-8500"
|
|
13
|
+
- family-names: Pike
|
|
14
|
+
given-names: Thomas
|
|
15
|
+
orcid: "https://orcid.org/0000-0003-1576-0283"
|
|
16
|
+
- family-names: Wang
|
|
17
|
+
given-names: Boyu
|
|
18
|
+
orcid: "https://orcid.org/0000-0001-9879-2138"
|
|
19
|
+
- family-names: rht
|
|
20
|
+
orcid: "https://orcid.org/0009-0002-6902-111X"
|
|
21
|
+
- family-names: Kazil
|
|
22
|
+
given-names: Jackie
|
|
23
|
+
orcid: "https://orcid.org/0000-0002-8300-7384"
|
|
24
|
+
doi: 10.5281/zenodo.15090710
|
|
25
|
+
message: If you use this software, please cite our article in the
|
|
26
|
+
Journal of Open Source Software.
|
|
27
|
+
preferred-citation:
|
|
28
|
+
authors:
|
|
29
|
+
- family-names: Hoeven
|
|
30
|
+
given-names: Ewout
|
|
31
|
+
name-particle: ter
|
|
32
|
+
orcid: "https://orcid.org/0009-0002-0805-3425"
|
|
33
|
+
- family-names: Kwakkel
|
|
34
|
+
given-names: Jan
|
|
35
|
+
orcid: "https://orcid.org/0000-0001-9447-2954"
|
|
36
|
+
- family-names: Hess
|
|
37
|
+
given-names: Vincent
|
|
38
|
+
orcid: "https://orcid.org/0000-0002-9242-8500"
|
|
39
|
+
- family-names: Pike
|
|
40
|
+
given-names: Thomas
|
|
41
|
+
orcid: "https://orcid.org/0000-0003-1576-0283"
|
|
42
|
+
- family-names: Wang
|
|
43
|
+
given-names: Boyu
|
|
44
|
+
orcid: "https://orcid.org/0000-0001-9879-2138"
|
|
45
|
+
- family-names: rht
|
|
46
|
+
orcid: "https://orcid.org/0009-0002-6902-111X"
|
|
47
|
+
- family-names: Kazil
|
|
48
|
+
given-names: Jackie
|
|
49
|
+
orcid: "https://orcid.org/0000-0002-8300-7384"
|
|
50
|
+
date-published: 2025-03-28
|
|
51
|
+
doi: 10.21105/joss.07668
|
|
52
|
+
issn: 2475-9066
|
|
53
|
+
issue: 107
|
|
54
|
+
journal: Journal of Open Source Software
|
|
55
|
+
publisher:
|
|
56
|
+
name: Open Journals
|
|
57
|
+
start: 7668
|
|
58
|
+
title: "Mesa 3: Agent-based modeling with Python in 2025"
|
|
59
|
+
type: article
|
|
60
|
+
url: "https://joss.theoj.org/papers/10.21105/joss.07668"
|
|
61
|
+
volume: 10
|
|
62
|
+
title: "Mesa 3: Agent-based modeling with Python in 2025"
|
|
@@ -53,7 +53,7 @@ Learn the tools, talk to us about what you want to change, and open a small PR.
|
|
|
53
53
|
Awesome! You have the basics of open-source software development (if not check above), but not much modelling experience.
|
|
54
54
|
|
|
55
55
|
First step is to start thinking like a modeller. To understand the fine details about our library and contribute meaningfully, get some modelling experience:
|
|
56
|
-
- Go though our
|
|
56
|
+
- Go though our series of introductory tutorials at [Getting Started](https://mesa.readthedocs.io/latest/getting_started.html). While going through them, dive into the source code to really see what everything does.
|
|
57
57
|
- Follow an ABM course (if possible). They might be a bit outdated programming language wise, but conceptual they're sound.
|
|
58
58
|
- This MOOC on ABM concepts: [Agent Based Modeling](https://ocw.tudelft.nl/course-lectures/agent-based-modeling/)
|
|
59
59
|
- This MOOC on practical ABM modelling: [Agent-Based Models with Python: An Introduction to Mesa](https://www.complexityexplorer.org/courses/172-agent-based-models-with-python-an-introduction-to-mesa)
|
|
@@ -1,6 +1,102 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Release History
|
|
3
3
|
---
|
|
4
|
+
# 3.2.0 (2025-05-04)
|
|
5
|
+
## Highlights
|
|
6
|
+
Mesa 3.2.0 is a feature-packed release, which stabilizes our discrete space, improves many of our visualisation capabilities, improves our tutorial organization, adds the experimental meta-agents, and includes other quality of life enhancements.
|
|
7
|
+
|
|
8
|
+
We also celebrate the publication of our peer-reviewed [Mesa 3 paper](https://doi.org/10.21105/joss.07668) in JOSS. See the updated [Citing Mesa](https://github.com/projectmesa/mesa?tab=readme-ov-file#citing-mesa) section on how to cite us.
|
|
9
|
+
|
|
10
|
+
### Stabilization of Discrete Space
|
|
11
|
+
The experimental Cell Space system has been stabilized and is now available as `mesa.discrete_space` ([#2610](https://github.com/projectmesa/mesa/pull/2610)). This powerful spatial modeling framework enables cell-centric simulations with integrated PropertyLayers and improved agent movement capabilities. Key improvements include:
|
|
12
|
+
|
|
13
|
+
- Support for dynamic modifications to discrete spaces during simulation ([#2755](https://github.com/projectmesa/mesa/pull/2755))
|
|
14
|
+
- Methods to add/remove cells and connections in real-time
|
|
15
|
+
- Full integration with PropertyLayers ([#2440](https://github.com/projectmesa/mesa/pull/2440)) for representing environmental variables
|
|
16
|
+
- Compatible with all examples and existing visualizations
|
|
17
|
+
|
|
18
|
+
The PropertyLayer itself has also been stabilized, allowing for efficient management of spatial environmental properties like terrain, resources, or any grid-based variables. Core examples including [Schelling](https://github.com/projectmesa/mesa/tree/main/mesa/examples/basic/schelling), [Game of Life](https://github.com/projectmesa/mesa/tree/main/mesa/examples/basic/conways_game_of_life), [Boltzmann Wealth](https://github.com/projectmesa/mesa/tree/main/mesa/examples/basic/boltzmann_wealth_model), and [Virus on Network](https://github.com/projectmesa/mesa/tree/main/mesa/examples/basic/virus_on_network) have been updated to use the new discrete space system.
|
|
19
|
+
|
|
20
|
+
### Enhanced Visualization Experience
|
|
21
|
+
The SolaraViz visualization system has received substantial upgrades:
|
|
22
|
+
|
|
23
|
+
- **Command Console** ([#2697](https://github.com/projectmesa/mesa/pull/2697)): An interactive Python console embedded directly in the visualization, allowing real-time model inspection and manipulation
|
|
24
|
+
- **Asynchronous Updates** ([#2656](https://github.com/projectmesa/mesa/pull/2656)): Visualization now runs in a separate thread, dramatically improving performance for complex models
|
|
25
|
+
- **Dark Mode** ([#2689](https://github.com/projectmesa/mesa/pull/2689)): Support for Solara Dark theme, automatically matching system preferences
|
|
26
|
+
- **Improved Error Handling** ([#2747](https://github.com/projectmesa/mesa/pull/2747), [#2753](https://github.com/projectmesa/mesa/pull/2753)): Better visualization of errors with options to view detailed traceback information
|
|
27
|
+
- **Enhanced UI**: Arrow key navigation ([#2725](https://github.com/projectmesa/mesa/pull/2725)), movable input field with auto-scroll ([#2710](https://github.com/projectmesa/mesa/pull/2710)), and other quality-of-life improvements
|
|
28
|
+
- **PropertyLayer visualisation in Altair** ([#2643](https://github.com/projectmesa/mesa/pull/2643)): Support for visualising PropertyLayers using the Altair frontend in Solara.
|
|
29
|
+
|
|
30
|
+
### Restructured and updated tutorial
|
|
31
|
+
Our [introduction tutorial](https://mesa.readthedocs.io/latest/overview.html) has been completely restructured ([#2731](https://github.com/projectmesa/mesa/pull/2731)). Instead of one huge notebook, the tutorial is now divided into smaller, focused modules that build progressively:
|
|
32
|
+
|
|
33
|
+
- **Creating Your First Model**: Essential basics to get started
|
|
34
|
+
- **Adding Space**: Learn how to use the new discrete space system
|
|
35
|
+
- **Collecting Data**: Effectively gather model statistics
|
|
36
|
+
- **AgentSet**: Master agent management techniques
|
|
37
|
+
- **Visualization**: Series of modules covering basic to advanced visualization
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
### Introducing Meta-Agents
|
|
41
|
+
Complex systems often have multiple levels of components. An organization is not one entity, but is made of departments, sub-departments, and people. A person is not a single entity, but it is made of micro biomes, organs and cells. A city is not a single entity, but it is made of districts, neighborhoods, buildings, and people. A forest comprises an ecosystem of trees, plants, animals, and microorganisms.
|
|
42
|
+
|
|
43
|
+
This reality is the motivation for meta-agents. It allows users to represent these multiple levels, where each level can have meta-agents with constituting agents.
|
|
44
|
+
- **Meta agents** [#2748](https://github.com/projectmesa/mesa/pull/2748)
|
|
45
|
+
|
|
46
|
+
To demonstrate meta-agents capability there are two examples:
|
|
47
|
+
|
|
48
|
+
1. Dynamic meta-agent creation - [Alliance formation](https://mesa.readthedocs.io/latest/examples/advanced/alliance_formation.html), which shows emergent meta-agent formation through a game theoretic based alliance formation.
|
|
49
|
+
2. Deliberate meta-agent creation - [Warehouse model](https://github.com/projectmesa/mesa-examples/tree/main/examples/warehouse), which provides a pseudo warehouse model to demonstrate meta-agent functionality.
|
|
50
|
+
|
|
51
|
+
Let us know what you think on our [Matrix Channel](https://matrix.to/#/#project-mesa:matrix.org)
|
|
52
|
+
|
|
53
|
+
### Other improvements
|
|
54
|
+
- AgentSet's `agg` method now supports multiple aggregation functions in a single call ([#2743](https://github.com/projectmesa/mesa/pull/2743))
|
|
55
|
+
- Many documentation improvements have been made based on feedback by our JOSS reviewers
|
|
56
|
+
|
|
57
|
+
## What's Changed
|
|
58
|
+
### 🎉 New features added
|
|
59
|
+
* Stabilize experimental Cell Space as `mesa.discrete_space` by @quaquel in https://github.com/projectmesa/mesa/pull/2610
|
|
60
|
+
* Feat: Added Command Console by @Sahil-Chhoker in https://github.com/projectmesa/mesa/pull/2697
|
|
61
|
+
* Stabilize PropertyLayer by @EwoutH in https://github.com/projectmesa/mesa/pull/2440
|
|
62
|
+
### 🛠 Enhancements made
|
|
63
|
+
* Visualisation: Add dark mode by @sanika-n in https://github.com/projectmesa/mesa/pull/2689
|
|
64
|
+
* Creating threads to update visualization asynchronously by @HMNS19 in https://github.com/projectmesa/mesa/pull/2656
|
|
65
|
+
* Movable Input Field with auto-scroll by @Sahil-Chhoker in https://github.com/projectmesa/mesa/pull/2710
|
|
66
|
+
* Feat: Added arrow key navigation by @Sahil-Chhoker in https://github.com/projectmesa/mesa/pull/2725
|
|
67
|
+
* added property_layer with altair by @sanika-n in https://github.com/projectmesa/mesa/pull/2643
|
|
68
|
+
* Debug option for errors in visualisation by @colinfrisch in https://github.com/projectmesa/mesa/pull/2747
|
|
69
|
+
* Debug option for errors in visualisation front end by @colinfrisch in https://github.com/projectmesa/mesa/pull/2753
|
|
70
|
+
* Add support for dynamic discrete spaces by @quaquel in https://github.com/projectmesa/mesa/pull/2755
|
|
71
|
+
* Support multiple functions in AgentSet `agg` method by @EwoutH in https://github.com/projectmesa/mesa/pull/2743
|
|
72
|
+
### 🔍 Examples updated
|
|
73
|
+
* Move boltzmann to cell spaces by @quaquel in https://github.com/projectmesa/mesa/pull/2680
|
|
74
|
+
* Move Game of life to cell space by @quaquel in https://github.com/projectmesa/mesa/pull/2681
|
|
75
|
+
* Move Schelling to discrete space by @quaquel in https://github.com/projectmesa/mesa/pull/2684
|
|
76
|
+
* Move virus_on_a_network to discrete_space by @quaquel in https://github.com/projectmesa/mesa/pull/2688
|
|
77
|
+
* Update boid_flockers example include flight direction by @sanika-n in https://github.com/projectmesa/mesa/pull/2696
|
|
78
|
+
### 📜 Documentation improvements
|
|
79
|
+
* docs: Split off the overview page, extend with spaces/activation by @EwoutH in https://github.com/projectmesa/mesa/pull/2673
|
|
80
|
+
* docs: Add Roles section to CONTRIBUTING.md by @EwoutH in https://github.com/projectmesa/mesa/pull/2694
|
|
81
|
+
* [JOSS] Docs: Clarify difference between core and user examples by @EwoutH in https://github.com/projectmesa/mesa/pull/2706
|
|
82
|
+
* [JOSS] docs: Improve batch_run documentation for parallel processing by @EwoutH in https://github.com/projectmesa/mesa/pull/2707
|
|
83
|
+
* JOSS Tutorial Fixes by @tpike3 in https://github.com/projectmesa/mesa/pull/2708
|
|
84
|
+
* Clean-up old images, compress wolf-sheep image, remove version switch artifact by @EwoutH in https://github.com/projectmesa/mesa/pull/2717
|
|
85
|
+
* docs: Update citation to JOSS article by @EwoutH in https://github.com/projectmesa/mesa/pull/2740
|
|
86
|
+
* update intro tutorial discrete space by @tpike3 in https://github.com/projectmesa/mesa/pull/2731
|
|
87
|
+
* docs: fix broken links to Readthedocs in example descriptions by @reyan-singh in https://github.com/projectmesa/mesa/pull/2757
|
|
88
|
+
### 🧪 Experimental features
|
|
89
|
+
* Meta agents by @tpike3 in https://github.com/projectmesa/mesa/pull/2748
|
|
90
|
+
### 🐛 Bugs fixed
|
|
91
|
+
* Minor (bug) fixes to discrete_space by @quaquel in https://github.com/projectmesa/mesa/pull/2687
|
|
92
|
+
* Fixed Marker in mpl by @sanika-n in https://github.com/projectmesa/mesa/pull/2670
|
|
93
|
+
|
|
94
|
+
## New Contributors
|
|
95
|
+
* @colinfrisch made their first contribution in https://github.com/projectmesa/mesa/pull/2747
|
|
96
|
+
* @reyan-singh made their first contribution in https://github.com/projectmesa/mesa/pull/2757
|
|
97
|
+
|
|
98
|
+
**Full Changelog**: https://github.com/projectmesa/mesa/compare/v3.1.4...v3.2.0
|
|
99
|
+
|
|
4
100
|
# 3.1.5 (2025-03-26)
|
|
5
101
|
## Highlights
|
|
6
102
|
Mesa 3.1.5 is a maintenance release focused on improving documentation and cleaning up our resources. This update includes no breaking changes and is compatible with previous 3.1.x releases.
|
|
@@ -384,7 +480,7 @@ Install Mesa 3.0:
|
|
|
384
480
|
pip install --upgrade mesa
|
|
385
481
|
```
|
|
386
482
|
|
|
387
|
-
If building a new model, we recommend checking out the updated [Mesa Overview](https://mesa.readthedocs.io/latest/overview.html) and [Introductory Tutorial](https://mesa.readthedocs.io/latest/tutorials/
|
|
483
|
+
If building a new model, we recommend checking out the updated [Mesa Overview](https://mesa.readthedocs.io/latest/overview.html) and [Introductory Tutorial](https://mesa.readthedocs.io/latest/tutorials/0_first_model.html).
|
|
388
484
|
|
|
389
485
|
For updating existing models, we recommend upgrading in steps:
|
|
390
486
|
1. Update to latest Mesa 2.x
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: Mesa
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.2.0
|
|
4
4
|
Summary: Agent-based modeling (ABM) in Python
|
|
5
5
|
Project-URL: homepage, https://github.com/projectmesa/mesa
|
|
6
6
|
Project-URL: repository, https://github.com/projectmesa/mesa
|
|
7
|
-
Author-email: Project Mesa Team <projectmesa
|
|
7
|
+
Author-email: Project Mesa Team <maintainers@projectmesa.dev>
|
|
8
8
|
License: Apache 2.0
|
|
9
9
|
License-File: LICENSE
|
|
10
10
|
License-File: NOTICE
|
|
@@ -87,12 +87,13 @@ Description-Content-Type: text/markdown
|
|
|
87
87
|
|
|
88
88
|
# Mesa: Agent-based modeling in Python
|
|
89
89
|
|
|
90
|
-
|
|
|
91
|
-
|
|
92
|
-
| CI/CD
|
|
90
|
+
| | |
|
|
91
|
+
|---------| --- |
|
|
92
|
+
| CI/CD | [](https://github.com/projectmesa/mesa/actions) [](https://codecov.io/gh/projectmesa/mesa) |
|
|
93
93
|
| Package | [](https://pypi.org/project/Mesa/) [](https://pypi.org/project/Mesa/) [](https://pypi.org/project/Mesa/) |
|
|
94
|
-
| Meta
|
|
95
|
-
| Chat
|
|
94
|
+
| Meta | [](https://github.com/astral-sh/ruff) [](https://github.com/psf/black) [](https://github.com/pypa/hatch) [](https://scientific-python.org/specs/spec-0000/) |
|
|
95
|
+
| Chat | [](https://matrix.to/#/#project-mesa:matrix.org) |
|
|
96
|
+
| Cite | [](https://doi.org/10.21105/joss.07668) |
|
|
96
97
|
|
|
97
98
|
Mesa allows users to quickly create agent-based models using built-in
|
|
98
99
|
core components (such as spatial grids and agent schedulers) or
|
|
@@ -220,4 +221,7 @@ Don't forget to checkout the [Contributors guide](https://github.com/projectmesa
|
|
|
220
221
|
|
|
221
222
|
## Citing Mesa
|
|
222
223
|
|
|
223
|
-
To cite Mesa in your publication, you can
|
|
224
|
+
To cite Mesa in your publication, you can refer to our peer-reviewed article in the Journal of Open Source Software (JOSS):
|
|
225
|
+
- ter Hoeven, E., Kwakkel, J., Hess, V., Pike, T., Wang, B., rht, & Kazil, J. (2025). Mesa 3: Agent-based modeling with Python in 2025. Journal of Open Source Software, 10(107), 7668. https://doi.org/10.21105/joss.07668
|
|
226
|
+
|
|
227
|
+
Our [CITATION.cff](https://github.com/projectmesa/mesa/blob/main/CITATION.cff) can be used to generate APA, BibTeX and other citation formats.
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
# Mesa: Agent-based modeling in Python
|
|
2
2
|
|
|
3
|
-
|
|
|
4
|
-
|
|
5
|
-
| CI/CD
|
|
3
|
+
| | |
|
|
4
|
+
|---------| --- |
|
|
5
|
+
| CI/CD | [](https://github.com/projectmesa/mesa/actions) [](https://codecov.io/gh/projectmesa/mesa) |
|
|
6
6
|
| Package | [](https://pypi.org/project/Mesa/) [](https://pypi.org/project/Mesa/) [](https://pypi.org/project/Mesa/) |
|
|
7
|
-
| Meta
|
|
8
|
-
| Chat
|
|
7
|
+
| Meta | [](https://github.com/astral-sh/ruff) [](https://github.com/psf/black) [](https://github.com/pypa/hatch) [](https://scientific-python.org/specs/spec-0000/) |
|
|
8
|
+
| Chat | [](https://matrix.to/#/#project-mesa:matrix.org) |
|
|
9
|
+
| Cite | [](https://doi.org/10.21105/joss.07668) |
|
|
9
10
|
|
|
10
11
|
Mesa allows users to quickly create agent-based models using built-in
|
|
11
12
|
core components (such as spatial grids and agent schedulers) or
|
|
@@ -133,4 +134,7 @@ Don't forget to checkout the [Contributors guide](https://github.com/projectmesa
|
|
|
133
134
|
|
|
134
135
|
## Citing Mesa
|
|
135
136
|
|
|
136
|
-
To cite Mesa in your publication, you can
|
|
137
|
+
To cite Mesa in your publication, you can refer to our peer-reviewed article in the Journal of Open Source Software (JOSS):
|
|
138
|
+
- ter Hoeven, E., Kwakkel, J., Hess, V., Pike, T., Wang, B., rht, & Kazil, J. (2025). Mesa 3: Agent-based modeling with Python in 2025. Journal of Open Source Software, 10(107), 7668. https://doi.org/10.21105/joss.07668
|
|
139
|
+
|
|
140
|
+
Our [CITATION.cff](https://github.com/projectmesa/mesa/blob/main/CITATION.cff) can be used to generate APA, BibTeX and other citation formats.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
## Discrete Space
|
|
2
|
+
|
|
3
|
+
```{eval-rst}
|
|
4
|
+
.. automodule:: mesa.discrete_space.__init__
|
|
5
|
+
:members:
|
|
6
|
+
```
|
|
7
|
+
|
|
8
|
+
```{eval-rst}
|
|
9
|
+
.. automodule:: mesa.discrete_space.cell
|
|
10
|
+
:members:
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
```{eval-rst}
|
|
14
|
+
.. automodule:: mesa.discrete_space.cell_agent
|
|
15
|
+
:members:
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
```{eval-rst}
|
|
19
|
+
.. automodule:: mesa.discrete_space.cell_collection
|
|
20
|
+
:members:
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
```{eval-rst}
|
|
24
|
+
.. automodule:: mesa.discrete_space.discrete_space
|
|
25
|
+
:members:
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
```{eval-rst}
|
|
29
|
+
.. automodule:: mesa.discrete_space.grid
|
|
30
|
+
:members:
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
```{eval-rst}
|
|
34
|
+
.. automodule:: mesa.discrete_space.network
|
|
35
|
+
:members:
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
```{eval-rst}
|
|
39
|
+
.. automodule:: mesa.discrete_space.voronoi
|
|
40
|
+
:members:
|
|
41
|
+
```
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Experimental
|
|
2
|
+
This namespace contains experimental features. These are under development, and their API is not necessarily stable.
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
## Devs
|
|
6
|
+
|
|
7
|
+
```{eval-rst}
|
|
8
|
+
.. automodule:: experimental.devs.eventlist
|
|
9
|
+
:members:
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
```{eval-rst}
|
|
13
|
+
.. automodule:: experimental.devs.simulator
|
|
14
|
+
:members:
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Continuous Space
|
|
18
|
+
|
|
19
|
+
```{eval-rst}
|
|
20
|
+
.. automodule:: experimental.continuous_space.continuous_space
|
|
21
|
+
:members:
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
```{eval-rst}
|
|
25
|
+
.. automodule:: experimental.continuous_space.continuous_space_agents
|
|
26
|
+
:members:
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Continuous Space
|
|
30
|
+
|
|
31
|
+
```{eval-rst}
|
|
32
|
+
.. automodule:: experimental.continuous_space.continuous_space
|
|
33
|
+
:members:
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
```{eval-rst}
|
|
37
|
+
.. automodule:: experimental.continuous_space.continuous_space_agents
|
|
38
|
+
:members:
|
|
39
|
+
```
|
|
@@ -52,4 +52,13 @@ For a detailed tutorial, please refer to our [Visualization Tutorial](../tutoria
|
|
|
52
52
|
:members:
|
|
53
53
|
:undoc-members:
|
|
54
54
|
:show-inheritance:
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Command Console
|
|
58
|
+
|
|
59
|
+
```{eval-rst}
|
|
60
|
+
.. automodule:: mesa.visualization.command_console
|
|
61
|
+
:members:
|
|
62
|
+
:undoc-members:
|
|
63
|
+
:show-inheritance:
|
|
55
64
|
```
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
# noqa: D100
|
|
2
1
|
#!/usr/bin/env python3
|
|
3
2
|
#
|
|
4
3
|
# Mesa documentation build configuration file, created by
|
|
@@ -16,8 +15,8 @@
|
|
|
16
15
|
import os
|
|
17
16
|
import os.path as osp
|
|
18
17
|
import pathlib
|
|
19
|
-
import sys
|
|
20
18
|
import string
|
|
19
|
+
import sys
|
|
21
20
|
from datetime import date
|
|
22
21
|
|
|
23
22
|
# If extensions (or modules to document with autodoc) are in another directory,
|
|
@@ -47,7 +46,7 @@ extensions = [
|
|
|
47
46
|
"sphinx.ext.viewcode",
|
|
48
47
|
"sphinx.ext.napoleon", # for google style docstrings
|
|
49
48
|
"myst_nb", # For Markdown and Jupyter notebooks
|
|
50
|
-
"sphinx_copybutton"
|
|
49
|
+
"sphinx_copybutton", # For copying the code in the documentation
|
|
51
50
|
]
|
|
52
51
|
|
|
53
52
|
# Add any paths that contain templates here, relative to this directory.
|
|
@@ -131,11 +130,7 @@ html_theme = "pydata_sphinx_theme"
|
|
|
131
130
|
# further. For a list of options available for each theme, see the
|
|
132
131
|
# documentation.
|
|
133
132
|
html_theme_options = {
|
|
134
|
-
"navbar_start": ["navbar-logo"
|
|
135
|
-
"switcher": {
|
|
136
|
-
"json_url": "https://mesa.readthedocs.io/latest/_static/switcher.json", # URL of your switcher.json file
|
|
137
|
-
"version_match": version # Automatically matches the current version
|
|
138
|
-
}
|
|
133
|
+
"navbar_start": ["navbar-logo"],
|
|
139
134
|
}
|
|
140
135
|
|
|
141
136
|
# Add any paths that contain custom themes here, relative to this directory.
|
|
@@ -177,7 +172,7 @@ html_static_path = ["_static"]
|
|
|
177
172
|
|
|
178
173
|
# Custom sidebar templates, maps document names to template names.
|
|
179
174
|
html_sidebars = {
|
|
180
|
-
|
|
175
|
+
"migration_guide": [], # No sidebar migration
|
|
181
176
|
}
|
|
182
177
|
|
|
183
178
|
# Additional templates that should be rendered to pages, maps page names to
|
|
@@ -297,8 +292,9 @@ texinfo_documents = [
|
|
|
297
292
|
intersphinx_mapping = {"python": ("https://docs.python.org/3", None)}
|
|
298
293
|
|
|
299
294
|
|
|
300
|
-
|
|
301
|
-
|
|
295
|
+
def write_example_md_file(
|
|
296
|
+
agent_filename, model_filename, readme_filename, app_filename, md_filepath, template
|
|
297
|
+
):
|
|
302
298
|
with open(agent_filename) as content_file:
|
|
303
299
|
agent_file = content_file.read()
|
|
304
300
|
with open(model_filename) as content_file:
|
|
@@ -310,17 +306,30 @@ def write_example_md_file(agent_filename, model_filename, readme_filename, app_f
|
|
|
310
306
|
|
|
311
307
|
with open(md_filepath, "w") as fh:
|
|
312
308
|
content = template.substitute(
|
|
313
|
-
dict(
|
|
314
|
-
|
|
309
|
+
dict(
|
|
310
|
+
agent_file=agent_file,
|
|
311
|
+
model_file=model_file,
|
|
312
|
+
readme_file=readme_file,
|
|
313
|
+
app_file=app_file,
|
|
314
|
+
)
|
|
315
315
|
)
|
|
316
316
|
fh.write(content)
|
|
317
317
|
|
|
318
|
+
|
|
318
319
|
def setup_examples_pages():
|
|
319
320
|
# create md files for all examples
|
|
320
321
|
# check what examples exist
|
|
321
322
|
examples_folder = osp.abspath(osp.join(HERE, "..", "mesa", "examples"))
|
|
322
|
-
basic_examples = [
|
|
323
|
-
|
|
323
|
+
basic_examples = [
|
|
324
|
+
("basic", f.path)
|
|
325
|
+
for f in os.scandir(osp.join(examples_folder, "basic"))
|
|
326
|
+
if f.is_dir() and not f.name.startswith("__")
|
|
327
|
+
]
|
|
328
|
+
advanced_examples = [
|
|
329
|
+
("advanced", f.path)
|
|
330
|
+
for f in os.scandir(osp.join(examples_folder, "advanced"))
|
|
331
|
+
if f.is_dir() and not f.name.startswith("__")
|
|
332
|
+
]
|
|
324
333
|
examples = basic_examples + advanced_examples
|
|
325
334
|
|
|
326
335
|
with open(os.path.join(HERE, "example_template.txt")) as fh:
|
|
@@ -329,7 +338,9 @@ def setup_examples_pages():
|
|
|
329
338
|
root_folder = pathlib.Path(os.path.join(HERE, "examples"))
|
|
330
339
|
root_folder.mkdir(parents=True, exist_ok=True)
|
|
331
340
|
pathlib.Path(os.path.join(root_folder, "basic")).mkdir(parents=True, exist_ok=True)
|
|
332
|
-
pathlib.Path(os.path.join(root_folder, "advanced")).mkdir(
|
|
341
|
+
pathlib.Path(os.path.join(root_folder, "advanced")).mkdir(
|
|
342
|
+
parents=True, exist_ok=True
|
|
343
|
+
)
|
|
333
344
|
|
|
334
345
|
examples_md = []
|
|
335
346
|
for kind, example in examples:
|
|
@@ -344,7 +355,14 @@ def setup_examples_pages():
|
|
|
344
355
|
examples_md.append((base_name, f"{kind}/{base_name}"))
|
|
345
356
|
|
|
346
357
|
md_filepath = os.path.join(HERE, "examples", kind, md_filename)
|
|
347
|
-
write_example_md_file(
|
|
358
|
+
write_example_md_file(
|
|
359
|
+
agent_filename,
|
|
360
|
+
model_filename,
|
|
361
|
+
readme_filename,
|
|
362
|
+
app_filename,
|
|
363
|
+
md_filepath,
|
|
364
|
+
template,
|
|
365
|
+
)
|
|
348
366
|
|
|
349
367
|
# create overview of examples.md
|
|
350
368
|
with open(os.path.join(HERE, "examples_overview_template.txt")) as fh:
|
|
@@ -357,14 +375,21 @@ def setup_examples_pages():
|
|
|
357
375
|
content = template.substitute(
|
|
358
376
|
dict(
|
|
359
377
|
readme=readme_md,
|
|
360
|
-
example_paths="\n".join(
|
|
378
|
+
example_paths="\n".join(
|
|
379
|
+
[
|
|
380
|
+
f"{' '.join(a.split('_'))} </examples/{b}>"
|
|
381
|
+
for a, b in examples_md
|
|
382
|
+
]
|
|
383
|
+
),
|
|
361
384
|
)
|
|
362
385
|
)
|
|
363
386
|
fh.write(content)
|
|
364
387
|
|
|
388
|
+
|
|
365
389
|
def setup(app):
|
|
366
390
|
setup_examples_pages()
|
|
367
391
|
|
|
392
|
+
|
|
368
393
|
#
|
|
369
394
|
if __name__ == "__main__":
|
|
370
|
-
setup_examples_pages()
|
|
395
|
+
setup_examples_pages()
|
|
@@ -7,8 +7,15 @@ Mesa is a modular framework for building, analyzing and visualizing agent-based
|
|
|
7
7
|
If you want to get a quick start on how to build agent based models with MESA, check the overview and tutorials:
|
|
8
8
|
|
|
9
9
|
- [Overview of the MESA library](overview): Learn about the core concepts and components of Mesa.
|
|
10
|
-
- [
|
|
11
|
-
- [
|
|
10
|
+
- [Creating Your First Model](tutorials/0_first_model): Learn how to create your first Mesa model.
|
|
11
|
+
- [Adding Space](tutorials/1_adding_space): Learn how to add space to your Mesa model and understand Mesa's space architecture.
|
|
12
|
+
- [Collecting Data](tutorials/2_collecting_data): Learn how to collect model level and agent level data with Mesa' DataCollector.
|
|
13
|
+
- [AgentSet](tutorials/3_agentset): Learn how to more effectively manage agents with Mesa's AgentSet.
|
|
14
|
+
- [Basic Visualization](tutorials/4_visualization_basic): Learn how to build an interactive dashboard with Mesa's visualization module.
|
|
15
|
+
- [Dynamic Agent Visualization](tutorials/5_visualization_dynamic_agents): Learn how to dynamically represent your agents in your interactive dashboard.
|
|
16
|
+
- [Custom Visualization Components](tutorials/6_visualization_custom): Learn how to add custom visual components to your interactive dashboard.
|
|
17
|
+
- [Parameter Sweeps](tutorials/7_batch_run): Learn how to conduct parameter sweeps on multiple processors with Mesa's BatchRunner.
|
|
18
|
+
- [Comparing Scenarios](tutorials/8_comparing_scenarios): Think through how to analyze your parameter sweep results to find insight in your Mesa simulations.
|
|
12
19
|
|
|
13
20
|
## Examples
|
|
14
21
|
Mesa ships with a collection of example models. These are classic ABMs, so if you are familiar with ABMs and want to get a quick sense of how MESA works, these examples are great place to start. You can find them [here](examples).
|
|
@@ -46,8 +53,16 @@ Enjoy modelling with Mesa, and feel free to reach out!
|
|
|
46
53
|
:hidden: true
|
|
47
54
|
:maxdepth: 7
|
|
48
55
|
|
|
49
|
-
|
|
50
|
-
tutorials/
|
|
56
|
+
Overview <overview>
|
|
57
|
+
Creating Your First Model <tutorials/0_first_model>
|
|
58
|
+
Adding Space <tutorials/1_adding_space>
|
|
59
|
+
Collecting Data <tutorials/2_collecting_data>
|
|
60
|
+
AgentSet <tutorials/3_agentset>
|
|
61
|
+
Basic Visualization <tutorials/4_visualization_basic>
|
|
62
|
+
Dynamic Agent Visualization <tutorials/5_visualization_dynamic_agents>
|
|
63
|
+
Custom Visualization Components <tutorials/6_visualization_custom>
|
|
64
|
+
Parameter Sweeps <tutorials/7_batch_run>
|
|
65
|
+
Comparing Scenarios <tutorials/8_comparing_scenarios>
|
|
51
66
|
Best Practices <best-practices>
|
|
52
67
|
|
|
53
68
|
|
|
Binary file
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# Mesa: Agent-based modeling in Python
|
|
2
2
|
|
|
3
|
+
```{image} https://joss.theoj.org/papers/10.21105/joss.07668/status.svg
|
|
4
|
+
:target: https://doi.org/10.21105/joss.07668
|
|
5
|
+
```
|
|
6
|
+
|
|
3
7
|
```{image} https://github.com/projectmesa/mesa/workflows/build/badge.svg
|
|
4
8
|
:target: https://github.com/projectmesa/mesa/actions
|
|
5
9
|
```
|
|
@@ -18,7 +22,7 @@
|
|
|
18
22
|
|
|
19
23
|
[Mesa] is an Apache2 licensed agent-based modeling (or ABM) framework in Python.
|
|
20
24
|
|
|
21
|
-
Mesa allows users to quickly create agent-based models using built-in core components (such as spatial grids and agent schedulers) or customized implementations; visualize them using a browser-based interface; and analyze their results using Python's data analysis tools.
|
|
25
|
+
Mesa allows users to quickly create agent-based models using built-in core components (such as spatial grids and agent schedulers) or customized implementations; visualize them using a browser-based interface; and analyze their results using Python's data analysis tools. Mesa's goal is to make simulations accessible to everyone, so humanity can more effectively understand and solve complex problems.
|
|
22
26
|
|
|
23
27
|

|
|
24
28
|
*A visualisation of the Wolf Sheep model build with Mesa.*
|
|
@@ -67,7 +71,14 @@ Mesa is an open source project and welcomes contributions:
|
|
|
67
71
|
- [Issue Tracker] - Report bugs or suggest features
|
|
68
72
|
- [Contributors Guide] - Learn how to contribute
|
|
69
73
|
|
|
70
|
-
|
|
74
|
+
### Citing Mesa
|
|
75
|
+
|
|
76
|
+
To cite Mesa in your publication, you can refer to our peer-reviewed article in the Journal of Open Source Software (JOSS):
|
|
77
|
+
- ter Hoeven, E., Kwakkel, J., Hess, V., Pike, T., Wang, B., rht, & Kazil, J. (2025). Mesa 3: Agent-based modeling with Python in 2025. Journal of Open Source Software, 10(107), 7668. https://doi.org/10.21105/joss.07668
|
|
78
|
+
|
|
79
|
+
Our [CITATION.cff](https://github.com/projectmesa/mesa/blob/main/CITATION.cff) can be used to generate APA, BibTeX and other citation formats.
|
|
80
|
+
|
|
81
|
+
The original Mesa conference paper from 2015 is [available here](http://conference.scipy.org.s3-website-us-east-1.amazonaws.com/proceedings/scipy2015/jacqueline_kazil.html).
|
|
71
82
|
|
|
72
83
|
```{toctree}
|
|
73
84
|
:hidden: true
|
|
@@ -299,4 +299,21 @@ This will create an interactive visualization of your model, including:
|
|
|
299
299
|
- A plot of a model metric over time
|
|
300
300
|
- A slider to adjust the number of agents
|
|
301
301
|
|
|
302
|
-
|
|
302
|
+
```{toctree}
|
|
303
|
+
:hidden: true
|
|
304
|
+
:maxdepth: 7
|
|
305
|
+
|
|
306
|
+
Overview <overview>
|
|
307
|
+
Creating Your First Model <tutorials/0_first_model>
|
|
308
|
+
Adding Space <tutorials/1_adding_space>
|
|
309
|
+
Collecting Data <tutorials/2_collecting_data>
|
|
310
|
+
AgentSet <tutorials/3_agentset>
|
|
311
|
+
Basic Visualization <tutorials/4_visualization_basic>
|
|
312
|
+
Dynamic Agent Visualization <tutorials/5_visualization_dynamic_agents>
|
|
313
|
+
Custom Visualization Components <tutorials/6_visualization_custom>
|
|
314
|
+
Parameter Sweeps <tutorials/7_batch_run>
|
|
315
|
+
Comparing Scenarios <tutorials/8_comparing_scenarios>
|
|
316
|
+
Best Practices <best-practices>
|
|
317
|
+
|
|
318
|
+
|
|
319
|
+
```
|