Experiment implementations

There are abstract implementations for radiography, stepped tomography, continuous tomography, stepped spiral tomography and continuous spiral tomography.

All of them implement Acquisition for dark images (without beam), flat field images (with beam, but sample moved to Experiment.flatfield_position) and projections of the sample according to the measurement scheme.

In each acquisition generator the functions _prepare_flats(), _finish_flats(), _prepare_darks(), _finish_darks(), _prepare_radios(), _finish_radios() are called. Overwriting them allows an easy way to implement special features within the experiments.

To use the classes one has to implement the start_sample_exposure() and stop_sample_exposure() accordingly (see SynchrotronMixin as an example).

For special cameras the generator _produce_frames() can be overwritten.

Radiography

class concert.experiments.imaging.RadiographyLogic(self, walker, flat_motor, radio_position, flat_position, camera, num_flats, num_darks, num_projections, separate_scans=True)

Bases: Experiment

Logic of a radiography experiment.

This implements the logic needed for the DAQ of radiography, which records dark images (without beam) and flat images (with beam and without the sample) as well as the projections with the sample in the beam.

The actual implementation needs to provide the following methods for DAQ:
  • _take_darks

  • _take_flats

  • _take_radios

await __ainit__(walker, flat_motor, radio_position, flat_position, camera, num_flats, num_darks, num_projections, separate_scans=True)
Parameters
  • walker (concert.storage.Walker) – Walker for storing experiment data.

  • flat_motor – Motor for moving sample in and out of the beam. Must feature a ‘position’ property.

  • radio_position – Position of flat_motor that the sample is positioned in the beam. Unit must be the same as flat_motor[‘position’].

  • flat_position – Position of flat_motor that the sample is positioned out of the beam. Unit must be the same as flat_motor[‘position’].

  • camera (concert.devices.cameras.base.Camera) – Camera to acquire the images.

  • num_flats (int) – Number of images for flatfield correction.

  • num_darks (int) – Number of images for dark correction.

  • num_projections (int) – Number of projections.

  • separate_scans (bool) – Descend into subdirectories based on current iteration.

num_darks

Number of images acquired for dark correction.

num_flats

Number of images acquired for flatfield correction.

num_projections

Number of projection images.

num_projections_total

Total number of projections. For most of the experiments this is the same as the number of projections.

await prepare()

Gets executed before every experiment run.

abstractmethod await start_sample_exposure()

This function must implement in a way that the sample is exposed by radiation, like opening a shutter or starting an X-ray tube.

abstractmethod await stop_sample_exposure()

This function must implement in a way that the sample is not exposed by radiation, like closing a shutter or switching off an X-ray tube.

class concert.experiments.synchrotron.RadiographyLogic(self, walker, flat_motor, radio_position, flat_position, camera, shutter, num_flats=200, num_darks=200, num_projections=3000, separate_scans=True)

Bases: SynchrotronMixin, RadiographyLogic

Synchrotron radiography logic class which needs to be combined with one of the local or remote mixins for DAQ.

await __ainit__(walker, flat_motor, radio_position, flat_position, camera, shutter, num_flats=200, num_darks=200, num_projections=3000, separate_scans=True)
Parameters
  • walker (concert.storage.Walker) – Walker for storing experiment data.

  • flat_motor – Motor for moving sample in and out of the beam. Must feature a ‘position’ property.

  • radio_position – Position of flat_motor that the sample is positioned in the beam. Unit must be the same as flat_motor[‘position’].

  • flat_position – Position of flat_motor that the sample is positioned out of the beam. Unit must be the same as flat_motor[‘position’].

  • camera (concert.devices.cameras.base.Camera) – Camera to acquire the images.

  • shutter (concert.devices.shutters.base.Shutter) – Shutter

  • num_flats (int) – Number of images for flatfield correction.

  • num_darks (int) – Number of images for dark correction.

  • num_projections (int) – Number of projections.

  • separate_scans (bool) – Descend into subdirectories based on current iteration.

class concert.experiments.xraytube.RadiographyLogic(self, walker, flat_motor, radio_position, flat_position, camera, xray_tube, num_flats=200, num_darks=200, num_projections=3000, separate_scans=True)

Bases: XrayTubeMixin, RadiographyLogic

Synchrotron radiography logic class which needs to be combined with one of the local or remote mixins for DAQ.

await __ainit__(walker, flat_motor, radio_position, flat_position, camera, xray_tube, num_flats=200, num_darks=200, num_projections=3000, separate_scans=True)
Parameters
  • walker (concert.storage.Walker) – Walker for storing experiment data.

  • flat_motor – Motor for moving sample in and out of the beam. Must feature a ‘position’ property.

  • radio_position – Position of flat_motor that the sample is positioned in the beam. Unit must be the same as flat_motor[‘position’].

  • flat_position – Position of flat_motor that the sample is positioned out of the beam. Unit must be the same as flat_motor[‘position’].

  • camera (concert.devices.cameras.base.Camera) – Camera to acquire the images.

  • xray_tube (concert.devices.xraytubes.base.XRayTube) – X-ray tube

  • num_flats (int) – Number of images for flatfield correction.

  • num_darks (int) – Number of images for dark correction.

  • num_projections (int) – Number of projections.

class concert.experiments.synchrotron.LocalRadiography(self, walker, flat_motor, radio_position, flat_position, camera, shutter, num_flats=200, num_darks=200, num_projections=3000, separate_scans=True)

Bases: LocalAutoDAQMixin, RadiographyLogic

Radiography with local DAQ.

class concert.experiments.synchrotron.RemoteRadiography(self, walker, flat_motor, radio_position, flat_position, camera, shutter, num_flats=200, num_darks=200, num_projections=3000, separate_scans=True)

Bases: RemoteAutoDAQMixin, RadiographyLogic

Radiography with remote DAQ.

class concert.experiments.xraytube.LocalRadiography(self, walker, flat_motor, radio_position, flat_position, camera, xray_tube, num_flats=200, num_darks=200, num_projections=3000, separate_scans=True)

Bases: LocalAutoDAQMixin, RadiographyLogic

Radiography with local DAQ.

class concert.experiments.xraytube.RemoteRadiography(self, walker, flat_motor, radio_position, flat_position, camera, xray_tube, num_flats=200, num_darks=200, num_projections=3000, separate_scans=True)

Bases: RemoteAutoDAQMixin, RadiographyLogic

Radiography with remote DAQ.

SteppedTomography

class concert.experiments.imaging.SteppedTomographyLogic(self, walker, flat_motor, tomography_motor, radio_position, flat_position, camera, num_flats=200, num_darks=200, num_projections=3000, angular_range=<Quantity(180, 'degree')>, start_angle=<Quantity(0, 'degree')>, separate_scans=True)

Bases: TomographyLogic

Stepped tomography logic.

class concert.experiments.synchrotron.SteppedTomographyLogic(self, walker, flat_motor, tomography_motor, radio_position, flat_position, camera, shutter, num_flats=200, num_darks=200, num_projections=3000, angular_range=<Quantity(180, 'degree')>, start_angle=<Quantity(0, 'degree')>, separate_scans=True)

Bases: SynchrotronMixin, SteppedTomographyLogic

Stepped tomography logic class which needs to be combined with one of the local or remote mixins for DAQ.

await __ainit__(walker, flat_motor, tomography_motor, radio_position, flat_position, camera, shutter, num_flats=200, num_darks=200, num_projections=3000, angular_range=<Quantity(180, 'degree')>, start_angle=<Quantity(0, 'degree')>, separate_scans=True)
Parameters
  • walker (concert.storage.Walker) – Walker for storing experiment data.

  • flat_motor – Motor for moving sample in and out of the beam. Must feature a ‘position’ property.

  • tomography_motor (concert.devices.motors.base.RotationMotor) – RotationMotor for tomography.

  • radio_position – Position of flat_motor that the sample is positioned in the beam. Unit must be the same as flat_motor[‘position’].

  • flat_position – Position of flat_motor that the sample is positioned out of the beam. Unit must be the same as flat_motor[‘position’].

  • camera (concert.devices.cameras.base.Camera) – Camera to acquire the images.

  • shutter (concert.devices.shutters.base.Shutter) – Shutter

  • num_flats (int) – Number of images for flatfield correction.

  • num_darks (int) – Number of images for dark correction.

  • num_projections (int) – Number of projections.

  • angular_range (q.deg) – Range for the scan of the tomography_motor.

  • start_angle (q.deg) – Start position of tomography_motor for the first projection.

class concert.experiments.xraytube.SteppedTomographyLogic(self, walker, flat_motor, tomography_motor, radio_position, flat_position, camera, xray_tube, num_flats=200, num_darks=200, num_projections=3000, angular_range=<Quantity(360, 'degree')>, start_angle=<Quantity(0, 'degree')>, separate_scans=True)

Bases: XrayTubeMixin, SteppedTomographyLogic

Stepped tomography logic class which needs to be combined with one of the local or remote mixins for DAQ.

await __ainit__(walker, flat_motor, tomography_motor, radio_position, flat_position, camera, xray_tube, num_flats=200, num_darks=200, num_projections=3000, angular_range=<Quantity(360, 'degree')>, start_angle=<Quantity(0, 'degree')>, separate_scans=True)
Parameters
  • walker (concert.storage.Walker) – Walker for storing experiment data.

  • flat_motor – Motor for moving sample in and out of the beam. Must feature a ‘position’ property.

  • tomography_motor (concert.devices.motors.base.RotationMotor) – RotationMotor for tomography scan.

  • radio_position – Position of flat_motor that the sample is positioned in the beam. Unit must be the same as flat_motor[‘position’].

  • flat_position – Position of flat_motor that the sample is positioned out of the beam. Unit must be the same as flat_motor[‘position’].

  • camera (concert.devices.camera.base.Camera) – Camera to acquire the images.

  • xray_tube (concert.devices.xraytubes.base.XRayTube) – X-ray tube

  • num_flats (int) – Number of images for flatfield correction.

  • num_darks (int) – Number of images for dark correction.

  • num_projections (int) – Number of projections.

  • angular_range (q.deg) – Range for the scan of the tomography_motor.

  • start_angle (q.deg) – Start position of tomography_motor for the first projection.

class concert.experiments.synchrotron.LocalSteppedTomography(self, walker, flat_motor, tomography_motor, radio_position, flat_position, camera, shutter, num_flats=200, num_darks=200, num_projections=3000, angular_range=<Quantity(180, 'degree')>, start_angle=<Quantity(0, 'degree')>, separate_scans=True)

Bases: LocalTriggerDAQMixin, SteppedTomographyLogic

Stepped tomography with local DAQ.

class concert.experiments.synchrotron.RemoteSteppedTomography(self, walker, flat_motor, tomography_motor, radio_position, flat_position, camera, shutter, num_flats=200, num_darks=200, num_projections=3000, angular_range=<Quantity(180, 'degree')>, start_angle=<Quantity(0, 'degree')>, separate_scans=True)

Bases: RemoteTriggerDAQMixin, SteppedTomographyLogic

Stepped tomography with remote DAQ.

class concert.experiments.xraytube.LocalSteppedTomography(self, walker, flat_motor, tomography_motor, radio_position, flat_position, camera, xray_tube, num_flats=200, num_darks=200, num_projections=3000, angular_range=<Quantity(360, 'degree')>, start_angle=<Quantity(0, 'degree')>, separate_scans=True)

Bases: LocalTriggerDAQMixin, SteppedTomographyLogic

Stepped tomography with local DAQ.

class concert.experiments.xraytube.RemoteSteppedTomography(self, walker, flat_motor, tomography_motor, radio_position, flat_position, camera, xray_tube, num_flats=200, num_darks=200, num_projections=3000, angular_range=<Quantity(360, 'degree')>, start_angle=<Quantity(0, 'degree')>, separate_scans=True)

Bases: RemoteTriggerDAQMixin, SteppedTomographyLogic

Stepped tomography with remote DAQ.

ContinuousTomography

class concert.experiments.imaging.ContinuousTomographyLogic(self, walker, flat_motor, tomography_motor, radio_position, flat_position, camera, num_flats=200, num_darks=200, num_projections=3000, angular_range=<Quantity(180, 'degree')>, start_angle=<Quantity(0, 'degree')>, separate_scans=True)

Bases: TomographyLogic

Continuous tomography logic.

This implements a tomography with a continuous rotation of the sample. The camera must record frames with a constant rate.

class concert.experiments.synchrotron.ContinuousTomographyLogic(self, walker, flat_motor, tomography_motor, radio_position, flat_position, camera, shutter, num_flats=200, num_darks=200, num_projections=3000, angular_range=<Quantity(180, 'degree')>, start_angle=<Quantity(0, 'degree')>, separate_scans=True)

Bases: SynchrotronMixin, ContinuousTomographyLogic

Continuous tomography logic class which needs to be combined with one of the local or remote mixins for DAQ.

await __ainit__(walker, flat_motor, tomography_motor, radio_position, flat_position, camera, shutter, num_flats=200, num_darks=200, num_projections=3000, angular_range=<Quantity(180, 'degree')>, start_angle=<Quantity(0, 'degree')>, separate_scans=True)
Parameters
  • walker (concert.storage.Walker) – Walker for storing experiment data.

  • flat_motor – Motor for moving sample in and out of the beam. Must feature a ‘position’ property.

  • tomography_motor (concert.devices.motors.base.RotationMotor) – RotationMotor for tomography.

  • radio_position – Position of flat_motor that the sample is positioned in the beam. Unit must be the same as flat_motor[‘position’].

  • flat_position – Position of flat_motor that the sample is positioned out of the beam. Unit must be the same as flat_motor[‘position’].

  • camera (concert.devices.cameras.base.Camera) – Camera to acquire the images.

  • shutter (concert.devices.shutters.base.Shutter) – Shutter

  • num_flats (int) – Number of images for flatfield correction.

  • num_darks (int) – Number of images for dark correction.

  • num_projections (int) – Number of projections.

  • angular_range (q.deg) – Range for the scan of the tomography_motor.

  • start_angle (q.deg) – Start position of tomography_motor for the first projection.

class concert.experiments.xraytube.ContinuousTomographyLogic(self, walker, flat_motor, tomography_motor, radio_position, flat_position, camera, xray_tube, num_flats=200, num_darks=200, num_projections=3000, angular_range=<Quantity(180, 'degree')>, start_angle=<Quantity(0, 'degree')>, separate_scans=True)

Bases: XrayTubeMixin, ContinuousTomographyLogic

Continuous tomography logic class which needs to be combined with one of the local or remote mixins for DAQ.

await __ainit__(walker, flat_motor, tomography_motor, radio_position, flat_position, camera, xray_tube, num_flats=200, num_darks=200, num_projections=3000, angular_range=<Quantity(180, 'degree')>, start_angle=<Quantity(0, 'degree')>, separate_scans=True)
Parameters
  • walker (concert.storage.Walker) – Walker for storing experiment data.

  • flat_motor – Motor for moving sample in and out of the beam. Must feature a ‘position’ property.

  • tomography_motor (concert.devices.motors.base.ContinuousRotationMotor) – ContinuousRotationMotor for tomography scan.

  • radio_position – Position of flat_motor that the sample is positioned in the beam. Unit must be the same as flat_motor[‘position’].

  • flat_position – Position of flat_motor that the sample is positioned out of the beam. Unit must be the same as flat_motor[‘position’].

  • camera (concert.devices.camera.base.Camera) – Camera to acquire the images.

  • xray_tube (concert.devices.xraytubes.base.XRayTube) – X-ray tube

  • num_flats (int) – Number of images for flatfield correction.

  • num_darks (int) – Number of images for dark correction.

  • num_projections (int) – Number of projections.

  • angular_range (q.deg) – Range for the scan of the tomography_motor.

  • start_angle (q.deg) – Start position of tomography_motor for the first projection.

class concert.experiments.synchrotron.LocalContinuousTomography(self, walker, flat_motor, tomography_motor, radio_position, flat_position, camera, shutter, num_flats=200, num_darks=200, num_projections=3000, angular_range=<Quantity(180, 'degree')>, start_angle=<Quantity(0, 'degree')>, separate_scans=True)

Bases: LocalAutoDAQMixin, ContinuousTomographyLogic

Continuous tomography with local DAQ.

class concert.experiments.synchrotron.RemoteContinuousTomography(self, walker, flat_motor, tomography_motor, radio_position, flat_position, camera, shutter, num_flats=200, num_darks=200, num_projections=3000, angular_range=<Quantity(180, 'degree')>, start_angle=<Quantity(0, 'degree')>, separate_scans=True)

Bases: RemoteAutoDAQMixin, ContinuousTomographyLogic

Continuous tomography with remote DAQ.

class concert.experiments.xraytube.LocalContinuousTomography(self, walker, flat_motor, tomography_motor, radio_position, flat_position, camera, xray_tube, num_flats=200, num_darks=200, num_projections=3000, angular_range=<Quantity(180, 'degree')>, start_angle=<Quantity(0, 'degree')>, separate_scans=True)

Bases: LocalAutoDAQMixin, ContinuousTomographyLogic

Continuous tomography with local DAQ.

class concert.experiments.xraytube.RemoteContinuousTomography(self, walker, flat_motor, tomography_motor, radio_position, flat_position, camera, xray_tube, num_flats=200, num_darks=200, num_projections=3000, angular_range=<Quantity(180, 'degree')>, start_angle=<Quantity(0, 'degree')>, separate_scans=True)

Bases: RemoteAutoDAQMixin, ContinuousTomographyLogic

Continuous tomography with remote DAQ.

SteppedSpiralTomography

class concert.experiments.imaging.SteppedSpiralTomographyLogic(self, walker, flat_motor, tomography_motor, vertical_motor, radio_position, flat_position, camera, start_position_vertical, sample_height, vertical_shift_per_tomogram, num_flats=200, num_darks=200, num_projections=3000, angular_range=<Quantity(180, 'degree')>, start_angle=<Quantity(0, 'degree')>, separate_scans=True)

Bases: SpiralMixin, SteppedTomographyLogic

Stepped spiral tomography.

await __ainit__(walker, flat_motor, tomography_motor, vertical_motor, radio_position, flat_position, camera, start_position_vertical, sample_height, vertical_shift_per_tomogram, num_flats=200, num_darks=200, num_projections=3000, angular_range=<Quantity(180, 'degree')>, start_angle=<Quantity(0, 'degree')>, separate_scans=True)
Parameters
  • walker (concert.storage.Walker) – Walker for storing experiment data.

  • flat_motor – Motor for moving sample in and out of the beam. Must feature a ‘position’ property.

  • tomography_motor (concert.devices.motors.base.RotationMotor) – RotationMotor for tomography scan.

  • vertical_motor (concert.devices.motors.base.LinearMotor) – LinearMotor to translate the sample along the tomographic axis.

  • radio_position – Position of flat_motor that the sample is positioned in the beam. Unit must be the same as flat_motor[‘position’].

  • flat_position – Position of flat_motor that the sample is positioned out of the beam. Unit must be the same as flat_motor[‘position’].

  • camera (concert.devices.cameras.base.Camera) – Camera to acquire the images.

  • start_position_vertical (q.mm) – Start position of vertical_motor.

  • sample_height (q.mm) – Height of the sample.

  • vertical_shift_per_tomogram (q.mm) – Distance vertical_motor is translated during one angular_range.

  • num_flats (int) – Number of images for flatfield correction.

  • num_darks (int) – Number of images for dark correction.

  • num_projections (int) – Number of projections.

  • angular_range (q.deg) – Range for the scan of the tomography_motor.

  • start_angle (q.deg) – Start position of tomography_motor for the first projection.

class concert.experiments.synchrotron.SteppedSpiralTomographyLogic(self, walker, flat_motor, tomography_motor, vertical_motor, radio_position, flat_position, camera, shutter, start_position_vertical, sample_height, vertical_shift_per_tomogram, num_flats=200, num_darks=200, num_projections=3000, angular_range=<Quantity(180, 'degree')>, start_angle=<Quantity(0, 'degree')>, separate_scans=True)

Bases: SynchrotronMixin, SteppedSpiralTomographyLogic

Stepped spiral tomography logic class which needs to be combined with one of the local or remote mixins for DAQ.

await __ainit__(walker, flat_motor, tomography_motor, vertical_motor, radio_position, flat_position, camera, shutter, start_position_vertical, sample_height, vertical_shift_per_tomogram, num_flats=200, num_darks=200, num_projections=3000, angular_range=<Quantity(180, 'degree')>, start_angle=<Quantity(0, 'degree')>, separate_scans=True)
Parameters
  • walker (concert.storage.Walker) – Walker for storing experiment data.

  • flat_motor – Motor for moving sample in and out of the beam. Must feature a ‘position’ property.

  • tomography_motor (concert.devices.motors.base.RotationMotor) – RotationMotor for tomography scan.

  • vertical_motor (concert.devices.motors.base.LinearMotor) – LinearMotor to translate the sample along the tomographic axis.

  • radio_position – Position of flat_motor that the sample is positioned in the beam. Unit must be the same as flat_motor[‘position’].

  • flat_position – Position of flat_motor that the sample is positioned out of the beam. Unit must be the same as flat_motor[‘position’].

  • camera (concert.devices.cameras.base.Camera) – Camera to acquire the images.

  • shutter (concert.devices.shutters.base.Shutter) – Stutter

  • start_position_vertical (q.mm) – Start position of vertical_motor.

  • sample_height (q.mm) – Height of the sample.

  • vertical_shift_per_tomogram (q.mm) – Distance vertical_motor is translated during one angular_range.

  • num_flats (int) – Number of images for flatfield correction.

  • num_darks (int) – Number of images for dark correction.

  • num_projections (int) – Number of projections.

  • angular_range (q.deg) – Range for the scan of the tomography_motor.

  • start_angle (q.deg) – Start position of tomography_motor for the first projection.

class concert.experiments.xraytube.SteppedSpiralTomographyLogic(self, walker, flat_motor, tomography_motor, vertical_motor, radio_position, flat_position, camera, xray_tube, start_position_vertical, sample_height, vertical_shift_per_tomogram, num_flats=200, num_darks=200, num_projections=3000, angular_range=<Quantity(180, 'degree')>, start_angle=<Quantity(0, 'degree')>, separate_scans=True)

Bases: XrayTubeMixin, SteppedSpiralTomographyLogic

Stepped spiral tomography logic class which needs to be combined with one of the local or remote mixins for DAQ.

await __ainit__(walker, flat_motor, tomography_motor, vertical_motor, radio_position, flat_position, camera, xray_tube, start_position_vertical, sample_height, vertical_shift_per_tomogram, num_flats=200, num_darks=200, num_projections=3000, angular_range=<Quantity(180, 'degree')>, start_angle=<Quantity(0, 'degree')>, separate_scans=True)
Parameters
  • walker (concert.storage.Walker) – Walker for storing experiment data.

  • flat_motor – Motor for moving sample in and out of the beam. Must feature a ‘position’ property.

  • tomography_motor (concert.devices.motors.base.RotationMotor) – RotationMotor for tomography scan.

  • vertical_motor (concert.devices.motors.base.LinearMotor) – LinearMotor to translate the sample along the tomographic axis.

  • radio_position – Position of flat_motor that the sample is positioned in the beam. Unit must be the same as flat_motor[‘position’].

  • flat_position – Position of flat_motor that the sample is positioned out of the beam. Unit must be the same as flat_motor[‘position’].

  • camera (concert.devices.cameras.base.Camera) – Camera to acquire the images.

  • xray_tube (concert.devices.xraytubes.base.XRayTube) – X-ray tube

  • start_position_vertical (q.mm) – Start position of vertical_motor.

  • sample_height (q.mm) – Height of the sample.

  • vertical_shift_per_tomogram (q.mm) – Distance vertical_motor is translated during one angular_range.

  • num_flats (int) – Number of images for flatfield correction.

  • num_darks (int) – Number of images for dark correction.

  • num_projections (int) – Number of projections.

  • angular_range (q.deg) – Range for the scan of the tomography_motor.

  • start_angle (q.deg) – Start position of tomography_motor for the first projection.

class concert.experiments.synchrotron.LocalSteppedSpiralTomography(self, walker, flat_motor, tomography_motor, vertical_motor, radio_position, flat_position, camera, shutter, start_position_vertical, sample_height, vertical_shift_per_tomogram, num_flats=200, num_darks=200, num_projections=3000, angular_range=<Quantity(180, 'degree')>, start_angle=<Quantity(0, 'degree')>, separate_scans=True)

Bases: LocalTriggerDAQMixin, SteppedSpiralTomographyLogic

Stepped spiral tomography with local DAQ.

class concert.experiments.synchrotron.RemoteSteppedSpiralTomography(self, walker, flat_motor, tomography_motor, vertical_motor, radio_position, flat_position, camera, shutter, start_position_vertical, sample_height, vertical_shift_per_tomogram, num_flats=200, num_darks=200, num_projections=3000, angular_range=<Quantity(180, 'degree')>, start_angle=<Quantity(0, 'degree')>, separate_scans=True)

Bases: RemoteTriggerDAQMixin, SteppedSpiralTomographyLogic

Stepped spiral tomography with remote DAQ.

class concert.experiments.xraytube.LocalSteppedSpiralTomography(self, walker, flat_motor, tomography_motor, vertical_motor, radio_position, flat_position, camera, xray_tube, start_position_vertical, sample_height, vertical_shift_per_tomogram, num_flats=200, num_darks=200, num_projections=3000, angular_range=<Quantity(180, 'degree')>, start_angle=<Quantity(0, 'degree')>, separate_scans=True)

Bases: LocalTriggerDAQMixin, SteppedSpiralTomographyLogic

Stepped spiral tomography with local DAQ.

class concert.experiments.xraytube.RemoteSteppedSpiralTomography(self, walker, flat_motor, tomography_motor, vertical_motor, radio_position, flat_position, camera, xray_tube, start_position_vertical, sample_height, vertical_shift_per_tomogram, num_flats=200, num_darks=200, num_projections=3000, angular_range=<Quantity(180, 'degree')>, start_angle=<Quantity(0, 'degree')>, separate_scans=True)

Bases: RemoteTriggerDAQMixin, SteppedSpiralTomographyLogic

Stepped spiral tomography with remote DAQ.

ContinuousSpiralTomography

class concert.experiments.imaging.ContinuousSpiralTomographyLogic(self, walker, flat_motor, tomography_motor, vertical_motor, radio_position, flat_position, camera, start_position_vertical, sample_height, vertical_shift_per_tomogram, num_flats=200, num_darks=200, num_projections=3000, angular_range=<Quantity(180, 'degree')>, start_angle=<Quantity(0, 'degree')>, separate_scans=True)

Bases: SpiralMixin, ContinuousTomographyLogic

Continuous spiral tomography.

This implements a helical acquisition scheme, where the sample is translated perpendicular to the beam while the sample is rotated and the projections are recorded.

await __ainit__(walker, flat_motor, tomography_motor, vertical_motor, radio_position, flat_position, camera, start_position_vertical, sample_height, vertical_shift_per_tomogram, num_flats=200, num_darks=200, num_projections=3000, angular_range=<Quantity(180, 'degree')>, start_angle=<Quantity(0, 'degree')>, separate_scans=True)
Parameters
  • walker (concert.storage.Walker) – Walker for storing experiment data.

  • flat_motor – Motor for moving sample in and out of the beam. Must feature a ‘position’ property.

  • tomography_motor (concert.devices.motors.base.ContinuousRotationMotor) – ContinuousRotationMotor for tomography scan.

  • vertical_motor (concert.devices.motors.base.ContinuousLinearMotor) – ContinuousLinearMotor to translate the sample along the tomographic axis.

  • radio_position – Position of flat_motor that the sample is positioned in the beam. Unit must be the same as flat_motor[‘position’].

  • flat_position – Position of flat_motor that the sample is positioned out of the beam. Unit must be the same as flat_motor[‘position’].

  • camera (concert.devices.cameras.base.Camera) – Camera to acquire the images.

  • start_position_vertical (q.mm) – Start position of vertical_motor.

  • sample_height (q.mm) – Height of the sample.

  • vertical_shift_per_tomogram (q.mm) – Distance vertical_motor is translated during one angular_range.

  • num_flats (int) – Number of images for flatfield correction.

  • num_darks (int) – Number of images for dark correction.

  • num_projections (int) – Number of projections.

  • angular_range (q.deg) – Range for the scan of the tomography_motor.

  • start_angle (q.deg) – Start position of tomography_motor for the first projection.

class concert.experiments.synchrotron.ContinuousSpiralTomographyLogic(self, walker, flat_motor, tomography_motor, vertical_motor, radio_position, flat_position, camera, shutter, start_position_vertical, sample_height, vertical_shift_per_tomogram, num_flats=200, num_darks=200, num_projections=3000, angular_range=<Quantity(180, 'degree')>, start_angle=<Quantity(0, 'degree')>, separate_scans=True)

Bases: SynchrotronMixin, ContinuousSpiralTomographyLogic

Continuous spiral tomography logic class which needs to be combined with one of the local or remote mixins for DAQ.

await __ainit__(walker, flat_motor, tomography_motor, vertical_motor, radio_position, flat_position, camera, shutter, start_position_vertical, sample_height, vertical_shift_per_tomogram, num_flats=200, num_darks=200, num_projections=3000, angular_range=<Quantity(180, 'degree')>, start_angle=<Quantity(0, 'degree')>, separate_scans=True)
Parameters
  • walker (concert.storage.Walker) – Walker for storing experiment data.

  • flat_motor – Motor for moving sample in and out of the beam. Must feature a ‘position’ property.

  • tomography_motor (concert.devices.motors.base.ContinuousRotationMotor) – ContinuousRotationMotor for tomography scan.

  • vertical_motor (concert.devices.motors.base.ContinuousLinearMotor) – ContinuousLinearMotor to translate the sample along the tomographic axis.

  • radio_position – Position of flat_motor that the sample is positioned in the beam. Unit must be the same as flat_motor[‘position’].

  • flat_position – Position of flat_motor that the sample is positioned out of the beam. Unit must be the same as flat_motor[‘position’].

  • camera (concert.devices.cameras.base.Camera) – Camera to acquire the images.

  • shutter (concert.devices.shutters.base.Shutter) – Stutter

  • start_position_vertical (q.mm) – Start position of vertical_motor.

  • sample_height (q.mm) – Height of the sample.

  • vertical_shift_per_tomogram (q.mm) – Distance vertical_motor is translated during one angular_range.

  • num_flats (int) – Number of images for flatfield correction.

  • num_darks (int) – Number of images for dark correction.

  • num_projections (int) – Number of projections.

  • angular_range (q.deg) – Range for the scan of the tomography_motor.

  • start_angle (q.deg) – Start position of tomography_motor for the first projection.

class concert.experiments.xraytube.ContinuousSpiralTomographyLogic(self, walker, flat_motor, tomography_motor, vertical_motor, radio_position, flat_position, camera, xray_tube, start_position_vertical, sample_height, vertical_shift_per_tomogram, num_flats=200, num_darks=200, num_projections=3000, angular_range=<Quantity(180, 'degree')>, start_angle=<Quantity(0, 'degree')>, separate_scans=True)

Bases: XrayTubeMixin, ContinuousSpiralTomographyLogic

Continuous spiral tomography logic class which needs to be combined with one of the local or remote mixins for DAQ.

await __ainit__(walker, flat_motor, tomography_motor, vertical_motor, radio_position, flat_position, camera, xray_tube, start_position_vertical, sample_height, vertical_shift_per_tomogram, num_flats=200, num_darks=200, num_projections=3000, angular_range=<Quantity(180, 'degree')>, start_angle=<Quantity(0, 'degree')>, separate_scans=True)
Parameters
  • walker (concert.storage.Walker) – Walker for storing experiment data.

  • flat_motor – Motor for moving sample in and out of the beam. Must feature a ‘position’ property.

  • tomography_motor (concert.devices.motors.base.ContinuousRotationMotor) – ContinuousRotationMotor for tomography scan.

  • vertical_motor (concert.devices.motors.base.ContinuousLinearMotor) – ContinuousLinearMotor to translate the sample along the tomographic axis.

  • radio_position – Position of flat_motor that the sample is positioned in the beam. Unit must be the same as flat_motor[‘position’].

  • flat_position – Position of flat_motor that the sample is positioned out of the beam. Unit must be the same as flat_motor[‘position’].

  • camera (concert.devices.cameras.base.Camera) – Camera to acquire the images.

  • xray_tube (concert.devices.xraytubes.base.XRayTube) – X-ray tube

  • start_position_vertical (q.mm) – Start position of vertical_motor.

  • sample_height (q.mm) – Height of the sample.

  • vertical_shift_per_tomogram (q.mm) – Distance vertical_motor is translated during one angular_range.

  • num_flats (int) – Number of images for flatfield correction.

  • num_darks (int) – Number of images for dark correction.

  • num_projections (int) – Number of projections.

  • angular_range (q.deg) – Range for the scan of the tomography_motor.

  • start_angle (q.deg) – Start position of tomography_motor for the first projection.

class concert.experiments.synchrotron.LocalContinuousSpiralTomography(self, walker, flat_motor, tomography_motor, vertical_motor, radio_position, flat_position, camera, shutter, start_position_vertical, sample_height, vertical_shift_per_tomogram, num_flats=200, num_darks=200, num_projections=3000, angular_range=<Quantity(180, 'degree')>, start_angle=<Quantity(0, 'degree')>, separate_scans=True)

Bases: LocalAutoDAQMixin, ContinuousSpiralTomographyLogic

Continuous spiral tomography with local DAQ.

class concert.experiments.synchrotron.RemoteContinuousSpiralTomography(self, walker, flat_motor, tomography_motor, vertical_motor, radio_position, flat_position, camera, shutter, start_position_vertical, sample_height, vertical_shift_per_tomogram, num_flats=200, num_darks=200, num_projections=3000, angular_range=<Quantity(180, 'degree')>, start_angle=<Quantity(0, 'degree')>, separate_scans=True)

Bases: RemoteAutoDAQMixin, ContinuousSpiralTomographyLogic

Continuous spiral tomography with remote DAQ.

class concert.experiments.xraytube.LocalContinuousSpiralTomography(self, walker, flat_motor, tomography_motor, vertical_motor, radio_position, flat_position, camera, xray_tube, start_position_vertical, sample_height, vertical_shift_per_tomogram, num_flats=200, num_darks=200, num_projections=3000, angular_range=<Quantity(180, 'degree')>, start_angle=<Quantity(0, 'degree')>, separate_scans=True)

Bases: LocalAutoDAQMixin, ContinuousSpiralTomographyLogic

Continuous spiral tomography with local DAQ.

class concert.experiments.xraytube.RemoteContinuousSpiralTomography(self, walker, flat_motor, tomography_motor, vertical_motor, radio_position, flat_position, camera, xray_tube, start_position_vertical, sample_height, vertical_shift_per_tomogram, num_flats=200, num_darks=200, num_projections=3000, angular_range=<Quantity(180, 'degree')>, start_angle=<Quantity(0, 'degree')>, separate_scans=True)

Bases: RemoteAutoDAQMixin, ContinuousSpiralTomographyLogic

Continuous spiral tomography with remote DAQ.

GratingInterferometryStepping

In this grating based phase contrast imaging implementation a single projection is generated. The grating is stepped with and without the sample while images are recorded. Dark images are also recorded. If the concert.experiments.addons.PhaseGratingSteppingFourierProcessing addon is attached, directly the intensity, visibility and differential phase are reconstructed.

class concert.experiments.synchrotron.LocalGratingInterferometryStepping(self, walker, camera, shutter, flat_motor, stepping_motor, flat_position, radio_position, grating_period, num_darks, stepping_start_position, num_periods, num_steps_per_period, propagation_distance, separate_scans)

Bases: SynchrotronMixin, LocalGratingInterferometryStepping

Local synchrotron grating interferometry experiment.

Data can be automatically processed with the corresponding addon (concert.experiments.addons.local.PhaseGratingSteppingFourierProcessing).

await __ainit__(walker, camera, shutter, flat_motor, stepping_motor, flat_position, radio_position, grating_period, num_darks, stepping_start_position, num_periods, num_steps_per_period, propagation_distance, separate_scans)
Parameters
  • walker (concert.storage.DirectoryWalker) – Walker for the experiment

  • camera (concert.devices.cameras.base.Camera) – Camera to acquire the images

  • shutter (concert.devices.shutters.base.Shutter) – Shutter

  • flat_motor – Motor for moving sample in and out of the beam. Must feature a ‘position’ property.

  • stepping_motor (concert.devices.motors.base.LinearMotor) –

  • radio_position – Position of flat_motor that the sample is positioned in the beam. Unit must be the same as flat_motor[‘position’].

  • flat_position – Position of flat_motor that the sample is positioned out of the beam. Unit must be the same as flat_motor[‘position’].

  • grating_period (q.um) – Periodicity of the stepped grating.

  • num_darks (int) – Number of dark images that are acquired.

  • stepping_start_position (q.um) – First stepping position.

  • num_periods (int) – Number of grating periods that are sampled by the stepping.

  • num_steps_per_period (int) – Number stepping positions per grating period.

  • propagation_distance (q.mm) – Distance between the sample and the analyzer grating. Only used by the processing addon to determine the phase shift in angles.

class concert.experiments.xraytube.LocalGratingInterferometryStepping(self, walker, camera, xray_tube, flat_motor, stepping_motor, flat_position, radio_position, grating_period, num_darks, stepping_start_position, num_periods, num_steps_per_period, propagation_distance, separate_scans)

Bases: XrayTubeMixin, LocalGratingInterferometryStepping

Local synchrotron grating interferometry experiment.

Data can be automatically processed with the corresponding addon (concert.experiments.addons.local.PhaseGratingSteppingFourierProcessing).

await __ainit__(walker, camera, xray_tube, flat_motor, stepping_motor, flat_position, radio_position, grating_period, num_darks, stepping_start_position, num_periods, num_steps_per_period, propagation_distance, separate_scans)
Parameters
  • walker (concert.storage.DirectoryWalker) – Walker for the experiment

  • camera (concert.devices.cameras.base.Camera) – Camera to acquire the images

  • xray_tube (concert.devices.xraytubes.base.XRayTube) – Xray tube

  • flat_motor – Motor for moving sample in and out of the beam. Must feature a ‘position’ property.

  • stepping_motor (concert.devices.motors.base.LinearMotor) –

  • radio_position – Position of flat_motor that the sample is positioned in the beam. Unit must be the same as flat_motor[‘position’].

  • flat_position – Position of flat_motor that the sample is positioned out of the beam. Unit must be the same as flat_motor[‘position’].

  • grating_period (q.um) – Periodicity of the stepped grating.

  • num_darks (int) – Number of dark images that are acquired.

  • stepping_start_position (q.um) – First stepping position.

  • num_periods (int) – Number of grating periods that are sampled by the stepping.

  • num_steps_per_period (int) – Number stepping positions per grating period.

  • propagation_distance (q.mm) – Distance between the sample and the analyzer grating. Only used by the processing addon to determine the phase shift in angles.