Skip to content

bp.grid_scan *snake_axes* arg does not accept a list of device names #340

Description

@canismarko

I'm trying to add the following plan to the queueserver:

{
    'item_type': 'plan', 
    'name': 'grid_scan', 
    'args': [
        ['Ipreslit_v1', 'I0', 'ge_13element', 'Ipreslit_v2', 'Ipreslit_h2', 'Ipreslit_h1', 'Iref', 'It'], 
        'aerotech.vertical', 40475.0, 40725.0, 51,
        'aerotech.horizontal', 23636.0, 23886.0, 51
    ], 
    'kwargs': {
        'snake_axes': ['aerotech.horizontal'],
        'md': {
            'sample_name': 'Calibration target', 
            'scan_name': 'test fly grid scan', 
            'purpose': 'commissioning', 
            'notes': 'Check if we can launch fly scans from Firefly'
        }
    }
}

According to the docstring for this plan:

snake_axes: boolean or iterable, optional
which axes should be snaked, either False (do not snake any axes),
True (snake all axes) or a list of axes to snake. "Snaking" an axis
is defined as following snake-like, winding trajectory instead of a
simple left-to-right trajectory. The elements of the list are motors
that are listed in args. The list must not contain the slowest
(first) motor, since it can't be snaked.

Since "aerotech.horizontal" is listed in args, I would expect that the plan I listed above would snake along that axis. However, I when I try to run this plan, I get the following:

If I do the equivalent scan directly in a REPL where snake_axes is a list of the actual motors, then the scan proceeds as expected. If I replace ['aerotech.horizontal'] with True on the queueserver, it also works correctly.

I suspect the snake_axes argument is not being transformed back into the device object by the queueserver?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions