Sparse Fascicle Model

This is a start on an implementation of the model we describe here: 

http://arxiv.org/abs/1411.0721

The main current issue with this is that this will have a local dependency on scikit-learn, because it uses ElasticNet for the fit. How do people feel about that? 
If ever a sentence has caused more unnecessary arguments than specifically
that one.

I agree about that last statement, though, so I leave it is as.

On Mon, Dec 15, 2014 at 4:29 PM, Stefan van der Walt <
notifications@github.com> wrote:
>
> In dipy/reconst/tests/test_sfm.py
> <https://github.com/nipy/dipy/pull/460#discussion-diff-21870026>:
>
> > +import dipy.core.gradients as grad
> > +import dipy.sims.voxel as sims
> > +import dipy.core.optimize as opt
> > +
> > +
> > +def test_design_matrix():
> > +    data, gtab = dpd.dsi_voxels()
> > +    sphere = dpd.get_sphere()
> > +    # Make it with NNLS, so that it gets tested regardless of sklearn
> > +    sparse_fascicle_model = sfm.SparseFascicleModel(gtab, sphere, solver='NNLS')
> > +    npt.assert_equal(sparse_fascicle_model.design_matrix.shape,
> > +                     (np.sum(~gtab.b0s_mask), sphere.vertices.shape[0]))
> > +
> > +
> > +@npt.dec.skipif(not sfm.has_sklearn)
> > +def test_SparseFascicleModel():
>
> "But most importantly: know when to be inconsistent -- sometimes the style
> guide just doesn't apply. When in doubt, use your best judgment. Look at
> other examples and decide what looks best. And don't hesitate to ask!" In
> this case, you have ``test_<some_method_or_object>``. If that object
> happens to be spelled with a capital letter, so be it. But this is really
> not important at all :)
>
> —
> Reply to this email directly or view it on GitHub
> <https://github.com/nipy/dipy/pull/460/files#r21870026>.
>