Oct2Py: Python to GNU Octave Bridge#
Oct2Py allows you to seamlessly call M-files and Octave functions from Python. It manages the Octave session for you, sharing data behind the scenes using MAT files. Usage is as simple as:
>>> import oct2py
>>> oc = oct2py.Oct2Py()
>>> x = oc.zeros(3, 3)
>>> print(x, x.dtype)
[[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]] float64
To run .m function, you need to explicitly add the path to .m file using:
>>> from oct2py import octave
>>> # to add a folder use:
>>> octave.addpath("/path/to/directory")
>>> # to add folder with all subfolder in it use:
>>> octave.addpath(octave.genpath("/path/to/directory"))
>>> # to run the .m file :
>>> octave.run("fileName.m")
To get the output of .m file after setting the path, use:
>>> import numpy as np
>>> from oct2py import octave
>>> x = np.array([[1, 2], [3, 4]], dtype=float)
>>> # use nout='max_nout' to automatically choose max possible nout
>>> octave.addpath("./example")
>>> out, oclass = octave.roundtrip(x, nout=2)
>>> import pprint
>>> pprint.pprint([x, x.dtype, out, oclass, out.dtype])
[array([[1., 2.],
[3., 4.]]),
dtype('float64'),
array([[1., 2.],
[3., 4.]]),
'double',
dtype('<f8')]
If you want to run legacy m-files, do not have MATLAB®, and do not fully trust a code translator, this is your library.
Features#
Supports all Octave datatypes and most Python datatypes and Numpy dtypes.
Provides OctaveMagic for IPython, including inline plotting in notebooks.
Supports cell arrays and structs/struct arrays with arbitrary nesting.
Supports sparse matrices.
Builds methods on the fly linked to Octave commands (e.g.
zeros
above).Thread-safety: each Oct2Py object uses an independent Octave session.
Can be used as a context manager.
Supports Unicode characters.
Supports logging of session commands.
Optional timeout command parameter to prevent runaway Octave sessions.
API Reference#
Documentation for the functions included in Oct2Py.
Installation#
How to install Oct2Py.
Examples#
Introductory examples.
Type Conversions#
Oct2Py data type conversions.
Information#
Other information about Oct2Py.