[Neuroimaging] Using Python libs from MATLAB

Samuel St-Jean stjeansam at gmail.com
Mon Jun 13 13:43:07 EDT 2016


Regarding loading mat files, I was exactly doing that today, and it 
turns out anything that is matlab >= 2006b is using a file format 
without any converter currently existing.

There are bug reports about that, but it still is a work in progress 
since a long time ago, so maybe not waiting on that for now is better to 
get stuff rolling.

See https://savannah.gnu.org/bugs/?45706 and while looking for it I alos 
found this 
http://octave.1599824.n4.nabble.com/Support-for-Matlab-s-7-3-file-format-td4676198.html


Le 2016-06-13 à 18:47, Matthew Brett a écrit :
> Hi,
>
> On Mon, Jun 13, 2016 at 7:56 AM, Marmaduke Woodman
> <marmaduke.woodman at univ-amu.fr> wrote:
>> hi all,
>>
>> I'm a dev behind the Virtual Brain (TVB) a neuroimaging simulation library,
>> written in Python. As part of an effort to reach out to some users stuck in
>> MATLAB, I've been testing MATLAB's recent *official* support for Python
>> (2014b+). It is notably better than the many other attempts because it
>> appears to use Py's C API to expose objects and methods as MATLAB objects
>> and methods instead of just providing eval/exec.
>>
>> Generally it's working, but there are some workarounds to avoid segfaults,
>> errors and lack of stdout/err. I've started to collect a series of tips and
>> workarounds and figured there might be common interest in the community for
>> a "helper" library so all our projects can benefit from a larger user base,
>> and maybe ease the transition for potential Python users.
>>
>> The most important in order,
>>
>> - Anything touching HDF5 must use exactly the same version as MATLAB or
>> segfault
> Ouch - I guess this means it's not possible to use h5py or pytables?
>
>> - Scipy.io.{save,load}mat segfault
> That's interesting - it's probably possible to fix that, because that
> stuff doesn't call any external libraries.  Do you have any more
> details?
>
>> - C++ extension modules whose exception model doesn't match MATLAB's,
>> segfault on exception
>> - Linalg segfault unless using MKL (which is what MATLAB uses)
>> - stdout/err and logging must be redirecting to mexPrintf via a ctypes
>> monkey patch
>> - Numpy/MATLAB array conversion is O(1) op, but can probably be made zero
>> copy with a ctypes + lib mx workaround
>>
>> Aside from these (for which I sent a service request to MathWorks), it's
>> working well and we (TVB) expect our next release to include demo scripts in
>> MATLAB.
>>
>> So, again, if there is common interest in collecting notes and a helper
>> library to monkey patch around the segfaults, it'd be great to not do this
>> alone ;)
> Thanks too for the feedback.   You might also get some interest over
> at the numpy / scipy lists.  Although the blas / lapack thing is a bit
> of a downer...
>
> Cheers,
>
> Matthew
> _______________________________________________
> Neuroimaging mailing list
> Neuroimaging at python.org
> https://mail.python.org/mailman/listinfo/neuroimaging



More information about the Neuroimaging mailing list