This is a tutorial version of the PRISMATIC workflow, demonstrating the end-to-end pipeline on a single 1 km × 1 km remote sensing tile. The full PRISMATIC pipeline generates initial conditions for FATES (an open source, dynamic vegetation model) using NEON (National Ecological Observatory Network) remote sensing and field data, but this tutorial is scoped to one tile at one site rather than multi-site, multi-year runs.
The pipeline combines LiDAR point cloud processing, hyperspectral imagery, and forest inventory data to estimate forest structure (e.g. canopy layers) and classify plant functional types (PFTs) to produce FATES cohort/patch files.
Workshop presented at the annual Ecological Society of America Meeting in July 2026 in Salt Lake City, UT by A Spiers.
- Sign up for CyVerse account: https://user.cyverse.org/signup
- Enroll in workshop: https://user.cyverse.org/workshops/214
- Wait for approval (subscriptions approved automatically each hour)
- Go to Discovery Environment: https://de.cyverse.org/dashboard
- Search "PRISMATIC Tutorial"
- Launch app
The tutorial is presented as a Jupyter notebook (prismatic_workshop.ipynb) that walks through each step sequentially for a single tile. Individual pipeline steps can also be run via the Python scripts in initialize/.
The environment (Python 3.10, conda-forge) includes PDAL, GDAL, geopandas, rasterio, scikit-learn, rpy2, hydra-core, and R packages (randomForest, caret, terra, sf). R helper scripts are called from Python via rpy2 using helper scripts (*_helper.R) in initialize/.
Each module contains one or more pipeline steps:
inventory.pykey functions:download_trait_table(),download_veg_structure_data(),prep_veg_structure()plots.pykey functions:download_polygons(),prep_polygons()lidar.pykey functions:download_lidar(),download_aop_bbox(),normalize_laz(),clip_lidar_by_plots()biomass.pykey functions:prep_biomass()lad.pykey functions:prep_lad()generates leaf area density profiles by size classhyperspectral.pykey functions:download_hyperspectral(),prep_aop_imagery(),extract_spectra_from_polygon(),train_pft_classifier()generate_initial_conditions.pykey functions:generate_initial_conditions()
download_functions.py— NEON AOP file download helpersallometry.py— biomass allometry equationsneon_aop_hyperspectral.py— hyperspectral data loading/manipulationapply_brdf_corrections.py— topographic/BRDF corrections for hyperspectral imageryplot_partition.py— spatial plot partitioning pipeline)
