EDM: Electron Direct Methods, Version 3.0

General Information
Download Information
Limitations and Bugs
Update Information and News
Code Structure
Online CVS

General Information

EDM is a set of programs intended to combine various aspects of image processing and manipulation of high resolution images and diffraction patterns as well as direct methods. The intent is to make available to the general user a relatively simple user-interface mouse driven version of what has been to date research oriented code. The code is Public Domain under the standard GNU license, which means that it is free to use or modify for non-commercial purposes.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.

Because this program is licensed free of charge, there is no warranty for the program, to the extent permitted by applicable law. Except when otherwise stated in writing the copyright holders and/or other parties provide the program "as is" without warranty of any kind, either expressed or implied, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose. The entire risk as to the quality and performance of the program is with you. Should the program prove defective, you assume the cost of all necessary servicing, repair or correction.


The full functionality of the software is relatively large, and includes:

  1. A user friendly mouse-driven interface.
  2. Crystallographic operations (e.g. symmetry averaging) on HREM images with good numerical
    accuracy (ppm in many cases).
  3. A number of image processing options, including Wiener-filtering, masked/windowed Fourier Transforms and a Hanning Window Fourier Transform.
  4. Accurate cross-correlation based methods of measuring spot diffraction intensities and user-friendly symmetry averaging with or without Friedel symmetry. (less accurate background subtraction methods are also included).
  5. Accurate methods of extracting phases from HREM images.
  6. An improved version of the direct methods code fs98 to solve structures, which can also be
    used with other types of data (e.g. surface X-ray diffraction) as well as TED intensity data. This uses a feasible set approach with a sharing protected genetic algorithm search and a Kullback–Liebler metric.
  7. Code to perform structure completion (i.e. find where the atoms are) based upon kinematical models. 
  8. HRTEM Image Simulation. The multislice code NCEMSS (National Center for Electron Microscopy Simulation Software) which is a separate package is installed by default for quantitative analysis of HREM images.
  9. Code to calculate CBED patterns (beta)


A listserver has been established to facilitate use, which can be used to ask (or answer) questions such as "How do I do XYZ" as well as general information. You can subscribe to the EDM Listerver by sending an email message to listserv@listserv.it.northwestern.edu with

    SUBSCRIBE EDM Firstname Lastname

in the body of the message.

Download Information

The most current version of the code is 3.1 which is currently only available by anonymous cvs (see below) or as a tar file as edm-3.2.tar.gz.

The source code can be compiled using the standard configure/make structure. Please see BUGS, CHANGES and INSTALL for additional information. Note that the BUGS report in this file is more current than what is in the documentation. Full documentation (as full as is currently available) can be found here. Some installation notes windows are here

The best method is to download the latest EDM via anonymous cvs:

    cvs -d:pserver:anonymous@ checkout edm

Update Information

Code Structure

The code is a mixture of C++ (main interfaces), C (some graphic routines and libraries for FFTs and forms) and Fortran 77 (fs98 code) -- you need compilers for these if you are going to build it yourself. Compilation is done via a conventional autoconf/automake approach with a configure file which has reasonably good default values for most architectures. Depending on your computer, this will take anywhere from 10 minutes (linux 1.5GHz) to 30 minutes (HPUX C3000). It will compile and run with a recent version of gcc/g++/g77, but you will get slightly faster operation if you use a native compiler (e.g. ifc, f90) although these tend to be a little picky so we suggest that you try gcc/g++/g77 first. Most f90 or f95 compilers that we have tried also accept f77 code, although earlier versions of ifc (releases earlier than 8) are a bit buggy.

If you compile on a new system for which there is not currently a binary, please let us know if you needed to change any parameters, e.g. CFLAGS, FFLAGS etc so we can incorporate these into the configuration. Any parameters that are better choices than what we currently have is also useful information. We would also be interested in a binary distribution that can be included on the web page or (for linux probably better) an rpm, but please contact us first. Note: specific changes to Makefiles are not that useful since this opens up the Pandora's box of attempting to maintain multiple distributions; changes to flags and options are easy to make. Please also report any errors (not warnings) that you find with native compilers.

Please also see CONTRIBUTE if you are interested in contributing to this project.