Department of Psychiatry
Penn Behavioral Health

Neuropsychiatry Section

Neuropsychiatry Section

Pyvox Design Goals

Pyvox is a set of software tools being developed for medical image processing with a particular emphasis on brain masking and segmentation of magnetic resonance brain images; tools to support other applications may be added later. These tools are intended to support researchers who need to prototype new image analysis algorithms or to develop automated image analysis tools for specific image analysis applications. The particular sequence of processing operations is specified through a scripting language which can be used interactively or in command files; the language used is an extension of Python.

Medical Image Processing

Pyvox is designed primarily for medical image processing, because that is what the author needs to do most; other applications of volume images are no doubt possible, but their needs come second.

Rapid Prototyping

Pyvox should be suitable for rapid prototyping of new algorithms and analysis protocols. To do this, Pyvox is implemented as a extension to the Python language. Python is a high-level object-oriented scripting language which can be used interactively or in programmed scripts and which is designed to be easily extensible in C.

Efficient Execution

Pyvox should also be suitable for efficient, automated processing of the finished analysis protocols. To do this, the core image processing functions are written in C, which is more efficient than Python.

Software Portability

The script files that define the analysis protocols and the programs that they invoke should be portable across multiple Unix platforms (including Linux and Mac OS X). To meet this requirement, Pyvox is written to comply with the usual standards, including ANSI C, Posix, and the X Window System.

Data Portability

The image files and other data files should also be portable across multiple Unix platforms. In particular, it should be possible to create an image file on a big-endian machine (e.g. Sparc), copy it to a little-endian machine (e.g. Pentium), and further process that image without needing to do any conversion of the file. This is accomplished through a set of portable C functions that can read and write data in specified external formats, converting as necessary to or from the platform-native format.

Open-Source Development

Pyvox should also be easily extensible by programmers outside the original development team. This is accomplished by following good software engineering practice in documenting the software for later maintenance and extensions.