Climate indices for drought monitoring
This project contains Python implementations of various climate index algorithms which provide a geographical and temporal picture of the severity and duration of precipitation and temperature anomalies useful for climate monitoring and research.
The following indices are provided:
This Python implementation of the above climate index algorithms is being developed with the following goals in mind:
This is a developmental/forked version of code that was originally developed by NIDIS/NCEI/NOAA. See drought.gov.
Breaking Change: Exception-Based Error Handling
Version 2.2.0 introduces a significant architectural improvement in error handling. The library now uses exception-based error handling instead of returning None
tuples for error conditions.
Before (v2.1.x and earlier):
# Old behavior - functions returned None tuples on failure
result = some_internal_function(data)
if result == (None, None, None, None):
# Handle error case
pass
After (v2.2.0+):
# New behavior - functions raise specific exceptions
try:
result = some_internal_function(data)
except climate_indices.compute.InsufficientDataError as e:
# Handle insufficient data case
print(f"Not enough data: {e.non_zero_count} values found, {e.required_count} required")
except climate_indices.compute.PearsonFittingError as e:
# Handle fitting failure case
print(f"Fitting failed: {e}")
DistributionFittingError
(base class)
InsufficientDataError
- raised when there are too few non-zero values for statistical fittingPearsonFittingError
- raised when L-moments calculation fails for Pearson Type III distributionNone
return values from internal functions, update to use try/catch blocksVersion 2.2.0 also addresses floating point comparison issues (python:S1244
) throughout the codebase:
Floating Point Comparisons:
# ❌ OLD: Direct equality checks (unreliable)
if values == 0.0:
handle_zero_case()
# ✅ NEW: Safe comparison using numpy.isclose()
if np.isclose(values, 0.0, atol=1e-8):
handle_zero_case()
Benefits:
docs/floating_point_best_practices.md
for comprehensive guidelinesYou can cite climate_indices
in your projects and research papers via the BibTeX
entry below.
@misc {climate_indices,
author = "James Adams",
title = "climate_indices, an open source Python library providing reference implementations of commonly used climate indices",
url = "https://github.com/monocongo/climate_indices",
month = "may",
year = "2017--"
}