[Neuroimaging] Using Python libs from MATLAB

Marmaduke Woodman marmaduke.woodman at univ-amu.fr
Mon Jun 13 10:56:45 EDT 2016

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
- Scipy.io.{save,load}mat segfault
- 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

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 ;)

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/neuroimaging/attachments/20160613/825e0e21/attachment-0001.html>

More information about the Neuroimaging mailing list