Setup & Detailed Instructions¶
This page demonstrates the use of the ecosim2d ecosystem simulation package via a few steps. Make sure to follow the setup carefully to run simulations with custom terrain and food web configurations.
Step 1: Install the Package¶
!pip install ecosim2d
Step 2: Upload Input Files¶
Ecosim uses two main configuration files as input to define the ecosystem’s species and environment:
foodweb_config.json– defines organisms, their types, and predator-prey relationships.terrain_config.json– describes the spatial layout of environmental features like trees, water, and shelters.
Both JSON files must be present in the working directory or referenced with correct relative paths in simulation parameters.
foodweb_config.json¶
This file defines the biological entities and feeding relationships within the ecosystem.
Example:
{
"organisms": {
"Carrot": {
"type": "Producer",
"color": "#fa7b05",
"initial_count": 20
},
"Rabbit": {
"type": "Consumer",
"trophic_level": "primary",
"color": "#85807e",
"initial_count": 15
},
"Fox": {
"type": "Consumer",
"trophic_level": "secondary",
"color": "#eb0505",
"initial_count": 7
},
"Fungi": {
"type": "Decomposer",
"decomposition_rate": 3
}
},
"predation": {
"Rabbit": ["Carrot"],
"Fox": ["Rabbit"]
}
}
Structure Details:
organisms– a dictionary where each key is a species name. * Each species includes:type: “Producer”, “Consumer”, or “Decomposer”trophic_level(optional for Consumers): “primary”, “secondary”, etc.color: Hex code for visual representationinitial_count: Number of individuals at simulation startdecomposition_rate: (only for Decomposers) optional numeric rate
predation– defines the food web in key-value format, where each consumer species maps to a list of prey species.
terrain_config.json¶
This file defines how terrain features are arranged in the simulation grid.
Ecosim supports two terrain modes: manual and random.
Manual terrain mode allows explicit placement of objects:
{
"mode": "manual",
"terrain_objects": [
{ "type": "water", "x": 3, "y": 3, "width": 4, "height": 2 },
{ "type": "hill", "x": 10, "y": 10, "width": 3, "height": 3 },
{ "type": "tree", "x": 5, "y": 5 },
{ "type": "shelter", "x": 15, "y": 6 }
]
}
Supported terrain types include:
water– blocks movement, animals can drink here and gain energytree– blocks movementhill– increases movement costshelter– offers protection from threats for primary consumers
Each object must specify x and y coordinates. Optionally, use width and height for rectangular regions.
Random terrain mode disables manual placement and uses random generation logic (if supported):
{
"mode": "random"
}
⚠️ Note: The mode key must be spelled correctly – avoid typos like “radnom”.
File Placement and Usage¶
Both configuration files must be referenced in the simulation function:
simulation(
grid_size=20,
steps=30,
terrain_config_path="content/terrain_config.json",
foodweb_config_path="content/foodweb_config.json"
)
Make sure the file paths are correct relative to the working directory (e.g., /content/ in Google Colab).
foodweb_config.json and terrain_config.json define the biological logic and spatial environment that drive all simulation behavior.
Step 3: Run Simulation¶
Import the simulation entry function and run it with parameters:
from mainsimulation.main import simulation
# Run with custom settings
simulation(grid_size=20, steps=5,
terrain_config_path="content/terrain_config.json",
foodweb_config_path="content/foodweb_config.json")
Step 4: Output Location¶
After the simulation finishes, Ecosim automatically generates several output files that summarize spatial activity and population dynamics.
Output directories and file paths:
Visual frames – saved to the
frames/folderHeatmaps – saved as PNG images under
statistics_plots/heatmap_*.pngPopulation chart – saved to
statistics_plots/population_chart.png
These files are generated automatically during or after the simulation process, depending on the modules enabled.
Accessing the Output Files¶
You can access the output files directly from your project directory or script output location.
Example usage:
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
# Display the population chart
img = mpimg.imread("statistics_plots/population_chart.png")
plt.imshow(img)
plt.axis('off')
plt.show()
You can also open these files using any image viewer or incorporate them into a report.
Working Directory Considerations¶
Ecosim uses relative file paths when writing output. This means that all folders such as frames/ and statistics_plots/ will be created in the current working directory where the simulation was launched.
Make sure your script or runtime environment has:
Write permission to the working directory
A valid path structure that matches the expected folders
Correct handling of relative vs absolute paths (if needed)
If you’re running simulations in different environments (e.g., notebooks, scripts, or deployment pipelines), ensure the working directory is correctly set at the start of execution:
import os
os.chdir("/path/to/project/root")
By default, simulation outputs will be saved relative to this root unless configured otherwise.