OMPC aims to enable reuse of the huge open and free code base of
MATLAB® on a free and faster growing Python platform. Running Python
and MATLAB® in a single interpreter avoids issues with running two
separate applications. Python adds general purpose programming
libraries to the convenient syntax of the language of technical
computing.

Dependencies: Python, OMPC uses PLY and Byteplay, but they are distributed with the source code.Python dependencies: ctypes (for Python version < 2.5), for OMPClib: numpy, scipy, matplotlib (pylab) and possibly othersSupported operating systems: all platforms that support Python, ctypes, numpy, scipy, matplotlib(pylab)Licensing: OMPC and all examples that are part of OMPC website are licensed under BSD style license.

How it works

OMPC allows running MATLAB®'s m-files using Python interpreter. OMPC
reads m-files and translates them into Python compatible code.
Just like in the following example

OMPC is not an interpreter, it lets Python do the work. This
means that if Python gets faster OMPC gets faster too. OMPC translates m-files preserving the structure of the original programs as much
as possible. Although OMPC comes with a library that emulates the
features of MATLAB's® numerical array of there is nothing that will stop
you from running the translated code the way you like it. This means
that you could run the OMPC generated code on IronPython, Jython, PyPy
or whatever else if you write your own numerical class.

All the magic is made possible by python decorators and introspection. Look at the examples section to see how it is possible to emulate implicit variables like nargin/nargout and other dynamic aspects of the MATLAB® engine that are not available in Python.

Developers, testers and requests for features

If
you want to understand more about how OMPC works, or you want to
contribute in any way to the development look at the developer documentation pages.
Contributions are welcome in any form. Anybody can contribute by testing. The development is driven by testing and demand. For library of functions, or toolboxes if you like OMPC project does not use any sophisticated and possibly complicated bug-tracking tool. The reason for not using a common bug-tracking is that the development relies on contributions of non-programmers.