a5 api client for python
Project description
a5 api client library
This is a Python client library to work against a alerta5DBIO API instance developed by Instituto Nacional del Agua, such as the one deployed here.
Installation
# set environment
python3 -m venv .
source bin/activate
## Install from pip
pip install a5-client
## Or clone git repo
clone https://github.com/jbianchi81/a5client.git
cd a5client
pip install .
Config file location
- Linux: $HOME/.a5client.ini
- Windows: %USERPROFILE%/.a5client.ini
- MacOS: $HOME/.a5client.ini
Default log file location (may be changed in config file)
- Linux: $HOME/.local/share/a5client/logs/a5client.log
- Windows: %LOCALAPPDATA%/a5client/logs/a5client.log
- MacOS: $HOME/Library/Logs/a5client/a5client.log
Use
from datetime import datetime, timedelta
from a5client import Crud
# Instantiate client
client = Crud(url="A5_API_ENDPOINT_URL", token="YOUR_PERSONAL_TOKEN")
Methods
# READ actions
# Retrieve observations metadata
series = client.readSeries(
var_id=2
)
# retrieve stations metadata
stations = client.readEstaciones()
# retrieve area metadata
area = client.readArea(1)
# retrieve variable metadata
var = client.readVar(2)
# retrieve observations data
serie = client.readSerie(
series_id=29,
timestart="2020-01-01T03:00:00.000Z",
timeend="2021-01-01T03:00:00.000Z"
)
# retrieve simulation configuration
calibrado = client.readCalibrado(289)
# retrieve forecast metadata
corridas = client.readCorridas(289)
# retrieve forecast data, only last run
serie_forecast = client.readSerieProno(
cal_id=289,
series_id=3526
)
# retrieve forecast data, concatenate runs
serie_forecast = client.readSeriePronoConcat(
cal_id=289,
series_id=3526,
forecast_timestart = datetime.now() - timedelta(days=20)
)
# WRITE actions
# create sites (stations, areas, scenes)
created_sites = client.createSites(
[
{
"nombre": "my_station_name",
"id": 11111111,
"geom": {
"type": "Point",
"coordinates": [ -55.55, -33.33 ]
},
"tabla": "alturas_varios"
}
],
tipo="estaciones",
format="json"
)
# create series
created_series = client.createSeries(
[
{
"tipo": "puntual",
"id": 22222222,
"estacion": created_sites[0],
"var": {"id": 2},
"procedimiento": {"id": 1},
"unidades": {"id": 11}
}
]
)
# create observations
import pandas as pd
observations = pd.DataFrame({
"valor": [1.11, 2.22, 3.33]
},
index = pd.date_range(start="2024-01-01 00:00", periods=3, freq='h', tz="UTC")
)
created_observations = client.createObservaciones(
observations,
series_id = created_series[0]["id"],
tipo="puntual"
)
# Create simulation run
from a5client import observacionesDataFrameToList
forecasts = pd.DataFrame({
"valor": [1.21, 2.32, 3.43]
},
index = pd.date_range(start="2024-01-01 00:00", periods=3, freq='h', tz="UTC")
)
forecast_run = {
"forecast_date": "2024-01-01 00:00",
"series": [
{
"series_table": "series",
"series_id": created_series[0]["id"],
"pronosticos": observacionesDataFrameToList(forecasts, series_id=created_series[0]["id"])
}
]
}
created_run = client.createCorrida(
forecast_run,
cal_id = 507
)
Auxiliary functions
from a5client import observacionesDataFrameToList, observacionesListToDataFrame, geojsonToList
from datetime import datetime
# DataFrame to list of dict (a5 schema)
observaciones = pd.DataFrame({
"valor": [1.21, 2.32, 3.43]
},
index = pd.date_range(start="2024-01-01 00:00", periods=3, freq='h', tz="UTC")
)
df = observacionesDataFrameToList(observaciones, series_id = 3333333)
# list of dict (a5 schema) to DataFrame
df = observacionesListToDataFrame([
{
"timestart": datetime(2024,1,1,0),
"valor": 5.55
},
{
"timestart": datetime(2024,1,1,1),
"valor": 4.44
},
{
"timestart": datetime(2024,1,1,2),
"valor": 3.33
}
])
# GeoJSON dict to list of sites dict (a5 schema)
sites = geojsonToList({
"type": "FeatureCollection",
"features": [
{
"geometry": {
"type": "Point",
"coordinates": [-55.55, -33.33]
},
"properties": {
"nombre": "my_station_name",
"id": 555555,
"tabla": "my_provider_name"
}
}
]
})
TO DO
- Update methods
- Delete methods
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
a5_client-0.1.10.5.tar.gz
(29.0 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file a5_client-0.1.10.5.tar.gz.
File metadata
- Download URL: a5_client-0.1.10.5.tar.gz
- Upload date:
- Size: 29.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
745c70fe7715f87962648c6d26184c3262855bc4129f97abe687298d4ac8f601
|
|
| MD5 |
8179e545b9da5a31396a1bc093ee1e48
|
|
| BLAKE2b-256 |
4e651ca3ca1fda2c8eb3360baa0f50580d667b40f8c8860044aeb055a45c86ed
|
File details
Details for the file a5_client-0.1.10.5-py3-none-any.whl.
File metadata
- Download URL: a5_client-0.1.10.5-py3-none-any.whl
- Upload date:
- Size: 22.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
671aedc8bc7db3f693e9d9d028ecfd564433d868dee150147a92fabdffc9acda
|
|
| MD5 |
4d99227590e980d01a5fd52e045c863a
|
|
| BLAKE2b-256 |
11519509652da08c2d6ab032582ffe394bb91568eeaca32a6940fff6b351264d
|