Skip to main content

Automated whole-tree chamber workflow for oil-palm ecophysiology — QC, flux calculation, science validation.

Project description

palmwtc

Automated whole-tree chamber workflow for oil-palm ecophysiology.

PyPI Python License: MIT CI DOI

palmwtc is the data-processing and analysis pipeline for the first automated whole-tree chamber (WTC) sized to enclose individual oil palm trees, deployed at the LIBZ field site (Riau, Indonesia) and instrumented with LI-COR LI-850 gas analyzers. It transforms raw sensor cycles into validated CO₂ and H₂O fluxes, applies multi-stage quality control, and produces inputs for the XPalm digital-twin calibration pipeline.

What it does

raw chamber cycles  ──►  QC (rules + ML + breakpoints)  ──►  flux calculation  ──►  science validation
        │                                                                                  │
        └── 30-min weather + soil + tree biophysics ──┬───────────────────────────────────►┘
                                                       └── high-confidence calibration windows

End-to-end run on the bundled synthetic sample:

pip install palmwtc
palmwtc run            # uses bundled sample if no PALMWTC_DATA_DIR set

For your own data:

export PALMWTC_DATA_DIR=/path/to/your/chamber/data
palmwtc run --skip 022 025          # mirrors the original notebook-runner CLI
palmwtc run --notebooks             # papermill mode, produces HTML reports

Install

pip install palmwtc                 # core only
pip install 'palmwtc[ml]'           # + scikit-learn IsolationForest QC
pip install 'palmwtc[interactive]'  # + ipywidgets / anywidget for Jupyter dashboards
pip install 'palmwtc[gpu]'          # + torch (Apple-Silicon MPS / CUDA)
pip install 'palmwtc[all]'          # everything

Requires Python 3.11–3.13.

Library use

from palmwtc.config import DataPaths
from palmwtc.qc import QCProcessor
from palmwtc.flux import calculate_flux_cycles

paths = DataPaths.resolve()                     # layered: CLI → env → yaml → sample
qc_result = QCProcessor(paths).run("CO2_C1")
flux = calculate_flux_cycles(qc_result.data)

Full API reference: adisapoetro.github.io/palmwtc/api/

Citation

If you use palmwtc in scientific work, please cite the Zenodo DOI. The concept DOI 10.5281/zenodo.19680893 always resolves to the latest version; to cite a specific release, use its own version DOI (visible on the Zenodo recordVersions panel).

@software{adisaputro_palmwtc_2026,
  author  = {Adisaputro, Didi},
  title   = {palmwtc: Automated whole-tree chamber workflow for oil-palm ecophysiology},
  year    = {2026},
  version = {0.2.0},
  doi     = {10.5281/zenodo.19680893},
  url     = {https://github.com/adisapoetro/palmwtc},
}

See CITATION.cff for machine-readable metadata.

Background

Most ecosystem-scale flux measurements over oil-palm plantations use eddy covariance, which integrates over hectares of canopy and cannot resolve single-tree behaviour. palmwtc is built around a different instrument: an automated whole-tree chamber, sized and ventilated to enclose an individual mature oil palm, with an LI-COR LI-850 gas analyzer cycling open and closed on a programmed schedule. This is, to our knowledge, the first WTC deployment for oil palm — the WTC method was previously applied to temperate broadleaf species (Medlyn et al. 2016).

What does an automated whole-tree chamber look like?

The illustration below shows one concrete example — the LIBZ chamber from which palmwtc was originally developed (Riau, Indonesia; whole-tree chamber around an individual mature oil palm; aboveground sensor pole carrying sonic anemometers, temperature/humidity sensors, and LI-850 air inlets at five heights; underground TEROS-21 + Watermark sensors at five depths).

Example whole-tree flux chamber — the LIBZ deployment in Riau, Indonesia. Other implementations may differ in dimensions, tree species, sensor layout, and instrumentation.

This is one possible implementation, not a specification. palmwtc is a generic toolkit — it does not assume any one chamber design. Other deployments will differ in:

  • Chamber dimensionspalmwtc takes the chamber volume as a configuration input; chambers from a few cubic metres to large enclosures all work.
  • Tree species and growth form — the package is not oil-palm-specific; any plant that fits in a closed chamber can be processed.
  • Sensor pole design — the number of heights and the sensor mix (sonic anemometer, T/RH, PAR, gas-analyser inlets) varies per deployment.
  • Soil instrumentation — depth count and sensor brand (TEROS-21, Watermark, TDR, capacitance) varies per deployment.
  • Datalogger choice — Campbell Scientific is one common option; others work as long as the data files can be loaded.

palmwtc consumes whatever data your chamber produces and computes flux. The hardware, materials, and dimensions are out of scope for the package itself — they belong to your specific field setup.

Contributing

See CONTRIBUTING.md. Bug reports and feature requests: github.com/adisapoetro/palmwtc/issues.

License

MIT — see LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

palmwtc-0.3.0.tar.gz (2.9 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

palmwtc-0.3.0-py3-none-any.whl (2.9 MB view details)

Uploaded Python 3

File details

Details for the file palmwtc-0.3.0.tar.gz.

File metadata

  • Download URL: palmwtc-0.3.0.tar.gz
  • Upload date:
  • Size: 2.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for palmwtc-0.3.0.tar.gz
Algorithm Hash digest
SHA256 396adf7b10d6e284e890584c220847bbbc94b0e30df70007f81c3c79427aabc2
MD5 e17f42394383655af565931fe6a58b26
BLAKE2b-256 d37d3c8e42ee190a3f65b213f8c694a742ab3fb972567a901c734f6aa63eacbd

See more details on using hashes here.

File details

Details for the file palmwtc-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: palmwtc-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 2.9 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for palmwtc-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a2b9693535ee55dfe907b117fd15b801a86db9a836e191910e5184513c9a5f8a
MD5 f50646edcfa719a93b25e356d23c3b7c
BLAKE2b-256 083773006a7d50f32d09da62456eb68b45c6a48bf17a3d46f02a883ff7db2999

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page