Skip to content
jamesjun edited this page Dec 18, 2017 · 8 revisions

Density peak clustering proposed by Rodriguez and Laio, Science 2014

DPCLUS algorithm computes the density and distance parameters for each event using their spatiotemporal neighbors. Density (=rho) is computed by counting the number of neighbors within a cut-off distance (dc). Distance to the nearest neighbor (delta) having a greater density value is stored, as well as the index of the nearest neighbor. Euclidean distances are computed between a pair of spiking events which occurred close in space and time (P.nTime_clu). GPU is used to significantly speed up the computation (~70x of CPU). JRCLUST computes rho using cuda_rho_() and delta using cuda_delta_().

Events at the density peaks are identified by searching for outliers in the density (rho) vs. distance (delta) plot, and the cluster memberships are first assigned to the peak-density events and recursively copied to their nearest neighbors until all events are assigned (gradient descending). JRCLUST assigns the cluster membership using postCluster_().

JRCLUST extracts the density peaks by detrending the rho-delta plot detrend_local_() and applying the density threshold (P.rho_cut) and distance threshold (P.delta1_cut).

For a spiking event having the peak amplitude at site (s1) and the second peak at site (s2), its spatial neighbors include events that have the peak amplitude at sites s1 or s2. Since the nearest neighbor can exist at a different site, the membership assignment can globally propagated to all sites. This heuristic can track units that are drifting between multiple sites.

See also: sort_(), detrend_local_(), cluster_spacetime_(), postCluster_()

Clone this wiki locally