Skip to main content

py-simba-pop

PyPI Python Tests License

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.

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)

Table of built distributions (wheels) for py-simba-pop 0.4.0
File
py_simba_pop-0.4.0-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
py_simba_pop-0.4.0-cp313-cp313-musllinux_1_2_x86_64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ x86-64 Details
py_simba_pop-0.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
py_simba_pop-0.4.0-cp313-cp313-macosx_10_13_universal2.whl CPython 3.13 CPython 3.13 macOS 10.13+ universal2 (ARM64, x86-64) Details
py_simba_pop-0.4.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
py_simba_pop-0.4.0-cp312-cp312-musllinux_1_2_x86_64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ x86-64 Details
py_simba_pop-0.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
py_simba_pop-0.4.0-cp312-cp312-macosx_10_13_universal2.whl CPython 3.12 CPython 3.12 macOS 10.13+ universal2 (ARM64, x86-64) Details
py_simba_pop-0.4.0-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
py_simba_pop-0.4.0-cp311-cp311-musllinux_1_2_x86_64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ x86-64 Details
py_simba_pop-0.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
py_simba_pop-0.4.0-cp311-cp311-macosx_10_9_universal2.whl CPython 3.11 CPython 3.11 macOS 10.9+ universal2 (ARM64, x86-64) Details

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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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

Release history Release notifications | RSS feed

This release

0.4.0 This release

12 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page