Streamline-based Linear Registration

Hi all,

This is the first PR for the new crème de la crème method that I presented in ISMRM. 
http://scil.dinf.usherbrooke.ca/wp-content/papers/garyfallidis_etal_ismrm14.pdf

In accordance with @omarocegueda's work you first define a StreamlineDistanceMetric then give this to StreamlineLinearRegistration which has a method called optimize which takes the two bundles (sets of streamlines) as input and returns a StreamlineRegistrationMap which can transform the moving bundle to the static.

I have only one simple tutorial (see bundle_registration.py) for now but I am working with @jchoude to put some streamline datasets online and create a couple more detailed tutorials both for bundle-based, full brain streamline-based registration and bundle-specific atlas creation. But that will come in another PR (probably multiple PRs) most likely after the release.

In all files the coverage should be high. But in optimize.py the coverage cannot be that high because
some of the tests require different versions of scipy therefore those will not run in your machine
if you don't have those scipy versions. 

Also, when you build the modules a new config.pxi file will be created in dipy/build. We use this file to check
if your compiler supports OpenMP or not. See dipy/align/bundlemin.pyx to understand how this enables
us to enable/disable functions and imports at compilation time. 

@arokem can you prioritize looking at this PR for this release? I will start working on the LiFE PR.

Enjoy your new toy ;) 
Now just those array shapes...

On Tue, Oct 28, 2014 at 2:38 PM, Eleftherios Garyfallidis <
notifications@github.com> wrote:

> In dipy/align/streamlinear.py:
>
> > +
> > +        fopt : float,
> > +            final value of the metric
> > +
> > +        matrix_history : array
> > +            All transformation matrices created during the optimization
> > +
> > +        funcs : int,
> > +            Number of function evaluations of the optimizer
> > +
> > +        iterations : int
> > +            Number of iterations of the optimizer
> > +
> > +        Methods
> > +        -------
> > +        transform()
>
> Done! Sorry I removed it only from the Registration class and not the Map
> class. Is done now!
>
> —
> Reply to this email directly or view it on GitHub
> <https://github.com/nipy/dipy/pull/446/files#r19505999>.
>