Here is a proposal for a new Scan interface, submitting for feedback before trying to refactor existing Scan objects and interface these objects with the simulation code.
Previously, Scan objects could scan rotations around a single axis and optionally shift the sample between exposures during the scan.
With the proposed interface, an arbitrary set of poses can be simulated. The poses, comprising orientations and shifts, are defined in a new PoseSet object.
Orientations are described as an (n, 3, 3) array of rotation matrices with convenience functions for generating both Euler angle and axis-angle representations
Shifts are described as an (n, 3) array of shifts, in angstroms, to be applied to the sample volume.
This implementation adds a scipy dependency, if you feel strongly about this, we could extract and reimplement the features used here.
Here is a proposal for a new
Scan
interface, submitting for feedback before trying to refactor existingScan
objects and interface these objects with the simulation code.Previously,
Scan
objects could scan rotations around a single axis and optionally shift the sample between exposures during the scan.With the proposed interface, an arbitrary set of poses can be simulated. The poses, comprising orientations and shifts, are defined in a new
PoseSet
object.This implementation adds a scipy dependency, if you feel strongly about this, we could extract and reimplement the features used here.