Skip to main content

A Python package for common-nearest neighbour (CNN) clustering

Project description

image image image Build Status

Common-nearest-neighbours (CNN) clustering and core-set Markov-state model estimation


NOTE

This project is currently under development in the alpha state. 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 abitrary 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 (csMSM) model to capture the essential dynamics of the underlying molecular processes.

The package provides two modules:

  • cnn: (Hierarchical) CNN clustering and analysis
  • cmsm: csMSM estimation and analysis

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 use 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.

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/CNN.git
$ cd CNN
$ pip install .

Quickstart

from cnnclustering import cnn
import matplotlib.pyplot as plt

# 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 = cnn.CNN(points=data_points)
clustering.fit(radius_cutoff=1.5, cnn_cutoff=1)
clustering.labels
# Labels([1, 1, 1, 1, 1, 0, 0, 0, 0, 2, 2, 2])

fig, ax = plt.subplots(1, 2)
ax[0].set_title("original")
clustering.evaluate(ax=ax[0], original=True)

ax[1].set_title("clustered")
clustering.evaluate(ax=ax[1])

quickstart

Alternative scikit-learn implementation

We provide an alternative approach to common-nearest-neighbours clustering in the spirit of the scikit-learn project over this fork of scikit-learn-contrib/scikit-learn-extra.

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

cnnclustering-0.3.11.tar.gz (14.0 MB view details)

Uploaded Source

File details

Details for the file cnnclustering-0.3.11.tar.gz.

File metadata

  • Download URL: cnnclustering-0.3.11.tar.gz
  • Upload date:
  • Size: 14.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.6.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.0

File hashes

Hashes for cnnclustering-0.3.11.tar.gz
Algorithm Hash digest
SHA256 405afc5d0d318002773dd2e6fb2eb0fe196b71149e677cda04a16b9169ecea34
MD5 55d73636553914eb8dd4c35825bb9ab9
BLAKE2b-256 492df416c871d32c2586f5cc16782138d4675af365e7b5b4d4ca173df70b56bb

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