Skip to content

Latest commit

 

History

123 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Python Resources for Earth Sciences

A curated directory of open-source Python libraries for hydrology, meteorology, climatology,
geology, oceanography, seismology and geospatial science.

GitHub stars GitHub forks PRs welcome License

257 libraries 8 domains Made with Python Last commit

About  ·  Browse domains  ·  At a glance  ·  Contribute  ·  Suggest a library


About

Python Resources for Earth Sciences is a curated directory of open-source Python libraries for observing, modelling and understanding the Earth. It gathers tools for water, weather, climate, rocks, oceans, earthquakes and maps in one place, so you spend less time searching for the right package and more time doing science.

Collection summary: libraries, domains, Hydrology subfields and alphabetical order

Who it's for

Researchers, students, engineers and data scientists who work with Earth and environmental data in Python.

How it's organised

Libraries are grouped by domain, and Hydrology is split into subfields. Domains, subfields and libraries are all listed A to Z.

Good to know

Many tools serve several domains, so each is listed where it is most often used. Every name links to the project's docs or source code.

Tip

Know a library that belongs here? Open an issue or a pull request, or send me an email. If this list helps your work, a ⭐ helps others find it.


Browse by Domain

Climatology icon
Climatology
23 libraries
Earth System Science icon
Earth System Science
1 library
Geology icon
Geology
57 libraries
Geospatial Analysis and Mapping icon
Geospatial Analysis and Mapping
48 libraries
Hydrology icon
Hydrology
91 libraries
Meteorology icon
Meteorology
21 libraries
Oceanography icon
Oceanography
9 libraries
Seismology icon
Seismology
7 libraries
Full table of contents

The Collection at a Glance

Map of the collection: each domain with its icon, number of libraries and share, plus Hydrology subfields



Climatology

23 libraries

Climate modelling, diagnostics, indices, gridded data analysis and prediction tools.

Library Description
aospy Automated analysis and management of gridded climate data.
CINEI Integrates global and regional anthropogenic emission inventories (CEDS, EDGAR, HTAP, MEIC) into sector-resolved, model-ready gridded NetCDF with consistent NMVOC speciation for atmospheric chemistry and air-quality models.
climada-python CLIMADA stands for CLIMate ADAptation and is a probabilistic natural catastrophe impact model, that also calculates averted damage (benefit) thanks to adaptation measures of any kind (from grey to green infrastructure, behavioural, etc.).
climate-indices Various climate index algorithms relating to precipitation and temperature.
climlab Process-oriented climate modeling.
climmetlab Python package aiming at simplifying access to climate and meteorological datasets.
climpred climpred aims to be the primary package used to analyze output from initialized dynamical forecast models, ranging from short-term weather forecasts to decadal climate forecasts.
climt Climate modelling and diagnostics toolkit.
climtas Climtas is a package for working with large climate analyses. It focuses on the time domain with custom functions for Xarray and Dask data.
ESMvaltool Community diagnostic and performance metrics tool for routine evaluation of Earth system models in CMIP.
nctoolkit The Python package nctoolkit provides fast and easy analysis of netCDF data, with a focus on the analysis and post-processing of climate and ocean model data.
Oocgcm Analysis of large gridded geophysical datasets.
OpenClimateGIS Geospatial manipulation, subsetting, computation, and translation of spatiotemporal climate data.
Pangaea xarray extension for gridded land surface & weather model output.
PyCLES Atmospheric large eddy simulation infrastructure designed to simulate boundary layer clouds and deep convection.
pycpt Climate Predictability Tool, supports model output statistics (MOS), Conanical Correlation Analysis (CCA) and principal components regression (PCR), + access to many subseasonal-to-seasonal ensemble predictions (e.g., the NMME, C3S, SubX databases).
pyOWM PyOWM is a client Python wrapper library for OpenWeatherMap (OWM) web APIs.
pyrcel Adiabatic cloud parcel model for studying aerosol activation.
ROCK-PCA ROtated Complex Kernel PCA for spatio-temporal analysis of earth observation data.
wrf-python A collection of diagnostic and interpolation routines for use with output from the Weather Research and Forecasting (WRF-ARW) Model.
xeof Python library supporting rotated/multivariate EOF analysis.
xgcm Extends the xarray data model to understand finite volume grid cells (common in General Circulation Models) and provides interpolation and difference operations for such grids.
xMCA Python library for (rotated) Principal Component and Maximum Covariance Analysis.

Back to top ↑


Earth System Science

1 library

Box models and frameworks that couple processes across the Earth system.

Library Description
ESBMTK The Earth Sciences Box Modeling Toolkit (ESBMTK) is a Python library that aims to simplify typical box modeling projects in the Earth-Sciences. It uses a declarative approach to describe models, and abstracts typical modeling tasks like gas exchange and carbonate dissolution through Python classes. See the manual at https://esbmtk.readthedocs.io/en/latest for installation instructions usage, and example code.

Back to top ↑


Geology

57 libraries

Structural geology, geochemistry, geophysics, petrophysics and landscape evolution.

Library Description
APSG APSG defines several new Python classes to easily manage, analyze, and visualize orientational structural geology data.
ArcGIS API for Python ArcGIS API for Python is a powerful Python library for mapping, spatial analysis, data science, geospatial AI and automation.
Badlands Badlands is an open-source Python-based code that can be used to simulate Basin and Landscape Dynamics.
BERT Boundless Electrical Resistivity Tomography (BERT) is a software package for modelling and inversion of ERT data. It has originally been programmed as C++ apps based on the pyGIMLi core library, plus bash scripts for command line, but is increasingly using Python through pyGIMLi and pybert, not only for visualization but also for computing.
cbsyst cbsyst is a Python module for calculating seawater carbon and boron chemistry.
cf-python The Python cf package is an Earth Science data analysis library that is built on a complete implementation of the CF data model.
DensityX DensityX is a Python script that takes an excel spreadsheet containing major oxide data, T, and P for a silicate melt and outputs the density of each sample as a new excel spreadsheet.
detritalPy detritalPy is a Python module for visualizing and analyzing detrital geo-thermochronologic data.
Devito Devito is a Python package to implement optimized stencil computation (e.g., finite differences, image processing, machine learning) from high-level symbolic problem definitions. Devito builds on SymPy and uses automated code generation and just-in-time compilation to execute optimized computational kernels on several computer platforms, including CPUs, GPUs, and clusters thereof.
diffusion_chronometry diffusion_chronometry is a repository by Jordan Lubbers for all things pertaining to the modelling of diffusive equilibration of trace elements in minerals. Rather than build a bunch of fancy functions, the Jupyter notebooks are built "from scratch" so as to be transparent with as much of the building of the model as possible.
EQcorrscan EQcorrscan is a Python package for the detection and analysis of repeating and near-repeating seismicity.
Fastscape Fastscape is a Python package that provides a lot a small model components (i.e., processes) to use with the xarray-simlab modeling framework. Those components can readily be combined together in order to create custom Landscape Evolution Models (LEMs).
Fatiando a Terra Fatiando a Terra develops and maintains Python packages for Geophysics data processing, modeling like VERDE (Spatial data processing and interpolation using Green's functions), harmonica (processing and modeling gravity and magnetic data), and Boule (Reference ellipsoids for geodesy and geophysics).
FloPy FloPy is a Python package for creating, running, and post-processing MODFLOW-Based models.
GemGIS The aim of GemGIS is to become a bridge between conventional geoinformation systems (GIS) such as ArcGIS and QGIS, and geomodeling tools such as GemPy, allowing simpler and more automated workflows from one environment to the other.
GemPy GemPy is a tool for generating three-dimensional structural geological models in Python. It allows the user to create complex combinations of stratigraphical and structural features such as folds, faults, and unconformities. It was furthermore designed to enable probabilistic modeling to address parameter and model uncertainties.
GeostatsPy GeostatsPy brings GSLIB: Geostatistical Library functions to Python. GSLIB is a practical and extremely robust set of code for building spatial modeling workflows.
gprMax gprMax is open-source software that simulates electromagnetic wave propagation. It solves Maxwell’s equations in three dimensions by using the finite-difference time-domain method. gprMax was designed for modeling ground-penetrating radar but can also be used to model electromagnetic wave propagation for many other applications.
HyVR The Hydrogeological Virtual Reality simulation package (HyVR) is a Python module that helps researchers and practitioners generate subsurface models with multiple scales of heterogeneity that are based on geological concepts. The simulation outputs can then be used to explore groundwater flow and solute transport behavior. This is facilitated by HyVR outputs in the input formats of common flow simulation packages. Given that each site is unique, HyVR has been designed for users to take the code and extend it to suit their particular simulation needs.
Invert4Geom Invert4Geom is an open-source library for performing 3D geometric (structural) gravity inversions. While there are great existing tools for performing gravity inversions for subsurface density (e.g. PyGIMLi, SimPEG) there are few, if any, open-source software for inverting for geometry. This is useful for modelling the Moho, the sediment-basement contact, or bathymetry.
LakePy LakePy is the pythonic user-centered front-end to the Global Lake Level Database. This package can instantly deliver lake water levels for some 2000+ lakes scattered across the globe.
Landlab Landlab is an open-source Python package for numerical modeling of Earth surface dynamics. It contains (1) a gridding engine that represents the model domain and that supports regular and irregular grids; (2) a library of process components, each of which represents a physical process (e.g., generation of rain, erosion by flowing water); (3) utilities that support general numerical methods, file input and output, and visualization. In addition Landlab contains a set of Jupyter notebook tutorials that introduce core concepts and give examples of use.
Lasio Lasio is a Python package to read and write Log ASCII Standard (LAS) files, which are used for borehole data such as geophysical, geological, or petrophysical logs. It is compatible with versions 1.2 and 2.0 of the LAS file specification, published by the Canadian Well Logging Society. Support for LAS 3 is ongoing. In principle, it is designed to read as many types of LAS files as possible, including those containing common errors or non-compliant formatting. Sometimes we want a higher-level object, for example, to contain methods that have nothing to do with LAS files. We may want to handle other well data, such as deviation surveys, tops (aka picks), engineering data, striplogs, synthetics, and so on. This is where welly comes in.
latools Laser Ablation Tools (latools) is a Python toolbox for processing Laser Ablations Mass Spectrometry (LA-MS) data.
litholog litholog is focused on providing a framework to digitize, store, plot, and analyze sedimentary graphic logs.
Loop Loop is an open source 3D probabilistic geological and geophysical modelling platform, initiated by Geoscience Australia and the OneGeology consortium. The project is funded by Australian territory, State and Federal Geological Surveys, the Australian Research Council and the MinEx Collaborative Research Centre. It includes the Loopstructural and map2loop packages, minded for 3d geological modelling.
LSDTopoTools LSDTopoTools is a software package for analysing topography. Applications of these analyses span hydrology, geomorphology, soil science, ecology, and cognate fields. The serious number crunching in LSDTopoTools is done in C++ code, but the output needs to be visualised with either a GIS or python.
MIMiC Melt inclusion modification corrections (MIMiC) is a program corrects melt inclusions for post-entrapment crystallization/melting (PEC/PEM) with optional corrections for Fe-Mg exchange with the host and vapor bubble growth.
MintPy The Miami INsar Time-series software in PYthon (MintPy) is an open-source package for Interferometric Synthetic Aperture Radar (InSAR) time series analysis.
MSNoise MSNoise is the first complete software package for computing and monitoring relative velocity variations using ambient seismic noise. MSNoise is a fully-integrated solution that automatically scans data archives and determines which jobs need to be done whenever the scheduled task is executed.
MTpy MTpy is a Python Toolbox for Magnetotelluric (MT) Data Processing, Analysis, Modelling and Visualization.
PetroPy PetroPy is a python petrophysics package allowing scientific Python computing of conventional and unconventional formation evaluation. It uses lasio to read las files and includes a petrophysical workflow and a log viewer based on XML templates.
PmagPy The PmagPy project is a set of tools written in Python for the analysis of paleomagnetic data.
PVGeo PVGeo is an open-source Python package for geoscientific visualization and analysis harnessing an already powerful software platform: the Visualization Toolkit (VTK) and its front-end application, ParaView.
PyDGS PyDGS is an open-source project dedicated to provide a Python framework to compute estimates of grain size distribution using the continuous wavelet transform method.
PyFLOWGO PyFLOWGO is an open-source platform for simulation of channelized lava thermo-rheological properties.
pyGeoPressure pyGeoPressure is an open-source Python package designed for pore-pressure prediction from both well log data and seismic velocity data. Though light weight, pyGeoPressure performs the entire workflow, from data management to pressure prediction. The main features of pyGeoPressure are (1) it makes overburden (or lithostatic) pressure calculations; 2) it uses Eaton’s method and parameter optimization; 3) it uses Bowers’ method and parameter optimization; and (4) it implements a multivariate method with parameter optimization.
pyGIMLi pyGIMLi is an open-source library for modeling and inversion and in geophysics. The object-oriented library provides management for structured and unstructured meshes in two and three dimensions, finite-element and finite-volume solvers, various geophysical forward operators, as well as Gauss-Newton--based frameworks for constrained, joint, and fully coupled inversions with flexible regularization.
PyGMT PyGMT is a Python wrapper for the Generic Mapping Tools (GMT), a command-line program widely used in the Earth Sciences. It provides capabilities for processing spatial data (gridding, filtering, masking, FFTs, etc) and making high quality plots and maps.
Pyleoclim Pyleoclim is a Python package designed for the analysis of paleoclimate data. Pyleoclim leverages various data science libraries (numpy, pandas, scikit-learn) for time series analysis, as well as and Matplotlib and Cartopy for the creation of publication-quality figures.
Pyrocko Pyrocko is an open source seismology toolbox and library. Most of Pyrocko is coded in the Python programming language, with a few parts coded in C.
pyrolite pyrolite is a set of tools to handle and visualize geochemical data. The Python package includes functions to work with compositional data and to transform geochemical variables (e.g., elements to oxides), functions for common plotting tasks (e.g., spiderplots, ternary diagrams, bivariate and ternary density diagrams), and numerous auxiliary utilities.
PySAT PySAT is a Python toolkit, which aims at providing a simple and unified interface to a number of state-of-art Boolean satisfiability (SAT) solvers as well as to a variety of cardinality and pseudo-Boolean encodings.
PyVista PyVista (formerly vtki) is a helper module for the Visualization Toolkit (VTK) that takes a different approach on interfacing with VTK through NumPy and direct array access. This package provides a Pythonic, well-documented interface exposing VTK’s powerful visualization backend to facilitate rapid prototyping, analysis, and visual integration of spatially referenced datasets.
PyWEED PyWEED is an application for retrieving event-based seismic data.
QuakeMigrate QuakeMigrate is a Python package for automatic earthquake detection and location using waveform migration and stacking. It can be used to produce catalogues of earthquakes, including hypocentres, origin times, phase arrival picks, and local magnitude estimates, as well as rigorous estimates of the associated uncertainties.
REDPy Repeating Earthquake Detector in Python (REDPy) is a tool for automated detection and analysis of repeating earthquakes in continuous data. It works without any previous assumptions of what repeating seismicity looks like (that is, does not require a template event).
RfPy RfPy is a software to calculate single event-station receiver functions from the spectral deconvolution technique.
SediNet SediNet configurable machine-learning framework for estimating either (or both) continuous and categorical variables from a photographic image of clastic sediment.
Segyio Segyio is a small LGPL licensed C library for easy interaction with SEG-Y and Seismic Unix formatted seismic data, with language bindings for Python and Matlab. Segyio is an attempt to create an easy-to-use, embeddable, community-oriented library for seismic applications. Features are added as they are needed; suggestions and contributions of all kinds are very welcome.
SHTOOLS SHTOOLS is a Fortran-95/Python library that can be used to perform spherical harmonic transforms, multitaper spectral analyses, expansions of functions into Slepian bases, and standard operations on global gravitational and magnetic field data.
SimPEG Simulation and Parameter Estimation in Geophysics (SimPEG) is a python package for simulation and gradient-based parameter estimation in the context of geophysical applications.
SplitPy SplitPy is a teleseismic shear-wave (SKS) Splitting Toolbox based on the Matlab Tool SplitLab, developed by Wustefeld et al (2008).
tdmtpy Time Domain Moment Tensor Inversion in Python (tdmtpy) is a python package developed for time domain inversion of complete seismic waveform data to obtain the seismic moment tensor. It supports deviatoric and full moment tensor inversions, and 1-D and 3-D basis Green's functions.
Thermobar Thermobar is a Mineral-Melt Equilibrium tool written in the open-source language Python3. Thermobar allows pressures, temperatures and melt water contents to be easily calculated using more than 100 popular thermobarometers. We also provide computationally-fast functions for calculating pressures and temperatures for all possible pairs of phases in equilibrium from a given sample/volcanic center (e.g., cpx-liquid, opx-liquid, two-pyroxene, two-feldspar matching).
VESIcal VESIcal is a generalized python library for calculating and plotting various things related to mixed volatile (H2O-CO2) solubility in silicate melts.
Welly Welly uses lasio for data input and output but hides much of it from the user. I recommend that you look at both projects before deciding if you need the "well-level" functionality that welly provides. Welly is a family of classes to facilitate the loading, processing, and analysis of subsurface wells and well data, such as striplogs, formation tops, well log curves, and synthetic seismograms.

Back to top ↑


Geospatial Analysis and Mapping

48 libraries

Vector and raster processing, Earth Engine, regridding, geostatistics and interactive maps.

Library Description
Awesome Earth Engine A curated list of Google Earth Engine resources includng many python libraries.
Cartopy Easy cartographic (maps) data visualization.
Collocate Collocate xarray trajectories in arbitrary physical dimensions.
Datashader Graphics pipeline system for creating meaningful representations of large datasets quickly and flexibly.
earthengine-py-notebooks A collection of 360+ Jupyter Python notebook examples for using Google Earth Engine with interactive mapping.
EarthSim Tools for working with and visualizing environmental simulations.
eo-learn Earth observation processing framework for machine learning in Python.
ESMPy Interface to the Earth System Modeling Framework (ESMF) regridding utility.
Fiona It reads and writes geographic data files and thereby helps Python programmers integrate geographic information systems with other computer systems.
geehydro A Python package for mapping inundation dynamics using Google Earth Engine.
geemap A Python package for interactive mapping with Google Earth Engine, ipyleaflet, and ipywidgets.
GeoDjango GeoDjango is an included contrib module for Django that turns it into a world-class geographic Web framework. GeoDjango strives to make it as simple as possible to create geographic Web applications, like location-based services.
geonotebook Jupyter notebook extension for geospatial visualization and analysis developed by NASA.
Geopandas GeoPandas is an open source project to make working with geospatial data in python easier. GeoPandas extends the datatypes used by pandas to allow spatial operations on geometric types.
Georasters The GeoRasters package is a python module that provides a fast and flexible tool to work with GIS raster files. It provides the GeoRaster class, which makes working with rasters quite transparent and easy.
geospatial-machine-learning A curated list of resources focused on Machine Learning in Geospatial Data Science.
GeostatsPy GeostatsPy Python package for spatial data analytics and geostatistics. Mostly a reimplementation of GSLIB, Geostatistical Library (Deutsch and Journel, 1992) in Python.
GeoViews Library that makes it easy to explore and visualize geographical, meteorological, and oceanographic datasets, such as those used in weather, climate, and remote sensing research.
GeoWombat Utilities for geospatial data.
gridded A single way to work with results from any hydrodynamic/oceanographic model regardless of what type of grid it was computed on.
HoloViews Library designed to make data analysis and visualization seamless and simple.
hvPlot A high-level plotting API for the PyData ecosystem built on HoloViews.
hydro-osm Hydro-osm is a toolbox to convert OpenStreetMap data into data layers that can be readily used for hydrological and hydraulic modelling.
leafmap Leafmap is a Python package for interactive mapping and geospatial analysis with minimal coding in a Jupyter environment.
Lidar Terrain and hydrological analysis based on LiDAR-derived digital elevation models (DEM).
MovingPandas MovingPandas implements a Trajectory class and corresponding methods based on GeoPandas. It provides trajectory data structures and functions for analysis and visualization.
Panel Create custom interactive web apps and dashboards by connecting user-defined widgets to plots, images, tables, or text.
ParTerra-Python The Participatory Terrain model deploys an algorithm to fuse together data from OpenStreetMap (OSM) and any base elevation dataset to create a high-resolution digital terrain model for any area in the world.
PcRaster It is a collection of software targeted at the development and deployment of spatio-temporal environmental models.
PyGeoprocessing A Python/Cython based library that provides a set of commonly used raster, vector, and hydrological operations for GIS processing.
pygis pygis is a collection of Python snippets for geospatial analysis.
pyGIS pyGIS is an online textbook covering all the core geospatial functionality available in Python. This includes handling vector and raster data, satellite remote sensing, machine learning and deep learning applications.
PyGMT PyGMT is a library for processing geospatial and geophysical data and making publication quality maps and figures. It provides a Pythonic interface for the Generic Mapping Tools (GMT), a command-line program widely used in the Earth Sciences.
pyproj Interface to PROJ (cartographic projections and coordinate transformations library).
pyResample Resampling geospatial image data.
PySal A python spatial analysis library for open source and crossed platform Geospatial Data Science.
Pysheds Simple and fast watershed delineation in python.
python-geospatial A collection of Python packages for geospatial analysis with binder-ready notebook examples.
PYWR Spatial allocation tool.
Rasterio Rasterio is a GDAL and Numpy-based Python library designed to make your work with geospatial raster data more productive, more fun, more Zen. It is a highly useful module for raster processing which you can use for reading and writing several different raster formats in Python. Python automatically registers all known GDAL drivers for reading supported formats when importing the module.
Regionmask Plotting and creation of masks of spatial regions.
salem Adds geolocalised subsetting, masking, and plotting operations to xarray's data structures via accessors.
SciKit-GStat SciKit-Gstat is a scipy-styled analysis module for geostatistics.
Shapely Shapely is a Python package for manipulation and analysis of planar geometric objects. It is based on the widely deployed GEOS (the engine of PostGIS) and JTS libraries.
Verde It is a Python library for processing spatial data (bathymetry, geophysics surveys, etc) and interpolating it on regular grids (i.e., gridding).
whitebox The whitebox Python package is built on WhiteboxTools, an advanced geospatial data analysis platform. WhiteboxTools can be used to perform common geographical information systems (GIS) analysis operations, such as cost-distance analysis, distance buffering, and raster reclassification.
xESMF Universal regridder for geospatial data.
xshape Tools for working with shapefiles, topographies, and polygons in xarray.

Back to top ↑


Hydrology

91 libraries

Data access, catchment and groundwater models, time series tools and uncertainty analysis.

Data Collection  ·  Groundwater Modelling  ·  Hydrological Modelling  ·  Miscellaneous  ·  Optimization, Uncertainty, Statistics  ·  Time Series Analysis

Data Collection

11 libraries

Library Description
BoM Water This package has been developed to access to the BoM Water Data Sensor Observation Service (SOS). With a goal to easily and efficiently integrate data into scientific workflows.
CAMELS-AUS Python package to easily load and use the CAMELS-AUS dataset.
Eco-Data Manage Toolkit It is a Python toolkit to facilitate data management for hydrology/limnology applications.
Ecohydrolib Libraries and command-line scripts for performing ecohydrology data preparation workflows.
ERA5-tools Python scripts to download and view ERA5 climatologic data, as well as to extract time series (hourly to monthly data on many atmospheric and land-surface parameters)
HKVFEWSPY Connection to the DelftFEWS servers.
HyRiver HyRiver is a software stack consisting of six Python libraries that are designed to aid in watershed analysis through web services. This project includes hydrology and climatology data within the US.
Openradar Library for processing a set of dutch, german and belgian precipitation radars into calibrated composites.
PyHIS It is a python library for querying CUAHSI*-HIS** web services.
Ulmo Clean, simple and fast access to public hydrology and climatology data.
Wetterdienst Python Toolset For Accessing Weather Data From German Weather Service.

Back to top ↑

Groundwater Modelling

13 libraries

Library Description
Anaflow A python-package containing analytical solutions for the groundwater flow equation.
Flopy The Python interface to MODFLOW.
HydroGeoSines Signal In the Noise Exploration Software for Hydrogeological Datasets.
Idfpy A simple module for reading and writing iMOD IDF files. IDF is a simple binary format used by the iMOD groundwater modeling software.
imod-python Make massive MODFLOW models.
Phydrus Python implementation of the HYDRUS-1D unsaturated zone model.
PyHELP A Python library for the assessment of spatially distributed groundwater recharge and hydrological components with HELP.
PyRecharge Spatially distributed groundwater recharge and depletion modeling framework in Python.
Pytesmo Python Toolbox for the Evaluation of Soil Moisture Observations.
TIMML A Multi-Layer, Analytic Element Model.
TTim A Multi-Layer, Transient, Analytic Element Model.
WellApplication Set of tools for groundwater level and water chemistry analysis.
WellTestPy A python-package for handling well based field campaigns.

Back to top ↑

Hydrological Modelling

27 libraries

Library Description
Catchmod CATCHMOD is widely used rainfall runoff model in the United Kingdom. It was introduced by Wilby (1994).
CMF Catchment Modelling Framework, a hydrologic modelling toolbox.
EXP-HYDRO EXP-HYDRO is a catchment scale hydrological model that operates at a daily time-step. It takes as inputs the daily values of precipitation, air temperature, and potential evapotranspiration, and simulates daily streamflow at the catchment outlet.
Hapi Hapi is an open-source Python Framework for building raster-based conceptual distributed hydrological models using HBV96 lumped model & Muskingum routing method at a catchment scale.
hidrocomp Python library for hydrological data analysis.
HydroFunctions A suite of convenience functions for working with hydrology data in an interactive Python session.
HydrPy A framework for the development and application of hydrological models based on Python.
LHMP Lumped Hydrological Models Playground.
mhmpy A Python-API for the mesoscale Hydrological Model.
NeuralHydrology Python library to train neural networks with a strong focus on hydrological applications.
pyDEM PyDEM is a package for topographic (terrain) analysis. It takes in digital elevation model (DEM) rasters, and it outputs quantities like slope, aspect, upstream area, and topographic wetness index.
PyFlo It is an open-source Python library for performing hydraulic and hydrology stormwater analysis. Features include network hydraulic grade analysis and time/iteration based storage and flood routing simulations.
pySTEPS It is an open-source and community-driven Python library for probabilistic precipitation nowcasting, i.e. short-term ensemble prediction systems.
PyStream Python implementation of the STREAM hydrological rainfall-runoff model.
PyTOPKAPI PyTOPKAPI is a BSD licensed Python library implementing the TOPKAPI Hydrological model (Liu and Todini, 2002).
rabpro River and basin profiler. A package to delineate watershed basins and compute attribute statistics using Google Earth Engine.
RRMPG Rainfall-Runoff modelling playground.
SMARTPy Python implementation of the rainfall-runoff model SMART.
StreamStats Python package for interfacing with the USGS StreamStats API.
SuperflexPy A new open source framework for building conceptual hydrological models.
SynxFlow SynxFlow is an open-source model capable of dynamically simulating overland flows, flood inundations, and debris flows using CUDA-enabled GPUs. It can be driven by direct rainfall and/or river inflows.
TopoFlow Spatial hydrologic model (D8-based, fully BMI-compliant).
VIC The Variable Infiltration Capacity (VIC) Macroscale Hydrologic Model.
wflow wflow consists of a set of Python programs that can be run on the command line and perform hydrological simulations. The models are based on the PCRaster Python framework.
WRF-Hydro wrfhydrpy is a Python API for the WRF-Hydro modelling system.
Xanthos Xanthos is an open-source hydrologic model, written in Python, designed to quantify and analyze global water availability.
xHydro Hydrological analysis library built with xarray.

Back to top ↑

Miscellaneous

18 libraries

Library Description
atlite Xarray-based Python library for converting weather data (like wind speeds, solar influx) into energy systems data.
earthdata Python library to search and access NASA datasets.
EFlowCalc Calculator of Streamflow Characteristics.
ESMPY Earth System Modeling Framework (ESMF) Python interface.
Hydrobox Hydrological preprocessing and analysis toolbox build upon pandas and numpy.
Hydrofunctions A suite of convenience functions for working with hydrology data in an interactive Python session.
Hydrointerp A Python package for interpolating hydrologic data.
Hydroshare HydroShare is a collaborative website for better access to data and models in the hydrologic sciences.
IRIS A powerful, format-agnostic, and community-driven Python library for analysing and visualising Earth science data.
iRONS iRONS (interactive Reservoir Operation Notebooks and Software) is a python package that enables the simulation, forecasting and optimisation of reservoir systems.
Landlab The Landlab project creates an environment in which scientists can build a numerical landscape model without having to code all of the individual components.
PyHSPF Python extensions to the Hydrological Simulation Program in Fortran (HSPF).
PyMT It is an Open Source Python package that provides the necessary tools used for the coupling of models that expose the Basic Model Interface (BMI).
Shyft It is the open-source toolbox for the energy-market domain, funded and supported by Statkraft.
SPHY Spatial Processes in HYdrology (SPHY) model.
Wetland It is a toolset for mapping surface water and wetland hydrological dynamics using fine-resolution aerial imagery within Google Earth Engine (GEE).
xmovie Simple way of creating beautiful movies from xarray objects.
xsboringen (In Dutch) A python library for processing and plotting borehole and CPT data, developed for open data formats in the Netherlands.

Back to top ↑

Optimization, Uncertainty, Statistics

14 libraries

Library Description
Climate-indices Climate indices for drought monitoring, community reference implementations in Python.
HPGL High Performance Geostatistics Library.
HydroErr Goodness of Fit metrics for use in comparison studies, specifically in the field of hydrology.
HydroLM The HydroLM package contains a class and functions for automating linear regressions OLS for hydrologists.
LMFIT Non-Linear Least Squares Minimization, with flexible Parameter settings, based on scipy.optimize.leastsq, and with many additional classes and methods for curve fitting.
nsEVDx A Python library for modeling non-stationary extreme value distributions (GEV & GPD) using scipy and numpy, featuring Bayesian and frequentist methods, MCMC samplers, diagnostics, and linear/polynomial regression on arbitrary covariates.
Pyemu A python modules for model-independent uncertainty analyses, data-worth analyses, and interfacing with PEST(++).
PyForecast It is a statistical modeling tool useful in predicting monthly and seasonal inflows and streamflows. The tool collects meterological and hydrologic datasets, analyzes hundreds to thousands of predictor subsets, and returns statistical regressions between predictors and streamflows.
PyGLUE Generalised Likelihood Uncertainty Estimation (GLUE) Framework.
PySDI It is a set of open source scripts that compute non-parametric standardized drought indices (SDI) using raster data sets as input data.
scikit-extremes It is a python library to perform univariate extreme value calculations.
SPOTpy A Statistical Parameter Optimization Tool for Python.
wxee Python interface between Earth Engine and xarray for processing time series data.
xarrayutils Various tools for data analysis built on top of xarray and xgcm.

Back to top ↑

Time Series Analysis

8 libraries

Library Description
efts-python A python library for reading and writing Ensemble Forecast Time Series in netCDF files.
htimeseries This module provides the HTimeseries class, which is a layer on top of pandas, offering a little more functionality.
Hydropy Analysis of hydrological oriented time series.
Hydrostats Tools for use in comparison studies, specifically for use in the field of hydrology.
HyperTS A Full-Pipeline Automated Time Series (AutoTS) Analysis Toolkit. Easy-to-use, powerful, unified full pipeline automated time series toolkit. Supports forecasting, classification and regression.
NeuralForecast NeuralForecast is a Python library for time series forecasting with deep learning models. It includes benchmark datasets, data-loading utilities, evaluation functions, statistical tests, univariate model benchmarks and SOTA models implemented in PyTorch and PyTorchLightning.
Pastas Analysis of hydrological time series using time series models.
scikit-hts Python implementation of general hierarchical time series modeling.

Back to top ↑


Meteorology

21 libraries

Weather data, radar and satellite processing, nowcasting and evapotranspiration.

Library Description
ACT Toolkit for working with atmospheric time-series datasets of varying dimensions.
Awesome-EarthObservation-Code A curated list of awesome tools, tutorials, code, helpful projects, links, stuff about Earth Observation and Geospatial stuff!
Evaporation Calculation of evaporation and transpiration.
How to work with meteorological data The examples in this space should give you a good starting point how you can work with ECMWF services and data through Python using Jupyter notebooks.
Improver It is a library of algorithms for meteorological post-processing and verification.
JAMS It is a general Python package offering miscellaneous functions in different categories, such as reading different file formats, julian date routines, or meteorological functions.
MELODIST It is an open-source toolbox written in Python for disaggregating daily meteorological time series to hourly time steps.
MetPy It is a collection of tools in Python for reading, visualizing and performing calculations with weather data.
MetSim It is a meteorological simulator and forcing disaggregator for hydrologic modeling and climate applications.
Metview Python interface to Metview, a meteorological workstation and batch system for accessing, examining, manipulating and visualising meteorological data.
Py-ART Weather radar algorithms and utilities.
PyCat Climate Analysis Tool written in python.
PyDSD Utilities for working with disdrometer data.
PyEto It is a Python library for calculating reference crop evapotranspiration (ETo), sometimes referred to as potential evapotranspiration (PET). The library provides numerous functions for estimating missing meteorological data.
pyPI Tropical cyclone potential intensity calculations.
PySteps It is a community-driven initiative for developing and maintaining an easy to use, modular, free and open source Python framework for short-term ensemble prediction systems.
rainymotion Python library for radar-based precipitation nowcasting based on optical flow techniques.
Satpy Reading, manipulating, and writing data from remote-sensing earth-observing meteorological satellite instruments.
scikit-downscale Statistical downscaling and postprocessing models for climate and weather model simulations.
windspharm Python Spherical harmonic wind analysis.
wrf-python Python A collection of diagnostic and interpolation routines for use with output of the Weather Research and Forecasting (WRF-ARW) Model.

Back to top ↑


Oceanography

9 libraries

Seawater thermodynamics, tides, waves, Argo floats and ocean colormaps.

Library Description
argopy Argo data access, visualisation and manipulation.
cmocean Beautiful colormaps for oceanography.
gcm-filters Performs spatial filtering analysis in a flexible and efficient way.
GSW-Python Python implementation of the Thermodynamic Equation of Seawater 2010 (TEOS-10).
mixsea Turbulence parameter estimation from fine scale oceanographic data.
oceanwaves-python This toolbox provides a generic data storage object for ocean waves data (OceanWaves).
PyFerret Quick exploration of oceanographic data.
UTide Python re-implementation of the Matlab package UTide.
windspharm Computations on global wind fields in spherical geometry.

Back to top ↑


Seismology

7 libraries

Reading, processing and monitoring seismic and seismological data.

Library Description
Bruges Various geophysical equations and tools.
Madagascar Multi-dimensional data processing suite.
ObsPy Framework for reading, writing and processing seismic and seismological data.
Pyrocko Seismology toolkit.
rsudp Continuous ObsPy-based visual display, sudden motion monitoring, and historical replay of Raspberry Shake data.
Segyio Fast library for seismic SEGY files.
SeismicZFP Convert SEG-Y/ZGY files to compressed SGZ files & retrieve arbitrary sub-volumes from these, fast.

Back to top ↑


Contributing

Contributions are always welcome. To add a library:

  1. Fork this repository.
  2. Add one row to the table of the matching domain or subfield:
    | **[Library Name](https://link-to-project)** | One clear sentence on what it does. |
  3. Open a pull request with a short note on why the library is useful for Earth Sciences.

Note

You don't need to sort the table or touch any numbers. After a change is merged, a GitHub Action runs scripts/update_readme.py, which puts every table in alphabetical order and refreshes all counts, cards and charts.


Star History

Star history chart


Connect

Website: javedali.net LinkedIn: in/javedali18 X: @javedali99 Email: javedali28@gmail.com


Released under the GNU GPL v3.0 license · Maintained by Javed Ali
Back to top ↑

Releases

Packages

Contributors

Languages