Diversity¶
The diversity module provides functions for calculating various diversity indices.
General Diversity Function¶
- nuee.diversity.diversity(x: ndarray | DataFrame, index: str = 'shannon', groups: ndarray | Series | None = None, base: float = 2.718281828459045) float | ndarray | Series[source]¶
Calculate diversity indices for community data.
This function provides a unified interface for calculating various diversity indices commonly used in ecology. It can calculate diversity for individual samples or for pooled groups.
- Parameters:
x (np.ndarray or pd.DataFrame) – Community data matrix with samples in rows and species in columns. Values should be non-negative abundances or counts. Can also be a 1D array for a single sample.
index ({'shannon', 'simpson', 'invsimpson', 'fisher'}, default='shannon') – Diversity index to calculate: - ‘shannon’: Shannon entropy H’ = -sum(p_i * log(p_i)) - ‘simpson’: Gini-Simpson index 1 - sum(p_i^2) - ‘invsimpson’: Inverse Simpson 1 / sum(p_i^2) - ‘fisher’: Fisher’s alpha
groups (np.ndarray or pd.Series, optional) – Grouping factor for calculating pooled diversities. If provided, samples are pooled within each group before calculating diversity.
base (float, default=e) – Base of logarithm for Shannon index. Common choices: - e (natural log): nats - 2: bits - 10: dits
- Returns:
Diversity values for each sample (or group if groups is provided). If input is a DataFrame, returns a pd.Series with sample/group names.
- Return type:
float, np.ndarray, or pd.Series
Notes
Shannon diversity (H’) measures both richness and evenness: - Higher values indicate more diverse communities - Ranges from 0 (single species) to log(S) where S is species richness - Most common diversity index in ecology
Simpson’s index measures dominance: - We report the Gini-Simpson form (1 - sum(p_i^2)), matching vegan::diversity - Larger values indicate greater diversity - The inverse Simpson (1 / sum(p_i^2)) is available via
index='invsimpson'Fisher’s alpha assumes a log-series distribution: - Useful for abundance data - Less sensitive to sample size than richness - Can be slow for large datasets
Examples
Calculate Shannon diversity:
>>> import nuee >>> species = nuee.datasets.varespec() >>> div = nuee.diversity(species, index="shannon") >>> print(f"Mean diversity: {div.mean():.3f}") Mean diversity: 1.754
Calculate Simpson diversity:
>>> div_simp = nuee.diversity(species, index="simpson")
Calculate diversity for grouped samples:
>>> import numpy as np >>> groups = np.array(['A', 'A', 'B', 'B', 'C', 'C']) >>> div_grouped = nuee.diversity(species[:6], index="shannon", groups=groups)
Use different logarithm bases:
>>> div_bits = nuee.diversity(species, index="shannon", base=2) >>> print("Diversity in bits:", div_bits.mean()) Diversity in bits: 2.5300454694165375
See also
shannonShannon diversity (convenience function)
simpsonSimpson diversity (convenience function)
fisher_alphaFisher’s alpha (convenience function)
renyiRenyi entropy for multiple scales
specnumberSpecies richness
References
Diversity Indices¶
Shannon Diversity¶
Simpson Diversity¶
- nuee.diversity.simpson(x: ndarray | DataFrame) DiversityResult[source]¶
Calculate Gini-Simpson diversity (1 - sum(p_i^2)).
- Parameters:
x – Community data matrix or vector
- Returns:
DiversityResult object with automatic plotting
Fisher’s Alpha¶
- nuee.diversity.fisher_alpha(x: ndarray | DataFrame) DiversityResult[source]¶
Calculate Fisher’s alpha diversity index.
- Parameters:
x – Community data matrix or vector
- Returns:
DiversityResult object with automatic plotting
Species Richness¶
- nuee.diversity.specnumber(x: ndarray | DataFrame, groups: ndarray | Series | None = None) DiversityResult[source]¶
Calculate species richness (number of species).
- Parameters:
x – Community data matrix or vector
groups – Grouping factor for pooled richness
- Returns:
DiversityResult object with automatic plotting
Evenness¶
Renyi Entropy¶
- nuee.diversity.renyi(x: ndarray | DataFrame, scales: float | List[float] = [0, 1, 2, inf], hill: bool = False) ndarray | DataFrame[source]¶
Calculate Renyi entropy or Hill numbers.
- Parameters:
x – Community data matrix or vector
scales – Scale parameters (alpha values)
hill – Whether to return Hill numbers instead of Renyi entropy
- Returns:
Renyi entropy or Hill numbers for each scale
Rarefaction¶
Base Classes¶
- class nuee.diversity.DiversityResult(values: ndarray | Series, index_name: str = 'diversity', sample_names: list | None = None)[source]¶
Bases:
objectContainer for diversity analysis results with automatic plotting.