dymad.numerics.dm

Functions

compDist(a, b, K)

dS(eps, D, F)

epsOpt(D, F[, ret_val])

genMat(data, inds[, N, ifsym])

Classes

DM(n_components, n_neighbors[, alpha, epsilon])

Diffusion map

DMF(n_components[, n_neighbors, alpha, epsilon])

Diffusion map with dense matrix implementation

VBDM(n_components, n_neighbors[, Kb, operator])

Variable bandwidth diffusion map

class dymad.numerics.dm.DM(n_components, n_neighbors, alpha=1, epsilon=None)

Bases: object

Diffusion map

Original MATLAB implementation by Tyrus Berry & John Harlim

This implementation

  • is class-based

  • accelerates epsilon estimation by a minimizer

  • adds an approximate interpolation method

Parameters:
  • n_components – Number of diffusion map components

  • n_neighbors – Number of nearest neighbors for graph construction

  • alpha – Normalization parameter

  • epsilon – Kernel bandwidth; if None, it will be estimated

fit(x)
fit_transform(x)
load_state_dict(d)
Return type:

None

state_dict()
Return type:

dict[str, Any]

transform(x, ifsym=False)

Nystrom extension for diffusion maps.

class dymad.numerics.dm.DMF(n_components, n_neighbors=None, alpha=1, epsilon=None)

Bases: object

Diffusion map with dense matrix implementation

A Knn option is added to emulate the DM class, that is a sparsified version of DM.

Also includes a KRR implementation for sanity check of other classes.

Rule of thumb comparing DM and DMF:

  • For eigenpairs, full DM gives accurate eigenvectors, but less accurate eigenvalues.

  • For KRR, full DM, i.e., without Knn, performs the best.

  • Whenever memory allows, use full DM.

fit(x)
fit_krr(X, y, ridge)
fit_transform(x)
load_state_dict(d)
Return type:

None

predict_krr(X)
state_dict()
Return type:

dict[str, Any]

transform(x)

Nystrom extension for diffusion maps.

class dymad.numerics.dm.VBDM(n_components, n_neighbors, Kb=None, operator=None)

Bases: object

Variable bandwidth diffusion map

https://www.sciencedirect.com/science/article/pii/S1063520315000020

Original MATLAB implementation by Tyrus Berry & John Harlim

This implementation

  • is class-based

  • accelerates epsilon estimation by a minimizer

  • adds an approximate interpolation method

It works well when the sampling is dense

Parameters:
  • n_components – Number of diffusion map components

  • n_neighbors – Number of nearest neighbors for graph construction

  • Kb – Number of nearest neighbors for density estimation

  • operator – ‘lb’ for Laplace-Beltrami, ‘kb’ for Kolmogorov backward

fit(x)
fit_transform(x)
load_state_dict(d)
Return type:

None

state_dict()
Return type:

dict[str, Any]

transform(x, ret_den=False)

Interpolate eigenfunctions to new x

transform_naive(x)
dymad.numerics.dm.compDist(a, b, K)
dymad.numerics.dm.dS(eps, D, F)
dymad.numerics.dm.epsOpt(D, F, ret_val=False)
dymad.numerics.dm.genMat(data, inds, N=None, ifsym=False)