From 3f0ea7eed3f8f471d60405b7ece2c9ea58f0d1b8 Mon Sep 17 00:00:00 2001 From: Vanya Kapoor Date: Thu, 19 Mar 2026 01:14:38 +0530 Subject: [PATCH 1/8] Fix: Replace removed AgentSet.to_list() with list(self.agents) for Mesa 3.x --- examples/deffuant_weisbuch/deffuant_weisbuch/model.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/examples/deffuant_weisbuch/deffuant_weisbuch/model.py b/examples/deffuant_weisbuch/deffuant_weisbuch/model.py index c22e64164..6e2be065b 100644 --- a/examples/deffuant_weisbuch/deffuant_weisbuch/model.py +++ b/examples/deffuant_weisbuch/deffuant_weisbuch/model.py @@ -58,7 +58,8 @@ def step(self): less than the confidence threshold, both agents update opinion values symmetrically. """ - agent_list = self.agents.to_list() + agent_list = list(self.agents) + # this is fix by vanya for _ in range(self.n): agent_a, agent_b = self.random.sample(agent_list, 2) self.attempted_interactions += 1 From efb51027daaeb37815fa523f5ce60666d370dd65 Mon Sep 17 00:00:00 2001 From: Vanya Kapoor Date: Fri, 20 Mar 2026 22:01:07 +0530 Subject: [PATCH 2/8] examples: Fix forest_fire notebook for Mesa 4 compatibility --- examples/forest_fire/Forest Fire Model.ipynb | 330 +++++-------------- 1 file changed, 80 insertions(+), 250 deletions(-) diff --git a/examples/forest_fire/Forest Fire Model.ipynb b/examples/forest_fire/Forest Fire Model.ipynb index b42955113..859ff5e5b 100644 --- a/examples/forest_fire/Forest Fire Model.ipynb +++ b/examples/forest_fire/Forest Fire Model.ipynb @@ -23,35 +23,22 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 8, "metadata": { "ExecuteTime": { "end_time": "2024-10-12T18:20:45.476090Z", "start_time": "2024-10-12T18:20:45.461936Z" } }, - "outputs": [ - { - "ename": "ImportError", - "evalue": "cannot import name 'BatchRunner' from 'mesa.batchrunner' (/Users/jhkwakkel/Documents/GitHub/mesa/mesa/batchrunner.py)", - "output_type": "error", - "traceback": [ - "\u001B[0;31m---------------------------------------------------------------------------\u001B[0m", - "\u001B[0;31mImportError\u001B[0m Traceback (most recent call last)", - "Cell \u001B[0;32mIn[2], line 7\u001B[0m\n\u001B[1;32m 4\u001B[0m get_ipython()\u001B[38;5;241m.\u001B[39mrun_line_magic(\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mmatplotlib\u001B[39m\u001B[38;5;124m'\u001B[39m, \u001B[38;5;124m'\u001B[39m\u001B[38;5;124minline\u001B[39m\u001B[38;5;124m'\u001B[39m)\n\u001B[1;32m 6\u001B[0m \u001B[38;5;28;01mfrom\u001B[39;00m \u001B[38;5;21;01mmesa\u001B[39;00m \u001B[38;5;28;01mimport\u001B[39;00m Model\n\u001B[0;32m----> 7\u001B[0m \u001B[38;5;28;01mfrom\u001B[39;00m \u001B[38;5;21;01mmesa\u001B[39;00m\u001B[38;5;21;01m.\u001B[39;00m\u001B[38;5;21;01mbatchrunner\u001B[39;00m \u001B[38;5;28;01mimport\u001B[39;00m BatchRunner\n\u001B[1;32m 8\u001B[0m \u001B[38;5;28;01mfrom\u001B[39;00m \u001B[38;5;21;01mmesa\u001B[39;00m\u001B[38;5;21;01m.\u001B[39;00m\u001B[38;5;21;01mdatacollection\u001B[39;00m \u001B[38;5;28;01mimport\u001B[39;00m DataCollector\n", - "\u001B[0;31mImportError\u001B[0m: cannot import name 'BatchRunner' from 'mesa.batchrunner' (/Users/jhkwakkel/Documents/GitHub/mesa/mesa/batchrunner.py)" - ] - } - ], + "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", "\n", "%matplotlib inline\n", "\n", - "from mesa import Model\n", - "from mesa.batchrunner import BatchRunner\n", - "from mesa.datacollection import DataCollector" + "import mesa\n", + "import pandas as pd" ] }, { @@ -69,7 +56,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 9, "metadata": { "ExecuteTime": { "end_time": "2024-10-12T18:22:50.333734Z", @@ -125,13 +112,13 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "from mesa.discrete_space import OrthogonalMooreGrid\n", "\n", - "\n", + "from mesa import Model\n", "class ForestFire(Model):\n", " \"\"\"Simple Forest Fire model.\"\"\"\n", "\n", @@ -194,9 +181,30 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 11, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\VANYA\\anaconda3\\Lib\\site-packages\\mesa\\discrete_space\\grid.py:104: UserWarning: Random number generator not specified, this can make models non-reproducible. Please pass a random number generator explicitly\n", + " super().__init__(capacity=capacity, random=random, cell_klass=cell_klass)\n" + ] + }, + { + "ename": "NameError", + "evalue": "name 'DataCollector' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[31m---------------------------------------------------------------------------\u001b[39m", + "\u001b[31mNameError\u001b[39m Traceback (most recent call last)", + "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[11]\u001b[39m\u001b[32m, line 1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m1\u001b[39m fire = \u001b[43mForestFire\u001b[49m\u001b[43m(\u001b[49m\u001b[32;43m100\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[32;43m100\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[32;43m0.6\u001b[39;49m\u001b[43m)\u001b[49m\n", + "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[10]\u001b[39m\u001b[32m, line 19\u001b[39m, in \u001b[36mForestFire.__init__\u001b[39m\u001b[34m(self, width, height, density, rng)\u001b[39m\n\u001b[32m 16\u001b[39m \u001b[38;5;66;03m# Set up model objects\u001b[39;00m\n\u001b[32m 18\u001b[39m \u001b[38;5;28mself\u001b[39m.grid = OrthogonalMooreGrid((width, height), capacity=\u001b[32m1\u001b[39m)\n\u001b[32m---> \u001b[39m\u001b[32m19\u001b[39m \u001b[38;5;28mself\u001b[39m.datacollector = \u001b[43mDataCollector\u001b[49m(\n\u001b[32m 20\u001b[39m {\n\u001b[32m 21\u001b[39m \u001b[33m\"\u001b[39m\u001b[33mFine\u001b[39m\u001b[33m\"\u001b[39m: \u001b[38;5;28;01mlambda\u001b[39;00m m: \u001b[38;5;28mself\u001b[39m.count_type(m, \u001b[33m\"\u001b[39m\u001b[33mFine\u001b[39m\u001b[33m\"\u001b[39m),\n\u001b[32m 22\u001b[39m \u001b[33m\"\u001b[39m\u001b[33mOn Fire\u001b[39m\u001b[33m\"\u001b[39m: \u001b[38;5;28;01mlambda\u001b[39;00m m: \u001b[38;5;28mself\u001b[39m.count_type(m, \u001b[33m\"\u001b[39m\u001b[33mOn Fire\u001b[39m\u001b[33m\"\u001b[39m),\n\u001b[32m 23\u001b[39m \u001b[33m\"\u001b[39m\u001b[33mBurned Out\u001b[39m\u001b[33m\"\u001b[39m: \u001b[38;5;28;01mlambda\u001b[39;00m m: \u001b[38;5;28mself\u001b[39m.count_type(m, \u001b[33m\"\u001b[39m\u001b[33mBurned Out\u001b[39m\u001b[33m\"\u001b[39m),\n\u001b[32m 24\u001b[39m }\n\u001b[32m 25\u001b[39m )\n\u001b[32m 27\u001b[39m \u001b[38;5;66;03m# Place a tree in each cell with Prob = density\u001b[39;00m\n\u001b[32m 28\u001b[39m \u001b[38;5;28;01mfor\u001b[39;00m cell \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m.grid.all_cells:\n", + "\u001b[31mNameError\u001b[39m: name 'DataCollector' is not defined" + ] + } + ], "source": [ "fire = ForestFire(100, 100, 0.6)" ] @@ -210,13 +218,20 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ - "fire.run_model()" + "fire.run_until(lambda m: not m.running)" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, { "cell_type": "markdown", "metadata": {}, @@ -230,11 +245,11 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ - "results = fire.dc.get_model_vars_dataframe()" + "results = fire.datacollector.get_model_vars_dataframe()" ] }, { @@ -246,30 +261,9 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "results.plot()" ] @@ -285,34 +279,13 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "fire = ForestFire(100, 100, 0.8)\n", - "fire.run_model()\n", - "results = fire.dc.get_model_vars_dataframe()\n", + "fire.run_until(lambda m: not m.running)\n", + "results = fire.datacollector.get_model_vars_dataframe()\n", "results.plot()" ] }, @@ -331,18 +304,17 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ - "fixed_params = {\"height\": 50, \"width\": 50} # Height and width are constant\n", - "# Vary density from 0.01 to 1, in 0.01 increments:\n", + "fixed_params = {\"height\": 50, \"width\": 50}\n", "variable_params = {\"density\": np.linspace(0, 1, 101)[1:]}" ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -354,16 +326,19 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Create the batch runner\n", - "param_run = BatchRunner(\n", + "results = mesa.batch_run(\n", " ForestFire,\n", - " variable_parameters=variable_params,\n", - " fixed_parameters=fixed_params,\n", - " model_reporters=model_reporter,\n", + " parameters={**fixed_params, **variable_params},\n", + " iterations=1,\n", + " number_processes=1,\n", + " data_collection_period=-1,\n", + " display_progress=True,\n", + " reporters=model_reporter,\n", ")" ] }, @@ -376,20 +351,10 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100it [00:04, 11.23it/s]\n" - ] - } - ], - "source": [ - "param_run.run_all()" - ] + "outputs": [], + "source": [] }, { "cell_type": "markdown", @@ -400,105 +365,18 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ - "df = param_run.get_model_vars_dataframe()" + "df = pd.DataFrame(results)" ] }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
densityRunBurnedOutheightwidth
00.0100.0250005050
720.7300.9899835050
710.7200.9928965050
700.7100.9810695050
690.7000.9800575050
\n", - "
" - ], - "text/plain": [ - " density Run BurnedOut height width\n", - "0 0.01 0 0.025000 50 50\n", - "72 0.73 0 0.989983 50 50\n", - "71 0.72 0 0.992896 50 50\n", - "70 0.71 0 0.981069 50 50\n", - "69 0.70 0 0.980057 50 50" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "df.head()" ] @@ -512,30 +390,9 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(0, 1)" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "plt.scatter(df.density, df.BurnedOut)\n", "plt.xlim(0, 1)" @@ -554,48 +411,21 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "500it [00:22, 11.33it/s] \n" - ] - }, - { - "data": { - "text/plain": [ - "(0, 1)" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXwAAAD8CAYAAAB0IB+mAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAHxdJREFUeJzt3X+M1Pd95/Hne4fBzNqO1y6ktQcINCGkTlybeGV8QrpznKS4bgoodmMTWZf0fEXqnXvyDyER1Yp9bnohQbk4Va2mNLXSxK2Nf1TbvZoePR1UqazAsRwQAjU9ajuw6+qMXZZLshM87L7vj5lZZr/7/c5858d3fr4eEvLOzHdmPv5q9z2feX/fn/fH3B0REel9A+0egIiItIYCvohIn1DAFxHpEwr4IiJ9QgFfRKRPKOCLiPQJBXwRkT6hgC8i0icU8EVE+sSCdr3x4sWLfcWKFe16exGRrnTo0KG33X1JPc9tW8BfsWIFY2Nj7Xp7EZGuZGY/qve5SumIiPQJBXwRkT6hgC8i0icU8EVE+oQCvohIn1DAFxHpEwr4IiJ9omrAN7OnzewtM/thxONmZn9gZqfM7Adm9tHmD1NERBoVZ+HVt4E/BL4T8fivAquK/9YCf1T8r4jIrJHDE+zYc5I3J3NclUljBpNTeRalB7hwcYYZh5QZi69I839//G7oa1y2YIB3L85w3VCGH+fe5f9dmK76vgb00s7dC3/hAzfX+9yqAd/dv2dmKyocshH4jhd2Q99vZkNmdq27/3O9gxKRzhUVuK8byjC4cID/89ZPq77GZC4/+3MuPzP787R7ZLAHuHCxcOzEZC72eHsp2DeqGa0VssCZstvjxfsU8EV6xKMjx3j2wBmmfW74LA/ctQRhaY9mBHwLuS/0Q9XMtgBbAJYvX96EtxaRZimfuQ8NpnGH87lCyqV8Fi7dqxkBfxxYVnZ7KfBm2IHuvhPYCTA8PKxvWiItVh7UrxvKsHX9ajatyTJyeIKHdx2hFNbPTYWnXKS7NSPgjwIPmNlzFC7Wnlf+XqTzjBye4At/eYxcvnChc2IyxyMvHOWhXUeU5+4TVQO+mT0L3AYsNrNx4DEgDeDu3wR2A3cCp4Ap4DeTGqyI1G/HnpOzwb5kekahvp/EqdLZXOVxB/5j00YkIg0LS910y0XVn79yIW//JM+0e8WSylXvvZz/8fBt8+6PSlv1CvvKpw7V/Vz39nzCDw8PuzZAEWm+YOqmE2QDgbfXg3KSzOyQuw/X89y27XglIs1THkAHzOaVT7aCAWZQniVKp4wdd984L5hvWpNVgG8DBXyRLhec0bcy2KfM2Lx2GV/adMPsWDRz71wK+CJdLuxibBJSZsy4Vwzkmrl3NgV8kS73Zosuxs648/r2X2vJe0ky1B5ZpMtdN5TpqfeR5Cjgi3SpkcMTrNu+t+5yy6FMOvaxmXSKretX1/U+0jkU8EW6UOlCbb3BfjA9wOMbPkx6IKwVVkHpkexQhi9/+gbl5nuAcvgiXajRC7VT+Rl27DnJPbcsY9+rZ0NbHavCpvco4It0oXpn9uUrVycmc7x0aEKz9z6ilI5IF0pZdCqm0nOCFfq5/DQ79pxszqCk4yngi3ShWhdXZdKpyOe0qqxT2k8BX6QLZSuUSKbMWPf+a8gOZTAuXXSNeo7KLfuHcvgiXaTUumBiMjevk2Qmnaqajw82VVO5ZX9RwBfpEsGeOc6li7DBbpRhSo+p103/UsAX6RJhpZi1tklTr5v+phy+SJeodHF1YjLHF/7yGCOHJ1o4Iuk2muGLdLBHR47x7IEzsapySiWWmsFLFAV8kQ716Mgxntl/uqbnqMRSKlHAF+lQzx44U/NzSiWW2ohEwijgi3SoehZXbV2/el41Tym/Dyjo9zldtBXpUBUaWc4K62gZVs2jFgoCmuGLdKzLFgyQy89EPh7cT7YkKo+v/L5ohi/SYUobm1QK9lBI+bx0aGJeKWZUqwS1UBAFfJEOMnJ4gq0vHo3d/jgsVbN1/Woy6dSc+9RCQUApHZGO8p//23Hy07VdrA2matRCQaIo4It0kHNT+cjHUmahlTthqRq1UJAwSumIdImvfeZGpWqkIZrhi3SQwfQAUyEXawfTA0rVSMMU8EU6yMIFqdCAP5WfYd32vWxdv5pXtt3ehpFJL4gV8M3sDuAbQAr4lrtvDzy+HPgzYKh4zDZ3393ksYr0vPO56Bx+cMVsefuEqzJpzGByKq+Zv0Qyr7J828xSwD8CnwTGgYPAZnc/UXbMTuCwu/+RmV0P7Hb3FZVed3h42MfGxhocvkhvWbd9b9WSzKiLt+Xi7H4l3cnMDrn7cD3PjXPR9hbglLu/5u7vAs8BGwPHOPCe4s9XAW/WMxiRfhdWQx9US6tkkXJxUjpZoLxt3ziwNnDM48DfmtnvAJcDnwh7ITPbAmwBWL58ea1jFel55Rdm4y6+iqJWChIUZ4Yf1sIpOMXYDHzb3ZcCdwLfNbN5r+3uO9192N2HlyxZUvtoRfrApjVZXtl2O0/ec1PV2X4laqUgQXFm+OPAsrLbS5mfsrkfuAPA3b9vZouAxcBbzRikSK+J068+WIY5ECN3X6L6fAkTJ+AfBFaZ2UpgArgX+GzgmNPAx4Fvm9kvAYuAs80cqEivqKVfffmK2eDzomRVpSMRqgZ8d79oZg8AeyiUXD7t7sfN7AlgzN1HgUeAPzGzhyikez7v1cp/RPpUpX71lYJ0cMY/NJjGvVDKqVJMiSNWHX6xpn534L4vlv18AljX3KGJ9Kaoi7FxLtKqR440Qr10RFosZeFbWUXdL9IsCvgiLRZ14bXWPWxFaqWAL9Ji2Yhyyaj7RZpFAV+kxbauX006NTd9k06ZyiglcQr4Iu0QzN4omyMtoIAv0mI79pwkPzM3wudnXL1vJHHqhy/SYlE9biYmc6zc9nLFmvo4K3RFomiGL9JilXrcOJdW3o4cnpjzWGml7cRkruJxIlEU8EVaLE4L5LD2xpVW6IrEoZSOSIsFWyREXa8Npn6iUkFqgyxxKeCLJCgq517eIiFql6tg6ue6oUys40SiKKUjkpC4OfewFE9Ye+O4x4lEUcAXSUjcnPumNVm+/OkbyA5lMAorbsP2o417nEgUpXREElJLzj1uF0x1y5RGaIYvkpCo3Lpy7tIuCvgiCVHOXTqNUjoiCQmWX2plrLSbAr5IgpRzl06ilI6ISJ9QwBcR6RMK+CIifUI5fJEOoxbIkhQFfJEOUmrHUFqhW2rHACjoS8MU8EVaJM7MvVI7BgV8aZRy+CItELeRWlg3zNL967bv1WYn0hAFfJEWiNtILWUW+Rra4UoapYAv0gJxG6lNe9R2KAXa4UoaoYAv0gJxG6llYzRW0w5XUi8FfJEWaGSTkyB125R6xQr4ZnaHmZ00s1Nmti3imM+Y2QkzO25mf9HcYYp0t3o2OQEIZvTVbVMaYV4lZ2hmKeAfgU8C48BBYLO7nyg7ZhXwPHC7u58zs/e6+1uVXnd4eNjHxsYaHb9IT9MiLAkys0PuPlzPc+PU4d8CnHL314pv9hywEThRdsxvAU+5+zmAasFeROJRt01ppjgBPwucKbs9DqwNHPNBADN7BUgBj7v7f2/KCEX6gGby0gpxAn5YYXAwD7QAWAXcBiwF/t7MPuLuk3NeyGwLsAVg+fLlNQ9WpBepnYK0SpyLtuPAsrLbS4E3Q475K3fPu/vrwEkKHwBzuPtOdx929+ElS5bUO2aRnhJ3UZZIo+IE/IPAKjNbaWYLgXuB0cAxI8DHAMxsMYUUz2vNHKhIr4q7KEukUVUDvrtfBB4A9gD/ADzv7sfN7Akz21A8bA/wjpmdAPYBW939naQGLdJL4i7KEmlUrG6Z7r4b2B2474tlPzvwcPGfiIR4dOQYzx44w7Q7KTM2r13GlzbdwNb1q9n64lHy05cujaVTpnp7aTq1RxZpgUdHjvHM/tOzt6fdZ28Pv++a+WUQlZfHiNRFrRVEWuDZA2ci79+x5yT5mbkRPj/jumgrTaeAL9ICUV0wp90r9sAXaSYFfJEWiOpznzKr+JhIMyngi7TA5rXLIu+vNPsXaSZdtBVJUHnLhEx6gAsXZ5hx5lTp7Hv1bGj6Jk5vfJFaKOCLJCTYMiGXnyGTTs1ri7x1/eo5x4HaIEsylNIRSUjclglxe+WLNEozfJGE1NIyQW2QpRU0wxdJiFomSKdRwBdJSNx9bEVaRSkdkYSUUjTa2EQ6hQK+SIKUm5dOooAv0iBtTyjdQgFfpAHanlC6iS7aijRA2xNKN1HAF2mAtieUbqKAL9IA1dpLN1HAF2lAvbX2I4cnWLd9Lyu3vcy67XsZOTyR5DBFAAV8kYYE++AMZdIsSg/w0K4jkYG8dKF3YjKHc+lCr4K+JE0BX6RBm9ZkeWXb7Xz9npu4cHGGc1P5ioFcF3qlXRTwRZokbiDXhV5pF9XhizRJVMCemMyxctvLs4uyrhvKhG54ogu9kjTN8EWaZGgwHflYeYrnYx9aoqZq0hYK+CIRaq2kibMFbS4/zb5Xz2rDE2kLpXREQlRrmRDWP+d8Lh/rtd+czKmpmrSFAr5IiGoXYMM+DIYG05ybqh70K6V+RJKkgC8SolIlTdSHQfC+KHFSPyJJUA5fJESllgmNlk9O5vJaXSttoYAvEqJSy4RmlE9qda20Q6yAb2Z3mNlJMztlZtsqHHe3mbmZDTdviCKtF2yZUF5JE/ZhUA+trpVWq5rDN7MU8BTwSWAcOGhmo+5+InDclcB/Ag4kMVCRVouqpCnfqzZsAVVQyozpiMS9VtdKK8WZ4d8CnHL319z9XeA5YGPIcb8HfBX4WRPHJ9KRSv1zrq5ScZNJp/jaZ24kqzbK0gHiBPwscKbs9njxvllmtgZY5u5/XemFzGyLmY2Z2djZs2drHqxIp5msUIZZLQ1kFHL5uoArrRKnLNNC7pv9fmpmA8DXgc9XeyF33wnsBBgeHlZxmnS9qL442aEMr2y7ffZ2MA1kXPoj0j640ipxZvjjwLKy20uBN8tuXwl8BPg7M3sDuBUY1YVb6Qe1bIBSSgNlhzIEZzu6gCutECfgHwRWmdlKM1sI3AuMlh509/PuvtjdV7j7CmA/sMHdxxIZsUgH2bQmy103Z0lZ4Ytwyoy7bq7cNkHtkaVdqgZ8d78IPADsAf4BeN7dj5vZE2a2IekBinSykcMTvHRoYrYKZ9qdlw5NVMzJax9caZdYdfjuvtvdP+ju73f33y/e90V3Hw059jbN7qVf1LN7Vb374Io0Sr10RBpQT3qm/AJuebdNXbCVpCngizSg3t2r1B5Z2kG9dEQaoPSMdBPN8EUaoPSMdBMFfJE6hO14pSAvnU4BX6RG1bY/FOlUyuGL1CiqFPPBXUfUF0c6mmb4IhGi0jaVSi4125dOphm+SIhS2mZiMoczd4eqaiWX6osjnUoBXyREpRW0cXa8Ul8c6URK6YiEqLSCNs6OV7X2xVHVj7SCZvgiIao1OCu1On7ynpsaXnhVKX0k0kwK+CIh4q6grbTZeVz1NGATqYdSOiIhallBG7cvTq1VP7oOIM2mgC8SoZkNziot1qq3AZtIrZTSEWmBWqt+1IBNkqAZvkgT1ZO2UQM2aRUFfOk7SZVANpK2UX98aQWldKSvJFkCqbSNdDrN8KUnRc3iq5VANjLzV9pGOp0CvvScSqmVqJWxpWMaaXmstI10OqV0pOdUmsWnzCKfV2nmP3J4gnXb97Jy28uRLZCVtpFOZ+7eljceHh72sbGxtry39LaV214m7LfaIPT+OILPzaRToStqg6mkj31oCftePas0jjSNmR1y9+F6nquUjvScaqmVqLROJcEPitLsPxi8y9M22hlLOo1SOtJztq5fTTo1N3WTThlb16+OTLvUo1rrA/XIkU6jgC+9KTglL96OanaWraONQbXWB+qRI51GKR3pOTv2nCQ/Mzfi52ecB3cd4ZHnj7J57TJe2Xb7vOeVp1+qiXMxVj1ypNNohi89p9IMetqdZ/af5tGRY3PuD878hzLpeWmh0q24LZBVtSOdRjN86TlRM+tyz+w/zZ/vPx1ZOXP5ZQv41I3XNlRho8VW0mlilWWa2R3AN4AU8C133x54/GHg3wMXgbPAv3P3H1V6TZVlSlKC1THVZNIp7ro5y67/dWZOKig9YOz4jRvZtCarLQilYzRSllk1pWNmKeAp4FeB64HNZnZ94LDDwLC7/zLwIvDVegYj0gyb1mS56+ZsxUVW5XL5af78wOnQvP/jo8e1BaH0jDg5/FuAU+7+mru/CzwHbCw/wN33uftU8eZ+YGlzhykS38jhCV46NMF0DYsKow6dzOVVXik9I07AzwJnym6PF++Lcj/wN40MSqQRYQG6EZX674h0kzgBP+x7ceh8yMzuA4aBHRGPbzGzMTMbO3v2bPxRitQgqkrHgCfvuSm0cmYwHf6ncPVgOjI1FDdlJNIp4gT8cWBZ2e2lwJvBg8zsE8DvAhvc/ULYC7n7TncfdvfhJUuW1DNekUilBmdRiRynMPu/6+bsvIVX/+XTvxy6OvexX/9wZGqolpSRSCeIU5Z5EFhlZiuBCeBe4LPlB5jZGuCPgTvc/a2mj1KkiriVOROTOV46NDFbR19efTM0mMYdzufys43PKuXp61mdK9JOVQO+u180sweAPRTKMp929+Nm9gQw5u6jFFI4VwAvWOFr7ml335DguEXmqCVvX37BtfxD4txUnkw6xdfvuWneY0FaQCXdSO2RpSdEtUSuR7ZKV82s6vCljdQeWfpG1AKoqNW1KbOac+0Tk7nQSgUoXPgN68Mj0g3US0e6RqUFUFF9azavXVZz++OUGUOD6dDHHCJ3vBLpdJrhS8epZwPy0qw77HnD77tm9v44c/1p98iFWKCNTKR7KeBLR6m0S1S9/eXLd6F6/xd2V03xZIcyVV8zl5/mkeeP8tCuI+qtI11DAV/aJmwmX2kWX6m/fNztBDevXcYz+09HjqlUfbNjz8mqK2lLHxzl7wXqjimdS1U60hYjhyfY+uJR8tNl3SlTNud2XPfdupx9r54NDdDZocy8i6yPjhzj2QNnmHbHgMGFKabenZ4ToGvtuAmFHvoXLs7MeU7UZuci9WqkSkcBX9pizRN/y7mp/Lz7zaIbmUUppWCinlZvGWXpG0ijPXPCPnRE6pVoe2SRJIQFe6g92EMhpTJQoa9Nve2MN63J8sq22xteUas9bKVTKOBLokr9bVZueznRcsZqF2IbaWccVvJZC+1hK51CF22l6aJSIROTOba+cBQo5Lsnc+Gz/KSEzbTn5PMNMgsGyOVn5uTzg1sVRn20GLAonZqXw1cLBukUCvjSsPJqm6syaX767sXIi6+lXaQ+deO1FatlkhCcaT86cmzOGNxhKj8DzK/yKQ/8K7a9HPr6Dnz50zeoSkc6lgK+NCRYzRJn1j6Zy/PsgTNVj2um9IDNm2lXG0MpDRQM2NmI8tDsUGbOB4NIp1EOXxpS7+5SLe8lH3JNN84YwtJAUW0clLqRTqcZvkSKanFQrlsqUPLTPm+2HqexWtgF12BOX6kb6RYK+BKq2srV0odBN+35FPxwirvqNoxSN9KNFPAlVKUWB1B5c5BOFZytf2nTDbx+9ie88k//MnvfwuJqX83apRd1fcCPk3aQ2s9TpUZl9ebtozx5z0088sJRpmeS+75gFL6lrNu+d077hP99+vyc41IDA3z1brVCkN7U1QE/bsOsfhTcq/X8VJ6Z4mPl9fDBfV1LHwZDg+nQ1bClPvTNYsDYj/4lkWBvMJtyKv23/P+90reYfv/9kd7Ulb10qvU46ZbeJfV8Owk+52MfWsK+V8/OeQ2In3IZyqT58YWLic6um8VgXoOzaufi8dHjoaWiQ5k053P50GsQBry+/deS/t8RqUtfNU+L08WwFX+wjaaSwv4/yjsrhr0+VA/k6ZRx+cIFLV/FmrShTJojj/1Kzc+LWiQFlevpu2HCIP2pZ/a0LV/mnjJj89plfGnTDXOOiZM/Trp3STNSSdUuim594Sj5mUv91h/cdSTW6+anveeCPRS6aDbb1vWrQz90VU8vvaqtAb98FptJD8wua4fCophSyVx50K9W9x33DzbuDL2WTToe3HWEB3cdYcDgsgUD/Cw/w1WZNGYwOZWf8z5R6aiJyRyPjx6fDfZSMBnRXbOaqyOuRVw9mFY9vfSdtqV0PnD9jZ6+6yux8szl/czXbd9bMXcfJ3CH9XspXeDLDlXeBCMTaI5Vq9SAMTPj0Q246ugH3w/qTbNEbbSy4+4bFdilK3VlDv+Kpat98X3/Nfbxpfw2zM9jl+e+w9JCw++7pql143FWaErzxN01Kupbm0p3pZd0ZcC/7NpVfu3nnqzpOaVZXrDk0B3O5/IsShda2wZlIu6XZJQuHJ/P5euqHCoXd7eqahfBRXpFz1y0raZ84Uwp8Jdf3IwK6gr2rVMtQMdto1xrsFZNvUh1XTXDL0kPGFcsWhC5TZ60R6159qhvavWkXVZue1k19dIXunKGn06Fd2aOkx/Pz7iCfYepp5yxmQ3Irouoqdf2giKXtK0f/i+8Z1HoPqG6GNqZskMZ7rt1OdmhDEZhIdTVg2ms+Fi7c+XqUS9SXdtm+EODaR4t2w5uQJUvHasbVp6qpl6kulgB38zuAL4BpIBvufv2wOOXAd8BbgbeAe5x9zeqve4LY6dnv4Yr2CerdN0juACs0roG6K5ZsnrUi1RWNeCbWQp4CvgkMA4cNLNRdz9Rdtj9wDl3/4CZ3Qt8Bbin0uu+/vZPebusD3m/GjBoZFHtgBUWjFX6vKxUORPWXiBsEZqIdL84M/xbgFPu/hqAmT0HbATKA/5G4PHizy8Cf2hm5hVKgH5y4SJX1jXk5irvwBjVgbOehValoDkUaK0Q1tEx6n2zxQuOcVYW11uHrlSISP+IE/CzwJmy2+PA2qhj3P2imZ0Hfg54u/wgM9sCbAFIvWdJnUNunrAOjHE7WAbLCMMCeS1Bs1ITrziBvJHArVSISH+IE/DD+hQGp7txjsHddwI7oVCHH+O9Y7t6MM3gwgWxN+dIDxiPb/jwnPuqBc2kAmOcYB0nkCtwi0glcQL+OLCs7PZS4M2IY8bNbAFwFVAxQX/FZc0rEEqnjMd+vRC8o2bD0NlBs9L7KpCLSDPEiboHgVVmthKYAO4FPhs4ZhT4HPB94G5gb6X8PcDKxZez+v3XzNlA+uevXMjbP8kz7T6nxfCi9AAXLs4w44V8+q2/eDVvvJOreTasoCki/SxWawUzuxN4kkJZ5tPu/vtm9gQw5u6jZrYI+C6whsLM/t7SRd4ojWxxKCLSrxJvreDuu4Hdgfu+WPbzz4DfqGcAIiLSGm1rrSAiIq2lgC8i0icU8EVE+oQCvohIn1DAFxHpEwr4IiJ9QgFfRKRPtG1PWzP7MXCyLW/eeRYTaDTXx3QuLtG5uETn4pLV7l5Xs+G27XgFnKx3tVivMbMxnYsCnYtLdC4u0bm4xMzqblGglI6ISJ9QwBcR6RPtDPg72/jenUbn4hKdi0t0Li7Rubik7nPRtou2IiLSWkrpiIj0icQDvpndYWYnzeyUmW0LefwyM9tVfPyAma1IekztEuNcPGxmJ8zsB2b2P83sfe0YZytUOxdlx91tZm5mPVuhEedcmNlnir8bx83sL1o9xlaJ8Tey3Mz2mdnh4t/Jne0YZ9LM7Gkze8vMfhjxuJnZHxTP0w/M7KOxXtjdE/tHYcOUfwJ+EVgIHAWuDxzzH4BvFn++F9iV5Jja9S/mufgYMFj8+bf7+VwUj7sS+B6wHxhu97jb+HuxCjgMXF28/d52j7uN52In8NvFn68H3mj3uBM6F/8a+Cjww4jH7wT+hsJ+4rcCB+K8btIz/FuAU+7+mru/CzwHbAwcsxH4s+LPLwIfN7OwTdG7XdVz4e773H2qeHM/hf2De1Gc3wuA3wO+CvyslYNrsTjn4reAp9z9HIC7v9XiMbZKnHPhwHuKP1/F/P21e4K7f4/K+4JvBL7jBfuBITO7ttrrJh3ws8CZstvjxftCj3H3i8B54OcSHlc7xDkX5e6n8Anei6qeCzNbAyxz979u5cDaIM7vxQeBD5rZK2a238zuaNnoWivOuXgcuM/Mxinswvc7rRlax6k1ngDJr7QNm6kHy4LiHNMLYv9/mtl9wDDwbxIdUftUPBdmNgB8Hfh8qwbURnF+LxZQSOvcRuFb39+b2UfcfTLhsbVanHOxGfi2u3/NzP4V8N3iuZhJfngdpa64mfQMfxxYVnZ7KfO/gs0eY2YLKHxNq/RVplvFOReY2SeA3wU2uPuFFo2t1aqdiyuBjwB/Z2ZvUMhRjvbohdu4fyN/5e55d3+dQg+qVS0aXyvFORf3A88DuPv3gUUU+uz0m1jxJCjpgH8QWGVmK81sIYWLsqOBY0aBzxV/vhvY68WrEj2m6rkopjH+mEKw79U8LVQ5F+5+3t0Xu/sKd19B4XrGBnevu4dIB4vzNzJC4YI+ZraYQorntZaOsjXinIvTwMcBzOyXKAT8sy0dZWcYBf5tsVrnVuC8u/9ztSclmtJx94tm9gCwh8IV+Kfd/biZPQGMufso8KcUvpadojCzvzfJMbVLzHOxA7gCeKF43fq0u29o26ATEvNc9IWY52IP8CtmdgKYBra6+zvtG3UyYp6LR4A/MbOHKKQwPt+LE0Qze5ZCCm9x8XrFY0AawN2/SeH6xZ3AKWAK+M1Yr9uD50pEREJopa2ISJ9QwBcR6RMK+CIifUIBX0SkTyjgi4j0CQV8EZE+oYAvItInFPBFRPrE/wcGh9BAXC5e5gAAAABJRU5ErkJggg==\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ - "param_run = BatchRunner(\n", + "results = mesa.batch_run(\n", " ForestFire,\n", - " variable_params,\n", - " fixed_params,\n", + " parameters={**fixed_params, **variable_params},\n", " iterations=5,\n", - " model_reporters=model_reporter,\n", + " number_processes=1,\n", + " data_collection_period=-1,\n", + " display_progress=True,\n", + " reporters=model_reporter,\n", ")\n", - "param_run.run_all()\n", - "df = param_run.get_model_vars_dataframe()\n", - "plt.scatter(df.density, df.BurnedOut)\n", + "df = pd.DataFrame(results)\n", + "plt.scatter(df[\"density\"], df[\"BurnedOut\"])\n", "plt.xlim(0, 1)" ] } @@ -603,9 +433,9 @@ "metadata": { "anaconda-cloud": {}, "kernelspec": { - "display_name": "Python 3", + "display_name": "Python [conda env:base] *", "language": "python", - "name": "python3" + "name": "conda-base-py" }, "language_info": { "codemirror_mode": { @@ -617,7 +447,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.6" + "version": "3.13.9" }, "widgets": { "state": {}, From 9c9fd49f10211e0f309d2ae77156f96e227cd063 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 20 Mar 2026 16:43:03 +0000 Subject: [PATCH 3/8] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- examples/forest_fire/Forest Fire Model.ipynb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/examples/forest_fire/Forest Fire Model.ipynb b/examples/forest_fire/Forest Fire Model.ipynb index 859ff5e5b..56adfb467 100644 --- a/examples/forest_fire/Forest Fire Model.ipynb +++ b/examples/forest_fire/Forest Fire Model.ipynb @@ -116,9 +116,10 @@ "metadata": {}, "outputs": [], "source": [ + "from mesa import Model\n", "from mesa.discrete_space import OrthogonalMooreGrid\n", "\n", - "from mesa import Model\n", + "\n", "class ForestFire(Model):\n", " \"\"\"Simple Forest Fire model.\"\"\"\n", "\n", From 1feda0b1c081e8959c79a587b5ff12eb67d334c4 Mon Sep 17 00:00:00 2001 From: Vanya Kapoor Date: Fri, 20 Mar 2026 22:49:42 +0530 Subject: [PATCH 4/8] examples: Fix forest_fire notebook for Mesa 4 compatibility --- examples/forest_fire/Forest Fire Model.ipynb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/examples/forest_fire/Forest Fire Model.ipynb b/examples/forest_fire/Forest Fire Model.ipynb index 56adfb467..3a17aab4e 100644 --- a/examples/forest_fire/Forest Fire Model.ipynb +++ b/examples/forest_fire/Forest Fire Model.ipynb @@ -117,6 +117,10 @@ "outputs": [], "source": [ "from mesa import Model\n", +<<<<<<< HEAD +======= + "from mesa.datacollection import DataCollector\n", +>>>>>>> 3f1bebd (examples: Fix forest_fire notebook for Mesa 4 compatibility) "from mesa.discrete_space import OrthogonalMooreGrid\n", "\n", "\n", @@ -457,4 +461,4 @@ }, "nbformat": 4, "nbformat_minor": 4 -} +} \ No newline at end of file From e929f7a9551774b6ee7d869948dceea9f9841f56 Mon Sep 17 00:00:00 2001 From: Vanya Kapoor Date: Sat, 21 Mar 2026 12:13:27 +0530 Subject: [PATCH 5/8] Fix DataCollector import, column name, stray comment, clean notebook output --- examples/forest_fire/Forest Fire Model.ipynb | 400 +++++++++++++++---- 1 file changed, 316 insertions(+), 84 deletions(-) diff --git a/examples/forest_fire/Forest Fire Model.ipynb b/examples/forest_fire/Forest Fire Model.ipynb index 3a17aab4e..238f3045f 100644 --- a/examples/forest_fire/Forest Fire Model.ipynb +++ b/examples/forest_fire/Forest Fire Model.ipynb @@ -23,7 +23,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 5, "metadata": { "ExecuteTime": { "end_time": "2024-10-12T18:20:45.476090Z", @@ -33,12 +33,12 @@ "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", + "import mesa\n", "import numpy as np\n", "\n", "%matplotlib inline\n", - "\n", - "import mesa\n", - "import pandas as pd" + "from mesa import Model\n", + "from mesa.datacollection import DataCollector" ] }, { @@ -56,7 +56,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 6, "metadata": { "ExecuteTime": { "end_time": "2024-10-12T18:22:50.333734Z", @@ -112,15 +112,10 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 7, "metadata": {}, "outputs": [], "source": [ - "from mesa import Model\n", -<<<<<<< HEAD -======= - "from mesa.datacollection import DataCollector\n", ->>>>>>> 3f1bebd (examples: Fix forest_fire notebook for Mesa 4 compatibility) "from mesa.discrete_space import OrthogonalMooreGrid\n", "\n", "\n", @@ -128,17 +123,11 @@ " \"\"\"Simple Forest Fire model.\"\"\"\n", "\n", " def __init__(self, width=100, height=100, density=0.65, rng=None):\n", - " \"\"\"Create a new forest fire model.\n", - "\n", - " Args:\n", - " width, height: The size of the grid to model\n", - " density: What fraction of grid cells have a tree in them.\n", - " \"\"\"\n", + " \"\"\"Create a new forest fire model.\"\"\"\n", " super().__init__(rng=rng)\n", "\n", - " # Set up model objects\n", - "\n", - " self.grid = OrthogonalMooreGrid((width, height), capacity=1)\n", + " # Pass self.random to the grid to avoid the UserWarning\n", + " self.grid = OrthogonalMooreGrid((width, height), capacity=1, random=self.random)\n", " self.datacollector = DataCollector(\n", " {\n", " \"Fine\": lambda m: self.count_type(m, \"Fine\"),\n", @@ -186,32 +175,11 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 8, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "C:\\Users\\VANYA\\anaconda3\\Lib\\site-packages\\mesa\\discrete_space\\grid.py:104: UserWarning: Random number generator not specified, this can make models non-reproducible. Please pass a random number generator explicitly\n", - " super().__init__(capacity=capacity, random=random, cell_klass=cell_klass)\n" - ] - }, - { - "ename": "NameError", - "evalue": "name 'DataCollector' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[31m---------------------------------------------------------------------------\u001b[39m", - "\u001b[31mNameError\u001b[39m Traceback (most recent call last)", - "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[11]\u001b[39m\u001b[32m, line 1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m1\u001b[39m fire = \u001b[43mForestFire\u001b[49m\u001b[43m(\u001b[49m\u001b[32;43m100\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[32;43m100\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[32;43m0.6\u001b[39;49m\u001b[43m)\u001b[49m\n", - "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[10]\u001b[39m\u001b[32m, line 19\u001b[39m, in \u001b[36mForestFire.__init__\u001b[39m\u001b[34m(self, width, height, density, rng)\u001b[39m\n\u001b[32m 16\u001b[39m \u001b[38;5;66;03m# Set up model objects\u001b[39;00m\n\u001b[32m 18\u001b[39m \u001b[38;5;28mself\u001b[39m.grid = OrthogonalMooreGrid((width, height), capacity=\u001b[32m1\u001b[39m)\n\u001b[32m---> \u001b[39m\u001b[32m19\u001b[39m \u001b[38;5;28mself\u001b[39m.datacollector = \u001b[43mDataCollector\u001b[49m(\n\u001b[32m 20\u001b[39m {\n\u001b[32m 21\u001b[39m \u001b[33m\"\u001b[39m\u001b[33mFine\u001b[39m\u001b[33m\"\u001b[39m: \u001b[38;5;28;01mlambda\u001b[39;00m m: \u001b[38;5;28mself\u001b[39m.count_type(m, \u001b[33m\"\u001b[39m\u001b[33mFine\u001b[39m\u001b[33m\"\u001b[39m),\n\u001b[32m 22\u001b[39m \u001b[33m\"\u001b[39m\u001b[33mOn Fire\u001b[39m\u001b[33m\"\u001b[39m: \u001b[38;5;28;01mlambda\u001b[39;00m m: \u001b[38;5;28mself\u001b[39m.count_type(m, \u001b[33m\"\u001b[39m\u001b[33mOn Fire\u001b[39m\u001b[33m\"\u001b[39m),\n\u001b[32m 23\u001b[39m \u001b[33m\"\u001b[39m\u001b[33mBurned Out\u001b[39m\u001b[33m\"\u001b[39m: \u001b[38;5;28;01mlambda\u001b[39;00m m: \u001b[38;5;28mself\u001b[39m.count_type(m, \u001b[33m\"\u001b[39m\u001b[33mBurned Out\u001b[39m\u001b[33m\"\u001b[39m),\n\u001b[32m 24\u001b[39m }\n\u001b[32m 25\u001b[39m )\n\u001b[32m 27\u001b[39m \u001b[38;5;66;03m# Place a tree in each cell with Prob = density\u001b[39;00m\n\u001b[32m 28\u001b[39m \u001b[38;5;28;01mfor\u001b[39;00m cell \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m.grid.all_cells:\n", - "\u001b[31mNameError\u001b[39m: name 'DataCollector' is not defined" - ] - } - ], + "outputs": [], "source": [ - "fire = ForestFire(100, 100, 0.6)" + "fire = ForestFire(100, 100, 0.6, rng=42)" ] }, { @@ -223,20 +191,14 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "metadata": {}, "outputs": [], "source": [ - "fire.run_until(lambda m: not m.running)" + "while fire.running:\n", + " fire.step()" ] }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, { "cell_type": "markdown", "metadata": {}, @@ -250,7 +212,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 10, "metadata": {}, "outputs": [], "source": [ @@ -266,9 +228,30 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 11, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "results.plot()" ] @@ -284,12 +267,35 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 12, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "fire = ForestFire(100, 100, 0.8)\n", - "fire.run_until(lambda m: not m.running)\n", + "\n", + "while fire.running:\n", + " fire.step()\n", "results = fire.datacollector.get_model_vars_dataframe()\n", "results.plot()" ] @@ -309,41 +315,54 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "fixed_params = {\"height\": 50, \"width\": 50}\n", - "variable_params = {\"density\": np.linspace(0, 1, 101)[1:]}" + "variable_params = {\"density\": np.linspace(0, 1, 101)[1:], \"rng\": range(1)}" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "# At the end of each model run, calculate the fraction of trees which are Burned Out\n", "model_reporter = {\n", - " \"BurnedOut\": lambda m: (ForestFire.count_type(m, \"Burned Out\") / len(m.agents))\n", + " \"Burned Out\": lambda m: (ForestFire.count_type(m, \"Burned Out\") / len(m.agents))\n", "}" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 18, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "00b8f82528614fb8b2685668fc45e264", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/100 [00:00\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
RunIditerationStepheightwidthdensityrngFineOn FireBurned Out
0001.050500.01None2000
1101.050500.02None4700
2201.050500.03None7500
3301.050500.04None10403
4402.050500.05None12303
\n", + "" + ], + "text/plain": [ + " RunId iteration Step height width density rng Fine On Fire \\\n", + "0 0 0 1.0 50 50 0.01 None 20 0 \n", + "1 1 0 1.0 50 50 0.02 None 47 0 \n", + "2 2 0 1.0 50 50 0.03 None 75 0 \n", + "3 3 0 1.0 50 50 0.04 None 104 0 \n", + "4 4 0 2.0 50 50 0.05 None 123 0 \n", + "\n", + " Burned Out \n", + "0 0 \n", + "1 0 \n", + "2 0 \n", + "3 3 \n", + "4 3 " + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "df.head()" ] @@ -395,11 +540,32 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 21, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "(0.0, 1.0)" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ - "plt.scatter(df.density, df.BurnedOut)\n", + "plt.scatter(df[\"density\"], df[\"Burned Out\"])\n", "plt.xlim(0, 1)" ] }, @@ -416,21 +582,87 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 22, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['RunId', 'iteration', 'Step', 'height', 'width', 'density', 'rng', 'Fine', 'On Fire', 'Burned Out']\n", + " RunId iteration Step height width density rng Fine On Fire \\\n", + "0 0 0 1.0 50 50 0.01 None 20 0 \n", + "1 1 0 1.0 50 50 0.02 None 47 0 \n", + "2 2 0 1.0 50 50 0.03 None 75 0 \n", + "3 3 0 1.0 50 50 0.04 None 104 0 \n", + "4 4 0 2.0 50 50 0.05 None 123 0 \n", + "\n", + " Burned Out \n", + "0 0 \n", + "1 0 \n", + "2 0 \n", + "3 3 \n", + "4 3 \n" + ] + } + ], "source": [ + "print(df.columns.tolist())\n", + "print(df.head())" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "9728ddc0fcca43d3aa4b814e1ea9bb5a", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/100 [00:00" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import pandas as pd\n", + "\n", "results = mesa.batch_run(\n", " ForestFire,\n", " parameters={**fixed_params, **variable_params},\n", - " iterations=5,\n", + " iterations=None,\n", " number_processes=1,\n", - " data_collection_period=-1,\n", " display_progress=True,\n", - " reporters=model_reporter,\n", ")\n", "df = pd.DataFrame(results)\n", - "plt.scatter(df[\"density\"], df[\"BurnedOut\"])\n", + "plt.scatter(df[\"density\"], df[\"Burned Out\"])\n", "plt.xlim(0, 1)" ] } @@ -438,9 +670,9 @@ "metadata": { "anaconda-cloud": {}, "kernelspec": { - "display_name": "Python [conda env:base] *", + "display_name": "Python 3", "language": "python", - "name": "conda-base-py" + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -452,7 +684,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.13.9" + "version": "3.11.9" }, "widgets": { "state": {}, @@ -461,4 +693,4 @@ }, "nbformat": 4, "nbformat_minor": 4 -} \ No newline at end of file +} From 7d33948b8c301f3c0d9cf5472efeab9c20e73926 Mon Sep 17 00:00:00 2001 From: Vanya Kapoor Date: Sat, 21 Mar 2026 12:34:50 +0530 Subject: [PATCH 6/8] added metadata.toml for forest fire --- .../forest_fire/forest_fire/metadata.toml | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 examples/forest_fire/forest_fire/metadata.toml diff --git a/examples/forest_fire/forest_fire/metadata.toml b/examples/forest_fire/forest_fire/metadata.toml new file mode 100644 index 000000000..7f9dece1c --- /dev/null +++ b/examples/forest_fire/forest_fire/metadata.toml @@ -0,0 +1,23 @@ +title = "Forest Fire Model" + +abstract = """ +A simple cellular automaton model of fire spreading through a forest. +Trees grow randomly, and fire spreads to neighboring trees. Demonstrates +self-organized criticality and emergent behavior from simple local rules. +""" + +authors = ["Wilensky, U."] + +domain = ["ecology", "complex systems"] + +space = "Grid" + +time = "Discrete" + +complexity = "Basic" + +keywords = ["forest fire", "cellular automaton", "self-organized criticality", "fire spread"] + +mesa = ">=3.0" + +doi = "" From 4930c875cbcf819ee5d8009ebfcfef9142cec326 Mon Sep 17 00:00:00 2001 From: Vanya Kapoor Date: Sat, 21 Mar 2026 13:16:12 +0530 Subject: [PATCH 7/8] ci: add metadata validation with pre-commit --- .../workflows/scripts/validate_metadata.py | 67 +++++++++++++++++++ .github/workflows/validate_metadata.yml | 24 +++++++ 2 files changed, 91 insertions(+) create mode 100644 .github/workflows/scripts/validate_metadata.py create mode 100644 .github/workflows/validate_metadata.yml diff --git a/.github/workflows/scripts/validate_metadata.py b/.github/workflows/scripts/validate_metadata.py new file mode 100644 index 000000000..fdc96bc99 --- /dev/null +++ b/.github/workflows/scripts/validate_metadata.py @@ -0,0 +1,67 @@ +"""Validate metadata.toml files in all examples.""" + +import sys +import tomllib +from pathlib import Path + +REQUIRED_FIELDS = [ + "title", + "abstract", + "authors", + "domain", + "space", + "time", + "complexity", + "keywords", + "mesa", +] + +ALLOWED_SPACE = {"Grid", "Network", "Continuous", "None"} +ALLOWED_TIME = {"Discrete", "Continuous"} +ALLOWED_COMPLEXITY = {"Basic", "Advanced"} + +errors = [] +examples_dir = Path("examples") + +metadata_files = list(examples_dir.glob("*/metadata.toml")) + +if not metadata_files: + print("No metadata.toml files found.") + sys.exit(0) + +for path in metadata_files: + example = path.parent.name + with open(path, "rb") as f: + try: + data = tomllib.load(f) + except tomllib.TOMLDecodeError as e: + errors.append(f"{example}: Invalid TOML - {e}") + continue + + for field in REQUIRED_FIELDS: + if field not in data: + errors.append(f"{example}: Missing required field '{field}'") + + if "space" in data and data["space"] not in ALLOWED_SPACE: + errors.append( + f"{example}: 'space' must be one of {ALLOWED_SPACE}, got '{data['space']}'" + ) + + if "time" in data and data["time"] not in ALLOWED_TIME: + errors.append( + f"{example}: 'time' must be one of {ALLOWED_TIME}, got '{data['time']}'" + ) + + if "complexity" in data and data["complexity"] not in ALLOWED_COMPLEXITY: + errors.append( + f"{example}: 'complexity' must be one of {ALLOWED_COMPLEXITY}, " + f"got '{data['complexity']}'" + ) + +if errors: + print("Metadata validation FAILED:") + for e in errors: + print(f" - {e}") + sys.exit(1) + +print(f"All {len(metadata_files)} metadata.toml files are valid.") \ No newline at end of file diff --git a/.github/workflows/validate_metadata.yml b/.github/workflows/validate_metadata.yml new file mode 100644 index 000000000..c4830a11b --- /dev/null +++ b/.github/workflows/validate_metadata.yml @@ -0,0 +1,24 @@ +name: Validate Example Metadata + +on: + pull_request: + paths: + - 'examples/**/metadata.toml' + - '.github/workflows/validate_metadata.yml' + +jobs: + validate: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.11" + + - name: Install tomllib (stdlib in 3.11+) + run: echo "tomllib is built-in" + + - name: Validate all metadata.toml files + run: python scripts/validate_metadata.py \ No newline at end of file From 7e417e034a5fa25cef23486d885310261c3dcea2 Mon Sep 17 00:00:00 2001 From: Vanya Kapoor Date: Sat, 21 Mar 2026 13:48:43 +0530 Subject: [PATCH 8/8] ruff error fixed --- .github/workflows/scripts/validate_metadata.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/scripts/validate_metadata.py b/.github/workflows/scripts/validate_metadata.py index fdc96bc99..8d4eda56e 100644 --- a/.github/workflows/scripts/validate_metadata.py +++ b/.github/workflows/scripts/validate_metadata.py @@ -1,9 +1,10 @@ """Validate metadata.toml files in all examples.""" import sys -import tomllib from pathlib import Path +import tomllib + REQUIRED_FIELDS = [ "title", "abstract", @@ -64,4 +65,4 @@ print(f" - {e}") sys.exit(1) -print(f"All {len(metadata_files)} metadata.toml files are valid.") \ No newline at end of file +print(f"All {len(metadata_files)} metadata.toml files are valid.")