Scikit-beam Core

The vision of scikit-beam is to provide simple functions useful for the X-ray, Neutron and Electron communities. The primary goal of the scikit-beam project is to provide a centralized repository for algorithms that are used in these three scientific domains. scikit-beam functions accept and return standard Python and numpy datatypes, so they integrate well with other packages from the scientific Python community. Further, the modular design of scikit-beam allows its components to be easily reused in ways not envisioned by the authors.

Scikit-beam is being developed at the National Synchrotron Light Source II at Brookhaven National Lab and also in collaboration with scientists at the LCLS-II and APS.

Supported techniques

  • Differential Phase Contrast (dpc)

  • CDI (cdi)

  • MultiTau correlation (correlation)

  • X-Ray Speckle Visibility Spectroscopy (XSVS) (speckle)

  • X-ray Fluorescence (fluorescence)

  • Fast histograms

Other utilities

  • Basic constants (constants)

  • Logical convenience functions (arithmetic)

  • Utilities to estimating the center of a ring pattern and the sample-to-detector distance of a powder pattern (calibration)

  • Peak extraction (feature)

  • Mask pixels based on a threshold; as a statistical outlier within a bin; for proximity to canvas edge (margin). (mask)

  • Compute reciprocol space coordinates of pixels. (recip)

  • Draw and manipulate ROI mask; draw kymograph; compute statistics on ROIs. (roi)

  • Misc. utilities (utils)

  • A thin wrapper around scipy.stats.binned_statistic (stats)

Reporting Issues

If you have found a bug in scikit-beam please report it. The preferred way is to create a new issue on the scikit-beam GitHub issue page; that requires creating a free account on GitHub if you do not have one.

Please include an example that demonstrates the issue that will allow the developers to reproduce and fix the problem. You may be asked to also provide information about your operating system and a full Python stack trace; the Skbeam developers will walk you through obtaining a stack trace if it is necessary.


The scikit-beam project is made both by and for its users, so we highly encourage contributions at all levels. This spans the gamut from sending an email mentioning a typo in the documentation or requesting a new feature all the way to developing a major new package.

The full range of ways to be part of the Skbeam project are described at Contribute to scikit-beam. To get started contributing code or documentation (no git or GitHub experience necessary):

Indices and Tables