Skip to main content

Tools for managing pastas projects

Project description

Build Status Documentation Status Codacy Badge

pastastore

This module contains a tool to manage Pastas timeseries and models in a database.

The implementation is similar to pastas.Project, but in addition to managing timeseries and models in-memory, it allows storage of data in a database or on disk.

Storing timeseries and models in a database gives the user a simple way to manage Pastas projects with the added bonus of allowing the user to pick upwhere they left off, without having to (re)load everything into memory.

The connection to database/disk/memory is managed by a connector object. Currently, three connectors are included. The first implementation is an in-memory connector. The other two store data in a database. Both of these implementations are designed to have fast read/write operations, while also compressing the stored data.

  • In-memory: uses dictionaries to hold timeseries and pastas Models in-memory. Does not require any additional packages to use.

  • Arctic is a timeseries/dataframe database that sits atop MongoDB. Arctic supports pandas.DataFrames.

  • PyStore is a datastore (inspired by Arctic) created for storing pandas dataframes (especially timeseries) on disk. Data is stored using fastparquet and compressed with Snappy.

Dependencies

This module has several dependencies (depending on which connector is used):

If using in-memory connector:

  • No additional dependencies are required.

If using Arctic:

  • Arctic requires MongoDB, e.g. install the Community edition (Windows, MacOS).

  • OR, if you wish to use Docker for running MongoDB see the installation instructions here.

If using Pystore:

Installation

Install the module by typing pip install pastastore.

Please note that pystore is not automatically installed as a dependency because it requires Snappy to be (manually) installed first (see previous section)!

For installing in development mode, clone the repository and install by typing pip install -e . from the module root directory.

Usage

The following snippets show typical usage. The general idea is to first define the connector object. The next step is to pass that connector to PastaStore.

Using in-memory dictionaries

This works out of the box after installing with pip without installing any additional Python dependencies or external software.

import pastastore as pst

# define connector
conn = pst.DictConnector("my_connector")

# create project for managing Pastas data and models
store = pst.PastaStore("my_project", conn)

Using Arctic

Only works if there is an instance of MongoDB running somewhere.

import pastastore as pst

# define arctic connector
connstr = "mongodb://localhost:27017/"  # local instance of mongodb
conn = pst.ArcticConnector("my_connector", connstr)

# create project for managing Pastas data and models
store = pst.PastaStore("my_project", conn)

Using Pystore

Only works if python-snappy and pystore are installed.

import pastastore as pst

# define pystore connector
path = "./data/pystore"  # path to a directory
conn = pst.PystoreConnector("my_connector", path)

# create project for managing Pastas data and models
store = pst.PastaStore("my_project", conn)

The database read/write/delete methods can be accessed through the reference to the connector object. For easy access, the most common methods are registered to the store object. E.g.

series = store.conn.get_oseries("my_oseries")

is equivalent to:

series = store.get_oseries("my_oseries")

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

pastastore-0.3.2.tar.gz (20.0 kB view hashes)

Uploaded Source

Built Distribution

pastastore-0.3.2-py3-none-any.whl (21.5 kB view hashes)

Uploaded Python 3

Supported by

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