Skip to main content

Time series synchronisation and resample library.

Project description

What is syncing?

syncing is an useful library to synchronise and re-sample time series.

synchronisation is based on the fourier transform and the re-sampling is performed with a specific interpolation method.

Installation

To install it use (with root privileges):

$ pip install syncing

Or download the last git version and use (with root privileges):

$ python setup.py install

Install extras

Some additional functionality is enabled installing the following extras:

  • cli: enables the command line interface.

  • plot: enables to plot the model process and its workflow.

  • dev: installs all libraries plus the development libraries.

To install syncing and all extras (except development libraries), do:

$ pip install syncing[all]

Synchronising Laboratory Data

This example shows how to synchronise two data-sets obd and dyno (respectively they are the On-Board Diagnostics of a vehicle and Chassis dynamometer) with a reference signal ref. To achieve this we use the model syncing model to visualize the model:

>>> from syncing.model import dsp
>>> model = dsp.register()
>>> model.plot(view=False)
SiteMap(...)

[graph]

Tip: You can explore the diagram by clicking on it.

First of all, we generate synthetically the data-sets to feed the model:

>>> import numpy as np
>>> data_sets = {}
>>> time = np.arange(0, 150, .1)
>>> velocity = (1 + np.sin(time / 10)) * 60
>>> data_sets['ref'] = dict(
...     time=time,                                               # [10 Hz]
...     velocity=velocity / 3.6                                  # [m/s]
... )
>>> data_sets['obd'] = dict(
...     time=time[::10] + 12,                                    # 1 Hz
...     velocity=velocity[::10] + np.random.normal(0, 5, 150),   # [km/h]
...     engine_rpm=np.maximum(
...         np.random.normal(velocity[::10] * 3 + 600, 5), 800
...     )                                                        # [RPM]
... )
>>> data_sets['dyno'] = dict(
...     time=time + 6.66,                                        # 10 Hz
...     velocity=velocity + np.random.normal(0, 1, 1500)         # [km/h]
... )

To synchronise the data-sets and plot the workflow:

>>> from syncing.model import dsp
>>> sol = dsp(dict(
...     data=data_sets, x_label='time', y_label='velocity',
...     reference_name='ref', interpolation_method='cubic'
... ))
>>> sol.plot(view=False)
SiteMap(...)

[graph]

Finally, we can analyze the time shifts and the synchronised and re-sampled data-sets:

>>> import pandas as pd
>>> import schedula as sh
>>> pd.DataFrame(sol['shifts'], index=[0])
     obd  dyno
...
>>> df = pd.DataFrame(dict(sh.stack_nested_keys(sol['resampled'])))
>>> df.columns = df.columns.map('/'.join)
>>> df['ref/velocity'] *= 3.6
>>> ax = df.set_index('ref/time').plot(secondary_y='obd/engine_rpm')
>>> ax.set_ylabel('[km/h]'); ax.right_ax.set_ylabel('[RPM]')
Text(...)
setup-ljvds667/pypi-1.*

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

syncing-1.0.8.tar.gz (18.5 kB view details)

Uploaded Source

Built Distribution

syncing-1.0.8-py2.py3-none-any.whl (19.0 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file syncing-1.0.8.tar.gz.

File metadata

  • Download URL: syncing-1.0.8.tar.gz
  • Upload date:
  • Size: 18.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.0

File hashes

Hashes for syncing-1.0.8.tar.gz
Algorithm Hash digest
SHA256 c7f632720b9f3f1b8159c98d65a099f09b8d48291902e67355ee948805e9d453
MD5 ac66ae111a772f0c2c98603f06ec8241
BLAKE2b-256 f8555bc28ce16e15cea7d99e8aa68c2b41bece970cbf6ecaea2acd2bb3237e9f

See more details on using hashes here.

File details

Details for the file syncing-1.0.8-py2.py3-none-any.whl.

File metadata

  • Download URL: syncing-1.0.8-py2.py3-none-any.whl
  • Upload date:
  • Size: 19.0 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.0

File hashes

Hashes for syncing-1.0.8-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 76ab2277875fd828f67d3487df28db000adc4b95c09eef06865df78c931b0795
MD5 ad23f0283f516216fdc1f3fea4b559f5
BLAKE2b-256 2fd08cd0fcc5cc202faf3d69a47f0b614278d7a3fbe45bf6d3300b50cd5a4b6b

See more details on using hashes here.

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