# FLSA

Computing a graph induced *Fused LASSO Signal Approximator*.
You can use it to denoise data.
The package includes some utility methods to assess the algorithms and
apply it to *images* as well es *ion-mobilty spectrometry* (IMS) data sets.

## Mathematical Formulation

For the one dimensional version of the Johnson's dynamic programming algorithm, have a look into Lasso.jl

## Denoising

The fused LASSO signal approximator can be used to denoise e.g. images:

#### Noisy Input

#### Cleaned by FLSA

## Algorithms

### Fast Gradient Projection (FGP)

Also known as Fast Iterative Shrinkage Algorithm (FISTA).

### Alternating Direction Method of Multipliers (ADMM)

### Maximum Gap Tree (MGT)

Own algorithm based on a iterative approximation by dynamic programming algorithm minimizing a sub-tree-graph.

## Example

### Image Graph

```
using FLSA
graph = FLSA.img_graph(size(B)..., dn=2, lam=0.1) # (1)
F = FLSA.fista(B, graph, verbose=true; max_iter=10) # (2)
```

First you have to define graph (line `(1)`

).
Then one of the algorithms above are called (see `(2)`

).

### HDF5 Input

In order to be easily called from other languages a HDF5 intermediate data structure is supported that looks as follows (see generate_hdf5.py for a working python example):

```
1 2 3 ... n
nodes/input
/weight
1 2 3 ... m
edges/head
/tail
/weight
algorithm/@name
/@param1
/@param2
```

## Copyright

Elias Kuthe 2015, 2016, 2017, 2018. This work is provided under the simplified BSD license (see LICENSE.md).