High-performance Python library for Forest Inventory and Analysis (FIA) data analysis
Project description
The Python API for forest inventory data
Part of the FIAtools Python Ecosystem
pyFIA ·
gridFIA ·
pyFVS ·
askFIA
A high-performance Python library for analyzing USDA Forest Inventory and Analysis (FIA) data. Built on DuckDB and Polars for speed, with statistical methods that match EVALIDator exactly.
Why pyFIA?
| Feature | pyFIA | EVALIDator |
|---|---|---|
| Speed | 10-100x faster | Baseline |
| Interface | Python API | Web UI |
| Reproducibility | Code-based | Manual |
| Custom analysis | Unlimited | Limited options |
| Statistical validity | ✓ Exact match | ✓ Reference |
Quick Start
pip install pyfia
from pyfia import FIA, biomass, tpa, volume, area
with FIA("path/to/FIA_database.duckdb") as db:
db.clip_by_state(37) # North Carolina
db.clip_most_recent(eval_type="EXPVOL")
# Core estimates
trees = tpa(db, tree_domain="STATUSCD == 1")
carbon = biomass(db, by_species=True)
timber = volume(db, land_type="timber")
forest = area(db, land_type="forest")
Core Functions
| Function | Description | Example |
|---|---|---|
tpa() |
Trees per acre | tpa(db, tree_domain="DIA >= 5.0") |
biomass() |
Above/belowground biomass | biomass(db, by_species=True) |
volume() |
Merchantable volume (ft³) | volume(db, land_type="timber") |
area() |
Forest land area | area(db, grp_by="FORTYPCD") |
mortality() |
Annual mortality rates | mortality(db) |
growth() |
Net growth estimation | growth(db) |
Statistical Methods
pyFIA implements design-based estimation following Bechtold & Patterson (2005):
- Post-stratified estimation with proper variance calculation
- Ratio-of-means estimators for per-acre values
- EVALID-based filtering for statistically valid estimates
- Temporal methods: TI, annual, SMA, LMA, EMA
Installation Options
# Basic
pip install pyfia
# With spatial support
pip install pyfia[spatial]
# Development
git clone https://github.com/mihiarc/pyfia.git
cd pyfia && pip install -e .[dev]
Documentation
📖 Full docs: pyfia.fiatools.org
Integration with FIAtools
pyFIA works seamlessly with other tools in the ecosystem:
# Use pyFIA data with gridFIA for spatial analysis
from pyfia import FIA
from gridfia import GridFIA
with FIA("database.duckdb") as db:
species_list = db.get_species_codes()
api = GridFIA()
api.download_species(state="NC", species_codes=species_list)
The FIAtools Ecosystem
PyFIA is part of the FIAtools Python ecosystem - a unified suite of open-source tools for forest inventory applications:
| Tool | Purpose | Key Features |
|---|---|---|
| pyFIA | Survey & plot data | DuckDB backend, 10-100x faster than EVALIDator |
| gridFIA | Spatial raster analysis | 327 species at 30m resolution, Zarr storage |
| pyFVS | Growth simulation | Chapman-Richards curves, yield projections |
| askFIA | AI interface | Natural language queries for forest data |
Explore the full ecosystem at fiatools.org
Citation
@software{pyfia2025,
title = {pyFIA: A Python Library for Forest Inventory Applications},
author = {Mihiar, Christopher},
year = {2025},
url = {https://fiatools.org}
}
Affiliation
Developed in collaboration with USDA Forest Service Research & Development. pyFIA provides programmatic access to Forest Inventory and Analysis (FIA) data but is not part of the official FIA Program.
Built by Chris Mihiar · USDA Forest Service Southern Research Station
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 pyfia-1.2.0.tar.gz.
File metadata
- Download URL: pyfia-1.2.0.tar.gz
- Upload date:
- Size: 196.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5bb1d6218a0b9bbf43ea97024ebf5cd3a4240fcfc1b493cdd08a50998ea80db3
|
|
| MD5 |
371c9504004b500c3ad829cc3893a2ba
|
|
| BLAKE2b-256 |
94be00649418b6db14401e62d5c7e4a3b7318ac8e94ce9c3552fdf91e3f10888
|
File details
Details for the file pyfia-1.2.0-py3-none-any.whl.
File metadata
- Download URL: pyfia-1.2.0-py3-none-any.whl
- Upload date:
- Size: 233.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
55b4a94e5b15d23f27a0f1ca655719d4159ec1c7d432f416cca7e2239252f483
|
|
| MD5 |
34115943f1b2c0be097ee53dd777bc00
|
|
| BLAKE2b-256 |
cf2e23dd17a67026e4ac2e848a46b474f004c5a027e7d8f65faa8539c95e18e6
|