Skip to main content

PyPI-Status PyPI-Versions Build-Status Codecov LICENCE

Fast optimal matching of items for source-sharing derivative time series.

from ssdts_matching import dynamic_timestamp_match
dynamic_timestamp_match(timestamp1, timestamps2, delta=20)

1 Installation

Install ssdts_matching with:

pip install ssdts_matching

2 Features

  • Pure Python.

  • Compatible with Python 3.5+.

  • Dependencies:

3 Use

You can get a matching of two timestamp series with

from ssdts_matching import dynamic_timestamp_match
dynamic_timestamp_match(timestamp1, timestamps2, delta=20)

Six different functions, in an increasing level of complexity, are procided:

3.1 popping_greedy_timestamp_match

Tries to match two timestamp series in a greedy fashion. Timestamps are popped from their lists as they are matched.

Runs in O(M*log(N)) where M=len(timestamps1) and M=len(timestamps2). Not guarenteed to find an optimal matching error-wise, where the error is the sum of differences between matched pairs.

3.2 greedy_timestamp_match

Tries to match two timestamp series in a greedy fashion.

Runs in O(M*log(N)) where M=len(timestamps1) and M=len(timestamps2). If the resulting match is an injective function from the first series to the second one then the solution is optimal error-wise, where the error is the sum of differences between matched pairs. Otherwise, it is not.

3.3 dynamic_timestamp_match

Optimally matches two timestamp series using dynamic programming.

Runs in O(M*N), where M=len(timestamps1) and N=len(timestamps2). Guarentees an optimal solution error-wise, where the error is the sum of differences between matched pairs.

3.4 hybrid_timestamp_match

Finds the optimal matching of two timestamps series using both a greedy algorithm and a dynamic one.

Runs in O(M*N), where M=len(timestamps1) and N=len(timestamps2), but has a better average running time than dynamic_timestamp_match if some inputs can be optimally solved with the greedy algorithm. Guarentees an optimal solution error-wise, where the error is the sum of differences between matched pairs.

3.5 vertical_aligned_timestamp_match

Matches two timestamps series by partioning them by verticals (pairs of timestamps from both series with identical values) and matching each partition using the hybrid approach.

Runs in O(M*N), where M=len(timestamps1) and N=len(timestamps2). Does not guarentee an optimal solution error-wise, where the error is the sum of differences between matched pairs.

3.6 delta_partitioned_timestamp_match

ttempts to match the two given series of timestamps by partioning the first series into 2 * delta-separated buckets, and applying the given matching function to each (any of the above functions can be used), combining the sub-solution into a matching.

If the provided matching function yields optimal matchings, than so is the matching provided by this function. The algorithm is not guarenteed to be symmetric; giving the same two series in the opposite order may yield a different matching.

4 Contributing

Package author and current maintainer is Shay Palachy (shay.palachy@gmail.com); You are more than welcome to approach him for help. Contributions are very welcomed.

4.1 Installing for development

Clone:

git clone git@github.com:shaypal5/ssdts_matching.git

Install in development mode with test dependencies:

cd ssdts_matching
pip install -e ".[test]"

4.2 Running the tests

To run the tests, use:

python -m pytest --cov=ssdts_matching

4.3 Adding documentation

This project is documented using the numpy docstring conventions, which were chosen as they are perhaps the most widely-spread conventions that are both supported by common tools such as Sphinx and result in human-readable docstrings (in my personal opinion, of course). When documenting code you add to this project, please follow these conventions.

5 Credits

Created by Shay Palachy (shay.palachy@gmail.com).

Download files

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

Source Distribution

ssdts_matching-0.0.3.tar.gz (22.2 kB view details)

Uploaded Source

Built Distribution

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

ssdts_matching-0.0.3-py2.py3-none-any.whl (9.5 kB view details)

Uploaded Python 2Python 3

File details

Details for the file ssdts_matching-0.0.3.tar.gz.

File metadata

File hashes

Hashes for ssdts_matching-0.0.3.tar.gz
Algorithm Hash digest
SHA256 0f3d38b49664a97157169e06caafad36175cb0ef145e39cbfc75e542a6f7778d
MD5 48c37bf422044dfae962b29ebe5cba91
BLAKE2b-256 d12a9062c92bae959d1fac609360788ad39105a9cca831298c22d35befec9ef5

See more details on using hashes here.

File details

Details for the file ssdts_matching-0.0.3-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for ssdts_matching-0.0.3-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 b642f736ed33247161ccc4a04796ae47e8deb518cadc65008bd7ebcc31427c83
MD5 bef7eb99830ecb1633089d55c6331386
BLAKE2b-256 23bdd589eb92930a0572947010e6bbe79e30bded893f69f3b9a40386fe33175c

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.0.3 This release

2 files

0.0.2

1 file

Supported by

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