Climate_Indices
Contains Python implementations of various climate index algorithms which provide a geographical and temporal picture of the severity of precipitation and temperature anomalies useful for climate monitoring and research.
https://github.com/monocongo/climate_indices
Category: Climate Change
Sub Category: Climate Data Processing and Analysis
Keywords from Contributors
gtk qt tk wx
Last synced: 23 minutes ago
JSON representation
Repository metadata
Climate indices for drought monitoring
- Host: GitHub
- URL: https://github.com/monocongo/climate_indices
- Owner: monocongo
- License: other
- Created: 2017-06-13T15:21:07.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2025-08-03T22:13:38.000Z (5 months ago)
- Last Synced: 2025-12-20T05:41:17.638Z (6 days ago)
- Language: Python
- Homepage: https://monocongo.github.io/climate_indices/
- Size: 29.6 MB
- Stars: 385
- Watchers: 21
- Forks: 173
- Open Issues: 109
- Releases: 2
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: code_of_conduct.md
README.md

climate_indices
Python library of indices useful for climate 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:
- SPI,
Standardized Precipitation Index, utilizing both gamma and Pearson Type III distributions - SPEI,
Standardized Precipitation Evapotranspiration Index, utilizing both gamma and Pearson Type III distributions - PET, Potential Evapotranspiration, utilizing either Thornthwaite
or Hargreaves equations - PNP,
Percentage of Normal Precipitation - PCI, Precipitation Concentration Index
This Python implementation of the above climate index algorithms is being developed
with the following goals in mind:
- to provide an open source software package to compute a suite of
climate indices commonly used for climate monitoring, with well
documented code that is faithful to the relevant literature and
which produces scientifically verifiable results - to provide a central, open location for participation and collaboration
for researchers, developers, and users of climate indices - to facilitate standardization and consensus on best-of-breed
climate index algorithms and corresponding compliant implementations in Python - to provide transparency into the operational code used for climate
monitoring activities at NCEI/NOAA, and consequent reproducibility
of published datasets computed from this package - to incorporate modern software engineering principles and scientific programming
best practices
This is a developmental/forked version of code that was originally developed by NIDIS/NCEI/NOAA.
See drought.gov.
Migration Guide for v2.2.0
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.
What Changed
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}")
New Exception Hierarchy
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 distribution
Impact on Users
- Direct API users: No changes needed - the public SPI/SPEI functions handle exceptions internally
- Library integrators: If you were checking for
Nonereturn values from internal functions, update to use try/catch blocks - Benefits: More informative error messages, better debugging, and automatic fallback from Pearson to Gamma distribution when appropriate
Code Quality Improvements
Version 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:
- Eliminates floating point precision issues in statistical parameter validation
- Improves test reliability and numerical robustness
- Follows scientific computing best practices for floating point arithmetic
- See
docs/floating_point_best_practices.mdfor comprehensive guidelines
Citation
You 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--"
}
Owner metadata
- Name: James Adams
- Login: monocongo
- Email:
- Kind: user
- Description:
- Website: https://www.drought.gov/drought/data-maps-tools/software
- Location:
- Twitter:
- Company:
- Icon url: https://avatars.githubusercontent.com/u/1328158?u=0ab524c4cf2027dd542cb00e6a3344d97ba30738&v=4
- Repositories: 75
- Last ynced at: 2024-06-11T15:57:38.274Z
- Profile URL: https://github.com/monocongo
GitHub Events
Total
- Issues event: 17
- Watch event: 35
- Delete event: 1
- Issue comment event: 41
- Push event: 11
- Pull request review comment event: 7
- Pull request review event: 3
- Pull request event: 11
- Fork event: 10
- Create event: 4
Last Year
- Issues event: 13
- Watch event: 28
- Delete event: 1
- Issue comment event: 27
- Push event: 10
- Pull request review event: 2
- Pull request review comment event: 7
- Pull request event: 10
- Fork event: 9
- Create event: 3
Committers metadata
Last synced: 1 day ago
Total Commits: 1,004
Total Committers: 20
Avg Commits per committer: 50.2
Development Distribution Score (DDS): 0.352
Commits in past year: 24
Committers in past year: 2
Avg Commits per committer in past year: 12.0
Development Distribution Score (DDS) in past year: 0.042
| Name | Commits | |
|---|---|---|
| James Adams | m****o@g****m | 651 |
| James.Adams | J****s@C****l | 213 |
| james.adams | j****s@o****m | 60 |
| james.a | j****a@c****m | 25 |
| James Adams | j****s@v****m | 11 |
| Benjamin Root | b****t@g****m | 10 |
| Arnab Paul Choudhury | a****4@g****m | 9 |
| Nathan Nayda | n****a@s****m | 6 |
| kikocorreoso | k****o@g****m | 4 |
| dependabot[bot] | 4****] | 3 |
| AGericke | g****e@i****n | 3 |
| Ben Lewis | b****n | 1 |
| David de Klerk | d****k@e****k | 1 |
| DeepSource Bot | b****t@d****o | 1 |
| haysengithub | d****e@g****m | 1 |
| Scott Wales | s****s@u****u | 1 |
| Laura Guillory | l****y@g****m | 1 |
| deepsource-autofix[bot] | 6****] | 1 |
| kikocorreoso | y****u@e****m | 1 |
| snyk-bot | s****t@s****o | 1 |
Committer domains:
- snyk.io: 1
- unimelb.edu.au: 1
- deepsource.io: 1
- ed.ac.uk: 1
- secondpillar.com: 1
- verisk.com: 1
- claraanalytics.com: 1
- opensignal.com: 1
Issue and Pull Request metadata
Last synced: 1 day ago
Total issues: 322
Total pull requests: 252
Average time to close issues: 3 months
Average time to close pull requests: 15 days
Total issue authors: 111
Total pull request authors: 17
Average comments per issue: 2.59
Average comments per pull request: 0.94
Merged pull request: 224
Bot issues: 0
Bot pull requests: 3
Past year issues: 11
Past year pull requests: 3
Past year average time to close issues: about 8 hours
Past year average time to close pull requests: 27 minutes
Past year issue authors: 10
Past year pull request authors: 1
Past year average comments per issue: 0.73
Past year average comments per pull request: 1.0
Past year merged pull request: 2
Past year bot issues: 0
Past year bot pull requests: 0
Top Issue Authors
- monocongo (164)
- crestedcaracaryn (6)
- kikocorreoso (5)
- bennyistanto (5)
- aleccourt (4)
- SouhailAB (4)
- WeatherGod (4)
- s-m-t-c (3)
- itati01 (3)
- wsor330 (3)
- Lixia0911 (3)
- tommylees112 (3)
- helena434 (2)
- yheng0821 (2)
- fipoucat (2)
Top Pull Request Authors
- monocongo (216)
- WeatherGod (10)
- Seven-milk (7)
- kikocorreoso (3)
- dependabot[bot] (3)
- nnayda (2)
- go1me (1)
- oshin94 (1)
- cshields143 (1)
- dawiedotcom (1)
- ScottWales (1)
- Emmadd (1)
- itati01 (1)
- Daafip (1)
- Laura-Guillory (1)
Top Issue Labels
- enhancement (28)
- help wanted (19)
- bug (11)
- question (3)
- documentation (2)
Top Pull Request Labels
- dependencies (4)
- enhancement (1)
Package metadata
- Total packages: 2
-
Total downloads:
- pypi: 3,531 last-month
- Total docker downloads: 100
- Total dependent packages: 0 (may contain duplicates)
- Total dependent repositories: 0 (may contain duplicates)
- Total versions: 18
- Total maintainers: 1
proxy.golang.org: github.com/monocongo/climate_indices
- Homepage:
- Documentation: https://pkg.go.dev/github.com/monocongo/climate_indices#section-documentation
- Licenses: other
- Latest release: v0.1.0-beta (published over 7 years ago)
- Last Synced: 2025-12-18T18:06:33.776Z (7 days ago)
- Versions: 2
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent packages count: 5.395%
- Average: 5.576%
- Dependent repos count: 5.758%
pypi.org: climate-indices
Reference implementations of various climate indices typically used for drought monitoring
- Homepage: https://github.com/monocongo/climate_indices
- Documentation: https://climate-indices.readthedocs.io/
- Licenses: BSD License
- Latest release: 2.2.0 (published 5 months ago)
- Last Synced: 2025-12-18T18:06:32.803Z (7 days ago)
- Versions: 16
- Dependent Packages: 0
- Dependent Repositories: 0
- Downloads: 3,531 Last month
- Docker Downloads: 100
-
Rankings:
- Dependent packages count: 8.74%
- Average: 28.994%
- Dependent repos count: 49.249%
- Maintainers (1)
Dependencies
- actions/checkout v3 composite
- actions/setup-python v2 composite
- pytest * develop
- toml 0.10.2 develop
- cftime 1.6.2
- dask 2022.2.0
- h5netcdf 1.1.0
- python >=3.8,<3.12
- scipy 1.9.3
- xarray 2023.1.0
- toml >=0.10.2
Score: 17.396081822963115