Department of Psychiatry

Penn Behavioral Health

Pyvox Architecture

In order to be both efficient and easy to use, Pyvox is designed using a layered approach. The top layer is an image processing extension to the Python programming language. Image analysis scripts are written in Python and work with functions and objects defined by Pyvox. Code at this level is inefficient but usually accounts for only a tiny fraction of the total run time.

The middle layer consists of the Voxel Kit, which is a collection of C-callable functions for high-level image processing operations such as convolution, object extraction, and statistical analysis. Many of these functions are made directly available to the user through Pyvox; others are used only internally. These functions can also be called from C programs, athough this is not recommended.

The bottom layer consists of BIPS, the basic image processing subroutines, which are a relatively small set of C functions for elementary image processing functions such as image arithmetic and are written for high efficiency; if needed, these subroutines can be hand optimized for a specific platform. For those familiar with numerical linear algebra, the relationship between the Voxel Kit and BIPS is essentially the same as between LAPACK and BLAS. BIPS probably accounts for 95% or more of the total run time, so efficiency improvements here have a dramatic effect.

In addition, the quick diagnostic viewer (qdv) provides interactive examination of image files; and the brain editor (bredit) provides interactive editing of region of interest maps. Both work under the X Window System.

Back to Top