Bubble is a program for fast on-line powder integration for small and wide angle diffraction.

If you use this program please cite this paper: A new multipurpose diffractometer PILATUS@SNBL.

Bubble is open source software covered by the GPLv3 license.


To run the Bubble client in Windows you may need to install the MS Visual C++ Redistributable for Visual Studio 2015-2019.

Source code

Source code is freely available at the git repositories:


  • 2022.1.7 - v4.2.0:

    • Client does not crash any more, if an empty mask is applied (bubblec #4).
    • Client can disconnect from server from now (bubblec #5).
    • Fix SNBL azimuthal range (bubbles #18).
    • Auto mask Eiger gaps (bubbles #19).
    • Average is now possible for multiframed data (i.e. Eiger) (bubbles #20). Averaging cannot go through frame border.
    • If user stops integration, averaging also stops (bubbles #21).
  • 2021.10.27 - v4.1.0:

    • Nice cake view (can be seen via SNBL Toolbox Fiewer) (bubbles #7).
    • Bubble should now guess the pixel size from a detector name from new PONI format.
  • 2021.7.23 - v4.0.2:

    • Fix server crash when a user specifies radial range above the bin limit (bubbles #15).
    • Fix for server which could not open certain unlucky EDF files (bubbles #16).
  • 2021.7.16 - v4.0.1:

    • Fix memory leaks in server (bubbles #13).
    • Add FReLoN detector in the PONI parser.
  • 2021.5.27 - v4.0.0:

    • Dectris Eiger HDF5 with bitshuffle filter support (cryiorust #3).
    • Cakes are now saved in EDF to avoid rounding problems with CBF format. Use SNBL Toolbox::Fiewer to look at them (bubble.meta #1).
    • Dark background and sample files do not swap anymore (bubblec #3).
    • SAXS and WAXS calibration factors are not swapped anymore (bubblec #2).
    • The plot is now properly updated with the latest integrated file (bubblec #1).
    • Averaging is not so greedy for memory anymore (bubbles #10).
    • Previously, switching normalization from Monitor to None did not have any effect, it is fixed now (bubbles #8).
    • On linux bubbles may create files available only to its user (i.e. 0600), it is fixed now (bubbles #2).
    • Fix for not reading symlinks in bubbles (bubbles #1).
    • Bubbles is using Actix framework now (bubbles #5).
    • Fix for overflows in some Mar files.
    • Add support for tif files with 32 and 64 signed integers (mainly tested with files produced by Dectris Pilatus).
  • 2020.5.17 - v3.1.0:

    • Add the 'None' beamline: the images are shown and integrated 'as is' without applying any transformations. This beamline type has to be chosen in case if the data are not measured neither on SNBL-BM01@ESRF nor Dubble@ESRF.
    • When both radial and azimuthal ranges were applied, the final integration pattern could have been calculated incorrectly. Fixed.
    • Fix crashes of the client on linux.
    • Save mask ROI separately in the client.
    • Save mask in Fit2D format. Then it can be reused in Fit2D or pyFAI. The beamline should be set to None then.
    • When an integrated 2D pattern (or a mask image) is zoomed enough then the pixel intensity is shown for all the visible pixels.
  • 2020.2.7 - v3.0.0:

    • The server is rewritten in the Rust programming language. The integration speed increased up to 20% and the memory consumption decreased about two times.
    • On-line integration is now available on the all three main platforms, monitor and photo counters and transmission are correctly taken into account.
    • Integrator can now average files by a number given by user. The averaging happens per directory. Contradicting issues between the on-line integration and the averaging are quite expected and cannot be avoided.
    • In the client it is again possible to set logarithmic scale for the axes in 2D plots.
    • The server can run as a normal UNIX daemon (forking, logging, etc).
    • Minor usability fixes in the client.
    • Qt updated to v5.14.1
  • 2019.7.30 - v2.0.0:

    • The client is rewritten in C++.
    • New widgets for 1D and 2D plots. To rescale the values for 2D plots, please, use the mouse wheel and dragging on the colorbar. The right button allows to change the color scheme.
    • The mask is now plotted using polygon lines (like in Fit2D), double click finishes the mask shape. The mask can be dragged or removed (via the context menu).
    • The issue, when a few overlapping polygons produce gaps in the final mask, has been resolved.
    • Issues with discontinuity for azimuthal integration has been solved for angles 0, 90, 180, 270. The discontinuity for angle 360 still exists.
    • The client does not crash anymore when the number of bins set to 1.
    • The button with the server settings has been removed. Partially, those settings migrated to the advanced options, separately for SAXS and WAXS.
  • 2018.11.28

    • Bugfix: fix multicolumn files.
  • 2018.11.8.1

    • Support for new poni files from pyFAI-0.16.
    • Bugfix: saving mask with 'less' or 'more' values does not crash the client after reopen.
    • Bugfix: when WAXS is not normalized, the background was not properly subtracted.
  • 2018.7.9

    • Hopefully, the final fix of crashes in Windows.
    • New mask: the saved mask file contains everything inside: both an image and ROIs which can be edited after load.
  • 2018.6.21

    • Fix various Windows related bugs.
  • 2018.6.8

    • Fix various client crashes.
  • 2018.6.7

    • Fixing various bugs in the Windows version;
    • Fixing bugs with spline correction;
    • Correct calculation of the error bars for patterns normalized by the background;
    • bubbleg can be run with option -resize N, where is a number to bin images by NxN pixels; it decreases the image size which are to be transferred over the network. By default, N=1 in Linux and N=4 in Windows and MacOS.
  • 2018.3.7

    • Fixing issues with ellipsoidal mask in the client;
    • Bruker images;
    • Distortion correction for Frelon.
  • 2018.2.22

    • New integration server written in Go, thus, the features are not yet supported:

      • Spline files for Frelon-like cameras;
      • Brueker images;

      If you need these features, please use an older version. Everything else should work as expected.

    • Bubble client shows the image after integration, which means, if radial or azimuthal limits are applied, then they will also be seen in the 2D plot;

    • Now it is possible to set both numbers of radial and azimuthal bins in the Options page, thus, bubble can save radially integrated patterns as a function of 2θ (Q), azimuthally integrated patterns as a function of χ and 2D-Cake images in CBF format;

    • Recursive integration: the bubble server integrates in the parent directory and in all the internal directories;

    • There is no need anymore to do start/stop, if the directory is the same: bubble not just waits for new files, but it also checks if the older files have changed and integrates them accordingly.

    • Mar Image Plate image support;

  • 2017.10.22 (513b8fb114c6)

    • Bruker image support.
  • 2017.10.21 (7c24e8753ce8)

    • Updated UI.
    • Fine integration tuning on the server tab:
      • Number of bins;
      • Polarization correction;
      • Solid angle correction;
      • Double precision.
    • Client checks updates.
    • Minor bug fixes.
  • 2017.8.24 (70ff9f8e8d97)

    • If normalization is done not by monitor, then the Bubble does read the Flux value from the CBF header.
    • The options 'Speed' and 'Super speed' are applied on-line: there is no need to restart the integration process.
    • Minor bug fixes.