Overview of EMAN for Programmers

All of the common routines in EMAN are contained in the shared archive libEM.so. This includes the EMData, Euler and List C++ objects as well as common routines such as the FFT library. The EMData object is the primary object you will use to access and process EM data. This object contains parallel-safe routines for reading/writing a variety of common EM file formats, performing FFTs, masking, 3d model construction, etc. The single EMData object can deal with 1, 2 or 3 dimensional data.

The Euler object is used to store either the orientation of a slice in the overall volume or the absolute orientation of a volume data set. This class provides routines for converting euler angles to/from a variety of different conventions (Imagic, quaternion, Spider, etc.), as well as routines for 'multiplication', a symmetry iterator, etc.

The List object is a very basic object for storing lists of pointers. It doesn't even use prototypes currently.  For programs with a GUI, the QList object would probably be a better choice, but for non-graphical programs List is more consistent.

Graphical user intefaces for EMAN programs are all implimented using the QT toolkit, along with a library of widgets called QSciLib. The QT toolkit is a semi-commercial, C++ based GUI toolkit with many attractive features. First, it is free for use in non-commercial software written under Unix/X-windows. A version of the toolkit also exists for win95/NT, which means any applications you write for X using the toolkit can be trivially ported to Win95. The Win95 version of QT is not free, but they offer a per-developer license with no distribution licenseing fees. Second, the toolkit offers an exceptionally good model for inter-object communications called Signals and Slots. This mechanism permits objects to communicate seamlessely without knowing of each other's existance.


What you will need:

The QT Toolkit, as a semi-commercial package, will compile trivially on just about any Unix/X system around. It even supports a variety of compilers on each platform.

QSciLib and EMAN have currently been tested only under IRIX (SGI) and Linux (any CPU should be ok). Machine independance was a major goal when EMAN was being developed, but porting to other platforms is likely to require a few trivial changes, like changes in include file names, etc. If you do port the code to another platform, please send me a list of patches and I'll merge it into the general source for the next release. In theory, most of the code should even be portable to Win 95, but we haven't purchased a QT license for Win 95.
 
 



Last modified 9/28/98