py-simba-pop
py-simba-pop is a transparent, reproducible Python implementation of
SIMBA-POP, the banana cohort model published by Tixier, Malézieux & Dorel
(2004), Ecological Modelling 180:407–417. It follows the design spirit of
PCSE (Python Crop Simulation
Environment): one SimbaPopEngine drives everything, every input file is
read by a dedicated, standardized reader class (py_simba_pop.readers) with
exactly one canonical schema regardless of which farm the data came from,
and there is no cold-start/warm-start split -- a bare seed population and a
full field inventory are the same initial_population argument.
SIMBA-POP tracks a perennial banana field as two interlinked chains of
weekly cohorts -- pre-flowering (vegetative) and post-flowering
(reproductive) -- driven by thermal-time (degree-day) accumulation, with
log-normal dispersion curves controlling how a cohort spreads across
flowering, sucker-selection, and harvest transitions instead of switching
all at once. Continuous multi-generational simulation falls out naturally:
each week's suckers reseed the vegetative chain and each week's flowering
reseeds the reproductive chain. Real ribbon-tag bagging and farm-wide
sucker-selection records can drive the model directly -- and whenever a
variable isn't available, the engine falls back to the paper's own
mechanistic prediction, always with an explicit Notice, never silently.
Install
pip install -e ".[dev]"
To run the example notebooks and scripts (Plotly for graphs, openpyxl for
the farm .xlsx exports, SciPy for the initial-population reconstruction and
peak matching), install the notebooks extra instead:
pip install -e ".[notebooks]"
Quick start
from py_simba_pop import ParameterSet, WeatherProvider, SimbaPopEngine
params = ParameterSet.from_tixier_defaults()
weather = WeatherProvider.from_file_and_params("weather.csv", params) # date, tmean columns
engine = SimbaPopEngine.from_seed_population(params, weather, seed_population=1000.0)
output = engine.run(n_weeks=200) # a pandas DataFrame: week_index, Nt, Nt_pre, Nt_post, Ht, FLt, St, ...
Every parameter has a hardcoded Tixier et al. (2004) default -- the call above is the entire configuration required. If you have your own already-calibrated values, load them from a plain YAML file in the same schema instead:
params = ParameterSet.from_yaml("my_farm_params.yaml")
Under the default rate_basis: cohort every plant flowers once, is
harvested once and keeps exactly one follower, so a farm's number of
production units stays constant (see
docs/model_overview.md).
See examples/01_running_farm_simulation.ipynb for the full workflow -- weather, an existing field's cohort inventory, and real ribbon-tag bagging / farm-wide sucker-selection records all driving the same engine, with graceful, explicitly-logged fallback for whatever's missing. examples/build_farm_inputs.py builds every input file for a farm from its legacy weekly Excel exports (and reconstructs the initial population from production records when no census exists), examples/generate_synthetic_farm.py writes two synthetic farms in those formats, and examples/build_custom_parameters.py is a standalone recipe for deriving your own harvest parameters from field data.
Model overview
See docs/model_overview.md for the cohort-chain concept, the exact weekly algorithm, the standardized file readers, and a table mapping each parameter name back to its symbol in the source paper. See docs/usage.md for the full API and output-handling details.
How to cite
If you use py-simba-pop in your research, please cite it as:
Ohagwu, C. P. (2026). py-simba-pop: A transparent, reproducible Python implementation of the SIMBA-POP banana cohort model (Version 0.4.0) [Computer software]. https://github.com/cpohagwu/py-simba-pop
@software{ohagwu_py_simba_pop,
author = {Ohagwu, Collins Patrick},
title = {{py-simba-pop}: A transparent, reproducible {Python} implementation of the {SIMBA-POP} banana cohort model},
year = {2026},
url = {https://github.com/cpohagwu/py-simba-pop},
version = {0.4.0}
}
License
Apache License 2.0. See LICENSE.
Metadata
Release files for py-simba-pop 0.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
Total release size: 26.7 MB
Release files / py_simba_pop-0.4.0-cp313-cp313-win_amd64.whl
| Download URL | py_simba_pop-0.4.0-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 519.2 kB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
3a82b32bb8c0cfa273b8172617435507dbde279cf6e91f8622e1dc3d2c9f7e3d
|
|
BLAKE2b-256 checksum How to use checksums |
a48e9632987de07f3b8456fd1214d484fc90251204d892e3bfba0eaffa420c40
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.
Transparency logRelease files / py_simba_pop-0.4.0-cp313-cp313-musllinux_1_2_x86_64.whl
| Download URL | py_simba_pop-0.4.0-cp313-cp313-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 3.6 MB |
| Tags | CPython 3.13 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
725e754fcc30b5de7a1f225eb37d248a462d1eeaec34cba7761a05b5ba7ca43b
|
|
BLAKE2b-256 checksum How to use checksums |
ba9249a0e566dc13ef9e705df1480700740c4124c110ee74cd67eb09e93038f3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.
Transparency logRelease files / py_simba_pop-0.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl
| Download URL | py_simba_pop-0.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 3.6 MB |
| Tags | CPython 3.13 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
a7b354dfe27dc17b2744d10ac21f05958863956ff6d9cbd41ad9e5d5af27da1f
|
|
BLAKE2b-256 checksum How to use checksums |
31316616cdb648f746502d994bf1394bdb6cad6d26df01ce1c1ebdd4e796c62f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.
Transparency logRelease files / py_simba_pop-0.4.0-cp313-cp313-macosx_10_13_universal2.whl
| Download URL | py_simba_pop-0.4.0-cp313-cp313-macosx_10_13_universal2.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.13 macOS 10.13+ universal2 (ARM64, x86-64) |
|
SHA-256 checksum How to use checksums |
bde455f08461013c317957432106f58538ae9a2d2bd6a5abfde4778d54784223
|
|
BLAKE2b-256 checksum How to use checksums |
bea41ed86ba1e34f7e6a54abe360e5144006c51630c4b29172f14798fa2a2c64
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.
Transparency logRelease files / py_simba_pop-0.4.0-cp312-cp312-win_amd64.whl
| Download URL | py_simba_pop-0.4.0-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 529.9 kB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
94897e30e92f066018da58bdad0c62170e04ef79e2a5a63417934fffbdcfdfbe
|
|
BLAKE2b-256 checksum How to use checksums |
7d1f26eb072045cb473c1118466e580724a1b45ab056d6ff68b1393684e8b4ff
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.
Transparency logRelease files / py_simba_pop-0.4.0-cp312-cp312-musllinux_1_2_x86_64.whl
| Download URL | py_simba_pop-0.4.0-cp312-cp312-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 3.7 MB |
| Tags | CPython 3.12 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
5b5a5e3ce0aa0b53909a42deb679366c46a52fba2a4094e0b7744cb74a13f99c
|
|
BLAKE2b-256 checksum How to use checksums |
36f48ffe238acc6dbce75a4b44c9871aa10621f7fae19b05b083f3de2a317265
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.
Transparency logRelease files / py_simba_pop-0.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl
| Download URL | py_simba_pop-0.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 3.7 MB |
| Tags | CPython 3.12 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
73d21a804fb42db8dbdbe2262aa112f7493792c53122fe0b067e388cd4341055
|
|
BLAKE2b-256 checksum How to use checksums |
bd6ef1472653b3868ab5919eaf3a9ba216aba24d5b44612ac27350872f63b12d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.
Transparency logRelease files / py_simba_pop-0.4.0-cp312-cp312-macosx_10_13_universal2.whl
| Download URL | py_simba_pop-0.4.0-cp312-cp312-macosx_10_13_universal2.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.12 macOS 10.13+ universal2 (ARM64, x86-64) |
|
SHA-256 checksum How to use checksums |
b5f49ba7d1045ae9a88a45d83e076412dee9ee2674fa393d19567a9961296471
|
|
BLAKE2b-256 checksum How to use checksums |
7bd342fc74d8f4041efdbeeda38465c2f1c899247f6f23e539cab374f51c11d7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.
Transparency logRelease files / py_simba_pop-0.4.0-cp311-cp311-win_amd64.whl
| Download URL | py_simba_pop-0.4.0-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 539.3 kB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
44e41f58f411ee62848e2301acb813a20297e631d6357a138eeb9248ffb164a7
|
|
BLAKE2b-256 checksum How to use checksums |
9da9e05b231282ad386d5056ccc00a4c186508948fd0104e366b13ca4f962dab
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.
Transparency logRelease files / py_simba_pop-0.4.0-cp311-cp311-musllinux_1_2_x86_64.whl
| Download URL | py_simba_pop-0.4.0-cp311-cp311-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 3.5 MB |
| Tags | CPython 3.11 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
215ca20c9907795dda2581c93728f4078f7082bcf76881df20aa2473c0a096de
|
|
BLAKE2b-256 checksum How to use checksums |
0472df42eb349baaf8a63aeefc600c00726e974120a0136e8ef3dcad8f787d0e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.
Transparency logRelease files / py_simba_pop-0.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl
| Download URL | py_simba_pop-0.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 3.5 MB |
| Tags | CPython 3.11 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
41a5f4cdd9dd46a742ed7c7186cf664fc75fec738757dd0768ac95d51b5e50ce
|
|
BLAKE2b-256 checksum How to use checksums |
cd57af550555736445d9f8f3561ecc6942d1a3c7d66181df64958df213531ffa
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.
Transparency logRelease files / py_simba_pop-0.4.0-cp311-cp311-macosx_10_9_universal2.whl
| Download URL | py_simba_pop-0.4.0-cp311-cp311-macosx_10_9_universal2.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.11 macOS 10.9+ universal2 (ARM64, x86-64) |
|
SHA-256 checksum How to use checksums |
10f2a29e4eaaa7ffb2f13600cba0e81744b7ff3236740a90ca74fa2d2eb7b977
|
|
BLAKE2b-256 checksum How to use checksums |
12785574afae91689d887e5273cb6aab51ea8fef7c2872e62fbdf6f35e42b83e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.
Transparency log