Skip to main content

implementation of clustering by fast search and find density peak. Implementation is based on numpy, cuda and opencl

Project description

ImageAlgorithm

Image Algorithm is a clustering algorithm based fast search and find of density peaks. Comparing with other popular clustering methods, such as DBSCAN, one of the most prominent advantages of Image Algorithm is being highly parallelizable. This Repository is an implementation of Image Algorithm, supporting strong GPU acceleration. For now, the implementation includes three backends: numpy, CUDA and OpenCL.

backend dependency Support Platform Support Device
numpy None Mac/Linux/Windows CPU
CUDA pycuda Linux Only NVIDIA GPU
OpenCL pyopencl Mac NVIDIA/AMD/Intel GPU, multi-core CPU

It has been tested that all three backends give the identical clustering results. Therefore users can feel free to choose whichever faster and easier for their purposes. Concerning speed performace, acceleration from CUDA/OpenCL may give an up to x20 speed up from CPU when dealing with more than a few thousands of data points. A preliminary speed test of three backends can be found here.

Quick Start

No dependency is required for numpy backend. And it usually does a good job dealing with small dataset. However, for users wanting to use GPU acceleration with either CUDA or OpenCL backend, extra dependency is required.

# if want to use opencl backend
pip install pyopencl
# if want to use CUDA backend
pip install pycuda

The primary usage of the module is the following First of all, import ImageAlgo class for K-Dimension

from ImageAlgoKD import *

Declare an instance of ImageAlgoKD with your algorithm parameters. Then give it the input data points.

ia = ImageAlgoKD(MAXDISTANCE=20, KERNEL_R=1.0)
ia.setInputsPoints(Points(np.genfromtxt("../data/basic.csv",delimiter=',')))

Then run the clustering over input data points.

ia.run("numpy")
# ia.run("opencl") or ia.run("cuda") if want run in parallel

In the end, the clustering result can be access by

ia.points.clusterID

Examples

I. Basic

Perform IA clustering on 1000 toy 2D points, sampled from two Gaussian Distrituion and noise. The toy data is in data/basic.csv, while the corresponding jupyter notebook can be found here in examples/.

II. MNIST

Perform IA clustering on 1000 MNIST 28x28 dimension points. The MNIST data is in data/mnist.csv, while the corresponding jupyter notebook can be found here in examples/.

III. HGCal

This is an event of 10 Pions with 300 GeV energy in CMS HGCal. A 3D interactive visualization can be found here. In addition, for event with pile up, here is an 300GeV pion with PU200 event. A PU200 event typically includes about 200k HGVCal reconstructed detector hits, which is input into IA clustering

Project details


Release history Release notifications

This version
History Node

0.0.1

Download files

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

Filename, size & hash SHA256 hash help File type Python version Upload date
ImageAlgoKD-0.0.1-py3-none-any.whl (9.3 kB) Copy SHA256 hash SHA256 Wheel py3 Jul 13, 2018
ImageAlgoKD-0.0.1.tar.gz (7.8 kB) Copy SHA256 hash SHA256 Source None Jul 13, 2018

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging CloudAMQP CloudAMQP RabbitMQ AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page