Pre-processing and data management for serial electron diffraction data.

robertbuecker, updated 🕥 2022-11-07 19:32:20


Pre-processing software for serial electron diffraction (SerialED) data. See for example results.

Diffractem is intended for usage within Jupyter notebooks - get a set of examples here:


diffractem is tailored to pre-processing SerialED data primarily for crystallographic analysis using CrystFEL, version 0.10.0 or higher: To make most of diffractem's functionality, if you do not have it already, please download and install CrystFEL following the installation instructions given on its homepage. During the build process of CrystFEL using meson, the pinkIndexer component will automatically be downloaded and installed.

Create conda enivronment

We strongly suggest to use the Anaconda3 Python distribution/package manager, and create a dedicated environment within it for diffractem. If you do not have Anaconda installed, it is sufficient to obtain the minimal Miniconda of the conda package manager at

Once installed, please create a new anaconda environment for diffractem, and activate it: conda create -n diffractem -c conda-forge python=3.10 numpy scipy pandas dask distributed jupyterlab ipywidgets ipympl tifffile h5py conda activate diffractem

Install diffractem

Finally install diffractem itself, either from PyPi: pip install diffractem or, if you want to play/develop a bit more and stay up-to-date, you can clone this git repository and install diffractem in developer mode: git clone cd diffractem pip install -e .

Now you should be ready to go! To get started, why don't you download the example notebooks: git clone And get example raw data at MPDL Edmond:

And when you're ready to go: just make your own branches of the notebooks for your own projects, and have fun!

diffractem, (C) 2019-2022 Robert Bücker, [email protected]

peakfinder8, (C) 2014-2019 Deutsches Elektronen-Synchrotron DESY


HDF5 plugins automatically set 2022-01-21 17:43:37

A small but important improvement: the automatic indexing scripts created by tools.call_indexamajig now automatically set the HDF5_PLUGIN_PATH variable such that the LZ4 encoding as used by diffractem can be understood.

New workflow and CrystFEL compatibility 2021-07-08 13:39:26

In this version, the major change is the compatibility with the latest versions of CrystFEL (later than 0.9.1) which support electrons as first-class citizens. The workflow is much cleaner now, as "virtual" data files are now not needed anymore (CrystFEL natively accounts for variable beam centers). There are also some minor new tweaks and fixes. Note that you'll need the latest example notebooks to go along with this version, as there were breaking changes.

Changed license to LGPL + some more 2020-11-03 16:55:22

Bugfixing, streamlining, refinement 2020-11-02 09:07:57

Several new functions are included, especially regarding geometry/cell refinement and CrystFEL integration. Tested with the notebooks included in the submitted version of the workflow paper (available at

Probably the last release that keeps the peaks and predictions tables in the Dataset object and supports table-style HDF5 entries.

New analyze_hkl, lots of fixes 2020-08-13 07:58:44

analyze_hkl is now not required anymore in the Jupyter notebooks

Bugfixes 2020-04-17 18:15:29

Fixes some missing dependencies during installation, and incompatibilities with newer versions of dask.

Robert Bücker
GitHub Repository