PyGpiv is a Python module of Libgpiv that allows to use the library in Python scripts. The module has been generated by wrapping the Libgpiv headers using SWIG, which also allows to wrap software easily to other script and compiled languages, like: Perl, PHP, Ruby, Tcl/Tk, Clisp, Guile, Java.

Writing scipts in Python (or any other script language) allows rapid prototyping in a structured way, without being bothered about memory (de-)allocation and without the need to go through the writing/compiling/running cycle after each modification of your program.
The Python language has been choosen for wrapping Libgpiv for different reasons:

  • It is designed for numerical purposes.
  • It is a very well structured, objective language allowing small programs, but also large, complicated projects
  • The syntax is simple, self-explaining and straightforward. This provides easy learning the language and easy maintaining the software.
  • There is a huge amount of additional software and modules available for numerical calculations, web applications, administrative tasks, (graphical) output, user interfaces etc.
The PyGpiv module is intended for developers on the PIV technique itself and for fluid dynamics researchers and engineers who feel limited by the Gpiv GUI program and the command line programs from the Gpivtools package. So, those may write their own 'quick hacks' easily by using the Python scripting language for rapid development.

Unpacking, building and installation

You can download the package here. Unpacking is done with:
gzip -d pygpiv-*.tar.gz
tar -xvf pygpiv-*.tar

building the package is done with:
python build_ext

and installing the module in the correct Python directory with:
python install

PyGpiv has been included in the Debian GNU/Linux distribution. Users of this system can install the software by means of the apt-tools and aptitude, without to be bothered about dependencies. PyGpiv is available for most of the computer architectures Debian GNU/Linux is supporting,

An example script and PIV image-pair is provided in the example/ directory of the package. Probably the script can find the module when installed to a standard Python directory. Else, the PYTHONPATH will have to be set. In bash this is done by:
export PYTHONPATH="directory"

Running the script is perfomed with:
python ./

Using PyGpiv

The full API of Libgpiv has been wrapped, so documentation may be found at the API documentation of Libgpiv.

The module can be used after launching (i)python (for interactive use) or including in a script by invoking:
import _pygpiv

Any Libgpiv function gpiv_*() then is called by

or if the module is loaded following:
from _pygpiv import *

The functions may be called by:

Only variables of int, char or float that have been wrapped by Swig are recognized from a python script. Other variables, like arrays and structures are mapped into a pointer. So, these variables are opage when used from a python script and can only be used internally by libgpiv. Therefore, some additional functions have been added in the wrapper to access individual array members. These have _i_get and _i_set or _ij_get and _ij_set in their name for 1 and 2-dim arrays respectively. For example to get the value of array member dx[i][j] from the GpivPivData struct:
value = GpivPivData_dx_ij_get(gpiv_data, i, j)

To define a value at dx[i][j] is done with:
GpivPivData_dx_ij_set(gpiv_data, i, j, value).

Gerber van der Graaf
email: gerber_graaf AT users DOT sourceforge DOT net Last modified: Mon Nov 17 09:40:30 CET 2008