Here is a collection of software, libraries or recipes that I wrote for my own purposes and that you might find useful as well. Unless stated otherwise, permission is granted to copy, distribute and/or modify these software under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.

Most of these projects are also available from my github page


Distributed Asynchronous Numerical & Adaptive computing

../images/dana-1.png ../images/dana-2.png ../images/dana-3.png ../images/DNF.png

DANA is a python framework for distributed, asynchronous, numerical and adaptive computing. The computational paradigm supporting the dana framework is grounded on the notion of a unit that is a essentially a set of arbitrary values that can vary along time under the influence of other units and learning. Each unit can be connected to any other unit (including itself) using a weighted link and a group is a structured set of such homogeneous units.

Neural field with finite propagation speed

../images/doughnut.png ../images/DNF-delayed-2.png ../images/DNF-delayed-3.png ../images/DNF-delayed-4.png

In collaboration with Axel Hutt, we've been studying the spatio-temporal activity propagation which obeys an integral-differential equation in two spatial dimensions that involves a finite transmission speed, i.e. distance-dependent delays and derived a fast numerical scheme that allow to quickly simulate numerically such equations. This python script implements this numerical integration using python, numpy and scipy library.

Dynamic Self-Organization Maps

../images/DSOM-ring.png ../images/DSOM-double-ring.png ../images/DSOM-sphere.png ../images/DSOM-cube.png ../images/DSOM.png

In collaboration with Yann Boniface, we designed a variation of the self-organising map where the time-dependency learning function has been replaced. This allows for on-line and continuous learning on both static and dynamic data distributions. The newly proposed algorithm does not fit the magnification law and the vector density is not proportional to the density of the distribution as in most vector quantisation algorithms.

Artificial Neural Networks

../images/neuron.png ../images/MLP.png ../images/ART.jpg ../images/ANN.png

Here is a list of some standard neural networks written in python. They were made to be simple and useful for students. Each script is self-contained and is around a hundred of lines. Numpy is required for simulation and matplotlib for visualization.



../images/glumpy/galaxy.png ../images/glumpy/tiger.png ../images/glumpy/smoke.png ../images/glumpy/protein.png ../images/glumpy/text.png

Glumpy is a python/OpenGL library for the fast vizualization of numpy arrays, (mainly two dimensional) that has been designed with efficiency in mind. If you want to draw nice figures for inclusion in a scientific article, you'd better use matplotlib. If you want to have a sense of what's going on in your simulation while it is running, then maybe glumpy can help you.

→ glumpy website


scigl/logo.png ../images/scigl-4.png ../images/scigl-1.png ../images/scigl-2.png

SciGL (Scientific OpenGL Visualization ToolKit) aims at facilitating the development of scientific visualization by providing a set of C++ classes for rapid prototyping of scientific visualization software. It has not been designed as a library since the goal of SciGL is to try to offer a minimal set of objects without the need for any kind of installation. A large number of examples is provided to show how one can use parts of SciGL components to suit its own needs.

→ scigl website

GliPy, The OpenGL IPython/Python terminal

glipy/glipy.png glipy/screenshot-8.png

The goal of glipy is to create a comprehensive environment for interactive and exploratory computing. To support this goal, glipy has two main components: an interactive Python terminal and an architecture for embedding various graphical elements directly within the terminal.

→ glipy website

Terminal visualization


Since modern terminals are able to handle up to 256 colors, it is thus quite easy to visualize a 2-dimensional numpy array as long as it fits within the terminal. It might come handy to quickly check how an array looks like.

→ Sources


Freetype python bindings


Python bindings for the FreeType library high-level API.

→ Freetype bindings website

Scientific Article using ReST


A modified rs2html.py to write a scientific article using the ReST format.

→ Scientific ReST page

AntTweakBar python bindings


atb-python offers python bindings for the AntTweakBar library which is small and easy-to-use C/C++ library that allows programmers to quickly add a light and intuitive graphical user interface into graphic applications based on OpenGL, DirectX 9 or DirectX 10 to interactively tweak their parameters on-screen.

→ Sources

Glydget, a pyglet GUI toolkit


Glydget is a(nother) pyglet GUI toolkit dedicated to "debugging" or scientific computing. It is far from a complete GUI system (like kytten or simplui) but rather aims at a quick and fast solution for displaying/editing variables and pressing buttons.

→ Sources



Pyroom is a fullscreen editor written in Python and GTK featuring full screen multidocument text editor, small set of shortcuts, simple help page for shortcuts and different styles / colorsets available. More recent versions are available at http://pyroom.org.

→ Sources (GTK needed)

→ Pyglet version



Inspired by the wordle site, I made a quick try in python using cairo, numpy and pyglet to get more or less the same result. The script allows you to save the image as well as a clickable map to link each word to a specific link. Code can be improved in a lot of different ways so feel free to modify it.

→ Sources

Python/Numpy, matrix extraction

numpy extract is a small python script that allows to extract a sub-array centered on a given position using a fixed shape, even it is out of bounds.

→ Sources

Numpy group

numpy group proposes an alternative implementation of record arrays using contiguous block of memory. The design choice of numpy array layout is to have data pointer points to one block of N items where each item is described by the dtype. While it makes sense in most situation, it prevents record arrays to have contiguous block of memory for each elementary dtype.

→ Sources

Maze generator & path finding

../images/maze.png ../images/path-finding.png

A maze generator python script and a path finding algorithm (using value iteration).

C++/Boost/Python, build systems

Boost provides free peer-reviewed portable C++ source libraries. You will find in the archive a set of boost python examples that illustrate various boost mechanisms (as well as different build systems).

→ Sources

GLFW python bindings

Python bindings for the GLFW 2.4.7 library.

→ Sources

Binding for the 3.0 version are available from https://github.com/rougier/pyglfw


OpenGL Freetype

../images/freetype-gl-1.png ../images/freetype-gl-3.png

OpenGL/FreeType is a simple engine for displaying a unicode text using a (single) vertex buffer. The idea is simply to tightly pack every necessary glyphs into a single texture and to generate a single vertex buffer to draw the text.

Emacs octicons


The octicon font by github (https://github.com/styleguide/css/7.0) provides some nice icons embedded in a font. This package gives an easier access to them and must be used with the relevant face (octicons).

Emacs powerline


Inspired by the VIM powerline, I've coded a small powerline-like for emacs. Original sources are available from the emacswiki. Since then, Donald Ephraim has rewritten this package and his version uses many of the techniques in the original but tries to make it easier to add new things

Hills screensaver

../images/hills.png ../images/hills-osx.png

Hills screensaver let you gently drift over rolling grassy hills, using ARB multitexture, heightmap and lightmap. It requires SDL and OpenGL and should work with xscreensaver and gnome-screensaver.

→ Sources

Chris Kent has ported hills to OSX and made a screensaver out of it (sources). Nick Ziztmann has since released an updated version on http://seiryu.home.comcast.net/~seiryu/savers.html and sources are available on github.

→ Sources


../images/gnubiff.png ../images/gnubiff-2.png

GNUBiff is a mail notification program that checks for mail and displays headers when new mail has arrived. GNUbiff features include multiple mailbox support, pop3, apop, imap4, mh, qmail and mailfile support, SSL & certificates support, GNOME & GTK support and many other features.

→ gnubiff website


While these software are certainly outdated and may not run on modern linux distributions, they may be useful for code study. Of course, you're welcome to adapt them and send me the new code...

GLPython, an OpenGL oriented python shell


glpython is an OpenGL oriented python shell designed for efficient interactive work with all major GUI toolkits in a non-blocking manner as well as a library to build customized OpenGL objects using python as the basic language. GLPython relies on backends such as GTK, WX, SDL or Qt that are able to open an OpenGL context and handle keyboard and mouse events when necessary

→ Sources

PyCons, GTK python console


pycons implements a python (or ipython) shell within a GTK window and handles python stdin/stderr/stdout redirection and system wide stdout/stderr redirection (using a pipe), provides history based on the GNU readline package and automatic completion. It is also able to display matplotlib figures inline. Each call to the show functions actually produces a FigureCanvasGTKAgg that is inserted within the console. A 'replot' command has been added that replot the last figure.

→ Sources

SDL Terminal


SDL Terminal is a library that allows to have a pseudo-ansi color terminal that can be used with any SDL application (with or without OpenGL). The internal terminal surface is an SDL surface that is mapped to a texture when OpenGL is used (and then it is quite simple to use the texture to map it on any GL surface, like in the glcube example from distribution). Any user input raises an SDL_TERMINALEVENT that can be catched like any other SDL event and the event structure holds the user actual input.

→ Sources

Boom !


Boom is a partial port of a Delphi/OpenGL demo made by Thomas Jahn. I only ported the particle engine to C++/SDL/OpenGL to get the very nice explosion Thomas designed. The soft is called "boom" since it basically displays an explosion every 5 seconds (with sound). It requires SDL and OpenGL libraries and it is supposed to be working indifferently on linux, mac os or windows (using DevC++).

→ Sources

GTK Object view


GTK Object view uses Python self introspection capability to display any object attributes with the possibility to edit them and supports undo/redo operations.

→ Sources

Kohonen maps


Kohonen is an old version of the self-organizing map (SOM). This one has been coded in C++ and run under windows or linux.

→ Sources



Pets is a port of an old program by Masayuki Koba where a cute tiny kitty was following your mouse all over the screen. This new version is base on gtk and uses an xml description for animations. There is also another animation with a tiny tux (see the Artwork section for povray sources).

→ Sources

Very outdated

3615 Gen 4 challenge


There was a demo challenge in 1990 for a French Magazine (Génération 4). Here is my modest contribution and a direct link to the program. You'll need an Atari ST emulator if you want to see it.

GFA Punchs


There was a challenge in the late eighties to write programs in less than 20 lines of GFA basic. They were published in a French magasine (STMag).

Here is disk image (.msa) with a lot of them. You can also browse it online.