## Diffusion Geometry Code

See the paper *Geometric diffusions as a tool for harmonic analysis and structure definition of data. part i: Diffusion maps *, RR Coifman, S Lafon, A Lee, M Maggioni, B Nadler, FJ Warner, and SW Zucker. Proc. of Nat. Acad. Sci., 102:7426–7431, May 2005.

### Matlab code for Diffusion Geometry.

Latest version of the code: Diffusion geometry [Updated on 7/22/17]. This version now includes covertree for fast nearest neighbor searches. It may not (yet) be compatible with all Linux versions.

Previous version of the code: Diffusion geometry [Updated on 11/12/14].

### Instructions:

Unzip in a directory, preserving the subdirectory structure. Open Matlab, go in the installation directory and run Startup_DiffusionGeometry.

RunExamples contains examples for running the GraphDiffusion code, for constructing nearest neighbor graphs and computing eigenvectors of the Laplacian on such graphs.

The main script for constructing graphs and computing Laplacians and their eigenfunctions is called *GraphDiffusion*. Type *help GraphDiffusion* at the Matlab prompt to see the options, and run the example there (diffusion on a circle) to test installation.

### Important note regarding examples and data sets:

Some of the examples rely on data sets, publicly available on the web, in the appropriate format: you may find them, and their source, below.

### Important note regarding nearest neighbor:

The package supports either the *nn_search* and *range_search* functions of the TSToolbox and the *ANNsearch* functions of the Approximate Nearest Neighbor Searching Library by D. Mount and S. Arya.

MEX files for some platforms are already included in the Diffusion Geometry package, in the ‘NearestNeighbors’ directory. If MEX files for your machine are not included, you should compile those files and make those available to Matlab by modifying its search paths as needed.

Please let me know if you encounter problems with the installation, or report successes under different systems. Thanks.

## Diffusion Wavelets Code

See the paper *Diffusion wavelets*, RR Coifman and M Maggioni. Appl. Comp. Harm. Anal., 21(1):53–94, July 2006.

### Matlab code for Diffusion Wavelets. A new, much faster version is in the works.

This was originally a joint effort with James C. Bremer Jr. and Arthur D. Szlam.

Last version of the code: Diffusion wavelets [Updated on 7/13/11].

### Instructions:

Unzip in a directory, preserving the subdirectory structure. Open Matlab, go in the installation directory and run Startup_DiffusionWavelets.

RunExamples contains examples for running the DWPTree code that constructs diffusion wavelet trees on graphs.

### Important note regarding examples and data sets:

The code, especially the examples, rely on the Diffusion Geometry package above and on the data sets below. All notes/comments that apply to the Diffusion Geometry package apply here as well.

## Geometric Multi-Resolution Analysis (GMRA) Code

See the paper Geometric Multi-Resolution Analysis, W.K. Allard, G. Chen and M Maggioni. Preprint here, as well as the related “compressive sampling” for GMRA paper *Approximation of Points on Low-Dimensional Manifolds Via Random Linear Projections*, M. Iwen, M. Maggioni.

### Matlab code for GMRA and Geometric Wavelet Analysis and Transforms.

Last version of the code: Geometric Multi-Resolution Analysis [Updated on 2/24/17].

### Instructions:

Unzip in a directory, preserving the subdirectory structure. Open Matlab, go in the installation directory and run *Startup_GMRA*. This will add the required paths to Matlab.

*RunExamples* contains examples for running the GMRA code.

Important note: The code includes the *Diffusion Geometry package* on which it depends. If you have Diffusion Geometry already installed, please delete the Diffusion Geometry subdirectory that gets installed with this packa.ge The code depends on Data Sets (for running certain examples). The code requires SuiteSparse and METIS to be installed; it comes with precompiled versions for OS X and Linux 64bit, in which case the installation of these packages is not required.

## Multiscale SVD Code

See the paper *Multiscale Geometric Methods for Data Sets I: Multiscale SVD, Noise and Curvature*, A. V. Little, M. Maggioni, L. Rosasco. This paper summarizes the work in A.V. Little’s thesis (May 2011) on multi scale singular values for noisy point clouds. This extends the analysis of the constructions and results in our previous work *Multiscale Estimation of Intrinsic Dimensionality of Data Sets* (A.V. Little and Y.-M. Jung and M. Maggioni, Proc. AAAI, 2009) and *Estimation of intrinsic dimensionality of samples from noisy low-dimensional manifolds in high dimensions with multiscale SVD* (A.V. Little and J. Lee and Y.-M. Jung and M. Maggioni, Proc. SSP, 2009}.

Latest version of the code: Multiscale SVD Code [Updated on 11/29/12].

### Instructions:

Unzip in a directory, preserving the subdirectory structure. Open Matlab, go in the installation directory and run Startup_MSVD.

RunExamples contains examples for running the MSVD code, including several examples in the paper.

Important note: The code requires the DiffusionGeometry package to be properly installed, as well as the Data Sets (for running certain examples).

## Nonlinear Diffusion for Hyperspectral Images

This is the code for the algorithms introduced in the paper Unsupervised Clustering and Active Learning of Hyperspectral Images with Nonlinear Diffusion with J.M. Murphy, and to reproduce the results therein (these require the data sets made available on this page, maintained by J.M.Murphy)## Multiscale Analysis of Plane Arrangement

See Multiscale Analysis of Plane Arrangements on Guanliang Chen’s’ webpage.## Compressed Sensing Inversion for GMRA Code

See the paper Approximation of points on low-dimensional manifolds via random linear projections, M. A. Iwen and M Maggioni. Preprint here.

### Matlab code for Compressive Sensing inversion for GMRA.

Last version of the code: Compressive Sensing Inversion for GMRA [Updated on 6/19/13].

### Instructions:

Note: The code requires the Diffusion toolbox and all the packages required for that (in particular, Diffusion Geometry; see the GMRA code section), and the SpaRSA toolbox for the performance comparisons

## Some demo code I use in a class on Spectral Graph Theory

This code allows to take a black and white picture with points, and constructing an associated proximity graph, and then computing and displaying eigenvalues/eigenfunctions of the Laplacian on such graph. You need to first download and install the general code for Diffusion Geometry above and then download and install this code for running the demo I ran in class, with some images already prepared.

The script for the demo is called GraphEigenFcnsEx_01.m, and it is fairly extensively commented. I will be happy to add your own examples here!

## Some data sets

Data Sets: Example Data Sets [Updated on 6/7/11].

I include here data sets from a variety of sources, transformed to Matlab format and typically pre-processed, for use with the Diffusion Geometry Code.

They include variations/subsets of the MNIST data base, CBCL Face Data, Science News articles (prepared by J. Solka), Yale Face B database.

Please refer to the original data on these sites if you plan to use this data, as the parts included here are only for the purpose of running examples with the packages above.

They may be installed in any directory and that directory should be added to the Matlab path, so that the packages above may find them (this works for the most recent versions of Matlab).