[OLPC library] MATLAB for OLPC?

Ian Bicking ianb at colorstudy.com
Wed Jan 30 13:18:57 EST 2008


Speaking of the free alternatives (of which I only know a bit -- I don't 
actually do any of this kind of work), I haven't noticed anyone mention 
RPy (http://rpy.sourceforge.net/) which provides some integration 
between R and Python.  It would probably be very helpful for porting R 
to the XO, as you could write Activity wrapper in Python, and/or hook 
into things like the Journal using the bindings.  I don't really know 
what the difference is between RPy and R/SPlus, it's not immediately 
obvious.

Matplotlib (http://matplotlib.sourceforge.net/) implements a lot of 2D 
graphing for Python.  The graphs is creates can be quite nice, and the 
API is pretty simple.

I'm not really sure what the end-user experience is that people are 
looking for.  An interactive prompt to explore data?  A full GUI for 
managing the data?  A tool that can be used by other Activities that 
actually have the data?


Mel Chua wrote:
> On the subject of transcribing MATLAB to numpy, aside from the
> aforementioned smattering of dependencies on MATLAB environmental
> features, I would say the answer to your question is: very hard. Not
> only are the numpy types not a one-to-one mapping with MATLAB types;
> MATLAB syntax is optimized around certain assumptions about matrix
> iteration at a deep level. I don't fully understand the inner
> workings, but my impression is it would require tweaks in the Python
> interpreter and stack to get it running MATLAB computations at a
> reasonable efficiency.

I'm not sure his summary here is true.  You can do efficient operations 
over sets of data in Python (actually due to some small tweaks to the 
language requested by NumPy/Numeric users back around the time of Python 
2.1).  So if you do something like "array * 6", it actually does the 
multiplication of items in the array in C.  They bend Python's "magic 
methods" quite a bit in NumPy, so things like array access, slicing, and 
multiplication all avoid actually iterating over the arrays or matrixes 
in Python.

While I imagine Matlab has a greater number of routines and algorithms 
written in C or other efficient languages, from Python you can access 
similarly efficient algorithms (once they get written).

Actually interpreting another language in Python, or translating a 
language to Python, is probably infeasible.  I've never been a fan of 
attempts to do this that I've seen in the past.  If you actually want 
the Matlab language then you probably need to start with that as a goal, 
as Octave seems to do.  I'm not sure of what the goal of having a 
translation from Matlab would be.  Lots of XO users already know Matlab? 
  That seems unlikely.  There are libraries implemented for Matlab that 
would be really hard to port/reimplement?  Maybe.  You want XO users to 
collaborate with scientists who are using Matlab?  I suppose; except 
it's easy to transfer exact code, but hard to transfer familiarity, so 
while Octave builds on people's Matlab familiarity I'm not sure you can 
confidently transfer actual code from Matlab to Octave.

Given a very specific goal, I am guessing that NumPy plus Matplotlib 
would probably be a good base for building an Activity.  For generic 
goals -- analyzing data in novel ways -- straight Python may be too 
undirected, and writing a directed Activity would probably be a 
significant undertaking.

   Ian


More information about the Library mailing list