PaleoVeg is a Python package for predicting vegetation types based on bioclimatic variables. It is designed for paleovegetation reconstruction, allowing users to model vegetation based on past climate data or other environmental predictors.
- Predict vegetation types for single or multiple locations using bioclimatic variables.
- Apply optional C3/C4 competition corrections for higher CO2 levels.
- Flexible output options:
- Probabilities for each vegetation type.
- Dominant vegetation type.
- Supports input as:
- Pandas DataFrames for tabular data.
- Numpy arrays for map-like (grid-based) data.
PaleoVeg predicts the following vegetation/biome types:
- Evergreen Needleleaf Forest
- Evergreen Broadleaf Forest
- Deciduous Needleleaf Forest
- Deciduous Broadleaf Forest
- Mixed Forest
- Woodland
- Wooded Grassland
- Closed Shrubland
- Open Shrubland
- Grassland
- Bare Ground
-
Clone the repository:
git clone https://github.com/roink/PaleoVeg.git cd PaleoVeg -
Install the package:
pip install .
from paleoveg import predict, predict_mapProvide a Pandas DataFrame with the following required columns:
bio1, bio4, bio5, bio6, bio7, bio8, bio9, bio10, bio11, bio12, bio13, bio14, bio15, bio16, bio17, bio18, bio19
import pandas as pd
from paleoveg import predict
# Example input DataFrame
data = {
"bio1": [10.2, 12.5],
"bio4": [15.6, 14.1],
"bio5": [20.1, 18.4],
"bio6": [5.3, 7.2],
"bio7": [14.8, 16.5],
"bio8": [12.4, 11.8],
"bio9": [9.7, 8.9],
"bio10": [8.5, 9.2],
"bio11": [7.9, 6.5],
"bio12": [300.5, 310.2],
"bio13": [100.2, 102.4],
"bio14": [150.4, 148.3],
"bio15": [180.6, 175.9],
"bio16": [170.3, 165.2],
"bio17": [160.9, 155.8],
"bio18": [140.7, 145.4],
"bio19": [130.8, 128.7],
}
df = pd.DataFrame(data)
# Predict probabilities
probabilities = predict(df, dominant="exclude", c3_c4_correction=False)
# Predict dominant vegetation type
dominant_class = predict(df, dominant="only", c3_c4_correction=True)
# Include probabilities and dominant type
result = predict(df, dominant="include", c3_c4_correction=True)Provide a Numpy array with shape (m, n, 17) where:
mandnrepresent the grid dimensions.17represents the bioclimatic variables in the required order.
import numpy as np
from paleoveg import predict_map
# Example 3D data: m = 5, n = 5, 17 predictors
m, n = 5, 5
data = np.random.rand(m, n, 17)
# Predict probabilities (m x n x 11)
probabilities_map = predict_map(data, dominant="exclude", c3_c4_correction=False)
# Predict dominant type (m x n x 1)
dominant_map = predict_map(data, dominant="only", c3_c4_correction=True)Predict vegetation types for tabular data.
input_df(pd.DataFrame): Input DataFrame with 17 bioclimatic variables.dominant(str): Specifies the output format."exclude": Returns probabilities for each vegetation type."include": Returns probabilities and the dominant type."only": Returns only the dominant type.
c3_c4_correction(bool): IfTrue, applies C3/C4 competition correction.
- Pandas DataFrame: Probabilities and/or dominant type based on
dominant.
Predict vegetation types for 3D map-like data.
data(np.ndarray): Input Numpy array with shape(m, n, 17).dominant(str): Specifies the output format."exclude": Returns probabilities(m x n x 11)."only": Returns the dominant type(m x n x 1).
c3_c4_correction(bool): IfTrue, applies C3/C4 competition correction.
- Numpy array: Probabilities or dominant type based on
dominant.
When c3_c4_correction=True, the following factors are applied to adjust probabilities for higher CO2 levels:
| Vegetation Type | Competition Factor |
|---|---|
| Evergreen Needleleaf Forest | 0.28 |
| Evergreen Broadleaf Forest | 0.73 |
| Deciduous Needleleaf Forest | 0.20 |
| Deciduous Broadleaf Forest | 0.76 |
| Mixed Forest | 1.00 |
| Closed Shrubland | 1.66 |
| Open Shrubland | 1.66 |
| Woodland | 1.62 |
| Wooded Grassland | 1.62 |
| Grassland | 1.69 |
| Bare Ground | 1.15 |
This project is licensed under the MIT License.
Contributions are welcome! Please submit a pull request or open an issue if you have suggestions or find bugs.