Skip to main content

FlahaX

FlahaX — water and nutrients become chemistry calculations and traceable plans, with units, model identifiers and sources.

Plant-nutrient chemistry engine in Python: fertilizer formulation, aqueous equilibrium chemistry and auditable delivery planning.

PyPI Python License PyPI Downloads

FlahaX turns a crop's nutrient formula and the grower's actual water into a fertilizer recipe, then checks what that recipe does in solution: which ions pair up, whether anything precipitates, what the pH will be, how much acid reaches a target pH, and how the recipe splits into stock tanks and injector flows. Every plan carries its units, model identifiers and source hashes, so a result can be reviewed and reproduced.

To our knowledge, FlahaX is the first Python package to unite fertilizer formulation, fertilizer-specific aqueous equilibrium chemistry and auditable delivery planning in one dependency-free library, verified against PHREEQC.

Who it is for

  • Researchers who need reproducible nutrient-solution chemistry with stated validity limits.
  • Agronomists and consultants who design recipes against real water analyses and real commercial products.
  • Growers with technical support, through the interactive command line.
  • Developers building nutrition and fertigation software on a tested, dependency-free engine.

FlahaX and FlahaFAST. FlahaX is developed as the chemistry engine for the FlahaFAST application, where it is planned to provide formulation, pH and conductivity planning. That integration is not yet in place: FlahaFAST does not currently import FlahaX, and FlahaX stays a standalone package with its own releases.

Install

Python 3.11 or newer. There are no third-party runtime dependencies.

python -m pip install flahax==0.5.0

Pin the version for reproducible work. python -m pip install flahax installs the latest release.

Quick start

Select salts for a crop formula, with 20 mg/L of calcium already in the water:

from flahax import load_library, recommend

result = recommend(
    load_library()["salts"],
    targets={"N_NO3": 128, "P": 58, "K": 211, "Ca": 104, "Mg": 40, "S": 54},
    water={"Ca": 20},
)

for salt in result["salts"]:
    print(f"{salt['name']}: {salt['gramsPerLitre']} g/L")

result["salts"] lists each chosen salt with grams per litre of the solution the plant receives. result["rows"] gives each element's target, final concentration (mg/L) and percentage difference. Element keys are N_NO3, N_NH4, P, K, Ca, Mg, S, Fe, Mn, Zn, B, Cu and Mo.

Command line

flahax --help
flahax workflow --interactive   # water + crop targets -> recipe, pH and acid plan
flahax ec --interactive         # approximate EC screening for supported products
flahax size --interactive       # stock-channel volume and injector flow sizing

With no subcommand, flahax reads one JSON object (salts, targets, water) on standard input and writes the recommendation as JSON. Commands plan; they never operate pumps, valves or other hardware.

What it does

Layer Capability Boundary
Formulation Chooses salts and grams from the full shipped library to meet a fixed crop formula after subtracting the source water Non-negative least squares; the formula is not altered
Equilibrium chemistry One mixed aqueous model for all 30 catalogue products: 197 aqueous species, 28 solid phases, ion pairs, chelates and saturation indices 25 °C, Davies activities up to ionic strength 0.1 mol/kg, fixed oxidation states, closed inorganic carbon
pH and acid Calculated initial pH; nitric-acid dose to a target pH; standard workflow with nitric and phosphoric acid, using supplied assay and density An initial dose estimate; measure after mixing
Delivery planning Stock-tank grouping with compatibility and solubility checks, reagent volumes, pump and injector flow sizing, composed delivery plans Uses caller-supplied product, compatibility and equipment records; no equipment model selection
Conductivity Approximate EC screening for supported products; EC from a measured calibration profile Dilute, pre-acid screening with unknown accuracy; no validated concentrated-stock model yet
Audit trail Explicit units (g/L of final solution versus g/kg water), model identifiers, source hashes, needs_input instead of guessed values Plans are reviewable records, not operating authorizations

Verification

The Benchmark v1 protocol separates formulation fit, numerical chemistry, runtime/memory measurements, and physical validation. Its reproducible reports include input hashes and failed cases; timings are informational, and physical validation remains separate. See the measured results and downloadable evidence for tables, charts, provenance, and retained limitations.

  • 153 automated tests, including live replay of every catalogue product, phase and acid case against pinned PHREEQC 3.8.6 (USGS).
  • Hosted checks on Python 3.11, 3.12 and 3.13, plus clean wheel and source installation checks.
  • Evidence is versioned per release in the release evidence.

This is computational evidence. FlahaX has not been validated in the laboratory or in the field, and its owner's computational assessment is not an independent review. No recipe, pH or EC value is an authorization to operate equipment.

Roadmap

Next work, in order: broader numerical and input-boundary testing, stable consumer contracts, and a validated conductivity model covering irrigation-strength solutions first and concentrated stock tanks second. See the development roadmap and current status.

Documentation

Document For
User manual Installation, eight tested examples, units, chemistry, pH and delivery planning; also ships inside the package
API reference Every public function and result record, with signatures
Site planning and CLI Water, acid, EC and injection inputs
Chemistry model Equilibrium model, PHREEQC evidence and boundaries
Formulation method The ppm equation, solver and worked pepper example
Documentation index All user, scientific and contributor documents
Changelog Changes by release

The manual can be read offline from an installed package through importlib.resources (flahax/data/USER_GUIDE.md).

Development

From a source checkout:

python -m pip install -e .
PYTHONPATH=src python -m unittest discover -s tests -t .

Live PHREEQC replay, distribution verification and branch conventions are in package verification and CONTRIBUTING.

Citation

Al Khashan, R. A. (2026). FlahaX (Version 0.5.0) [Computer software]. https://pypi.org/project/flahax/

@software{alkhashan2026flahax,
  author  = {Al Khashan, Rafat A.},
  title   = {FlahaX: plant-nutrient chemistry engine for fertilizer formulation and delivery planning},
  year    = {2026},
  version = {0.5.0},
  url     = {https://pypi.org/project/flahax/},
  license = {Apache-2.0}
}

GitHub's "Cite this repository" button reads CITATION.cff.

License

FlahaX is open source under the Apache License 2.0. You may use, modify and redistribute it for any purpose, including commercial products and research. Redistributions must keep the copyright notice and the NOTICE file. If you use FlahaX in published work, please cite it as shown above.

Releases up to and including 0.3.1 were published under the Flaha Free Use License 1.0; later releases use Apache-2.0.

Metadata

Release files for flahax 0.5.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for flahax 0.5.0
File Size Uploaded Provenance
flahax-0.5.0.tar.gz 5.1 MB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for flahax 0.5.0
File Interpreter ABI Platform
flahax-0.5.0-py3-none-any.whl Python 3 none any Details

Total release size: 5.3 MB

Release files / flahax-0.5.0.tar.gz

Download URL flahax-0.5.0.tar.gz
Size 5.1 MB
Tags Source
SHA-256 checksum
How to use checksums
08ca45bc53645a482a57d01a73c6b028f42ce7e7af288b930202d02887e5ab3c
BLAKE2b-256 checksum
How to use checksums
a60af1d93393232645746282bf7fcd495729eb629cd4eea654da5d6e02a08726
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 Oct 20, 2026.

Transparency log

Release files / flahax-0.5.0-py3-none-any.whl

Download URL flahax-0.5.0-py3-none-any.whl
Size 172.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c209476ae768f79da807068073aacbd55d3ffb6f59024f88e7cff83cb4359141
BLAKE2b-256 checksum
How to use checksums
523376f546e249990ca9a138b47269ab99cdb4c091e2ea434614f1a1fc73383a
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 Oct 20, 2026.

Transparency log

Security for flahax 0.5.0

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.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for flahax-0.5.0.tar.gz

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 Oct 20, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

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