ibex_bluesky_core.devices.simpledae.reducers

DAE data reduction strategies.

Members

GoodFramesNormalizer

Sum a set of user-specified spectra, then normalize by total good frames.

MonitorNormalizer

Normalize a set of user-specified detector spectra by user-specified monitor spectra.

PeriodGoodFramesNormalizer

Sum a set of user-specified spectra, then normalize by period good frames.

ScalarNormalizer

Sum a set of user-specified spectra, then normalize by a scalar signal.

sum_spectra

Read and sum a number of spectra from the DAE.

tof_bounded_spectra

Sum a set of neutron spectra between the specified time of flight bounds.

wavelength_bounded_spectra

Sum a set of neutron spectra between the specified wavelength bounds.

class ibex_bluesky_core.devices.simpledae.reducers.GoodFramesNormalizer(prefix: str, detector_spectra: ~collections.abc.Sequence[int], sum_detector: ~typing.Callable[[~collections.abc.Collection[~ibex_bluesky_core.devices.dae.dae_spectra.DaeSpectra]], ~collections.abc.Awaitable[~scipp._scipp.core.Variable | ~scipp._scipp.core.DataArray]] = <function sum_spectra>)[source]

Bases: ScalarNormalizer

Sum a set of user-specified spectra, then normalize by total good frames.

Init.

Parameters:
  • prefix – the PV prefix of the instrument to get spectra from (e.g. IN:DEMO:)

  • detector_spectra – a sequence of spectra numbers (detectors) to sum.

  • sum_detector – takes spectra objects, reads from them, and returns a scipp scalar describing the detector intensity. Defaults to summing over the entire spectrum.

denominator(dae: SimpleDae) SignalR[int][source]

Get normalization denominator (total good frames).

class ibex_bluesky_core.devices.simpledae.reducers.MonitorNormalizer(prefix: str, detector_spectra: ~collections.abc.Sequence[int], monitor_spectra: ~collections.abc.Sequence[int], sum_detector: ~typing.Callable[[~collections.abc.Collection[~ibex_bluesky_core.devices.dae.dae_spectra.DaeSpectra]], ~collections.abc.Awaitable[~scipp._scipp.core.Variable | ~scipp._scipp.core.DataArray]] = <function sum_spectra>, sum_monitor: ~typing.Callable[[~collections.abc.Collection[~ibex_bluesky_core.devices.dae.dae_spectra.DaeSpectra]], ~collections.abc.Awaitable[~scipp._scipp.core.Variable | ~scipp._scipp.core.DataArray]] = <function sum_spectra>)[source]

Bases: Reducer, StandardReadable

Normalize a set of user-specified detector spectra by user-specified monitor spectra.

Init.

Parameters:
  • prefix – the PV prefix of the instrument to get spectra from (e.g. IN:DEMO:)

  • detector_spectra – a sequence of spectra numbers (detectors) to sum.

  • monitor_spectra – a sequence of spectra number (monitors) to sum and normalize by.

  • sum_detector – takes spectra objects, reads from them, and returns a scipp scalar describing the detector intensity. Defaults to summing over the entire spectrum.

  • sum_monitor – takes spectra objects, reads from them, and returns a scipp scalar describing the monitor intensity. Defaults to summing over the entire spectrum.

Scipp scalars are described in further detail here: https://scipp.github.io/generated/functions/scipp.scalar.html

additional_readable_signals(dae: SimpleDae) list[Device][source]

Publish interesting signals derived or used by this reducer.

async reduce_data(dae: SimpleDae) None[source]

Apply the normalization.

class ibex_bluesky_core.devices.simpledae.reducers.PeriodGoodFramesNormalizer(prefix: str, detector_spectra: ~collections.abc.Sequence[int], sum_detector: ~typing.Callable[[~collections.abc.Collection[~ibex_bluesky_core.devices.dae.dae_spectra.DaeSpectra]], ~collections.abc.Awaitable[~scipp._scipp.core.Variable | ~scipp._scipp.core.DataArray]] = <function sum_spectra>)[source]

Bases: ScalarNormalizer

Sum a set of user-specified spectra, then normalize by period good frames.

Init.

Parameters:
  • prefix – the PV prefix of the instrument to get spectra from (e.g. IN:DEMO:)

  • detector_spectra – a sequence of spectra numbers (detectors) to sum.

  • sum_detector – takes spectra objects, reads from them, and returns a scipp scalar describing the detector intensity. Defaults to summing over the entire spectrum.

denominator(dae: SimpleDae) SignalR[int][source]

Get normalization denominator (period good frames).

class ibex_bluesky_core.devices.simpledae.reducers.ScalarNormalizer(prefix: str, detector_spectra: ~collections.abc.Sequence[int], sum_detector: ~typing.Callable[[~collections.abc.Collection[~ibex_bluesky_core.devices.dae.dae_spectra.DaeSpectra]], ~collections.abc.Awaitable[~scipp._scipp.core.Variable | ~scipp._scipp.core.DataArray]] = <function sum_spectra>)[source]

Bases: Reducer, StandardReadable, ABC

Sum a set of user-specified spectra, then normalize by a scalar signal.

Init.

Parameters:
  • prefix – the PV prefix of the instrument to get spectra from (e.g. IN:DEMO:)

  • detector_spectra – a sequence of spectra numbers (detectors) to sum.

  • sum_detector – takes spectra objects, reads from them, and returns a scipp scalar describing the detector intensity. Defaults to summing over the entire spectrum.

additional_readable_signals(dae: SimpleDae) list[Device][source]

Publish interesting signals derived or used by this reducer.

abstract denominator(dae: SimpleDae) SignalR[int] | SignalR[float][source]

Get the normalization denominator, which is assumed to be a scalar signal.

async reduce_data(dae: SimpleDae) None[source]

Apply the normalization.

async ibex_bluesky_core.devices.simpledae.reducers.sum_spectra(spectra: Collection[DaeSpectra]) Variable | DataArray[source]

Read and sum a number of spectra from the DAE.

Returns a scipp scalar, which has .value and .variance properties for accessing the sum and variance respectively of the summed counts.

More info on scipp scalars can be found here: https://scipp.github.io/generated/functions/scipp.scalar.html

ibex_bluesky_core.devices.simpledae.reducers.tof_bounded_spectra(bounds: Variable) Callable[[Collection[DaeSpectra]], Awaitable[Variable | DataArray]][source]

Sum a set of neutron spectra between the specified time of flight bounds.

Parameters:

bounds – A scipp array of size 2, no variances, unit of us, where the second element must be larger than the first.

Returns a scipp scalar, which has .value and .variance properties for accessing the sum and variance respectively of the summed counts.

More info on scipp arrays and scalars can be found here: https://scipp.github.io/generated/functions/scipp.scalar.html

ibex_bluesky_core.devices.simpledae.reducers.wavelength_bounded_spectra(bounds: Variable, total_flight_path_length: Variable) Callable[[Collection[DaeSpectra]], Awaitable[Variable | DataArray]][source]

Sum a set of neutron spectra between the specified wavelength bounds.

Parameters:
  • bounds – A scipp array of size 2 of wavelength bounds, in units of angstrom, where the second element must be larger than the first.

  • total_flight_path_length – A scipp scalar of Ltotal (total flight path length), the path length from neutron source to detector or monitor, in units of meters.

Time of flight is converted to wavelength using scipp neutron’s library function

wavelength_from_tof, more info on which can be found here: https://scipp.github.io/scippneutron/generated/modules/scippneutron.conversion.tof.wavelength_from_tof.html

Returns a scipp scalar, which has .value and .variance properties for accessing the sum and variance respectively of the summed counts.