Customizing Scipp#
Overview#
A number of concepts and components of Scipp can and should be customized to the needs of higher-level libraries or to a particular use case. At this point we support compile-time customization of:
The maximum number of dimensions supported by operations with
Variable
is configured using theNDIM_OP_MAX
constant.New or custom
dtype
that can be stored as elements in aVariable
and used with thetransform
algorithms.
Source code for Scipp is hosted in a github repository here.
Custom dtypes#
To add a new dtype
, use INSTANTIATE_VARIABLE
, available when including scipp/variable/variable.tcc
.
Note that this tcc
file should never be included in a header.
The instantiation macro call must be placed in the
scipp::variable
namespace.The first marco argument is the display name of the new
dtype
, and the identifier used for Python bindings.The second macro argument is the C++ type.
To support formatting of variables with the new dtype
it should be registered in scipp::variable::formatterRegistry()
.
variable_instantiate_py_object.cpp can be used as a reference.
In addition to these steps, it is currently required to manually add Python bindings in several places. TODO: Improve or document this process.