Mesa 3.1.4__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.4 → mesa-3.2.0}/.github/workflows/build_lint.yml +1 -1
- {mesa-3.1.4 → mesa-3.2.0}/.gitignore +1 -0
- {mesa-3.1.4 → mesa-3.2.0}/.pre-commit-config.yaml +1 -1
- mesa-3.2.0/CITATION.cff +62 -0
- {mesa-3.1.4 → mesa-3.2.0}/CONTRIBUTING.md +58 -2
- {mesa-3.1.4 → mesa-3.2.0}/HISTORY.md +115 -2
- {mesa-3.1.4 → mesa-3.2.0}/PKG-INFO +12 -8
- {mesa-3.1.4 → mesa-3.2.0}/README.md +10 -6
- {mesa-3.1.4 → 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.4 → mesa-3.2.0}/docs/apis/visualization.md +9 -0
- {mesa-3.1.4 → mesa-3.2.0}/docs/conf.py +44 -19
- mesa-3.2.0/docs/getting_started.md +69 -0
- mesa-3.2.0/docs/images/Discrete_Space.drawio.png +0 -0
- mesa-3.2.0/docs/images/wolf_sheep.png +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/docs/index.md +16 -3
- mesa-3.1.4/docs/getting_started.md → mesa-3.2.0/docs/overview.md +102 -53
- 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.4 → mesa-3.2.0}/mesa/__init__.py +3 -1
- {mesa-3.1.4 → mesa-3.2.0}/mesa/agent.py +26 -9
- {mesa-3.1.4 → mesa-3.2.0}/mesa/batchrunner.py +6 -3
- {mesa-3.1.4/mesa/experimental/cell_space → mesa-3.2.0/mesa/discrete_space}/__init__.py +8 -8
- {mesa-3.1.4/mesa/experimental/cell_space → mesa-3.2.0/mesa/discrete_space}/cell.py +29 -10
- {mesa-3.1.4/mesa/experimental/cell_space → mesa-3.2.0/mesa/discrete_space}/cell_agent.py +1 -1
- {mesa-3.1.4/mesa/experimental/cell_space → mesa-3.2.0/mesa/discrete_space}/cell_collection.py +3 -3
- {mesa-3.1.4/mesa/experimental/cell_space → mesa-3.2.0/mesa/discrete_space}/discrete_space.py +65 -3
- {mesa-3.1.4/mesa/experimental/cell_space → mesa-3.2.0/mesa/discrete_space}/grid.py +2 -2
- {mesa-3.1.4/mesa/experimental/cell_space → mesa-3.2.0/mesa/discrete_space}/network.py +22 -2
- {mesa-3.1.4/mesa/experimental/cell_space → mesa-3.2.0/mesa/discrete_space}/property_layer.py +1 -10
- {mesa-3.1.4/mesa/experimental/cell_space → mesa-3.2.0/mesa/discrete_space}/voronoi.py +2 -2
- {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/README.md +10 -5
- {mesa-3.1.4 → 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.4 → mesa-3.2.0}/mesa/examples/advanced/epstein_civil_violence/agents.py +1 -1
- {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/advanced/epstein_civil_violence/model.py +1 -1
- {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/advanced/pd_grid/Readme.md +4 -6
- {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/advanced/pd_grid/agents.py +1 -1
- {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/advanced/pd_grid/model.py +1 -1
- {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/advanced/sugarscape_g1mt/Readme.md +4 -5
- {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/advanced/sugarscape_g1mt/agents.py +1 -1
- {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/advanced/sugarscape_g1mt/model.py +2 -2
- {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/advanced/wolf_sheep/Readme.md +2 -17
- {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/advanced/wolf_sheep/agents.py +1 -1
- {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/advanced/wolf_sheep/app.py +2 -1
- {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/advanced/wolf_sheep/model.py +1 -1
- {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/basic/boid_flockers/Readme.md +6 -1
- {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/basic/boid_flockers/agents.py +1 -0
- {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/basic/boid_flockers/app.py +17 -2
- {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/basic/boid_flockers/model.py +12 -0
- {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/basic/boltzmann_wealth_model/Readme.md +2 -12
- {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/basic/boltzmann_wealth_model/agents.py +6 -11
- {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/basic/boltzmann_wealth_model/app.py +2 -2
- {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/basic/boltzmann_wealth_model/model.py +7 -11
- {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/basic/conways_game_of_life/Readme.md +1 -9
- {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/basic/conways_game_of_life/agents.py +13 -5
- {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/basic/conways_game_of_life/model.py +10 -7
- {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/basic/schelling/Readme.md +0 -8
- {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/basic/schelling/agents.py +13 -8
- {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/basic/schelling/model.py +6 -9
- {mesa-3.1.4 → 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.4 → mesa-3.2.0}/mesa/examples/basic/virus_on_network/agents.py +13 -17
- {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/basic/virus_on_network/model.py +20 -24
- {mesa-3.1.4 → 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.4 → mesa-3.2.0}/mesa/model.py +3 -3
- {mesa-3.1.4 → mesa-3.2.0}/mesa/space.py +1 -12
- {mesa-3.1.4 → 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.4 → mesa-3.2.0}/mesa/visualization/mpl_space_drawing.py +17 -9
- {mesa-3.1.4 → mesa-3.2.0}/mesa/visualization/solara_viz.py +150 -21
- {mesa-3.1.4 → mesa-3.2.0}/pyproject.toml +6 -7
- {mesa-3.1.4 → mesa-3.2.0}/tests/test_agent.py +12 -0
- mesa-3.1.4/tests/test_cell_space.py → mesa-3.2.0/tests/test_discrete_space.py +54 -1
- {mesa-3.1.4 → mesa-3.2.0}/tests/test_examples.py +14 -0
- mesa-3.2.0/tests/test_meta_agents.py +307 -0
- {mesa-3.1.4 → mesa-3.2.0}/tests/test_solara_viz.py +35 -10
- mesa-3.1.4/CITATION.bib +0 -19
- mesa-3.1.4/docs/_static/switcher.json +0 -12
- mesa-3.1.4/docs/apis/experimental.md +0 -68
- mesa-3.1.4/docs/images/tutorial/br_ginis.png +0 -0
- mesa-3.1.4/docs/images/tutorial/dc_endwealth.png +0 -0
- mesa-3.1.4/docs/images/tutorial/dc_gini.png +0 -0
- mesa-3.1.4/docs/images/tutorial/dc_oneagent.png +0 -0
- mesa-3.1.4/docs/images/tutorial/first_hist.png +0 -0
- mesa-3.1.4/docs/images/tutorial/multirun_hist.png +0 -0
- mesa-3.1.4/docs/images/tutorial/numpy_grid.png +0 -0
- mesa-3.1.4/docs/images/tutorial/viz_chart.png +0 -0
- mesa-3.1.4/docs/images/tutorial/viz_empty.png +0 -0
- mesa-3.1.4/docs/images/tutorial/viz_greycircles.png +0 -0
- mesa-3.1.4/docs/images/tutorial/viz_histogram.png +0 -0
- mesa-3.1.4/docs/images/tutorial/viz_redcircles.png +0 -0
- mesa-3.1.4/docs/images/wolf_sheep.png +0 -0
- mesa-3.1.4/docs/tutorials/MoneyModel.py +0 -81
- mesa-3.1.4/docs/tutorials/files/viz_chart.png +0 -0
- mesa-3.1.4/docs/tutorials/files/viz_empty.png +0 -0
- mesa-3.1.4/docs/tutorials/files/viz_greycircles.png +0 -0
- mesa-3.1.4/docs/tutorials/files/viz_histogram.png +0 -0
- mesa-3.1.4/docs/tutorials/files/viz_redcircles.png +0 -0
- mesa-3.1.4/docs/tutorials/files/viz_slider.png +0 -0
- mesa-3.1.4/docs/tutorials/intro_tutorial.ipynb +0 -1903
- mesa-3.1.4/docs/tutorials/visualization_tutorial.ipynb +0 -437
- mesa-3.1.4/mesa/visualization/components/altair_components.py +0 -190
- {mesa-3.1.4 → mesa-3.2.0}/.codespellignore +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/.coveragerc +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/.github/ISSUE_TEMPLATE/bug-report.md +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/.github/ISSUE_TEMPLATE/feature-request.md +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/.github/PULL_REQUEST_TEMPLATE/bug.md +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/.github/PULL_REQUEST_TEMPLATE/feature.md +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/.github/dependabot.yml +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/.github/pull_request_template.md +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/.github/release.yml +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/.github/workflows/benchmarks.yml +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/.github/workflows/release.yml +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/.readthedocs.yml +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/CODE_OF_CONDUCT.md +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/Dockerfile +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/LICENSE +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/NOTICE +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/benchmarks/compare_timings.py +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/benchmarks/configurations.py +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/benchmarks/global_benchmark.py +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/binder/environment.yml +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/codecov.yaml +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/docker-compose.yml +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/docs/Makefile +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/docs/README.md +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/docs/apis/agent.md +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/docs/apis/batchrunner.md +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/docs/apis/datacollection.md +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/docs/apis/mesa_logging.md +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/docs/apis/model.md +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/docs/apis/space.md +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/docs/best-practices.md +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/docs/example_template.txt +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/docs/examples_overview_template.txt +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/docs/images/mesa_logo.ico +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/docs/images/mesa_logo.png +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/docs/make.bat +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/docs/mesa.md +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/docs/mesa_extension.md +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/docs/migration_guide.md +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/maintenance/fetch_unlabeled_prs.py +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/mesa/datacollection.py +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/advanced/__init__.py +0 -0
- /mesa-3.1.4/mesa/examples/advanced/epstein_civil_violence/__init__.py → /mesa-3.2.0/mesa/examples/advanced/alliance_formation/__init__ .py +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/advanced/epstein_civil_violence/Epstein Civil Violence.ipynb +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/advanced/epstein_civil_violence/Readme.md +0 -0
- {mesa-3.1.4/mesa/examples/advanced/pd_grid → mesa-3.2.0/mesa/examples/advanced/epstein_civil_violence}/__init__.py +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/advanced/epstein_civil_violence/app.py +0 -0
- {mesa-3.1.4/mesa/examples/advanced/sugarscape_g1mt → mesa-3.2.0/mesa/examples/advanced/pd_grid}/__init__.py +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/advanced/pd_grid/analysis.ipynb +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/advanced/pd_grid/app.py +0 -0
- {mesa-3.1.4/mesa/examples/advanced/wolf_sheep → mesa-3.2.0/mesa/examples/advanced/sugarscape_g1mt}/__init__.py +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/advanced/sugarscape_g1mt/app.py +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/advanced/sugarscape_g1mt/sugar-map.txt +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/advanced/sugarscape_g1mt/tests.py +0 -0
- {mesa-3.1.4/mesa/examples/basic → mesa-3.2.0/mesa/examples/advanced/wolf_sheep}/__init__.py +0 -0
- {mesa-3.1.4/mesa/examples/basic/boid_flockers → mesa-3.2.0/mesa/examples/basic}/__init__.py +0 -0
- {mesa-3.1.4/mesa/examples/basic/boltzmann_wealth_model → mesa-3.2.0/mesa/examples/basic/boid_flockers}/__init__.py +0 -0
- {mesa-3.1.4/mesa/examples/basic/conways_game_of_life → mesa-3.2.0/mesa/examples/basic/boltzmann_wealth_model}/__init__.py +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/basic/boltzmann_wealth_model/st_app.py +0 -0
- {mesa-3.1.4/mesa/examples/basic/schelling → mesa-3.2.0/mesa/examples/basic/conways_game_of_life}/__init__.py +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/basic/conways_game_of_life/app.py +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/basic/conways_game_of_life/st_app.py +0 -0
- {mesa-3.1.4/mesa/examples/basic/virus_on_network → mesa-3.2.0/mesa/examples/basic/schelling}/__init__.py +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/basic/schelling/analysis.ipynb +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/basic/schelling/app.py +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/basic/virus_on_network/app.py +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/mesa/experimental/continuous_space/__init__.py +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/mesa/experimental/continuous_space/continuous_space.py +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/mesa/experimental/continuous_space/continuous_space_agents.py +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/mesa/experimental/devs/__init__.py +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/mesa/experimental/devs/eventlist.py +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/mesa/experimental/devs/simulator.py +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/mesa/experimental/mesa_signals/__init__.py +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/mesa/experimental/mesa_signals/mesa_signal.py +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/mesa/experimental/mesa_signals/observable_collections.py +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/mesa/experimental/mesa_signals/signals_util.py +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/mesa/mesa_logging.py +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/mesa/visualization/components/__init__.py +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/mesa/visualization/components/matplotlib_components.py +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/mesa/visualization/user_param.py +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/mesa/visualization/utils.py +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/mypy.ini +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/tests/__init__.py +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/tests/read_requirements.py +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/tests/test_batch_run.py +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/tests/test_components_matplotlib.py +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/tests/test_continuous_space.py +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/tests/test_datacollector.py +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/tests/test_devs.py +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/tests/test_end_to_end_viz.sh +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/tests/test_grid.py +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/tests/test_import_namespace.py +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/tests/test_lifespan.py +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/tests/test_mesa_logging.py +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/tests/test_mesa_signals.py +0 -0
- {mesa-3.1.4 → mesa-3.2.0}/tests/test_model.py +0 -0
- {mesa-3.1.4 → 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)
|
|
@@ -119,7 +119,63 @@ ruff .
|
|
|
119
119
|
|
|
120
120
|
The license of this project is located in [LICENSE]. By submitting a contribution to this project, you are agreeing that your contribution will be released under the terms of this license.
|
|
121
121
|
|
|
122
|
-
##
|
|
122
|
+
## Roles in Mesa
|
|
123
|
+
Mesa has several roles to help structure our collaboration and recognize great work. They also form a progression path for community members to that want to take on increasing responsibility in the project. Since we're all volunteers, everyone contributes what they can when they can - there are no minimum time commitments. Also, the best ideas and contributions can come from anyone, these roles are just a way to coordinate our efforts.
|
|
124
|
+
|
|
125
|
+
Feel free to reach out to us anytime to discuss your interests and ambitions in the project. We're always happy to chat about how you can grow your involvement in Mesa!
|
|
126
|
+
|
|
127
|
+
### Contributor
|
|
128
|
+
Contributors help improve Mesa through:
|
|
129
|
+
- Code contributions
|
|
130
|
+
- Documentation improvements
|
|
131
|
+
- Bug reports and fixes
|
|
132
|
+
- Example models
|
|
133
|
+
- Tutorial improvements
|
|
134
|
+
- Answering questions
|
|
135
|
+
- Participating in discussions
|
|
136
|
+
- Testing pre-releases
|
|
137
|
+
- Sharing Mesa with others
|
|
138
|
+
|
|
139
|
+
Everyone can contribute what they can, when they can. No contribution is too small! Contributors who have a PR successfully merged receive the "Contributor" label on GitHub.
|
|
140
|
+
|
|
141
|
+
### Collaborator
|
|
142
|
+
When contributors consistently demonstrate technical skills and community mindset through their contributions, they may be invited to become collaborators. Collaborators help coordinate by:
|
|
143
|
+
|
|
144
|
+
- Reviewing pull requests
|
|
145
|
+
- Triaging issues and discussions
|
|
146
|
+
- Coordinating between contributors
|
|
147
|
+
- Leading specific areas of development
|
|
148
|
+
- Helping new contributors
|
|
149
|
+
- Participating in project planning
|
|
150
|
+
- Building community
|
|
151
|
+
|
|
152
|
+
The collaborator role recognizes people who help Mesa grow through both their technical contributions and community involvement. Collaborators receive GitHub triage permissions and the "Collaborator" label.
|
|
153
|
+
|
|
154
|
+
### Maintainer
|
|
155
|
+
Maintainers help guide Mesa's overall development while ensuring the project remains sustainable and welcoming. They focus on:
|
|
156
|
+
- Project vision and roadmap
|
|
157
|
+
- Major architectural decisions
|
|
158
|
+
- Release management
|
|
159
|
+
- Community governance
|
|
160
|
+
- Mentoring collaborators
|
|
161
|
+
- Setting community standards
|
|
162
|
+
- Long-term sustainability
|
|
163
|
+
|
|
164
|
+
Maintainers are selected based on their technical expertise, project understanding, and community leadership. Maintainers receive full repository permissions and the "Member" label.
|
|
165
|
+
|
|
166
|
+
### Special Roles
|
|
167
|
+
In some cases, special roles may be created for specific purposes, such as leading particular initiatives or components within Mesa. These roles are created as needed based on project requirements and may come with specific permissions and labels.
|
|
168
|
+
|
|
169
|
+
All roles are expected to:
|
|
170
|
+
- Follow Mesa's code of conduct
|
|
171
|
+
- Communicate respectfully
|
|
172
|
+
- Work collaboratively
|
|
173
|
+
- Help maintain a welcoming community
|
|
174
|
+
- Make decisions transparently
|
|
175
|
+
|
|
176
|
+
Mesa grows through good ideas and contributions. We're all volunteers working together to make Mesa better. Don't hesitate to reach out to any maintainer to discuss your interests and potential growth within the project!
|
|
177
|
+
|
|
178
|
+
## Maintainers' notes
|
|
123
179
|
Some notes useful for Mesa maintainers.
|
|
124
180
|
|
|
125
181
|
### Releases
|
|
@@ -1,11 +1,124 @@
|
|
|
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
|
+
|
|
100
|
+
# 3.1.5 (2025-03-26)
|
|
101
|
+
## Highlights
|
|
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.
|
|
103
|
+
|
|
104
|
+
The documentation improvements include enhanced explanations for batch run parallel processing, a significantly expanded overview section covering spaces, property layers and time advancement methods with practical code examples, and a clearer installation guide detailing what the optional `[rec]` dependencies provide. We've also improved our examples documentation to better distinguish between core and user-contributed examples, and added a new "Roles" section to the contributing guide that outlines the project's community structure and progression paths.
|
|
105
|
+
|
|
106
|
+
On the maintenance side, we've cleaned up unused images and compressed existing ones, reducing the repository size by over 2MB and distribution size from 3.2MB to 1.2MB.
|
|
107
|
+
|
|
108
|
+
## What's Changed
|
|
109
|
+
### 📜 Documentation improvements
|
|
110
|
+
* docs: Split off the overview page, extend with spaces/activation by @EwoutH in https://github.com/projectmesa/mesa/pull/2673
|
|
111
|
+
* docs: Add Roles section to CONTRIBUTING.md by @EwoutH in https://github.com/projectmesa/mesa/pull/2694
|
|
112
|
+
* [JOSS] Docs: Clarify difference between core and user examples by @EwoutH in https://github.com/projectmesa/mesa/pull/2706
|
|
113
|
+
* [JOSS] docs: Improve batch_run documentation for parallel processing by @EwoutH in https://github.com/projectmesa/mesa/pull/2707
|
|
114
|
+
* Clean-up old images, compress wolf-sheep image, remove version switch artifact by @EwoutH in https://github.com/projectmesa/mesa/pull/2717
|
|
115
|
+
|
|
116
|
+
**Full Changelog**: https://github.com/projectmesa/mesa/compare/v3.1.4...v3.1.5
|
|
117
|
+
|
|
4
118
|
# 3.1.4 (2025-02-09)
|
|
5
119
|
## Highlights
|
|
6
120
|
This release contains various improvements and bugfixes to the matplotlib-based visualization of spaces. Hexgrids are now fully supported, including property layers. In making this possible, various minor bugs were encountered and also fixed. In addition to the visualization improvements, there are various minor convenience improvements to the docs.
|
|
7
121
|
|
|
8
|
-
|
|
9
122
|
## What's Changed
|
|
10
123
|
### 🛠 Enhancements made
|
|
11
124
|
* Fixed hex-space draw function to avoid overlaps by @Sahil-Chhoker in https://github.com/projectmesa/mesa/pull/2609
|
|
@@ -367,7 +480,7 @@ Install Mesa 3.0:
|
|
|
367
480
|
pip install --upgrade mesa
|
|
368
481
|
```
|
|
369
482
|
|
|
370
|
-
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).
|
|
371
484
|
|
|
372
485
|
For updating existing models, we recommend upgrading in steps:
|
|
373
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()
|