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? 
How does that square with the PEP8 "no caps in function names" rule?

On Mon, Dec 15, 2014 at 12:26 AM, Stefan van der Walt <
notifications@github.com> wrote:
>
> In dipy/reconst/tests/test_sfm.py
> <https://github.com/nipy/dipy/pull/460#discussion-diff-21810245>:
>
> > +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():
>
> I think this capitalization is correct here.
>
> —
> Reply to this email directly or view it on GitHub
> <https://github.com/nipy/dipy/pull/460/files#r21810245>.
>