# Code

My research codes are hosted on Gitlab.com. They are all free software, published under the GNU GPL v3 license.

## GIANT.jl

GIANT Is An NMF Toolbox. It is a small collection of (sparse) NNLS/NMF algorithms in Julia, and includes:

• Salmon, an algorithm for NNLS with a matrix-wise sparsity constraint (see this paper)
• Brassens and arborescent (see below)
• SNPA, an algorithm for separable NMF
• HALS, for standard Frobenius NMF
• Basic tools for working with hyperspectral and images datasets

## Smoothed Separable Nonnegative Matrix Factorization

This Matlab code provides two algorithms for smoothed separable NMF, see this article.

## Sparse Separable Nonnegative Matrix Factorization

This is Brassens, an algorithm that solves NMF under assumptions of sparsity and separability. It is built over SNPA (see the paper and the code) and arborescent (see below).

It is described in this article.

## Exact Sparse Nonnegative Least Squares

This is arborescent, a branch-and-bound algorithm that solves exactly the Sparse Nonnegative Least Squares problem. It is written in C/C++ and can be used from command line or through Matlab.

It is described in this article.

## Utility functions for GSL and MEX

This is mex-gsl-utils, a few functions in C to convert GSL vectors and matrices to MEX arrays, and vice versa. It allows to connect easily a code using GSL with a MEX interface.

## Accelerated HALS in C MEX

This is acc-hals-mex, a rewriting of Nicolas Gillis’ algorithm, an accelerated version of HALS to solve NMF. I wrote it in C with a MEX interface (to be called from Matlab).

Before my PhD:

## Mining skypatterns in fuzzy tensors

multidupehack is a free software for constrained pattern-mining in fuzzy/uncertain tensors, written mainly by Loïc Cerf. I contributed to it within the context of this paper. The last version should be available on Loïc’s website. The version I used in our paper is here, together with datasets and test scripts.