Distance-based clustering tool
Project description
yacluster
========
yacluster is a Python library which does `distance-based clustering`_ for 2D points. Only Python 3.4+ is officially supported, though other versions may work too. The project uses `semantic versioning`_ and is licensed under `the MIT license`_.
Usage
-----
The main utility is the ``yacluster.cluster`` function which takes two arguments:
* an iterable which yields two-element point tuples, each containing:
- a two-element tuple with X and Y coordinates;
- the actual object being clustered (or its identifier);
* a distance threshold; if a point is included into a cluster, it must be closer to its centroid than this value.
The function returns an iterable of two-element cluster tuples, each containing:
* a two-element tuple with X and Y coordinates of the cluster center;
* a list of objects belonging to the cluster.
Cluster’s centroid is defined as average coordinates of the cluster’s members.
Example
-------
.. code-block:: python
from yacluster import cluster
points = [
((1, 1.0), 'Foo'),
((1.0, 2), 'Bar'),
((2.0, 2.0), 'Baz'),
]
threshold = 1.1
expected_result = [
((1.0, 1.5), ['Foo', 'Bar']),
((2.0, 2.0), ['Baz']),
]
assert expected_result == list(cluster(points, threshold))
Development
-----------
Development requirements are listed in the ``requirements-development.txt`` file.
To run tests, execute ``./tests.py``.
Coding style is checked using `flake8 3.x`_.
.. _distance-based clustering: https://developers.google.com/maps/articles/toomanymarkers#distancebasedclustering
.. _flake8 3.x: http://flake8.pycqa.org/en/latest/
.. _semantic versioning: http://semver.org
.. _the MIT license: LICENSE
========
yacluster is a Python library which does `distance-based clustering`_ for 2D points. Only Python 3.4+ is officially supported, though other versions may work too. The project uses `semantic versioning`_ and is licensed under `the MIT license`_.
Usage
-----
The main utility is the ``yacluster.cluster`` function which takes two arguments:
* an iterable which yields two-element point tuples, each containing:
- a two-element tuple with X and Y coordinates;
- the actual object being clustered (or its identifier);
* a distance threshold; if a point is included into a cluster, it must be closer to its centroid than this value.
The function returns an iterable of two-element cluster tuples, each containing:
* a two-element tuple with X and Y coordinates of the cluster center;
* a list of objects belonging to the cluster.
Cluster’s centroid is defined as average coordinates of the cluster’s members.
Example
-------
.. code-block:: python
from yacluster import cluster
points = [
((1, 1.0), 'Foo'),
((1.0, 2), 'Bar'),
((2.0, 2.0), 'Baz'),
]
threshold = 1.1
expected_result = [
((1.0, 1.5), ['Foo', 'Bar']),
((2.0, 2.0), ['Baz']),
]
assert expected_result == list(cluster(points, threshold))
Development
-----------
Development requirements are listed in the ``requirements-development.txt`` file.
To run tests, execute ``./tests.py``.
Coding style is checked using `flake8 3.x`_.
.. _distance-based clustering: https://developers.google.com/maps/articles/toomanymarkers#distancebasedclustering
.. _flake8 3.x: http://flake8.pycqa.org/en/latest/
.. _semantic versioning: http://semver.org
.. _the MIT license: LICENSE
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
yacluster-1.0.0.tar.gz
(5.6 kB
view details)
Built Distribution
File details
Details for the file yacluster-1.0.0.tar.gz
.
File metadata
- Download URL: yacluster-1.0.0.tar.gz
- Upload date:
- Size: 5.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4ad583e5169c2bd360f3bda999624d413ddcd01e4934bee12f356860fe02f551 |
|
MD5 | 57f4caedf2d580c2751b1354c87018ae |
|
BLAKE2b-256 | 8484bdd5757415eaab3872ada18a64c8047a9a476be75ea0c1ea465fc9f5e321 |
File details
Details for the file yacluster-1.0.0-py3-none-any.whl
.
File metadata
- Download URL: yacluster-1.0.0-py3-none-any.whl
- Upload date:
- Size: 5.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ef7e103a9dca2ca0445f204c36c9fbdc32f20d8a667062ef0f4c55aa696e41be |
|
MD5 | 43d3f498af66da99e21fb323e3bc8089 |
|
BLAKE2b-256 | 13cd753bddc2c22be14785b4b5506dd790f856cb0c2c3f3472aaaa441d760c58 |