Skip to main content

aeroval database to communicate between pyaerocom and aeroval

Project description

aerovaldb - Database combining aeroval and pyaerocom

About

aerovaldb is the database-interface used in the aeroval-API to send data to aeroval database instances like https://aeroval.met.no . Data is usually provided by PyAerocom.

The scope of aerovaldb are:

  1. A well-tested read-interface for reading resources as python-object, json or json_filehandle.
  2. A interface to write/extend python objects to the resources2.
  3. At least one implementation (largely based on json files) implementing the read-interface. (needed for testing)
  4. At least one implementation (largely based on json files) implementing the write-interface.

Our documentation can be found here

Design principles

  1. As pyaerocom-programmer using aerovaldb I want to have documented functions with arguments, e.g. put_heatmap(hm, country, component)
  2. As a pyaerocom-progammer, I want to be able to write to a new datasource/format by just updating a config-file
  3. As a pyaerocom-user, I want to be able to upgrade an experiment without thinking about the dabase format.
  4. From a DB-implementer I want to have a resource-name (table/path) with parameters as dictionary, e.g. open(f"path/to/heatmaps/{country}/{component}.json") or SELECT * FROM PATH_TO_HEATMAPS where country = ? and component = ?
  5. As Web-developer using aerovaldb, I have to map routes to function, and I have parameters for the routes.
  6. As a Web-developer, I don't want to need to know the type of the aerovaldb-implementation and can auto-guess from a location.
  7. As a web-developer, I might need to handle databases in different formats depending on when the user set up the experiment.
  8. For performance, I want to avoid unnecessary json/obj transformations, so I want to put/get obj or json or filehandle and the database might want to decide how to handle that fastest. obj should be the default, json is required, filehandle is optional (and only for get-operations.). (this requirement might be premature optimization? to be discussed ...)
  9. To be discussed: do we want to allow the programmer to set open-modes, e.g. 'r', 'rw', 'w'?

Installation

python -m pip install 'aerovaldb@git+https://github.com/metno/aerovaldb.git'

Usage

Reader, e.g. webserver

import aerovaldb

with aerovaldb.open('json_files:path/to/data/') as db:
    try:
        fh = db.get_map(*args, access_type=aerovaldb.AccessType.FILE_PATH)
        # ... sendfile of filehandle
    except FileNotFoundError as e:
        json = db.get_map(*args, access_type=aerovaldb.AccessType.JSON_STR)
        # ... send json string to client

Writer

import aerovaldb
import json

with aerovaldb.open('json_files:path/to/data/') as db:
    db.put
    obj = {"data": "Some test data"}
    json_str = "{ 'data': 'Some test data' }"
    db.put_map(json_str) # String is assumed to be json string and stored directly.

    db.put_map(obj) # Otherwise serialized object is stored.

API (version 0)

Data Getter Setter
glob_stats db.get_glob_stats() db.put_glob_stats()
experiments db.get_experiments() db.get_experiments()
config db.get_config() db.get_config()
menu db.get_menu() db.put_menu()
statistics db.get_statistics() db.put_statistics()
ranges db.get_ranges() db.put_ranges()
regions db.get_regions() db.put_regions()
models_style db.get_models_style() db.put_models_style()
map db.get_map() db.put_map()
time series db.get_timeseries() db.put_timeseries()
time series weekly db.get_timeseries_weekly() db.put_timeseries_weekly()
scatter db.get_scatter() db.put_scatter()
profiles db.get_profiles() db.put_profiles()
heatmap timeseries db.get_heatmap_timeseries() db.put_heatmap_timeseries()
forecast db.get_forecast() db.put_forecast()
contour db.get_contour() db.put_contour()
gridded map db.get_gridded_map() db.put_gridded_map()
report db.get_report() db.put_report()

COPYRIGHT

Copyright (C) 2024 Augustin Mortier, Thorbjørn Lunding, Heiko Klein, Norwegian Meteorological Institute

This library is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU General Public License along with this library; if not, see https://www.gnu.org/licenses/

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aerovaldb-0.1.4.tar.gz (46.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aerovaldb-0.1.4-py3-none-any.whl (47.3 kB view details)

Uploaded Python 3

File details

Details for the file aerovaldb-0.1.4.tar.gz.

File metadata

  • Download URL: aerovaldb-0.1.4.tar.gz
  • Upload date:
  • Size: 46.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for aerovaldb-0.1.4.tar.gz
Algorithm Hash digest
SHA256 470683af727459f67a95bc937adebc2f4aa770037f59dc0482d915ee785ce146
MD5 ef542b405ec297ead1bdbb46ac9739ea
BLAKE2b-256 39d3f111f53d53579d7f6f9804113cbc23602f9bfddafdf21d916a364429aee5

See more details on using hashes here.

Provenance

The following attestation bundles were made for aerovaldb-0.1.4.tar.gz:

Publisher: publish.yml on metno/aerovaldb

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file aerovaldb-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: aerovaldb-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 47.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for aerovaldb-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 de3232990a8171f7735f7bb6453d62f0ea4b3462af51cf5ddec86362bbbfdae9
MD5 036e4ad8f317a8798890ee12809cd3a2
BLAKE2b-256 a5fe983b947ec11996df3e9867ba31128aeef976b5b964ddabab63cf7ae96642

See more details on using hashes here.

Provenance

The following attestation bundles were made for aerovaldb-0.1.4-py3-none-any.whl:

Publisher: publish.yml on metno/aerovaldb

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page