Skip to main content

image image image Build Status Coverage Status

Common-nearest-neighbours clustering


NOTE

This project is currently under development. The implementation may change in the future. Check the examples and the documentation for up-to-date information.


cnnclustering

The cnnclustering Python package provides a flexible interface to use the common-nearest-neighbours cluster algorithm. While the method can be applied to arbitrary data, this implementation was made before the background of processing trajectories from Molecular Dynamics simulations. In this context the cluster result can serve as a suitable basis for the construction of a core-set Markov-state (cs-MSM) model to capture the essential dynamics of the underlying molecular processes. For a tool for cs-MSM estimation, refer to this separate project.

The package provides a main module:

  • cluster: User interface to (hierarchical) common-nearest-neighbours clustering

Further, it contains the modules:

  • plot: Convenience functions to evaluate cluster results
  • _types: Direct access to generic types representing needed cluster components
  • _fit: Direct access to generic clustering procedures

Features:

  • Flexible: Clustering can be done for data sets in different input formats. Easy interfacing with external methods.
  • Convenient: Integration of functionality, handy in the context of Molecular Dynamics.
  • Fast: Core functionalities implemented in Cython.

Please refer to the following papers for the scientific background (and consider citing if you find the method useful):

  • B. Keller, X. Daura, W. F. van Gunsteren J. Chem. Phys., 2010, 132, 074110.
  • O. Lemke, B.G. Keller J. Chem. Phys., 2016, 145, 164104.
  • O. Lemke, B.G. Keller Algorithms, 2018, 11, 19.

Documentation

The package documentation (under developement) is available here online or under docs/index.html. The sources for the documentation can be found under docsrc/.

Install

Refer to the documentation for more details. Install from PyPi

$ pip install cnnclustering

or clone the development version and install from a local branch

$ git clone https://github.com/janjoswig/CommonNNClustering.git
$ cd CommonNNClustering
$ pip install .

Quickstart

>>> from cnnclustering import cluster

>>> # 2D data points (list of lists, 12 points in 2 dimensions)
>>> data_points = [   # point index
...     [0, 0],       # 0
...     [1, 1],       # 1
...     [1, 0],       # 2
...     [0, -1],      # 3
...     [0.5, -0.5],  # 4
...     [2,  1.5],    # 5
...     [2.5, -0.5],  # 6
...     [4, 2],       # 7
...     [4.5, 2.5],   # 8
...     [5, -1],      # 9
...     [5.5, -0.5],  # 10
...     [5.5, -1.5],  # 11
...     ]

>>> clustering = cluster.Clustering(data_points)
>>> clustering.fit(radius_cutoff=1.5, cnn_cutoff=1, v=False)
>>> clustering.labels
array([1, 1, 1, 1, 1, 0, 0, 0, 0, 2, 2, 2])

quickstart

Alternative scikit-learn implementation

We provide an alternative approach to common-nearest-neighbours clustering in the spirit of the scikit-learn project within scikit-learn-extra.

Release files for cnnclustering 0.5.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cnnclustering 0.5.0
File Size Uploaded
cnnclustering-0.5.0.tar.gz 8.1 MB Details

Release files / cnnclustering-0.5.0.tar.gz

Download URL cnnclustering-0.5.0.tar.gz
Size 8.1 MB
Tags Source
SHA-256 checksum
How to use checksums
56e993345c96a4dd40fd093548ea887b69ee6d01d348df723b0caef19e071d5d
BLAKE2b-256 checksum
How to use checksums
98ac79d7fb12e89a46dd4fb91054680fc06d7d7370800d18e6142e8e85501f1c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.1

Release history Release notifications | RSS feed

This release

0.5.0 This release

1 release file

0.4.3

1 release file

0.4.2

1 release file

0.4.1

1 release file

0.3.11

1 release file

0.3.9

1 release file

0.3.8

1 release file

0.3.5

1 release file

0.3.2

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page