EMPI tigertiger Logo tigertiger Logo    
  • Home
  • About me
    • Address
    • C.V.
    • Travel
  • EMDB
  • Projects
    • Computational Bioimaging
      • Particle picking using SVMs
      • Model-free classification of views
      • Extending Chimera
    • Systems biology
      • Protein function
        prediction
      • Soft clustering
      • Network inference
    • Group
    • Software
      • EMPI
      • TomoPlane
  • Links

empi is a Python module and a C++ library for development of intelligent three-dimensional image processing algorithms. It contains a generic layer for implementing numerical algorithms in C++ and interfacing them with Python, a collection of C++ image processing routines, and a set of Python modules. It also provides a viewer based on the wxwidgets library, and an XML-based file format for storing images and numerical data sets in general.

empi started out as an adaptation of a personal library of C++ routines for scientific computing collected over the last 15 years. Initially, the Python interface was thought to be an optional component, and thus some functionality that is available in Python is duplicated, but with time I got so convinced of Python's power as a programming language that my current philosophy is to restrict the C++ components only to the core numerical calculations.

empi running in orthoscopic mode, with the Python interpreter at the lower right. Tomogram courtesy of V. Lucic.

Some particular design features of empi are:

  • empi comes with its own Matrix class that interfaces to Python's numarray (soon to be replaced by numpy) but can be used standalone in C++ code. This makes it possible to transparently call C++ routines with matrices as parameters.
  • Images can be either represented by Python/numarray arrays, or by a custom Image class. The latter is useful when, as with large 3D images, tight control must be exercised on when in-memory copies of an image are created.
  • empi employs an XML-based format to store images. This format (hopefully to be described in an upcoming Application Note) is based on a general convention for storing numerical matrix data in XML files. It combines the flexibility of XML, e.g. for adding annotations to data, with the efficiency of most legacy data formats. It is so simple that a small library on top of libxml2 can read the data.
  • empiview is a viewer application to display image stacks and volumes either as single images, grids, or in orthogonal projection mode.
  • empi interfaces with the EMAN library to read and write most file formats common in electron microscopy.
2009-06-13 20:54 CEST     xris