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:
ExperimentLogic 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,RadiographyLogicSynchrotron 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,RadiographyLogicSynchrotron 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,RadiographyLogicRadiography 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,RadiographyLogicRadiography 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,RadiographyLogicRadiography 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,RadiographyLogicRadiography 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:
TomographyLogicStepped 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,SteppedTomographyLogicStepped 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,SteppedTomographyLogicStepped 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,SteppedTomographyLogicStepped 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,SteppedTomographyLogicStepped 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,SteppedTomographyLogicStepped 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,SteppedTomographyLogicStepped 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:
TomographyLogicContinuous 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,ContinuousTomographyLogicContinuous 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,ContinuousTomographyLogicContinuous 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,ContinuousTomographyLogicContinuous 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,ContinuousTomographyLogicContinuous 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,ContinuousTomographyLogicContinuous 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,ContinuousTomographyLogicContinuous 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,SteppedTomographyLogicStepped 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,SteppedSpiralTomographyLogicStepped 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,SteppedSpiralTomographyLogicStepped 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,SteppedSpiralTomographyLogicStepped 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,SteppedSpiralTomographyLogicStepped 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,SteppedSpiralTomographyLogicStepped 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,SteppedSpiralTomographyLogicStepped 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,ContinuousTomographyLogicContinuous 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,ContinuousSpiralTomographyLogicContinuous 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,ContinuousSpiralTomographyLogicContinuous 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,ContinuousSpiralTomographyLogicContinuous 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,ContinuousSpiralTomographyLogicContinuous 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,ContinuousSpiralTomographyLogicContinuous 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,ContinuousSpiralTomographyLogicContinuous 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,LocalGratingInterferometrySteppingLocal 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,LocalGratingInterferometrySteppingLocal 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.