Hi,

I have to question that will help some colleagues/friends of mine to switch to python from matlab.

1

- is there an automatic translator of code from matlab to

python/numpy/matplotlib? I believe it would be very easy to implement

due the similar syntax between the two. I could do something similar

myself but first I better make sure it doesn’t exist yet.

2 - Is there a python/numpy/mpl equivalent of EEGlab? see: http://www.sccn.ucsd.edu/eeglab/

thanks

Giorgio

Hi,

I have to question that will help some colleagues/friends of mine to switch

to python from matlab.

1 - is there an automatic translator of code from matlab to

python/numpy/matplotlib? I believe it would be very easy to implement due

the similar syntax between the two. I could do something similar myself but

first I better make sure it doesn't exist yet.

None that I know of, and it probably wouldn't be easy. For one thing,

matlab uses parentheses for function calls and indexing, and it is

probably not always obvious which is which for a translator. One

could write something that got it mostly right and flagged

ambiguities, but I think you should expect that a human would have to

clean it up afterwards unless you attempt something ambitious and not

easy. Prove me wrong!

2 - Is there a python/numpy/mpl equivalent of EEGlab? see:

http://www.sccn.ucsd.edu/eeglab/

There is pbrain, which is not and does not attempt to be an equivalent

of EEGLab, but it is an EEG viewer/analysis package in python, which

uses matplotlib (and VTK). It is specialized for spectral analysis,

but could be extended to do other things.

http://neuroimaging.scipy.org/pbrain/

I first wrote an EEG analysis package in matlab, and after becoming

frustrated with the lack of good support for complex data structures,

networking, and programming paradigms, I jettisoned it for python and

wrote pbrain. I wrote matplotlib in support of the pbrain

application, so some of the work has already been done

JDH

## ···

On 3/28/07, Giorgio F. Gilestro <gilestro@...287...> wrote:

Another thing that is maybe even more problematic is that matlab uses

call-by-value and value-based assignment while Python/Numpy uses

call-by-reference and reference-based assignment. So in matlab

A = B;

A(3,2) = 22;

will not modify B, but the equivalent numpy code

A = B

A[2,1] = 22

will modify both A and B. That means for a translator to create

efficient code it really needs to analyze if each copy created is ever

modified, and if so whether that matters. So I think you'd need to do

a full parsing of the matlab code. No regexp tricks are going to cut

it.

Another very tricky thing is that the indexing rules are very

different. Any time you see something like A(idx) in matlab you have

to really know what type of thing idx is exactly in order to translate

it properly. And then there's the issue with matlab code that calls

"SomeNonTrivialToolboxRoutine(x)". Even if it does exist in SciPy,

often the parameters are very different. And there's the one-based vs

zero-based thing. But that's probably the least of one's worries.

So there are a lot of challenges. But none of it seems impossible,

and there are some shortcuts you could take to get something that

would still be a useful first-pass, but require hand touch-up.

On the plus side, it's probably easier to translate from a

pass-by-value language to pass-by-reference than the other way around.

--bb

## ···

On 3/29/07, John Hunter <jdh2358@...287...> wrote:

On 3/28/07, Giorgio F. Gilestro <gilestro@...287...> wrote:

> Hi,

> I have to question that will help some colleagues/friends of mine to switch

> to python from matlab.

>

> 1 - is there an automatic translator of code from matlab to

> python/numpy/matplotlib? I believe it would be very easy to implement due

> the similar syntax between the two. I could do something similar myself but

> first I better make sure it doesn't exist yet.

None that I know of, and it probably wouldn't be easy. For one thing,

matlab uses parentheses for function calls and indexing, and it is

probably not always obvious which is which for a translator. One

could write something that got it mostly right and flagged

ambiguities, but I think you should expect that a human would have to

clean it up afterwards unless you attempt something ambitious and not

easy. Prove me wrong!