# BrainOwl

This is a classifier tuned for neuroimaging. In particular for task-related fMRI. It is meant to be used with the OWL norm (also called Ordered $l_1$ norm) and uses a solver based on SpaRSA.

The OWL norm should identify features relevant for the learning problem, even if they are correlated. Weight maps based on OWL tend to be sparse, but not so sparse like the solutions from LASSO, for example.

# Install

Clone the repository using `git`

:

```
git clone https://github.com/jpvaldes/brainowl.git
```

Install using `pip`

(be sure you have python 3):

```
pip install -e ./brainowl
```

# Usage example

The included Jupyter notebook contains an example usage of the BrainOwl classifier showing how to decode two categories of the classic Haxby dataset.

# Acknowledgments

The scikit-learn library for making it easier to develop new ideas, the pyowl implementation, and the nilearn project (in particular, the SpaceNet learners).

# References

```
X Zeng, M A T Figueiredo, The Ordered Weighted $l_1$ Norm:
Atomic Formulation, Projections, and Algorithms.
J. Bogdan, E. Berg, W. Su, and E. Candes, Statistical Estimation and
Testing via the Ordered $l_1$ Norm.
Stephen Wright, Robert Nowak, and Mario Figueiredo. Sparse Reconstruction
by Separable Approximation. IEEE Transactions on Signal Processing, 2009,
Vol. 52, No. 7, 2479-2493.
Marcos Raydan. The Barzilai and Borwein Gradient Method for the Large Scale
Unconstrained Minimization Problem. SIAM J. Optim., 1997, Vol. 7, No. 1,
26-33.
```