Automatically exported from code.google.com/p/pythonika
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
Makefile.linux
Makefile.osx
Makefile.win
Pythonika.c
Pythonika.h
Pythonika.nb
Pythonika.tm
README

README

Pythonika 1.0 - Python Interpreter Interface for Mathematica.
Copyright (c) 2005-2010 Ero Carrera <ero@dkbza.org>


Introduction:
-------------

Pythonika is a MathLink module that allows to write and evaluate Python code
from within Mathematica Notebooks.

Pythonika automatically translates all basic types from Mathematica into Python
and back. Python expressions returning complex, integer or long numbers,
strings, lists, tuples, sets or dictionaries will evaluate into the
corresponding objects in Mathematica. Dictionaries are returned as list of
lists containing key/value pairs.

It's also possible to define Mathematica functions which are just Python code 
where all the conversion of the arguments is done transparently. It's not even 
necessary to tell how many arguments the Python function is taking!! Pythonika 
is clever enough to figure it out.

Why?
----

Personally, I have always found Mathematica's Notebook interface to be
perfectly suited for the way I conduct research. Which usually requires me to
write code to test hypothesis or to develop concepts. Frequently the way I
approach a problem changes as I discover its details and gain insight. 

I find of great utility having the ability of writing notes together with code 
which I can readily evaluate in small blocks. Repeating small parts of an 
algorithm as necessary or grouping the code in different cells according to its 
functionality; for instance, data set loading, parsing and analysis.


Pythonika has been tested mainly with Python 2.5 and 2.4 but should work with
2.3 and probably other, older versions.

Pythonika should compile and work with Mathematica in all OS X, Linux and 
Windows operating systems.

My main working environment is OS X, so it has been more thoroughly tested on 
that platform. I successfully compiled and tested it on others. If someone
would find that it does not work on a certain environment I would be glad to
include whatever changes are found to be needed to get it to work correctly.


Requirements:
-------------

-Windows:

In order to build it I used Visual Express C++ and the Platform SDK. Both 
downloadable from Microsoft.
If not already set, one will need to setup all the appropriate environment
variables (INCLUDE & LIB) pointing to the include and library directories
provided by Visual C++ and the SDK.

-Linux/OSX:

GCC

-All:

The MathLink development kit is also needed and can be found at:

http://www.wolfram.com/solutions/mathlink/devkits.html

Mathematica is needed in order to run it.


Compilation:
------------

Be sure to link or add the path to the directory containing the needed
Mathematica files. Information is available in each architecture's Makefile.

It should suffice with running the appropriate platform's equivalent to "make" 
with the corresponding Makefile:

OS X: make -f Makefile.osx

Linux: make -f Makefile.linux

Windows: nmake -f Makefile.win

The compilation will produce a Pythonika executable. If this point has been 
reached successfully it should now be possible to just load it within 
Mathematica.


Installation:
-------------

In order to load Pythonika it should be enough with calling the Mathematica 
function Install["path/to/the/Pythonika/executable"].
If the loading is successful, calling Links["path/to/the/Pythonika/executable"] 
will return a list with a LinkObject pointing to Pythonika.

It should now all be ready to start writing Python code!


Usage:
------

For common usage examples, please refer to the example Notebook.

The Python instance is common to all Notebooks. So the global namespace is 
shared. And it's possible to share calculations and data across Notebooks.

It's possible to write multiline code in Pythonika. In order to enter multiline
code one must use "\<" "\>" which tells Mathematica to keep newlines as such.

Using double quotes is not a good idea, as Mathematica will interpret that as 
the end of the current string. The solution is using single quotes in the
Python code.

Unicode should be properly converted back and forth. I haven't thoroughly
tested this so there might be some problems.

Escape sequences: It's possible to use backslash escaped sequences although
it's necessary to double the backslashes for them to get to Pythonika as a
single backslash as Mathematica will try to interpret them.