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.
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 record
→ Versions 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).
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 dimensions —
palmwtctakes 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file palmwtc-0.4.1.tar.gz.
File metadata
- Download URL: palmwtc-0.4.1.tar.gz
- Upload date:
- Size: 2.9 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0b395951d57c4b8398a2869ffc8de6270aad6dac3f33fcd3fc6025ab29d75d86
|
|
| MD5 |
b0605648b8bf29121c11b7a4c1d05711
|
|
| BLAKE2b-256 |
059d9631cdb01894eedead9ae636f13cdff3cba4d3d833d0b8ae9d5adad461b0
|
Provenance
The following attestation bundles were made for palmwtc-0.4.1.tar.gz:
Publisher:
release.yml on adisapoetro/palmwtc
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
palmwtc-0.4.1.tar.gz -
Subject digest:
0b395951d57c4b8398a2869ffc8de6270aad6dac3f33fcd3fc6025ab29d75d86 - Sigstore transparency entry: 1396046635
- Sigstore integration time:
-
Permalink:
adisapoetro/palmwtc@44cddedfb6d299979bcd816b482fe03370dd4bcf -
Branch / Tag:
refs/tags/v0.4.1 - Owner: https://github.com/adisapoetro
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@44cddedfb6d299979bcd816b482fe03370dd4bcf -
Trigger Event:
push
-
Statement type:
File details
Details for the file palmwtc-0.4.1-py3-none-any.whl.
File metadata
- Download URL: palmwtc-0.4.1-py3-none-any.whl
- Upload date:
- Size: 2.9 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
60dd4404e6cc8e9ac695c4c629158b3c843bee35c390bc7faa40e7ecfecfd61d
|
|
| MD5 |
de0973788000b76bc213279775d879d8
|
|
| BLAKE2b-256 |
51ea52d7b737e4819f38e15be32519af42163ddb8976760d584dbb0a9228e261
|
Provenance
The following attestation bundles were made for palmwtc-0.4.1-py3-none-any.whl:
Publisher:
release.yml on adisapoetro/palmwtc
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
palmwtc-0.4.1-py3-none-any.whl -
Subject digest:
60dd4404e6cc8e9ac695c4c629158b3c843bee35c390bc7faa40e7ecfecfd61d - Sigstore transparency entry: 1396046659
- Sigstore integration time:
-
Permalink:
adisapoetro/palmwtc@44cddedfb6d299979bcd816b482fe03370dd4bcf -
Branch / Tag:
refs/tags/v0.4.1 - Owner: https://github.com/adisapoetro
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@44cddedfb6d299979bcd816b482fe03370dd4bcf -
Trigger Event:
push
-
Statement type: