danielfrg/tsne — pull request #1 by mschubert (2014-02-06 16:13:12+00:00)
Title: Relax requirements, make sure that numpy input array is contiguous

Hi,
It took a while, but here are some proposed changes.

**Numpy, Scipy, Cython dependencies: use >= instead of == for version comparison**

Right now, you request the exact same version of those libraries that you were using. However, there is no reason to assume that the tsne library will break with future releases of numpy. If I, for instance, `pip install` tsne, it will try and install your library version instead of the one I have (1.8.0) - this doesn't make any sense.

**BLAS: cblas is required, not OpenBLAS**

There is a couple of version of BLAS. The old Fortran one (blas), the one with C bindings (cblas) and an open source implementation that supports threading (OpenBLAS). tsne makes use of cblas headers, which are provided by cblas *or* OpenBLAS. Since cblas is a subset of OpenBLAS (and OpenBLAS provides .so files for cblas), it makes more sense to include cblas as a dependency instead of OpenBLAS

**Numpy arrays in memory**

You don't know for sure if the input array to tsne is contiguous in memory. Subsetting Numpy arrays can lead to discontiguous objects, which you don't want to pass C code (otherwise you will get illegal memory operations).