fvs-python 0.2.3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- fvs_python-0.2.3.dist-info/METADATA +254 -0
- fvs_python-0.2.3.dist-info/RECORD +149 -0
- fvs_python-0.2.3.dist-info/WHEEL +5 -0
- fvs_python-0.2.3.dist-info/licenses/LICENSE +21 -0
- fvs_python-0.2.3.dist-info/top_level.txt +1 -0
- pyfvs/__init__.py +107 -0
- pyfvs/bark_ratio.py +323 -0
- pyfvs/cfg/CFG_README.md +73 -0
- pyfvs/cfg/dbh_bounding_table_4_7_1_8.json +103 -0
- pyfvs/cfg/ecounit_coefficients_table_4_7_1_5.json +981 -0
- pyfvs/cfg/ecounit_coefficients_table_4_7_1_6.json +856 -0
- pyfvs/cfg/forest_type_mapping_table_4_7_1_4.json +38 -0
- pyfvs/cfg/fortype_coefficients_table_4_7_1_3.json +1183 -0
- pyfvs/cfg/functional_forms.yaml +111 -0
- pyfvs/cfg/growth_model_parameters.yaml +98 -0
- pyfvs/cfg/plant_values_table_4_7_1_7.json +15 -0
- pyfvs/cfg/site_index_transformation.yaml +113 -0
- pyfvs/cfg/sn_bark_ratio_coefficients.json +115 -0
- pyfvs/cfg/sn_crown_competition_factor.json +109 -0
- pyfvs/cfg/sn_crown_ratio_coefficients.json +956 -0
- pyfvs/cfg/sn_crown_width_coefficients.json +1664 -0
- pyfvs/cfg/sn_diameter_growth_coefficients.json +300 -0
- pyfvs/cfg/sn_height_diameter_coefficients.json +97 -0
- pyfvs/cfg/sn_large_tree_diameter_growth.json +191 -0
- pyfvs/cfg/sn_large_tree_height_growth.json +229 -0
- pyfvs/cfg/sn_large_tree_height_growth_coefficients.json +1187 -0
- pyfvs/cfg/sn_mortality_model.json +176 -0
- pyfvs/cfg/sn_regeneration_model.json +252 -0
- pyfvs/cfg/sn_relative_site_index.json +263 -0
- pyfvs/cfg/sn_small_tree_height_growth.json +879 -0
- pyfvs/cfg/sn_species_codes_table.json +728 -0
- pyfvs/cfg/sn_stand_density_index.json +398 -0
- pyfvs/cfg/species/ab_american_basswood.yaml +251 -0
- pyfvs/cfg/species/ae_american_elm.yaml +240 -0
- pyfvs/cfg/species/ah_american_hornbeam.yaml +250 -0
- pyfvs/cfg/species/ap_american_plum.yaml +251 -0
- pyfvs/cfg/species/as_american_sycamore.yaml +253 -0
- pyfvs/cfg/species/ba_black_ash.yaml +254 -0
- pyfvs/cfg/species/bb_basswood.yaml +254 -0
- pyfvs/cfg/species/bc_black_cherry.yaml +254 -0
- pyfvs/cfg/species/bd_sweet_birch.yaml +252 -0
- pyfvs/cfg/species/be_american_beech.yaml +251 -0
- pyfvs/cfg/species/bg_black_gum.yaml +252 -0
- pyfvs/cfg/species/bj_blue_jay.yaml +254 -0
- pyfvs/cfg/species/bk_sugar_maple.yaml +251 -0
- pyfvs/cfg/species/bn_butternut.yaml +252 -0
- pyfvs/cfg/species/bo_red_maple.yaml +255 -0
- pyfvs/cfg/species/bt_bigtooth_aspen.yaml +254 -0
- pyfvs/cfg/species/bu_buckeye.yaml +252 -0
- pyfvs/cfg/species/by_bald_cypress.yaml +255 -0
- pyfvs/cfg/species/ca_american_chestnut.yaml +254 -0
- pyfvs/cfg/species/cb_cucumber_tree.yaml +254 -0
- pyfvs/cfg/species/ck_virginia_pine.yaml +254 -0
- pyfvs/cfg/species/co_pond_cypress.yaml +251 -0
- pyfvs/cfg/species/ct_catalpa.yaml +251 -0
- pyfvs/cfg/species/cw_chestnut_oak.yaml +253 -0
- pyfvs/cfg/species/dw_dogwood.yaml +250 -0
- pyfvs/cfg/species/el_american_hornbeam.yaml +254 -0
- pyfvs/cfg/species/fm_flowering_dogwood.yaml +251 -0
- pyfvs/cfg/species/fr_fraser_fir.yaml +247 -0
- pyfvs/cfg/species/ga_green_ash.yaml +254 -0
- pyfvs/cfg/species/ha_hawthorn.yaml +252 -0
- pyfvs/cfg/species/hb_hornbeam.yaml +254 -0
- pyfvs/cfg/species/hh_dogwood.yaml +251 -0
- pyfvs/cfg/species/hi_hickory_species.yaml +252 -0
- pyfvs/cfg/species/hl_holly.yaml +254 -0
- pyfvs/cfg/species/hm_eastern_hemlock.yaml +246 -0
- pyfvs/cfg/species/hy_holly.yaml +252 -0
- pyfvs/cfg/species/ju_eastern_juniper.yaml +247 -0
- pyfvs/cfg/species/lb_loblolly_bay.yaml +254 -0
- pyfvs/cfg/species/lk_laurel_oak.yaml +254 -0
- pyfvs/cfg/species/ll_longleaf_pine.yaml +265 -0
- pyfvs/cfg/species/lo_silver_maple.yaml +252 -0
- pyfvs/cfg/species/lp_loblolly_pine.yaml +268 -0
- pyfvs/cfg/species/mb_mountain_birch.yaml +250 -0
- pyfvs/cfg/species/mg_magnolia.yaml +251 -0
- pyfvs/cfg/species/ml_maple_leaf.yaml +254 -0
- pyfvs/cfg/species/ms_maple_species.yaml +247 -0
- pyfvs/cfg/species/mv_magnolia_vine.yaml +254 -0
- pyfvs/cfg/species/oh_other_hardwood.yaml +231 -0
- pyfvs/cfg/species/os_other_softwood.yaml +232 -0
- pyfvs/cfg/species/ot_other_tree.yaml +210 -0
- pyfvs/cfg/species/ov_overcup_oak.yaml +254 -0
- pyfvs/cfg/species/pc_pond_cypress.yaml +254 -0
- pyfvs/cfg/species/pd_pitch_pine.yaml +245 -0
- pyfvs/cfg/species/pi_pine_species.yaml +246 -0
- pyfvs/cfg/species/po_american_beech.yaml +254 -0
- pyfvs/cfg/species/pp_pond_pine.yaml +246 -0
- pyfvs/cfg/species/ps_persimmon.yaml +251 -0
- pyfvs/cfg/species/pu_pond_pine.yaml +249 -0
- pyfvs/cfg/species/qs_flowering_dogwood.yaml +254 -0
- pyfvs/cfg/species/ra_red_ash.yaml +245 -0
- pyfvs/cfg/species/rd_redbud.yaml +251 -0
- pyfvs/cfg/species/rl_red_elm.yaml +240 -0
- pyfvs/cfg/species/rm_red_maple.yaml +256 -0
- pyfvs/cfg/species/ro_eastern_hemlock.yaml +255 -0
- pyfvs/cfg/species/sa_slash_pine.yaml +265 -0
- pyfvs/cfg/species/sb_sweet_birch.yaml +255 -0
- pyfvs/cfg/species/sd_sand_pine.yaml +251 -0
- pyfvs/cfg/species/sk_swamp_oak.yaml +253 -0
- pyfvs/cfg/species/sm_sugar_maple.yaml +252 -0
- pyfvs/cfg/species/sn_loblolly_pine.yaml +254 -0
- pyfvs/cfg/species/so_southern_oak.yaml +253 -0
- pyfvs/cfg/species/sp_shortleaf_pine.yaml +267 -0
- pyfvs/cfg/species/sr_spruce_pine.yaml +246 -0
- pyfvs/cfg/species/ss_basswood.yaml +251 -0
- pyfvs/cfg/species/su_sweetgum.yaml +255 -0
- pyfvs/cfg/species/sv_silver_maple.yaml +255 -0
- pyfvs/cfg/species/sy_sycamore.yaml +254 -0
- pyfvs/cfg/species/tm_tamarack.yaml +246 -0
- pyfvs/cfg/species/to_tulip_oak.yaml +254 -0
- pyfvs/cfg/species/ts_tulip_tree.yaml +253 -0
- pyfvs/cfg/species/vp_virginia_pine.yaml +248 -0
- pyfvs/cfg/species/wa_white_ash.yaml +254 -0
- pyfvs/cfg/species/we_white_elm.yaml +250 -0
- pyfvs/cfg/species/wi_willow.yaml +248 -0
- pyfvs/cfg/species/wk_water_oak.yaml +254 -0
- pyfvs/cfg/species/wn_walnut.yaml +254 -0
- pyfvs/cfg/species/wo_white_oak.yaml +256 -0
- pyfvs/cfg/species/wp_white_pine.yaml +250 -0
- pyfvs/cfg/species/wt_water_tupelo.yaml +254 -0
- pyfvs/cfg/species/yp_yellow_poplar.yaml +261 -0
- pyfvs/cfg/species_config.yaml +106 -0
- pyfvs/clark_profile.py +323 -0
- pyfvs/competition.py +332 -0
- pyfvs/config_loader.py +375 -0
- pyfvs/crown_competition_factor.py +464 -0
- pyfvs/crown_ratio.py +377 -0
- pyfvs/crown_width.py +512 -0
- pyfvs/data_export.py +356 -0
- pyfvs/ecological_unit.py +272 -0
- pyfvs/exceptions.py +86 -0
- pyfvs/fia_integration.py +876 -0
- pyfvs/forest_type.py +253 -0
- pyfvs/growth_plots.py +579 -0
- pyfvs/harvest.py +603 -0
- pyfvs/height_diameter.py +248 -0
- pyfvs/large_tree_height_growth.py +822 -0
- pyfvs/logging_config.py +213 -0
- pyfvs/main.py +99 -0
- pyfvs/mortality.py +431 -0
- pyfvs/parameters.py +121 -0
- pyfvs/simulation_engine.py +386 -0
- pyfvs/stand.py +1004 -0
- pyfvs/stand_metrics.py +436 -0
- pyfvs/stand_output.py +552 -0
- pyfvs/tree.py +756 -0
- pyfvs/validation.py +190 -0
- pyfvs/volume_library.py +761 -0
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: fvs-python
|
|
3
|
+
Version: 0.2.3
|
|
4
|
+
Summary: Python implementation of the Forest Vegetation Simulator - Part of the FIA Python Ecosystem
|
|
5
|
+
Author-email: Chris Mihiar <chris.mihiar@gmail.com>
|
|
6
|
+
Maintainer-email: Chris Mihiar <chris.mihiar@gmail.com>
|
|
7
|
+
License: MIT
|
|
8
|
+
Project-URL: Homepage, https://fiatools.org/tools/pyfvs/
|
|
9
|
+
Project-URL: Repository, https://github.com/mihiarc/pyfvs
|
|
10
|
+
Project-URL: Documentation, https://mihiarc.github.io/pyfvs/
|
|
11
|
+
Project-URL: Source Code, https://github.com/mihiarc/pyfvs
|
|
12
|
+
Project-URL: Bug Tracker, https://github.com/mihiarc/pyfvs/issues
|
|
13
|
+
Project-URL: Changelog, https://github.com/mihiarc/pyfvs/releases
|
|
14
|
+
Project-URL: FIA Ecosystem, https://fiatools.org
|
|
15
|
+
Keywords: fvs,forest-vegetation-simulator,growth-simulation,yield-tables,forestry,southern-pine,loblolly-pine,longleaf-pine,slash-pine,shortleaf-pine,chapman-richards,individual-tree-growth,stand-projection,timber-volume,fia,fiatools,forest-inventory,usda,forest-service
|
|
16
|
+
Classifier: Development Status :: 4 - Beta
|
|
17
|
+
Classifier: Intended Audience :: Science/Research
|
|
18
|
+
Classifier: Intended Audience :: Developers
|
|
19
|
+
Classifier: Topic :: Scientific/Engineering
|
|
20
|
+
Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
|
|
21
|
+
Classifier: Topic :: Scientific/Engineering :: Information Analysis
|
|
22
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
23
|
+
Classifier: Operating System :: OS Independent
|
|
24
|
+
Classifier: Natural Language :: English
|
|
25
|
+
Classifier: Environment :: Console
|
|
26
|
+
Classifier: Programming Language :: Python :: 3
|
|
27
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
28
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
29
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
30
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
31
|
+
Requires-Python: >=3.8
|
|
32
|
+
Description-Content-Type: text/markdown
|
|
33
|
+
License-File: LICENSE
|
|
34
|
+
Requires-Dist: numpy>=1.21.0
|
|
35
|
+
Requires-Dist: pandas>=1.3.0
|
|
36
|
+
Requires-Dist: scipy>=1.7.0
|
|
37
|
+
Requires-Dist: matplotlib>=3.4.0
|
|
38
|
+
Requires-Dist: seaborn>=0.11.0
|
|
39
|
+
Requires-Dist: pyyaml>=6.0.0
|
|
40
|
+
Requires-Dist: pydantic>=2.5.0
|
|
41
|
+
Requires-Dist: tomli>=2.0.0; python_version < "3.11"
|
|
42
|
+
Requires-Dist: tomli-w>=1.0.0
|
|
43
|
+
Requires-Dist: tabulate>=0.9.0
|
|
44
|
+
Requires-Dist: openpyxl>=3.0.0
|
|
45
|
+
Requires-Dist: rich>=12.0.0
|
|
46
|
+
Provides-Extra: dev
|
|
47
|
+
Requires-Dist: pytest>=6.0.0; extra == "dev"
|
|
48
|
+
Requires-Dist: pytest-cov>=3.0.0; extra == "dev"
|
|
49
|
+
Requires-Dist: black>=22.0.0; extra == "dev"
|
|
50
|
+
Requires-Dist: flake8>=4.0.0; extra == "dev"
|
|
51
|
+
Requires-Dist: mypy>=0.900; extra == "dev"
|
|
52
|
+
Requires-Dist: pre-commit>=2.15.0; extra == "dev"
|
|
53
|
+
Requires-Dist: mkdocs>=1.6.0; extra == "dev"
|
|
54
|
+
Requires-Dist: mkdocs-material>=9.5.0; extra == "dev"
|
|
55
|
+
Requires-Dist: mkdocstrings[python]>=0.24.0; extra == "dev"
|
|
56
|
+
Provides-Extra: test
|
|
57
|
+
Requires-Dist: pytest>=6.0.0; extra == "test"
|
|
58
|
+
Requires-Dist: pytest-cov>=3.0.0; extra == "test"
|
|
59
|
+
Requires-Dist: pytest-xdist>=2.0.0; extra == "test"
|
|
60
|
+
Provides-Extra: docs
|
|
61
|
+
Requires-Dist: mkdocs>=1.6.0; extra == "docs"
|
|
62
|
+
Requires-Dist: mkdocs-material>=9.5.0; extra == "docs"
|
|
63
|
+
Requires-Dist: mkdocstrings[python]>=0.24.0; extra == "docs"
|
|
64
|
+
Requires-Dist: pymdown-extensions>=10.7; extra == "docs"
|
|
65
|
+
Dynamic: license-file
|
|
66
|
+
|
|
67
|
+
<div align="center">
|
|
68
|
+
<a href="https://fiatools.org"><img src="https://fiatools.org/logos/pyfvs_logo.png" alt="pyFVS" width="400"></a>
|
|
69
|
+
|
|
70
|
+
<p><strong>Forest growth modeling in Python</strong></p>
|
|
71
|
+
|
|
72
|
+
<p>
|
|
73
|
+
<a href="https://fiatools.org"><img src="https://img.shields.io/badge/FIAtools-Ecosystem-2E7D32" alt="FIAtools Ecosystem"></a>
|
|
74
|
+
<a href="https://pypi.org/project/pyfvs-fia/"><img src="https://img.shields.io/pypi/v/pyfvs-fia?color=006D6D&label=PyPI" alt="PyPI"></a>
|
|
75
|
+
<a href="https://mihiarc.github.io/pyfvs/"><img src="https://img.shields.io/badge/docs-GitHub%20Pages-006D6D" alt="Documentation"></a>
|
|
76
|
+
<a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/License-MIT-006D6D" alt="License: MIT"></a>
|
|
77
|
+
<a href="https://www.python.org/downloads/"><img src="https://img.shields.io/badge/python-3.9+-006D6D" alt="Python 3.9+"></a>
|
|
78
|
+
</p>
|
|
79
|
+
|
|
80
|
+
<p>
|
|
81
|
+
<strong>Part of the <a href="https://fiatools.org">FIAtools Python Ecosystem</a></strong><br>
|
|
82
|
+
<a href="https://fiatools.org/tools/pyfia/">pyFIA</a> ·
|
|
83
|
+
<a href="https://fiatools.org/tools/gridfia/">gridFIA</a> ·
|
|
84
|
+
<a href="https://fiatools.org/tools/pyfvs/">pyFVS</a> ·
|
|
85
|
+
<a href="https://fiatools.org/tools/askfia/">askFIA</a>
|
|
86
|
+
</p>
|
|
87
|
+
</div>
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
A Python implementation of the Forest Vegetation Simulator (FVS) Southern variant. Simulate growth and yield for loblolly, shortleaf, longleaf, and slash pine from age 0 to 50 years.
|
|
92
|
+
|
|
93
|
+
## Supported Species
|
|
94
|
+
|
|
95
|
+
| Code | Species | Scientific Name |
|
|
96
|
+
|------|---------|-----------------|
|
|
97
|
+
| LP | Loblolly Pine | *Pinus taeda* |
|
|
98
|
+
| SP | Shortleaf Pine | *Pinus echinata* |
|
|
99
|
+
| LL | Longleaf Pine | *Pinus palustris* |
|
|
100
|
+
| SA | Slash Pine | *Pinus elliottii* |
|
|
101
|
+
|
|
102
|
+
## Quick Start
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
pip install pyfvs
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
```python
|
|
109
|
+
from pyfvs import Stand
|
|
110
|
+
|
|
111
|
+
# Initialize a planted stand
|
|
112
|
+
stand = Stand.initialize_planted(
|
|
113
|
+
species="LP",
|
|
114
|
+
trees_per_acre=500,
|
|
115
|
+
site_index=70
|
|
116
|
+
)
|
|
117
|
+
|
|
118
|
+
# Simulate 50 years of growth
|
|
119
|
+
stand.grow(years=50)
|
|
120
|
+
|
|
121
|
+
# Get results
|
|
122
|
+
metrics = stand.get_metrics()
|
|
123
|
+
print(f"Final volume: {metrics['volume']:.0f} ft³/acre")
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
## Growth Models
|
|
127
|
+
|
|
128
|
+
pyFVS implements individual tree growth models from FVS documentation:
|
|
129
|
+
|
|
130
|
+
### Height-Diameter (Curtis-Arney)
|
|
131
|
+
```
|
|
132
|
+
height = 4.5 + p2 × exp(-p3 × DBH^p4)
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### Large Tree Diameter Growth
|
|
136
|
+
```
|
|
137
|
+
ln(DDS) = β₁ + β₂×ln(DBH) + β₃×DBH² + β₄×ln(CR) + β₅×RH + β₆×SI + ...
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### Small Tree Height Growth (Chapman-Richards)
|
|
141
|
+
```
|
|
142
|
+
height = c1 × SI^c2 × (1 - exp(c3 × age))^(c4 × SI^c5)
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
## Architecture
|
|
146
|
+
|
|
147
|
+
```
|
|
148
|
+
Tree Initial State
|
|
149
|
+
│
|
|
150
|
+
▼
|
|
151
|
+
DBH >= 3.0? ──No──► Small Tree Model
|
|
152
|
+
│ │
|
|
153
|
+
Yes ▼
|
|
154
|
+
│ Height Growth
|
|
155
|
+
▼ │
|
|
156
|
+
Large Tree Model ▼
|
|
157
|
+
│ Height-Diameter
|
|
158
|
+
▼ │
|
|
159
|
+
Predict ln(DDS) ▼
|
|
160
|
+
│ Update DBH
|
|
161
|
+
▼ │
|
|
162
|
+
Calculate DBH Growth │
|
|
163
|
+
│ │
|
|
164
|
+
└────────┬───────────┘
|
|
165
|
+
▼
|
|
166
|
+
Update Crown Ratio
|
|
167
|
+
│
|
|
168
|
+
▼
|
|
169
|
+
Crown Competition
|
|
170
|
+
│
|
|
171
|
+
▼
|
|
172
|
+
Updated Tree State
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
## Configuration
|
|
176
|
+
|
|
177
|
+
Species parameters are stored in YAML configuration files:
|
|
178
|
+
|
|
179
|
+
```yaml
|
|
180
|
+
# cfg/species/lp_loblolly_pine.yaml
|
|
181
|
+
species_code: "LP"
|
|
182
|
+
common_name: "Loblolly Pine"
|
|
183
|
+
height_diameter:
|
|
184
|
+
p2: 243.860648
|
|
185
|
+
p3: 4.28460566
|
|
186
|
+
p4: -0.47130185
|
|
187
|
+
bark_ratio:
|
|
188
|
+
b1: -0.48140
|
|
189
|
+
b2: 0.91413
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
## Output
|
|
193
|
+
|
|
194
|
+
pyFVS generates yield tables with standard forest metrics:
|
|
195
|
+
|
|
196
|
+
| Age | TPA | QMD | Height | BA | Volume |
|
|
197
|
+
|-----|-----|-----|--------|-----|--------|
|
|
198
|
+
| 0 | 500 | 0.5 | 1.0 | 0.7 | 0 |
|
|
199
|
+
| 10 | 485 | 4.2 | 28.5 | 47.2 | 892 |
|
|
200
|
+
| 20 | 420 | 7.8 | 52.1 | 139.8 | 3,241 |
|
|
201
|
+
| 30 | 310 | 10.4 | 68.3 | 182.5 | 5,128 |
|
|
202
|
+
| ... | ... | ... | ... | ... | ... |
|
|
203
|
+
|
|
204
|
+
## Integration with pyFIA
|
|
205
|
+
|
|
206
|
+
```python
|
|
207
|
+
from pyfia import FIA
|
|
208
|
+
from pyfvs import Stand
|
|
209
|
+
|
|
210
|
+
# Get current stand conditions from FIA
|
|
211
|
+
with FIA("database.duckdb") as db:
|
|
212
|
+
db.clip_by_state(37)
|
|
213
|
+
stand_data = db.get_stand_summary(plot_id="123")
|
|
214
|
+
|
|
215
|
+
# Initialize pyFVS with FIA data
|
|
216
|
+
stand = Stand.from_fia_data(stand_data)
|
|
217
|
+
stand.grow(years=30)
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
## The FIAtools Ecosystem
|
|
221
|
+
|
|
222
|
+
pyFVS is part of the [FIAtools Python ecosystem](https://fiatools.org) - a unified suite of open-source tools for forest inventory analysis:
|
|
223
|
+
|
|
224
|
+
| Tool | Purpose | Key Features |
|
|
225
|
+
|------|---------|--------------|
|
|
226
|
+
| [**pyFIA**](https://fiatools.org) | Survey & plot data | DuckDB backend, 10-100x faster than EVALIDator |
|
|
227
|
+
| [**gridFIA**](https://fiatools.org) | Spatial raster analysis | 327 species at 30m resolution, Zarr storage |
|
|
228
|
+
| [**pyFVS**](https://fiatools.org) | Growth simulation | Chapman-Richards curves, yield projections |
|
|
229
|
+
| [**askFIA**](https://fiatools.org) | AI interface | Natural language queries for forest data |
|
|
230
|
+
|
|
231
|
+
**[Explore the full ecosystem at fiatools.org](https://fiatools.org)**
|
|
232
|
+
|
|
233
|
+
## References
|
|
234
|
+
|
|
235
|
+
- [FVS Southern Variant Documentation](https://www.fs.usda.gov/fmsc/fvs/)
|
|
236
|
+
- Bechtold & Patterson (2005) "The Enhanced Forest Inventory and Analysis Program"
|
|
237
|
+
|
|
238
|
+
## Citation
|
|
239
|
+
|
|
240
|
+
```bibtex
|
|
241
|
+
@software{pyfvs2025,
|
|
242
|
+
title = {pyFVS: Python Implementation of the Forest Vegetation Simulator},
|
|
243
|
+
author = {Mihiar, Christopher},
|
|
244
|
+
year = {2025},
|
|
245
|
+
url = {https://fiatools.org}
|
|
246
|
+
}
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
---
|
|
250
|
+
|
|
251
|
+
<div align="center">
|
|
252
|
+
<a href="https://fiatools.org"><strong>fiatools.org</strong></a> · Python Ecosystem for Forest Inventory Analysis<br>
|
|
253
|
+
<sub>Built by <a href="https://github.com/mihiarc">Chris Mihiar</a> · USDA Forest Service Southern Research Station</sub>
|
|
254
|
+
</div>
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
fvs_python-0.2.3.dist-info/licenses/LICENSE,sha256=xREdKeDxr7V6uqkcnwEw7qiQB2e5XChJtL8LEuw8uMk,1069
|
|
2
|
+
pyfvs/__init__.py,sha256=ZBP_9JFzyiNo-7vwCQm-3ZzLSUIlTOLZvV5RAaj2AXg,3743
|
|
3
|
+
pyfvs/bark_ratio.py,sha256=ankZILtZBJnCtMT25f79Up1P5Qj132A3_3Pbor4i8jg,9911
|
|
4
|
+
pyfvs/clark_profile.py,sha256=j7VG2sntF0PDzaGxh6Zptej3rn9jmsFhCYCyZ6QIuRw,10469
|
|
5
|
+
pyfvs/competition.py,sha256=TzYt40uIcrF3alAqmLy-mgOeJS-n-C5FxqQI1AYmGUs,10616
|
|
6
|
+
pyfvs/config_loader.py,sha256=YVOUAsSsxc5L8yaQXR3JmkDxad6pYk-m0Mz8CNvVDOo,13978
|
|
7
|
+
pyfvs/crown_competition_factor.py,sha256=o-XIuksmZ9VKXTQbfOFGhGBgBcm-te-XF90xhYh0B6o,16448
|
|
8
|
+
pyfvs/crown_ratio.py,sha256=aLle2HHqTImQzR_ySuCMuVStXRSE7ALqrYwHKDcbT-M,13674
|
|
9
|
+
pyfvs/crown_width.py,sha256=0i5UWrXswLMGYWRjXpt8Nxd4M_Ru1pP9LiYyMS9lcaw,18796
|
|
10
|
+
pyfvs/data_export.py,sha256=_ec6-k295GfYmnizzGR5fXVDHCoH7uNQ4VkeActaQ98,13941
|
|
11
|
+
pyfvs/ecological_unit.py,sha256=_FVX4cYE1uwGUHpywd98BtyQ-XgA6Dpkkv6UgIRFIvk,10577
|
|
12
|
+
pyfvs/exceptions.py,sha256=zrVB_PW60rb5G798bgovws2wG8OBBVLTFg1eeICzfFE,2701
|
|
13
|
+
pyfvs/fia_integration.py,sha256=NnVxTMv7apG59J4pQQ4oKx5M3Mt_J7u0zI1hcRPuSsc,27391
|
|
14
|
+
pyfvs/forest_type.py,sha256=TSElY7Samh5xBa2O_qY9AuJd3NyzHnSvmNZuESxCyrc,10027
|
|
15
|
+
pyfvs/growth_plots.py,sha256=_jncUzHklHI5NgBkNNKQ9AXjxAdHxwI2EaJiFvag0P4,19774
|
|
16
|
+
pyfvs/harvest.py,sha256=f_CDB95PkhStLW7AjGrFe2zBI5ww_wyTeoFx4U26F4g,21121
|
|
17
|
+
pyfvs/height_diameter.py,sha256=9z5FrEVdiq7UztXOJ0mg-E8xBlnUfS_FJ9vx78qbzSk,8140
|
|
18
|
+
pyfvs/large_tree_height_growth.py,sha256=KdlMVuqm2-MVnbZMV_dLEDueKWunHqTVB_D8dVFnktc,33174
|
|
19
|
+
pyfvs/logging_config.py,sha256=b4QEwMpN8f4qnJYbBSmk6taKAZRDY2kpv5-WdEjO_ww,6868
|
|
20
|
+
pyfvs/main.py,sha256=uIMtdtWjFS0Uu6UeL7O3x41_o3W3ysmhvzqf8bCPX3Q,3051
|
|
21
|
+
pyfvs/mortality.py,sha256=fQ5RrCCLZrdQp75B8E1NZMGOeAzFOKbf_brliC5LAgI,14045
|
|
22
|
+
pyfvs/parameters.py,sha256=7nNGkaZT_2ZtilDIt_MNsY9cCds8XcYlf460Tk1CAtQ,3812
|
|
23
|
+
pyfvs/simulation_engine.py,sha256=OKfrTHkkQFqkd5q5S3mY6SZMgg72T4V3xc4vLwdm5bo,14353
|
|
24
|
+
pyfvs/stand.py,sha256=2qXJFdhYATKi774iLFCCEV0xrypS_XfD6ilpLuOGuWE,36899
|
|
25
|
+
pyfvs/stand_metrics.py,sha256=kceZoeCIWeYBqOXfdf9MvSNKSdIFoAMpb-S_0hA38Rc,13406
|
|
26
|
+
pyfvs/stand_output.py,sha256=Cp6lsPgwsiHWniDlv4jgrYvh8CESL4OHLSLa72fc9_M,18627
|
|
27
|
+
pyfvs/tree.py,sha256=i0vsIjUvqjSkEWpkAm3qntZvb8dmROlO9VrKp7YSQJk,32896
|
|
28
|
+
pyfvs/validation.py,sha256=1JDRcwZSYBtio6K9D5PXqVpHA8pwcGfzua6XnUOYAP4,7516
|
|
29
|
+
pyfvs/volume_library.py,sha256=ApiU49Nbf09vAYKkx7qwcjov0dai9UMH_8BX9YEaCsQ,29995
|
|
30
|
+
pyfvs/cfg/CFG_README.md,sha256=NaoWdBYwTofPb2PYSWveOZXn4GfVl97oHV8Z7Yc1xYE,2353
|
|
31
|
+
pyfvs/cfg/dbh_bounding_table_4_7_1_8.json,sha256=qHjg5rgyL6SoiZwfdoFbfgNkU9LGU-6B9QdZ9nKlkn0,4647
|
|
32
|
+
pyfvs/cfg/ecounit_coefficients_table_4_7_1_5.json,sha256=on9uoQRZNVCv8h9IxdLJKAmAy2OfH-vL1SOflHpVPFc,20600
|
|
33
|
+
pyfvs/cfg/ecounit_coefficients_table_4_7_1_6.json,sha256=7UtahS5jn0K_PoYn7pLUbyjPePYVJnrdZTNkbbxJzCM,17037
|
|
34
|
+
pyfvs/cfg/forest_type_mapping_table_4_7_1_4.json,sha256=m_71AfoAgsZFGz_qZqJUMX-AEEDxN5Vz6ouC_hIqzCU,1260
|
|
35
|
+
pyfvs/cfg/fortype_coefficients_table_4_7_1_3.json,sha256=y07O-G7gLPFaB5npDix-LOPj6aL8hLqGtgIWLZu0SB8,26158
|
|
36
|
+
pyfvs/cfg/functional_forms.yaml,sha256=Ysvsm5Md_yM2q7rPmfxfALl1jMGrq2fscxdUqdOIJAA,3851
|
|
37
|
+
pyfvs/cfg/growth_model_parameters.yaml,sha256=ckLnEVo4z6iWJSflArrfJYRojjOBG3PuWowghjiUp9A,2721
|
|
38
|
+
pyfvs/cfg/plant_values_table_4_7_1_7.json,sha256=7l8EP_k2tuMcpDv4TTokSWWjMI81w1OI4SHtj46wL1w,485
|
|
39
|
+
pyfvs/cfg/site_index_transformation.yaml,sha256=N_2fLiIYcMUJ_xJUbPp6--6MUcsYwfvFMC4FCQaal0A,3174
|
|
40
|
+
pyfvs/cfg/sn_bark_ratio_coefficients.json,sha256=fljbtKCWuiUL5-vsPou-SxXxQsOySjSiIriaoQd6Lqs,5143
|
|
41
|
+
pyfvs/cfg/sn_crown_competition_factor.json,sha256=ZeHT1gZs5ukRxe3DbPQ53Xufl9RDIUvYtfrUwWrYQJc,5724
|
|
42
|
+
pyfvs/cfg/sn_crown_ratio_coefficients.json,sha256=VytgNL6iCIkYgziQVDBzrLWKfvJabukMeSJTDoAonmo,19000
|
|
43
|
+
pyfvs/cfg/sn_crown_width_coefficients.json,sha256=hMuzjV_McLRG3F9vJ3mbRUMHasqxAjGiTdx9BwAIsT8,33507
|
|
44
|
+
pyfvs/cfg/sn_diameter_growth_coefficients.json,sha256=0ez9SCWAwTzGbdBJf1d_mVhKNqcGXz7h__TgukZlU7I,10624
|
|
45
|
+
pyfvs/cfg/sn_height_diameter_coefficients.json,sha256=RR1P_IKgjwnPbhvzi08xZobNsFBNk4W4N-7xMXMpOLk,11404
|
|
46
|
+
pyfvs/cfg/sn_large_tree_diameter_growth.json,sha256=9BZBj0Mq7q7d3kZRnkwYvdghhKhbn7YXgZrTJNz2BlI,6067
|
|
47
|
+
pyfvs/cfg/sn_large_tree_height_growth.json,sha256=opC3mLmWuxPihhBYYYr6Nx4ZZHWHaN4KxJ4b6cfm7G4,11458
|
|
48
|
+
pyfvs/cfg/sn_large_tree_height_growth_coefficients.json,sha256=HZipNs-i7aljam3zuNbSauKcs02X178eVCeM6EF3vlo,24434
|
|
49
|
+
pyfvs/cfg/sn_mortality_model.json,sha256=iJBt_vqycYuT8qjonCnfuL_Jskx-wg4CsryNWj61M8c,9754
|
|
50
|
+
pyfvs/cfg/sn_regeneration_model.json,sha256=sKMqCy-bozrd8t0BFzxNmv5Em2NIm22q0qLCpgnPLMw,25505
|
|
51
|
+
pyfvs/cfg/sn_relative_site_index.json,sha256=QyfcSS3Z9a3ZPj04ZV5Y98xFyozuHllL422yXeF9KsM,13294
|
|
52
|
+
pyfvs/cfg/sn_small_tree_height_growth.json,sha256=qJtzgaT79_xXO8dnpiGQ9JnGUIyGO1QR-GXXcFd0ETg,18590
|
|
53
|
+
pyfvs/cfg/sn_species_codes_table.json,sha256=765fv4KsCmRPu3aEcVyD_1__DH_0779HAZqf6kyz4P4,17729
|
|
54
|
+
pyfvs/cfg/sn_stand_density_index.json,sha256=UDQ6BT_b12jh0hdK7XV97QxRn7NmWk0T_38NiRDIA-c,8770
|
|
55
|
+
pyfvs/cfg/species_config.yaml,sha256=5zoCdwyhAUBv3cYooWKPZpF34f_v-M-EJ834tt80XBk,2592
|
|
56
|
+
pyfvs/cfg/species/ab_american_basswood.yaml,sha256=FceDBTFQDD4_O1yT-IZ56RZY-s2wYnzRzmVSo2aJv3I,4917
|
|
57
|
+
pyfvs/cfg/species/ae_american_elm.yaml,sha256=SwSM0t3BKsBkVyX4VdrvQvRjkWyYtjc_7yFYBURD0HU,4589
|
|
58
|
+
pyfvs/cfg/species/ah_american_hornbeam.yaml,sha256=cFnbGPRnJcghdgcTUZs0DjG7tzayHhENFjBijMaRg9M,4883
|
|
59
|
+
pyfvs/cfg/species/ap_american_plum.yaml,sha256=kLudPXqYgCiiRX4ocLQ63xJJTWygpQaEDKaBiriWYRw,4906
|
|
60
|
+
pyfvs/cfg/species/as_american_sycamore.yaml,sha256=Ds67d2BNfxX1q8WBfrMDZ18zwFRTSqOdMF3c5OiKkQw,4925
|
|
61
|
+
pyfvs/cfg/species/ba_black_ash.yaml,sha256=-dz8A1BV-fO-gM6UWF85CGkB5YqE9itLJLPV6fNI6Wo,4954
|
|
62
|
+
pyfvs/cfg/species/bb_basswood.yaml,sha256=iI6EvEpOTZB712US-AF7jJC8qcN4X3CHEuK1rjM5BDc,4951
|
|
63
|
+
pyfvs/cfg/species/bc_black_cherry.yaml,sha256=YEdbEGOklD2pxjQeFDUvnR2w-q6SauX5Xim28kpoUvg,4958
|
|
64
|
+
pyfvs/cfg/species/bd_sweet_birch.yaml,sha256=8zUdGFwdm9Zu1NHJzXdP5Nic_L0yNdokgGfYURzthBo,4936
|
|
65
|
+
pyfvs/cfg/species/be_american_beech.yaml,sha256=PvUKPFS4XAHnL2iQuQo7YStPvQrs1AlACuaDMNUupqM,4921
|
|
66
|
+
pyfvs/cfg/species/bg_black_gum.yaml,sha256=a50BwdFuG58L0glVvUHJh8camCP1yeozBufdEc1NZSg,4942
|
|
67
|
+
pyfvs/cfg/species/bj_blue_jay.yaml,sha256=ZImAgr225yA0Es9t7NxaOuC0haM3pcvSXT5WXsAYa-4,4965
|
|
68
|
+
pyfvs/cfg/species/bk_sugar_maple.yaml,sha256=zOhflPjh_bxa2oJY2bkqCiurkKbmDwFxoGqBhEDMxyU,4906
|
|
69
|
+
pyfvs/cfg/species/bn_butternut.yaml,sha256=mMUKciy9wr0IQ4IgrSF2aWWBfsZ07P5UYhLRQSqFxvo,4926
|
|
70
|
+
pyfvs/cfg/species/bo_red_maple.yaml,sha256=MHYngA-XO2DDEVQ9jAarT7HVXe9A-FCswnY28yWosC4,5003
|
|
71
|
+
pyfvs/cfg/species/bt_bigtooth_aspen.yaml,sha256=81h0MKX87-2yzkW4aXcdOpTgRZ7DHOwfb6SrAoW5fOk,4953
|
|
72
|
+
pyfvs/cfg/species/bu_buckeye.yaml,sha256=rfKpoIlqLnL1P4G8vQ8DE4PoztyxOiVIv4WxOrDkcB4,4878
|
|
73
|
+
pyfvs/cfg/species/by_bald_cypress.yaml,sha256=aors0Uby4XAec8TYSdZsTw-IHeXacIUC5TcNmPVEQJE,4977
|
|
74
|
+
pyfvs/cfg/species/ca_american_chestnut.yaml,sha256=mOGBl0lsMeK2LwmgrDKX__JVE4Zk4SnqmhgAhYK0Dbo,4942
|
|
75
|
+
pyfvs/cfg/species/cb_cucumber_tree.yaml,sha256=J9C5uM5VOOCZpBo1xGUhYvrUwxFwIooDZWBs1QlIjFI,4972
|
|
76
|
+
pyfvs/cfg/species/ck_virginia_pine.yaml,sha256=661_JLhTrzUzXD0BmlCXyxyBRNDFJzkzOX3TDPmguFs,4974
|
|
77
|
+
pyfvs/cfg/species/co_pond_cypress.yaml,sha256=S0vIdlDyvou6OOasIZtpooY0WCuZGjflfkdxh1lsXjM,4903
|
|
78
|
+
pyfvs/cfg/species/ct_catalpa.yaml,sha256=pfCbdyl9sH67xvsNZOC2uCq-OsTERnpaX2awXGL43YM,4885
|
|
79
|
+
pyfvs/cfg/species/cw_chestnut_oak.yaml,sha256=NpdzDdpDHekzX59aZHGQyAnECfAH_bMHKQ5GY4M8LKQ,4918
|
|
80
|
+
pyfvs/cfg/species/dw_dogwood.yaml,sha256=VbH9j_Y_qCpsaq3CzCUvrfxDAsBtjbRPasONvvCNldU,4875
|
|
81
|
+
pyfvs/cfg/species/el_american_hornbeam.yaml,sha256=KTMvaVXlz0t0_jeFy7ebhr2mGQIuswqIE-R_UJD-FBk,4975
|
|
82
|
+
pyfvs/cfg/species/fm_flowering_dogwood.yaml,sha256=o5C6C31kcqOfUAe75WcxAhCjOjIlDyrLA83R_X-vUJg,4882
|
|
83
|
+
pyfvs/cfg/species/fr_fraser_fir.yaml,sha256=MI3P7U0rsw3R1FXt-E-BRuI9uKSDHHHl9sau6Lj92mU,4775
|
|
84
|
+
pyfvs/cfg/species/ga_green_ash.yaml,sha256=IUBq2uaxXekuhCgDaulVGnP1e9YOpk3l_lnLSuGFKtw,4963
|
|
85
|
+
pyfvs/cfg/species/ha_hawthorn.yaml,sha256=X9cz44StfRLP7zCoJVhNHdv0NYaMffm2pkm1d4Bx010,4859
|
|
86
|
+
pyfvs/cfg/species/hb_hornbeam.yaml,sha256=pqstMZQcALXvapcYVEy-VUn1lg-r5fDRZOCjngA8ybE,4971
|
|
87
|
+
pyfvs/cfg/species/hh_dogwood.yaml,sha256=S5fDBDH8Ycd0YGY7zJiAzmdAxwVWkxosdLi7OrGu4Ic,4897
|
|
88
|
+
pyfvs/cfg/species/hi_hickory_species.yaml,sha256=mJQhLxFGS_EpdI4B07TvBH6gqXgV8xoUblmJlzGxmZs,4937
|
|
89
|
+
pyfvs/cfg/species/hl_holly.yaml,sha256=IK4o14lWdtd5llsWKX_q0A7Nnu5Fag5K4Gj-pMt_HN0,4940
|
|
90
|
+
pyfvs/cfg/species/hm_eastern_hemlock.yaml,sha256=mk3fT-S-wPAy99lf6ca5LSgAABoLg4lIH-kT6X6uiko,4771
|
|
91
|
+
pyfvs/cfg/species/hy_holly.yaml,sha256=oqnqXOY2EhguYwRXCGvhhE0hD-blqFsiTgb0h2rPRnM,4927
|
|
92
|
+
pyfvs/cfg/species/ju_eastern_juniper.yaml,sha256=60m-tlSogC7OYsaGnWXOU8aTUJSlaw0D-6zp0XRXi7o,4823
|
|
93
|
+
pyfvs/cfg/species/lb_loblolly_bay.yaml,sha256=DWJbxTqNMVpDPCaelsPBHlImqbNLbvHRatOiwSCFPNE,4916
|
|
94
|
+
pyfvs/cfg/species/lk_laurel_oak.yaml,sha256=_1RKNfaNJxR2DqxADEJpwjXEyaW2x3yn3X3xaptjvdY,4939
|
|
95
|
+
pyfvs/cfg/species/ll_longleaf_pine.yaml,sha256=X0vEZdGGmKqh4Fec9YY70ZdUvcdv-6tiBOGlYzAlipE,5674
|
|
96
|
+
pyfvs/cfg/species/lo_silver_maple.yaml,sha256=LF9oYP2n_Uwbi0hPDAk7rb-fN-T8uCa-9RxIMQqKF38,4876
|
|
97
|
+
pyfvs/cfg/species/lp_loblolly_pine.yaml,sha256=KG8UuKxPg0tMzltOoSaZDzd3C2mgpckf2nTOqhLMOcc,5922
|
|
98
|
+
pyfvs/cfg/species/mb_mountain_birch.yaml,sha256=Utn1I0r-XPY-lEn8KFYxLsGQ5cOZmqBz2LS_HoTKfOs,4870
|
|
99
|
+
pyfvs/cfg/species/mg_magnolia.yaml,sha256=atfYlophCWkhtGlYP0PHv7aGCOMg58Jm41n_DfWfkBg,4875
|
|
100
|
+
pyfvs/cfg/species/ml_maple_leaf.yaml,sha256=Y-OGmsrDjhFWNxASbcm-FBO_dJM6DYz-I5e9jbsJQZg,4936
|
|
101
|
+
pyfvs/cfg/species/ms_maple_species.yaml,sha256=oIx1YYVt5WxeZpZIp-ZSZupcglZwhIOTbAJAjwnAj5U,4825
|
|
102
|
+
pyfvs/cfg/species/mv_magnolia_vine.yaml,sha256=IPw_m9n65edWkjlNoqPo3EVDGY6NhAbMnJBS5jL_u8o,4946
|
|
103
|
+
pyfvs/cfg/species/oh_other_hardwood.yaml,sha256=sEBWCIs01EfNuZjbzRaIW4wPBjIZIBlSW6HpSt7GFFU,4399
|
|
104
|
+
pyfvs/cfg/species/os_other_softwood.yaml,sha256=G2MjOxdYewLTIBoG8S2CgSEG6on4Lw6HB28_8P3q81M,4400
|
|
105
|
+
pyfvs/cfg/species/ot_other_tree.yaml,sha256=pd3KE_q7PHyZb_qVUxE2kU6qaCSG2FAxv2hh8O-yzJI,3708
|
|
106
|
+
pyfvs/cfg/species/ov_overcup_oak.yaml,sha256=FvcPW1dUSOgvMowZBnXvweP-ng6nyPP5he7MKt0xWLc,4946
|
|
107
|
+
pyfvs/cfg/species/pc_pond_cypress.yaml,sha256=EsxAZP9t29OxNrQ71PGdLXrr83u4Quwv1il-f0anwSU,4930
|
|
108
|
+
pyfvs/cfg/species/pd_pitch_pine.yaml,sha256=tM-SMGjpipHViYzvyuChzc3DuTngqrrMqEygQgkUSnk,4720
|
|
109
|
+
pyfvs/cfg/species/pi_pine_species.yaml,sha256=UQS4NegrADx6vKKuzCh_GlYFTqdxbOGAF_Cx6kXFj3s,4745
|
|
110
|
+
pyfvs/cfg/species/po_american_beech.yaml,sha256=i_TcDXJlYs3FHoghT2tqrhyUdPUN77ENpkHryBxYl_Y,4966
|
|
111
|
+
pyfvs/cfg/species/pp_pond_pine.yaml,sha256=ThDZ_TiyFb_8EyeZvxtrg1P3I2MO0GlLTdrDZvhvciQ,4758
|
|
112
|
+
pyfvs/cfg/species/ps_persimmon.yaml,sha256=axdIygxGLGw_c6SpyUaPwfvqcEzPG3ujQvNP7g0rTXU,4909
|
|
113
|
+
pyfvs/cfg/species/pu_pond_pine.yaml,sha256=WJ4Wh9TW71OtrBHn5QS74ExwpIhuqWKzFiV--VqEbTE,4830
|
|
114
|
+
pyfvs/cfg/species/qs_flowering_dogwood.yaml,sha256=ItlNxfQLy0fCOjs7cCC6jszNAmIQdP3i87YlhW8En8Q,4936
|
|
115
|
+
pyfvs/cfg/species/ra_red_ash.yaml,sha256=VKV0LuoNoIVnxhq8yGVJpNJLSguVe29Sxt1eckAV0cE,4729
|
|
116
|
+
pyfvs/cfg/species/rd_redbud.yaml,sha256=zS24QQVoNBZzl6KFL025XCyd6GvFRbUeAR_VFpZ8P04,4888
|
|
117
|
+
pyfvs/cfg/species/rl_red_elm.yaml,sha256=zw3HQcu2mMzGwPa5ib7z3FIRNhgDJwF4ExR7XlliOqE,4577
|
|
118
|
+
pyfvs/cfg/species/rm_red_maple.yaml,sha256=9bhMZ_0vz1DlzIPykYVmY8CfUPxzGOwhUIWjiqFQUmo,5016
|
|
119
|
+
pyfvs/cfg/species/ro_eastern_hemlock.yaml,sha256=8h6qZ0oHymbnRv9xnI_Yewpe_RiF-eK9TuIqVjluKLA,4999
|
|
120
|
+
pyfvs/cfg/species/sa_slash_pine.yaml,sha256=e4rGANR7u5X0NMZzG_VfeWbJoVPDCfco3E6qhNIsYKo,5695
|
|
121
|
+
pyfvs/cfg/species/sb_sweet_birch.yaml,sha256=GZQPFVJI9b8eYzk_1z7RkqJKv0GIA62bu00r-7C-LUA,4994
|
|
122
|
+
pyfvs/cfg/species/sd_sand_pine.yaml,sha256=Wx8pCmbG5YaO4Za0a2XW2jSOSLNhMysH5Z2UDVr9R7c,4878
|
|
123
|
+
pyfvs/cfg/species/sk_swamp_oak.yaml,sha256=_4gwrpkcb_Oc6r8sTNlohRlNrAFlBLWpBM7s3Rhqrtk,4947
|
|
124
|
+
pyfvs/cfg/species/sm_sugar_maple.yaml,sha256=v6A6dA8YWAaccu9_H_tgW_bFwckRlV6k-qS2US6lTn0,4927
|
|
125
|
+
pyfvs/cfg/species/sn_loblolly_pine.yaml,sha256=jFUXdnpIFvnoWVfy4lR2XuPVU5sU78HXScPVpskAPd8,4954
|
|
126
|
+
pyfvs/cfg/species/so_southern_oak.yaml,sha256=AFDhpVLv1SY6yunID00g7o5w_1BryWKWLhoiygRP3qU,4939
|
|
127
|
+
pyfvs/cfg/species/sp_shortleaf_pine.yaml,sha256=sc04ory4GnLbrNfGl8gMyFEfk7LVBaeiXitM-6ihz2Y,5796
|
|
128
|
+
pyfvs/cfg/species/sr_spruce_pine.yaml,sha256=F0g46qEmjbaf4kCDUpNSGsm35OCNo4Al-Zu40ZI3leM,4739
|
|
129
|
+
pyfvs/cfg/species/ss_basswood.yaml,sha256=LQwlwVmwv-LXNEFT18sDRWUA1VOob5vGsbH9o-mYCL4,4904
|
|
130
|
+
pyfvs/cfg/species/su_sweetgum.yaml,sha256=Za6129fxAEfnQ-JsmOf8yHc-9Wt-7S7we1_ZnOY4J2U,4996
|
|
131
|
+
pyfvs/cfg/species/sv_silver_maple.yaml,sha256=7ZtDCbKMiw0ReI6h6yXoLqaoX2RM7WQ9_CYGkv0FcGI,5005
|
|
132
|
+
pyfvs/cfg/species/sy_sycamore.yaml,sha256=GQm-FeHrW5MbMC99_jcnuBlxaZ8izfodrSR4uDZmC2w,4980
|
|
133
|
+
pyfvs/cfg/species/tm_tamarack.yaml,sha256=athUrM9p2o6nJ6n8-qo42K_q2WfMGHWiA1tqY-lUX_s,4771
|
|
134
|
+
pyfvs/cfg/species/to_tulip_oak.yaml,sha256=yAu6JnknxUKFUqlE0gkrxFBiHqMzv8WQ-Uw1taEJ8s4,4927
|
|
135
|
+
pyfvs/cfg/species/ts_tulip_tree.yaml,sha256=cKMa7aKhhZ_RKH6jjfG2VrDyIaI58F_UFrDy3wIathA,4918
|
|
136
|
+
pyfvs/cfg/species/vp_virginia_pine.yaml,sha256=6qIPoyGQT8yEHuCEW2Ms770g-ljwC4Swrl6h01OCZNw,4836
|
|
137
|
+
pyfvs/cfg/species/wa_white_ash.yaml,sha256=U8cYgY88eMj2ylO2riyZn9oDyx2Lq2hGlL1b76pbnJI,4975
|
|
138
|
+
pyfvs/cfg/species/we_white_elm.yaml,sha256=rl-_qN3QV5IqqLtPoSoHrkp1RufCiucVzCqtvge1qy8,4866
|
|
139
|
+
pyfvs/cfg/species/wi_willow.yaml,sha256=io_BR1GSHXuec-yfrGYj8TtotkffRymRZpixU1vA0jM,4826
|
|
140
|
+
pyfvs/cfg/species/wk_water_oak.yaml,sha256=3h6GOVD27VP9eRymMX30H4OqkZQLTSgW00mUdBVjRK4,4973
|
|
141
|
+
pyfvs/cfg/species/wn_walnut.yaml,sha256=aohsYSsToYfLvLBf1mjl1kwnjh6gsojaCn5UgzRboaw,4961
|
|
142
|
+
pyfvs/cfg/species/wo_white_oak.yaml,sha256=x_SrAl5ETaiyRqxOUqEptREOKFxvfZc5Qn6mREx7zzU,5028
|
|
143
|
+
pyfvs/cfg/species/wp_white_pine.yaml,sha256=EK8-RAUOHBhgLd-rXI0qcWCCJYrC7JIii038jbbRg9c,4893
|
|
144
|
+
pyfvs/cfg/species/wt_water_tupelo.yaml,sha256=grOG0rp5tbaNdqRyr0SAwnZ62VoTgDELNEyCsmATN1E,4928
|
|
145
|
+
pyfvs/cfg/species/yp_yellow_poplar.yaml,sha256=Iga25G4r8lnetZGMtsD8CqRYvIB_Rs7c4PjvLo0eUh8,5112
|
|
146
|
+
fvs_python-0.2.3.dist-info/METADATA,sha256=H9RxUfFl3F8AjNSo8eDAHhmiM0bfZmcex1PsFqC4uls,8695
|
|
147
|
+
fvs_python-0.2.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
148
|
+
fvs_python-0.2.3.dist-info/top_level.txt,sha256=HoiJYCeyrnAJURntrceFWscRC8yhENTsYpEx2Te1gto,6
|
|
149
|
+
fvs_python-0.2.3.dist-info/RECORD,,
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 Chris Mihiar
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
pyfvs
|
pyfvs/__init__.py
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"""
|
|
2
|
+
PyFVS: Forest Vegetation Simulator for Python
|
|
3
|
+
|
|
4
|
+
A Python implementation of forest growth models based on the
|
|
5
|
+
Forest Vegetation Simulator (FVS) Southern variant.
|
|
6
|
+
|
|
7
|
+
Part of the FIA Python Ecosystem:
|
|
8
|
+
- PyFIA: Survey/plot data analysis (https://github.com/mihiarc/pyfia)
|
|
9
|
+
- GridFIA: Spatial raster analysis (https://github.com/mihiarc/gridfia)
|
|
10
|
+
- PyFVS: Growth/yield simulation (this package)
|
|
11
|
+
- AskFIA: AI conversational interface (https://github.com/mihiarc/askfia)
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
from .stand import Stand
|
|
15
|
+
from .tree import Tree
|
|
16
|
+
from .config_loader import get_config_loader, load_stand_config, load_tree_config
|
|
17
|
+
from .height_diameter import create_height_diameter_model, curtis_arney_height, wykoff_height
|
|
18
|
+
from .crown_ratio import create_crown_ratio_model, calculate_average_crown_ratio, predict_tree_crown_ratio
|
|
19
|
+
from .bark_ratio import create_bark_ratio_model, calculate_dib_from_dob, calculate_bark_ratio
|
|
20
|
+
from .crown_width import create_crown_width_model, calculate_forest_crown_width, calculate_open_crown_width, calculate_ccf_contribution, calculate_hopkins_index
|
|
21
|
+
from .crown_competition_factor import create_ccf_model, calculate_individual_ccf, calculate_stand_ccf, calculate_ccf_from_stand, interpret_ccf
|
|
22
|
+
from .volume_library import (
|
|
23
|
+
VolumeLibrary, VolumeResult, calculate_tree_volume,
|
|
24
|
+
get_volume_library, get_volume_library_info, validate_volume_library
|
|
25
|
+
)
|
|
26
|
+
from .forest_type import (
|
|
27
|
+
ForestTypeClassifier, ForestTypeGroup, ForestTypeResult,
|
|
28
|
+
get_forest_type_effect, classify_forest_type_from_species,
|
|
29
|
+
map_fia_to_fvs, get_forest_type_group_info
|
|
30
|
+
)
|
|
31
|
+
from .ecological_unit import (
|
|
32
|
+
EcologicalUnitClassifier, get_ecounit_effect, select_ecounit_table,
|
|
33
|
+
create_classifier as create_ecounit_classifier, get_ecounit_summary,
|
|
34
|
+
MOUNTAIN_PROVINCE_ECOUNITS, LOWLAND_ECOUNITS
|
|
35
|
+
)
|
|
36
|
+
from .fia_integration import (
|
|
37
|
+
FIASpeciesMapper, FIATreeRecord, FIAPlotData,
|
|
38
|
+
validate_fia_input, transform_fia_trees, select_condition,
|
|
39
|
+
derive_site_index, derive_forest_type, derive_ecounit,
|
|
40
|
+
derive_stand_age, create_trees_from_fia
|
|
41
|
+
)
|
|
42
|
+
from .main import main
|
|
43
|
+
|
|
44
|
+
__version__ = "0.2.3"
|
|
45
|
+
__author__ = "PyFVS Development Team"
|
|
46
|
+
|
|
47
|
+
__all__ = [
|
|
48
|
+
"Stand",
|
|
49
|
+
"Tree",
|
|
50
|
+
"get_config_loader",
|
|
51
|
+
"load_stand_config",
|
|
52
|
+
"load_tree_config",
|
|
53
|
+
"create_height_diameter_model",
|
|
54
|
+
"curtis_arney_height",
|
|
55
|
+
"wykoff_height",
|
|
56
|
+
"create_crown_ratio_model",
|
|
57
|
+
"calculate_average_crown_ratio",
|
|
58
|
+
"predict_tree_crown_ratio",
|
|
59
|
+
"create_bark_ratio_model",
|
|
60
|
+
"calculate_dib_from_dob",
|
|
61
|
+
"calculate_bark_ratio",
|
|
62
|
+
"create_crown_width_model",
|
|
63
|
+
"calculate_forest_crown_width",
|
|
64
|
+
"calculate_open_crown_width",
|
|
65
|
+
"calculate_ccf_contribution",
|
|
66
|
+
"calculate_hopkins_index",
|
|
67
|
+
"create_ccf_model",
|
|
68
|
+
"calculate_individual_ccf",
|
|
69
|
+
"calculate_stand_ccf",
|
|
70
|
+
"calculate_ccf_from_stand",
|
|
71
|
+
"interpret_ccf",
|
|
72
|
+
"VolumeLibrary",
|
|
73
|
+
"VolumeResult",
|
|
74
|
+
"calculate_tree_volume",
|
|
75
|
+
"get_volume_library",
|
|
76
|
+
"get_volume_library_info",
|
|
77
|
+
"validate_volume_library",
|
|
78
|
+
# Forest Type Classification
|
|
79
|
+
"ForestTypeClassifier",
|
|
80
|
+
"ForestTypeGroup",
|
|
81
|
+
"ForestTypeResult",
|
|
82
|
+
"get_forest_type_effect",
|
|
83
|
+
"classify_forest_type_from_species",
|
|
84
|
+
"map_fia_to_fvs",
|
|
85
|
+
"get_forest_type_group_info",
|
|
86
|
+
# Ecological Unit Classification
|
|
87
|
+
"EcologicalUnitClassifier",
|
|
88
|
+
"get_ecounit_effect",
|
|
89
|
+
"select_ecounit_table",
|
|
90
|
+
"create_ecounit_classifier",
|
|
91
|
+
"get_ecounit_summary",
|
|
92
|
+
"MOUNTAIN_PROVINCE_ECOUNITS",
|
|
93
|
+
"LOWLAND_ECOUNITS",
|
|
94
|
+
# FIA Integration
|
|
95
|
+
"FIASpeciesMapper",
|
|
96
|
+
"FIATreeRecord",
|
|
97
|
+
"FIAPlotData",
|
|
98
|
+
"validate_fia_input",
|
|
99
|
+
"transform_fia_trees",
|
|
100
|
+
"select_condition",
|
|
101
|
+
"derive_site_index",
|
|
102
|
+
"derive_forest_type",
|
|
103
|
+
"derive_ecounit",
|
|
104
|
+
"derive_stand_age",
|
|
105
|
+
"create_trees_from_fia",
|
|
106
|
+
"main"
|
|
107
|
+
]
|