Location Oriented Observed Meteorology (LOOM)
Project description
metloom
Location Oriented Observed Meteorology
metloom is a python library created with the goal of consistent, simple sampling of meteorology and snow related point measurments from a variety of datasources is developed by M3 Works as a tool for validating computational hydrology model results. Contributions welcome!
Warning - This software is provided as is (see the license), so use at your own risk. This is an opensource package with the goal of making data wrangling easier. We make no guarantees about the quality or accuracy of the data and any interpretation of the meaning of the data is up to you.
Free software: BSD license
Features
Sampling of daily, hourly, and snow course data
Searching for stations from a datasource within a shapefile
Requirements
python >= 3.7
Install
python3 -m pip install metloom
- Common install issues:
- Macbook M1 and M2 chips: some python packages run into issues with the new M chips
- error : from lxml import etree in utils.py ((mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64)
The solution is the following
pip uninstall lxml pip install --no-binary lxml lxml
Local install for dev
The recommendation is to use virtualenv, but other local python environment isolation tools will work (pipenv, conda)
python3 -m pip install --upgrade pip
python3 -m pip install -r requirements_dev
python3 -m pip install .
Testing
pytest
If contributing to the codebase, code coverage should not decrease from the contributions. Make sure to check code coverage before opening a pull request.
pytest --cov=metloom
Documentation
readthedocs coming soon
Usage
See usage documentation https://metloom.readthedocs.io/en/latest/usage.html
NOTES: PointData methods that get point data return a GeoDataFrame indexed on both datetime and station code. To reset the index simply run df.reset_index(inplace=True)
Simple usage examples are provided in this readme and in the docs. See our examples for code walkthroughs and more complicated use cases.
Usage Examples
Use metloom to find data for a station
from datetime import datetime
from metloom.pointdata import SnotelPointData
snotel_point = SnotelPointData("713:CO:SNTL", "MyStation")
df = snotel_point.get_daily_data(
datetime(2020, 1, 2), datetime(2020, 1, 20),
[snotel_point.ALLOWED_VARIABLES.SWE]
)
print(df)
Use metloom to find snow courses within a geometry
from metloom.pointdata import CDECPointData
from metloom.variables import CdecStationVariables
import geopandas as gpd
fp = <path to shape file>
obj = gpd.read_file(fp)
vrs = [
CdecStationVariables.SWE,
CdecStationVariables.SNOWDEPTH
]
points = CDECPointData.points_from_geometry(obj, vrs, snow_courses=True)
df = points.to_dataframe()
print(df)
Tutorials
In the Examples folder, there are multiple Jupyter notbook based tutorials. You can edit and run these notebooks by running Jupyter Lab from the command line
pip install jupyterlab
jupyter lab
This will open a Jupyter Lab session in your default browser.
Credits
This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.
History
0.1.0 (2021-10-05)
This is the first release!
Create the package
Add CDEC functionality
Add SNOTEL functionality
Add CLI to find stations from shapefile
Write a custom Snotel client using zeep
0.2.0 (2021-12-29)
Added mesowest network
Added in a token json arg to the get_*_data functions
Pinned docutils for an update that happened
Added in a resample_df function for the highway stations where the returned data is 5min for air temp.
0.3.0 (2022-10-28)
Added USGS network
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for metloom-0.6.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 98302fdb21f020f819fe116f33d76be06b259a11ea9ab586100e3cea14538b3e |
|
MD5 | 077dcfe1d6e196574872b482dfa36080 |
|
BLAKE2b-256 | 8de6106902d7058ed3017055175c425ec08df7b18f8a86388579035c5ff9dcf4 |