Scipp – Multi-dimensional data arrays with labeled dimensions#

A Python library enabling a modern and intuitive way of working with scientific data in Jupyter notebooks

repr-html filtering show-svg

Scipp is heavily inspired by Xarray. It enriches raw NumPy-like multi-dimensional arrays of data by adding named dimensions and associated coordinates. Multiple arrays can be combined into datasets. While for many applications Xarray is more suitable and matured than Scipp, there is a number of features missing in other situations. If your use case requires one or several of the items on the following list, using Scipp may be worth considering:

  • Physical units are stored with each data or coord array and are handled in arithmetic operations.

  • Histograms, i.e., bin-edge axes, which are by 1 longer than the data extent.

  • Support for non-regular or scattered data and non-destructive binning.

  • Support for masks stored with data.

  • Propagation of uncertainties.

  • Internals written in C++ for better performance (for certain applications), in combination with Python bindings.

Generic functionality of Scipp is provided in the scipp Python package. In addition, more specific functionality is made available in other packages. Examples for this are Plopp for data visualization, ScippNexus for loading NeXus files, and ScippNeutron for handling data from neutron-scattering experiments.

News#

  • [November 2024] scipp-24.11.1 has been released.

  • [December 2023] Scipp dropped support for Python 3.8. Scipp for Python 3.12 is available via pip, conda remains limited to 3.11 for now.

  • [August 2023] Writing workflows or data pipelines? Checkout our new project Sciline.

  • [August 2023] Plopp is now the only supported plotting backend. Plopp must be installed as a separate dependency. See Plotting for details.

  • [January 2023] Scipp now comes with a new data structure, DataGroup, a dict-like container with Scipp functionality.

  • [November 2022] Scipp switched to “Calendar Versioning”. See Version numbers and deprecation policy for details.

  • Is your data stored in NeXus files? Checkout our new project ScippNexus, a h5py-like utility for conveniently loading NeXus classes into Scipp data structures.

Lost? New to Scipp? Start Here!#

The Getting Started section motivates Scipp in What is Scipp?, provides installation instructions, and gives a brief overview in Quick start.

The User Guide provides a high-level overview of the most important Scipp concepts and features. Read Data Structures, Slicing, and Computation (in this order) to develop an understanding of the core concepts of Scipp.

Further sections of the User Guide are optional and can be studied in arbitrary order. Depending on your area of application you may be most interested in Binned Data, Coordinate Transformations, GroupBy, or Masking. The combination of these features is what sets Scipp apart from other Python libraries. Make sure to also check out Representations and Tables and Plotting for an overview of Scipp’s powerful visualization features.

The Reference documentation section provides a detailed listing of all functions and classes of Scipp, as well as some more technical documentation. If you are looking for something in particular, use the Search the docs function in the left navigation panel.

Where can I get help?#

We strive to keep our documentation complete and up-to-date. However, we cannot cover all use-cases and questions users may have.

We use GitHub’s discussions forum for questions that are not answered by these documentation pages. This space can be used to both search through problems already met/solved in the community and open new discussions if none of the existing ones provide a satisfactory answer.