Interactive Shiny application for exploration and QA/QC of eddy covariance data. Streamlines post-processing of eddy covariance datasets (e.g., after EddyPro) to detect and remove outliers, enforce physical ranges, and generate reproducible R code for AmeriFlux submissions.
Fluxtools is an independent project and is not affiliated with or endorsed by the AmeriFlux Network. “AmeriFlux” is a registered trademark of Lawrence Berkeley National Laboratory and is used here for identification purposes only.
If you use fluxtools in your workflow, please cite:
Key, K. (2025). fluxtools (version 0.5.0) [Computer software]. Zenodo. https://doi.org/10.5281/zenodo.15597159
Interactive scatter Choose TIMESTAMP_START (time) or any numeric variable for X; choose any numeric variable for Y. Drag a box or lasso to flag points
Multi-year support Upload up to ~1GB CSV (all years by default, or select one/more years)
±σ outlier highlighting Slider marks points beyond n standard deviations from a linear fit; click Select ±σ outliers to add them
Accumulate & undo Add selections to an accumulated list and remove them later if needed Use Apply removals to commit NA changes, and Reload original data to revert
Physical Range Module (PRM) Clamp variables to physically reasonable ranges (AmeriFlux Technical Note, Table A1) Out-of-range → NA. QC columns are ignored by PRM by default Undo PRM reverts only PRM-applied changes
Reproducible outputs Export a cleaned CSV (removed values set to NA) and an R script with the exact transformations If PRM was applied, a summary table, audit CSV, and a manual replay script are included
Dark/Light mode Toggle theme on the fly
# From CRAN
install.packages("fluxtools")
# Newest version from GitHub
library(devtools)
devtools::install_github("kesondrakey/fluxtools")
library(fluxtools)
# Launch the QA/QC Shiny app
run_fluxtools()
Timestamp Parsing & Time Zones
Interactive QC & Selection
Outlier Detection
Time Slider (Inside / Outside)
Manual Range Filters
Physical Range Module (PRM)
Example:
# View PRM rule table
get_prm_rules()
# Apply to all present families
res <- apply_prm(df)
res$data # clamped data
res$summary # per-column stats (min, max, n_replaced, pct_replaced)
# Apply to selected families
res2 <- apply_prm(df, include = c("SWC", "P"))
PRM ranges (and name) were sourced from Ameriflux
Code Generation & Copy-All
fluxtools_removal_script.R (replays removals)
If PRM was applied:
manual_prm_removed.R (cell-level replay)
Reload original data: restores the initial CSV to start over
browseVignettes("fluxtools")
# or
vignette("introduction", package = "fluxtools")
If you use fluxtools in publications, please cite:
Key, K. (2025). fluxtools (version 0.4.0) [Computer software]. Zenodo. https://doi.org/10.5281/zenodo.15597159
This package is free software, released under the GNU General Public License v3 (GPL-3). See the LICENSE file for details.
Fluxtools is an independent project and is not affiliated with or endorsed by the AmeriFlux Network. “AmeriFlux” is a registered trademark of Lawrence Berkeley National Laboratory and is used here for identification purposes only.
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.