Core Calculations API
The core_calculations module provides functions for calculating baseline
biodiversity units.
Functions
- bngmetric.core_calculations.get_distinctiveness_value(habitat_id: int) float[source]
Retrieves distinctiveness value for a given habitat ID.
- bngmetric.core_calculations.get_condition_multiplier(habitat_id: int, condition_id: int) float[source]
Retrieves condition multiplier for a given habitat ID (row) and condition ID (column) from the pre-loaded matrix.
- bngmetric.core_calculations.calculate_baseline_bng_unit(habitat_id: int, condition_id: int, area: float, strategic_multiplier: float) float[source]
Calculates the baseline biodiversity units for a single habitat parcel. Uses habitat-specific condition multipliers.
- bngmetric.core_calculations.calculate_batched_baseline_bng_units(habitat_ids: Array, condition_ids: Array, areas: Array, strategic_multipliers: Array) Array[source]
Vectorized version of calculate_batched_baseline_bng_units. Takes similar arguments as calculate_batched_baseline_bng_units but with additional array axes over which calculate_batched_baseline_bng_units is mapped.
Original documentation:
Calculates baseline biodiversity units for multiple habitat parcels in a batch. Inputs should be JAX arrays of the same length.
Usage Examples
Single Parcel Calculation
from bngmetric.core_calculations import calculate_baseline_bng_unit
units = calculate_baseline_bng_unit(
habitat_id=5,
condition_id=2,
area=1.5,
strategic_multiplier=1.15
)
Batched Calculation
import jax.numpy as jnp
from bngmetric.core_calculations import calculate_batched_baseline_bng_units
units = calculate_batched_baseline_bng_units(
habitat_ids=jnp.array([0, 1, 2]),
condition_ids=jnp.array([2, 0, 4]),
areas=jnp.array([1.0, 2.0, 0.5]),
strategic_multipliers=jnp.array([1.0, 1.15, 1.1])
)
DataFrame Interface
import pandas as pd
from bngmetric.core_calculations import calculate_bng_from_dataframe
df = pd.DataFrame({
'Habitat': ['Grassland - Lowland meadows'],
'Condition': ['Good'],
'Area': [2.0],
'Strategic_Significance': [1.15]
})
total = calculate_bng_from_dataframe(df)