31
ZMQ Message Reference
watts edited this page 2026-09-16 16:51:57 +02:00

This page lists the JSON strings that can be sent to the ZMQ REQ/REP port in order to request actions by Pixelator. The ZMQ messages must be sent in the format:

[HEADER, DATA1 (, DATA2)]

where the data can either be an empty string, or a JSON list or structure, e.g.:

["string1","string2","string3"] or {"key1":"value1","key2":"value2","key3":"value3"}

Request messages are typically responded to by a simple ["status", "ok"] response on the REQ/REP port and the publication of further data on the PUB/SUB port.

'initialize'

No data required or used. Lots of data is returned and published with the intended use being to populate a GUI.

Reply Messages:

  • ["status","ok"]
  • Positioner definitions
  • Detector definitions
  • Oscilloscope options
  • Zone Plate definitions
  • File IO config options

Published Messages:

  • Positioner status
  • Focus status
  • Scan status
  • Beam shutter status
  • Topup status
  • User status
  • Recorded channels
  • Focus type
  • Scan type archive attribute
  • Beam shutter mode
  • Topup mode

'recordedChannels'

Data is a list of strings that correspond to the names of the detectors to be enabled. For example:

    msg = ['recordedChannels',   '["Counter0", "Counter1"]' ]

Reply Messages:

  • ["status","ok"]

'detectorSettings'

Data is a string that corresponds to the name of a detector. For example:

    msg = ['detectorSettings',   'Counter0' ]

Reply Messages:

  • ["status","ok"]
  • message from specific detector module with a JSON array, but there doesn't seem to be an implementation yet.

'updateDetectorSettings'

Data is a string that corresponds to the name of a detector. Data2 is a JSON array with property, value pairs. For example:

    msg = ['updateDetectorSettings',   'Counter0', JSON_string ]

Reply Messages:

  • ["status","ok"]

'estimatedTime'

Data is a JSON scan request (see 'scanRequest' below). For example:

    msg = ['estimatedTime',   Scan_Request ]

Reply Messages:

  • ["status","ok"]
  • ['estimatedTime', Time_String ]

A Time_String will have a format like "00h 00m 01s", or "555h 59m 59s".

'scanRequest'

Data is a JSON scan request. For example:

    msg = ['estimatedTime',   "{
      'scanType': 'Sample',
      'spatialType': 'Image',
      'meander': 1, 
      'tiling': 1, 
      'yAxisFast': 0, 
      'lineMode': 'Constant Velocity', 
      'accelerationDistance': 0.5, 
      'tileDelay': 0.05, 'lineDelay': 0.05, 
      'outerRegions': [{'dwellTime': 0.005, 
                                     'axes': [{'nPoints': 2, 
                                     'trajectories': [{'start': 900.0, 
                                                                'end': 320.0, 
                                                                'range': -580.0, 
                                                                'step': -580.0, 
                                                                'positionerName': 'Energy'
                                                              }]
                                                 }]
                                  }], 
      'innerRegions': [{'axes': [{'nPoints': 1200, 
                                                   'trajectories': [{'center': 4282.670215322501, 
                                                                              'range': 12.0, 
                                                                              'step': 0.01, 
                                                                              'positionerName': 'FineY'
                                                                            }]
                                                  },
                                                  {'nPoints': 140, 
                                                  'trajectories': [{'center': 37.8280758446287, 
                                                                             'range': 28.0, 
                                                                             'step': 0.2, 
                                                                             'positionerName': 'FineX'
                                                                           }]
                                                  }]
                                   },
                                   {'axes': [{'nPoints': 10, 
                                                   'trajectories': [{'center': 5571.33258869908, 
                                                                              'range': 1.0, 
                                                                              'step': 0.1, 
                                                                              'positionerName': 'FineY'
                                                                           }]
                                                  },
                                                  {'nPoints': 10, 
                                                  'trajectories': [{'center': -5400.94023907363, 
                                                                             'range': 1.0, 
                                                                             'step': 0.1, 
                                                                             'positionerName': 'FineX'
                                                                           }]
                                                  }]
                                  }],
                                  'nOuterRegions': 1, 
                                  'nInnerRegions': 1, 
                                  'singleOuterRegionValue': 1, 
                                  'displayedAxes': {'x': {'region': 'inner', 
                                                                        'index': 1
                                                                       }, 
                                                                 'y': {'region': 'inner', 
                                                                        'index': 0
                                                                        }
                                                                 },
                                  'positionPrecision': {'precision': 200.0}, 
                                  'defocus': {'diameter': 0.0}
      }"
]

Reply Messages:

  • ["status","ok"]

'abortScan'

Message only needs the header, no data required. For example:

    msg = ['abortScan' ]

Reply Messages:

  • ["status","ok"]

'pauseScan'

Message only needs the header, no data required. For example:

    msg = ['pauseScan' ]

Reply Messages:

  • ["status","ok"]

'resumeScan'

Message only needs the header, no data required. For example:

    msg = ['resumeScan' ]

Reply Messages:

  • ["status","ok"]

'scanStatus'

Message only needs the header, no data required. For example:

    msg = ['scanStatus' ]

I don't think this is actually used anymore, or is useful, since Pixelator regularly publishes scanStatus messages.

Reply Messages:

  • ["status","ok"]
  • ["scanStatus", '{"current":{"innerRegion":1, "line":3, "lineRepetition":1, "outerRegion":1, "point":582, "polarization":1, "remainingTime":"25h 11m 10s", "time":"00h 01m 01s" }, "scanType":"Sample Scan", "status":"running", "total":{"innerRegion":1, "line":5001,"lineRepetition":1, "outerRegion":1, "point":1000, "polarization":1, "time":"25h 08m 40s" } }' ]

'moveRequest'

'moveStatus'

'homeRequest'

'positionerStatus'

'modified positioner definition'

  • "name": (required) Positioner name. Must exist as a defined positioner.

    Further optional keys correspond to the positioner base settings.

  • "positionOffset"

  • "upperSoftLimit"

  • "lowerSoftLimit"

  • "autoOff"

Example message contents for modifying the CoarseX positioner:

    msg = ['modified positioner definition',
    '{
	"autoOffMode":"Always",
	"lowerSoftLimit":120.0,
	"positionOffset":3.456,
	"upperSoftLimit":1221.0,
	}']

Successful modification of the positioner definition will result in the publication of the new positioner definition in full.

'modified zonePlate definition'

Changing the parameters for OSAs and zone plates, as well as the size of the OSA gap. While lots of information is included by the Intens GUI, only a few items are actually acted on by Pixelator:

  • "dOsa" key with a float value of the OSA gap.
  • "OSAs" key with a list of dictionaries containing OSA details - only the one containing "active":1 is acted on.
  • "zonePlates" key with a list of dictionaries containing zone plate details - only the one containing "active":1 is acted on.

These keys are not required to all be included in the JSON structure (e.g. the OSA gap can be set without the "OSAs" or "zonePlates" keys being present). When the OSA or zone plate set as "active" is one of the set that are described in the config file, the "activeOSA" and/or "activeZonePlate" is updated in the config file with the associated "name" string. All other details for the zone plate or OSA are taken from the zone plate config file. When the OSA gap is given a new value via the "dOsa" key, the "dOsa" key in the zone plate config file is updated. No other changes are made to the config file.

If the OSA or zone plate holding the "active":1 key/vale does not have a "name" key or its value is an empty string and its position in the list is one more than the number of pre-defined OSA/ZPs, then it is understood to be a temporary setting and is processed differently. Firstly, no change is made to the config file, so the settings will be forgotten on restart of Pixelator. Secondly, further info is read from the JSON string. For an OSA, the float value of the "diameter" key is read and applied as the OSA diameter in microns. For a zone plate, the array value of the "b" key is read and applied as the coefficients of a polynomial that describe the energy dependent focal length of the zone plate (assuming infinite source distance). While not required, an "outer_diameter" key should be provided with a float value in microns in order for the OSA gap colour indicator to function correctly (otherwise the OSA Gap input box will remain red at all times).

Details can be found in the ZonePlate::modify() function and the zone plate configuration documentation.

Example message

msg = ['modified zonePlate definition',
'{
"OSAs":[
    {
    "name":"OSA 50"
    ,"diameter":50.0
    }
    ,{
    "name":"OSA 60"
    ,"diameter":60.0
    }
    ,{
    "name":"OSA 70"
    ,"diameter":70.0
    ,"active":1
    }
]
,"zonePlates":[
    {
    "name":"ZonePlate B"
    ,"zone_material":"Pt"
    ,"outermost_zone_width":35.0
    ,"outer_diameter":240.0
    ,"central_stop_diameter":75.0
    ,"b":[
    0.0
    ,6.875
    ]
    }
    ,{
    "name":"ZonePlate A"
    ,"zone_material":"Pt"
    ,"outermost_zone_width":15.0
    ,"outer_diameter":150.0
    ,"central_stop_diameter":75.0
    ,"b":[
    0.0
    ,1.7949999999999999
    ]
    }
    ,{
    "name":"ZonePlate C"
    ,"zone_material":"Au"
    ,"outermost_zone_width":25.0
    ,"outer_diameter":240.0
    ,"central_stop_diameter":75.0
    ,"b":[
    0.0
    ,4.8209999999999997
    ]
    ,"active":1
    }
]
,"dOsa":301.0
}']

Minimal example messages:

msg1 = ['modified zonePlate definition',
'{
"OSAs":[{
    "name":"OSA 70"
    ,"active":1
    }]
}']

msg2 = ['modified zonePlate definition',
'{
"dOsa":301.0
}']

msg3 = ['modified zonePlate definition',
'{"zonePlates":[
    {
    "name":"ZonePlate B"
    ,"active":1
    }]
}']

"test" object example messages:

msg1 = ['modified zonePlate definition',
'{
"OSAs":[{}
	,{}
	,{}
	,{
    "diameter":70
    ,"active":1
    }]
}']

msg2 = ['modified zonePlate definition',
'{"zonePlates":[{}
	,{}
	,{}
	,{
    "name":""
    ,"active":1
    ,"b":[0.0,4.821]
    ,"outer_diameter":240.0
    }]
}']

'zonePlateFocus'

Set the focus position. Data is a dictionary with the following fields:

  • "target": "Sample"|"OSA" : The object being focused on.
  • "action": "calibrate"|"calculate" : Indicate whether to adjust the focus position, or simply return the calculated position (for setting up a focus scan).
  • "cursorPosition": Position value (in microns) on the zonePlateZ stage where the focus should be set.
  • "setDOsa": (Optional) Boolean integer to indicate that the OSA gap should be set (1/True) for the focus adjustment.

Note that focusing on the OSA means that the zonePlateZ stage offset would be adjusted to calibrate the distance between the zone plate and the OSA.

Example:

['zonePlateFocus', {'target': 'Sample', 'action': 'calibrate', 'cursorPosition': -1573.4942215445321}]

'oscilloscopeDefinition'

Parameters describing the function of the oscilloscope view of periodic detector readings. Data is a dictionary with the following fields:

  • "on": Boolean integer stating whether the detector readings will be published.
  • "interval": Float value for the time period (seconds) between detector values being published.
  • "countRate": Boolean integer stating whether the published values are per second (1/True), or raw detector values (0/False)

Note that there is no check on the value of "interval" and small values will result in lots of messages being published. An "interval" value of zero or less (i.e. negative) will result in no detector values being published (effective period of infinity).

Example:

['oscilloscopeDefinition', {'countRate': 1, 'interval': 1.0, 'on': 0}]

'focusType'

Turn on/off the autofocus feature of the zoneplate Z stage. Data must be one of the following strings:

  • "Auto": zoneplate will move to keep focal plane in the calculated position whenever the energy is changed.
  • "Static": zoneplate stage will not respond to changes in energy.

Example:

['focusType', "Auto"]

'scanTypeArchive'

'localFileScanTypeArchive'

'allMotorsOff'

'resetInterferometer'

'OSA_IN'

'OSA_OUT'

'ZonePlate IN'

'ZonePlate OUT'

'Sample OUT'

'topupMode'

'beamShutterMode'

'loadFile directory'

Request that a the content list of a directory (on the tree available to Pixelator) be published. Required dict keys are:

  • "directory": Full path to the directory.
  • "showHidden": Optional flag to indicate if hidden files should be included in the published list of directory contents. Valid values are integer 1 or 0 (default 0)
  • "fileExtension": Optional flag to filter list to include only files with the given file extension. Affects files only, directories are treated separately. The value should be a string representing the final characters of the filename strings.
  • "pluginNumber": An integer that identifies which window is requesting the file data. This key/value will be added to the published data so that receiving GUIs can decide if/how they want to present the published data.

Example message:

msg = ['loadFile file',
'{
"directory":"/home/control/LocalData/2026-08-14"
,"showHidden":0
,"fileExtension":".hdf5"
,"pluginNumber":0
}']

'loadFile file'

Request that a the data from a file be published by Pixelator. Required dict keys are:

  • "file": Full path to the file (or reference file) on the directory tree available to Pixelator. For reference files (i.e. with a defined "mode"), it doesn't matter if the discard directory is present or not, the code will check first without the discard directory and if not found there, will then look in the discard directory.
  • "mode": Optional flag to load a scan with an adjacent scan number. Valid values are "next" (scan number +1) and "previous" (scan number -1). When the mode value is an empty string, or the key is not present, the function will try to load the exact path given in the "file" key (no checking for discard).
  • "pluginNumber": An integer that identifies which window is requesting the file data. This key/value will be added to the published data so that receiving GUIs can decide if/how they want to present the published data.

Example message:

mesg = ['loadFile file',
'{
"file":"/home/control/LocalData/2026-08-14/discard/Sample_Image_2026-08-14_002.hdf5"
,"mode":"next"
,"pluginNumber":4948
}']

Example response where the "pluginNumber" of 4948 is included in the message header:

['scanFileContent4948',
{'directory': '/home/control/LocalData/2026-08-14'
,'filename': 'Sample_Image_2026-08-14_003.hdf5'
,'regionProfiles': {'coordType': 'without_offset', 'displayedAxes': {'displayedAxisX': {'index': 1, 'name': 'sample_x', 'region': 'inner'}, 'displayedAxisY': {'index': 0, 'name': 'sample_y', 'region': 'inner'}}, 'maxX': 55.0, 'maxY': 55.0, 'minStepX': 10.0, 'minStepY': 10.0, 'minX': 5.0, 'minY': 5.0, 'regionProfiles': [{'axes': [{'max': 55.0, 'min': 5.0, 'minimalStep': 10.0, 'numPts': 5, 'segments': [{'end': 55.0, 'indexOffset': 0, 'max': 55.0, 'maxPoint': 50.0, 'min': 5.0, 'minPoint': 10.0, 'numPts': 5, 'start': 5.0, 'step': 10.0}]}, {'max': 55.0, 'min': 5.0, 'minimalStep': 10.0, 'numPts': 5, 'segments': [{'end': 55.0, 'indexOffset': 0, 'max': 55.0, 'maxPoint': 50.0, 'min': 5.0, 'minPoint': 10.0, 'numPts': 5, 'start': 5.0, 'step': 10.0}]}]}]}
,'scanData': {'cntChannel': 1, 'cntOuterRegion': 1, 'cntPolarization': 1, 'polarizations': [{'outerRegions': [{'scanDataRegionVec': [{'axesDims': [5, 5], 'channels': {'channelData': [[969.0, 381.0, 770.0, 278.0, 277.0, 61.0, 330.0, 529.0, 925.0, 138.0, 422.0, 967.0, 969.0, 854.0, 203.0, 113.0, 190.0, 103.0, 400.0, 483.0, 589.0, 76.0, 756.0, 17.0, 230.0]]}}]}]}], 'regionDims': [[5, 5]]}
,'scanRequest': '{"scanType": "Sample", "outerRegions": [{"dwellTime": 0.001, "axes": [{"nPoints": 3, "trajectories": [{"start": 300.0, "end": 301.0, "range": 1.0, "step": 0.5, "positionerName": "Energy"}]}]}, {"dwellTime": 0.001, "axes": [{"nPoints": 5, "trajectories": [{"start": 302.0, "end": 306.0, "range": 4.0, "step": 1.0, "positionerName": "Energy"}]}]}], "innerRegions": [{"axes": [{"nPoints": 5, "trajectories": [{"center": 30.0, "range": 50.0, "step": 10.0, "positionerName": "CoarseY"}]}, {"nPoints": 5, "trajectories": [{"center": 30.0, "range": 50.0, "step": 10.0, "positionerName": "CoarseX"}]}]}], "spatialType": "Image", "lineMode": "Point by Point", "meander": 0, "yAxisFast": 0, "tiling": 0, "accelerationDistance": 1.0, "tileDelay": 0.01, "lineDelay": 0.001, "pointDelay": 0.0, "lineRepetition": 1, "nOuterRegions": 2, "nInnerRegions": 1, "singleOuterRegionValue": true, "displayedAxes": {"x": {"region": "inner", "index": 1}, "y": {"region": "inner", "index": 0}}}'
,'scanType': 'Sample'
,'scanTypeArchive': 'archive'
,'signalList': ['Counter1']}
]

'loadDefinition'

'change user'

'script info'

'getSettings'

The getSettings message will return the contents of all .json files referenced in the settings .json file passed to PixelatorController on the command line, the contents of the referenced .json files is placed under the key referencedJsonFiles, example json string returned from the getSettings message:

Example return message
{'Detector_Archive_Default': 'no',
 'Focus_Archive_Default': 'no',
 'Motor_Archive_Default': 'no',
 'NeXusBaseDirectory': '/beamlinedata/SM/operations/STXM-data/ASTXM_upgrade_tmp/tmp/pixelator_data/2026',
 'NeXusDiscardSubDirectory': 'discard',
 'NeXusLocalBaseDirectory': '/beamlinedata/SM/operations/STXM-data/ASTXM_upgrade_tmp/tmp/pixelator_data/2026',
 'NeXusScanDate': '2026-06-05',
 'NeXusScanNumber': '003',
 'OSA Focus_Archive_Default': 'yes',
 'OSA_Archive_Default': 'yes',
 'SampleImagePreifx': '.',
 'Sample_Archive_Default': 'locked',
 'axisConfigFileName': './config/axis.json',
 'beamline': 'SLS PolLux X07DA',
 'changeUserScript': 'echo',
 'compression': 'LZW',
 'controllerConfigFileName': './config/controllerNoHardware.json',
 'dataPublisherPort': '56563',
 'defaultSaveLocal': 'yes',
 'defaultUsername': 'stxm',
 'detectorConfigFileName': './config/detectorNoHardware.json',
 'endOfScanScript': './scripts/endOfScan',
 'instrumentConfigFileName': './config/instrument.json',
 'log4cppPropertiesFileName': './config/log4cpp.properties',
 'microscopeControlConfigFileName': './config/microscopeControl.json',
 'missingDataCheckInterval': '0.1',
 'missingDataCheckMaxChecks': '5',
 'pixelClockConfigFileName': './config/pixelClockNoHardware.json',
 'positionerConfigFileName': './config/positionerNoHardware.json',
 'publisherPort': '56561',
 'referencedJsonFiles': {'axisConfigFileName': {'content': {'SampleX': {'nexus_name': 'sample_x'},
                                                            'SampleY': {'nexus_name': 'sample_y'},
                                                            'SampleZ': {'nexus_name': 'sample_z'}},
                                                'fileName': './config/axis.json',
                                                'resolvedFileName': './config/axis.json'},
                         'controllerConfigFileName': {'content': {'NewPort1': {'active': 0,
                                                                               'serverAddress': '129.129.113.94',
                                                                               'serverPort': 5001,
                                                                               'type': 'NewPort'},
                                                                  'NexLine1': {'active': 0,
                                                                               'serverAddress': '129.129.113.111',
                                                                               'serverPort': 50000,
                                                                               'type': 'NexLine'},
                                                                  'Orchestra1': {'active': 0,
                                                                                 'type': 'Orchestra'},
                                                                  'SmarAct1': {'active': 0,
                                                                               'baudRate': 115200,
                                                                               'deviceName': '/dev/ttyS0',
                                                                               'type': 'SmarAct'}},
                                                      'fileName': './config/controllerNoHardware.json',
                                                      'resolvedFileName': './config/controllerNoHardware.json'},
                         'detectorConfigFileName': {'content': {'Analog0': {'active': 1,
                                                                            'nexus_name': 'analog0',
                                                                            'type': 'Base'},
                                                                'Counter0': {'active': 1,
                                                                             'asynchronous': 1,
                                                                             'hardwareUnitFactor': 0.001,
                                                                             'hardwareUnitOffset': 20,
                                                                             'nexus_name': 'counter0',
                                                                             'type': 'Base',
                                                                             'unit': 'kP'},
                                                                'Counter1': {'active': 1,
                                                                             'detailedDataDimensions': [100],
                                                                             'nexus_name': 'counter1',
                                                                             'type': 'Base'},
                                                                'PHC': {'active': 0,
                                                                        'autoRecord': 0,
                                                                        'channel': 'X07DA-PHCAPD:PIXEL-C',
                                                                        'channeldetails': 'X07DA-PHCAPD:PHC-CTRWF',
                                                                        'detailedDataDimensions': [212],
                                                                        'details': 1,
                                                                        'nexus_name': 'phc',
                                                                        'setTimeChannel': 'X07DA-PHCAPD:SAMPLE-TIME',
                                                                        'type': 'Epics'},
                                                                'SampleX': {'active': 1,
                                                                            'autoRecord': 1,
                                                                            'monitor': 1,
                                                                            'nexus_name': 'sample_x',
                                                                            'type': 'Base'},
                                                                'SampleY': {'active': 1,
                                                                            'autoRecord': 1,
                                                                            'nexus_name': 'sample_y',
                                                                            'type': 'Base'},
                                                                'Time': {'active': 1,
                                                                         'autoRecord': 1,
                                                                         'nexus_name': 'time',
                                                                         'subType': 'time',
                                                                         'type': 'Base'}},
                                                    'fileName': './config/detectorNoHardware.json',
                                                    'resolvedFileName': './config/detectorNoHardware.json'},
                         'instrumentConfigFileName': {'content': {'aperture_1': {'class': 'NXaperture',
                                                                                 'shape': {'class': 'NXshape',
                                                                                           'shape': 'nxbox',
                                                                                           'size': [0.0,
                                                                                                    {'factor': 0.0001,
                                                                                                     'positioner': 'EntranceSlit'},
                                                                                                    0.03]},
                                                                                 'translation': {'class': 'NXtranslation',
                                                                                                 'distances': [0.0,
                                                                                                               0.0,
                                                                                                               -11.0]}},
                                                                  'aperture_2': {'class': 'NXaperture',
                                                                                 'shape': {'class': 'NXshape',
                                                                                           'shape': 'nxbox',
                                                                                           'size': [0.0,
                                                                                                    {'factor': 0.0001,
                                                                                                     'positioner': 'ExitSlit_H'},
                                                                                                    {'factor': 0.0001,
                                                                                                     'positioner': 'ExitSlit_V'}]},
                                                                                 'translation': {'class': 'NXtranslation',
                                                                                                 'distances': [0.0,
                                                                                                               0.0,
                                                                                                               -1]}},
                                                                  'bendmagnet': {'accepted_photon_beam_divergence': 'unknown',
                                                                                 'bending_radius': {'unit': 'deg',
                                                                                                    'value': 1.2345},
                                                                                 'critical_energy': 1.2345,
                                                                                 'divergence_x_minus': -0.00025,
                                                                                 'divergence_x_plus': 0.00025,
                                                                                 'divergence_y_minus': {'offset': -0.00025,
                                                                                                        'positioner': 'Ring_yAsym'},
                                                                                 'divergence_y_plus': {'offset': 0.00025,
                                                                                                       'positioner': 'Ring_yAsym'},
                                                                                 'geometry': {'class': 'NXgeometry',
                                                                                              'translation': {'class': 'NXtranslation',
                                                                                                              'distances': {'unit': 'μm',
                                                                                                                            'value': [0.0,
                                                                                                                                      0.0,
                                                                                                                                      -35.0]}}},
                                                                                 'magnetic_field': 1.4},
                                                                  'hos_mirror_1': {'class': 'NXmirror',
                                                                                   'coating_material': 'MgF2',
                                                                                   'condition': {'==': ['IN',
                                                                                                        {'epicsChannel': 'EPICS '
                                                                                                                         'X07DA-OP-HOS:STATE'}]},
                                                                                   'description': 'First '
                                                                                                  'mirror '
                                                                                                  'in '
                                                                                                  'higher '
                                                                                                  'order '
                                                                                                  'suppression '
                                                                                                  'system.',
                                                                                   'geometry': {'class': 'NXgeometry',
                                                                                                'orientation': {'class': 'NXorientation',
                                                                                                                'value': [0.0,
                                                                                                                          0.0,
                                                                                                                          0.0]},
                                                                                                'translation': {'class': 'NXtranslation',
                                                                                                                'distances': [0.0,
                                                                                                                              0.0,
                                                                                                                              -5.0]}},
                                                                                   'incident_angle': {'positioner': 'HOS_Angle1'},
                                                                                   'interior_atmosphere': 'vacuum',
                                                                                   'layer_thickness': 3e-08,
                                                                                   'substrate_material': 'SiO2',
                                                                                   'substrate_roughness': 1e-09,
                                                                                   'substrate_thickness': 0.03995},
                                                                  'mirror': {'class': 'NXmirror',
                                                                             'coating_material': 'pt',
                                                                             'coating_roughness': 4.9e-10,
                                                                             'geometry': {'class': 'NXgeometry',
                                                                                          'translation': {'class': 'NXtranslation',
                                                                                                          'distances': [0.0,
                                                                                                                        0.0,
                                                                                                                        -23.0]}},
                                                                             'incident_angle': {'unit': 'deg',
                                                                                                'value': 2.5},
                                                                             'interior_atmosphere': 'vacuum',
                                                                             'layer_thickness': 3e-08,
                                                                             'shape': {'class': 'NXshape',
                                                                                       'direction': 'concave',
                                                                                       'shape': 'nxtoroidal',
                                                                                       'size': [275.05,
                                                                                                0.68]},
                                                                             'substrate_material': 'Si',
                                                                             'type': 'single'},
                                                                  'source': {'current': {'positioner': 'Ring_Current'},
                                                                             'name': 'Swiss '
                                                                                     'Light '
                                                                                     'Source',
                                                                             'probe': 'x-ray',
                                                                             'type': 'Synchrotron '
                                                                                     'X-ray '
                                                                                     'Source'}},
                                                      'fileName': './config/instrument.json',
                                                      'resolvedFileName': './config/instrument.json'},
                         'microscopeControlConfigFileName': {'content': {'InOut': {'OSA': [{'positionIn': 0.0,
                                                                                            'positionOut': -3000.0,
                                                                                            'positioner': 'OSAX'},
                                                                                           {'positionIn': 0.0,
                                                                                            'positionOut': 3000.0,
                                                                                            'positioner': 'OSAY'}],
                                                                                   'Sample': [{'positionIn': 5000.0,
                                                                                               'positionOut': 10000.0,
                                                                                               'positioner': 'CoarseZ'}],
                                                                                   'ZonePlate': [{'positionIn': -5000,
                                                                                                  'positionOut': -18000.0,
                                                                                                  'positioner': 'Zoneplate'}]}},
                                                             'fileName': './config/microscopeControl.json',
                                                             'resolvedFileName': './config/microscopeControl.json'},
                         'pixelClockConfigFileName': {'content': {'PixelClock': {'active': 1,
                                                                                 'noHardware': True}},
                                                      'fileName': './config/pixelClockNoHardware.json',
                                                      'resolvedFileName': './config/pixelClockNoHardware.json'},
                         'positionerConfigFileName': {'content': {'Auxilliary0': {'active': 0,
                                                                                  'description': 'Auxiliary '
                                                                                                 'positioner '
                                                                                                 '0',
                                                                                  'nexus_name': 'auxilliary0',
                                                                                  'readOnly': True,
                                                                                  'type': 'Base'},
                                                                  'Auxilliary1': {'active': 0,
                                                                                  'description': 'Auxiliary '
                                                                                                 'positioner '
                                                                                                 '1',
                                                                                  'nexus_name': 'auxilliary1',
                                                                                  'readOnly': True,
                                                                                  'type': 'Base'},
                                                                  'Auxilliary2': {'active': 0,
                                                                                  'description': 'Auxiliary '
                                                                                                 'positioner '
                                                                                                 '2',
                                                                                  'nexus_name': 'auxilliary2',
                                                                                  'readOnly': True,
                                                                                  'type': 'Base'},
                                                                  'Baffle': {'active': 0,
                                                                             'description': 'Translation '
                                                                                            'of '
                                                                                            'the '
                                                                                            'baffle '
                                                                                            '(protecting '
                                                                                            'the '
                                                                                            'side '
                                                                                            'of '
                                                                                            'first '
                                                                                            'mirror)',
                                                                             'nexus_name': 'baffle',
                                                                             'readOnly': True,
                                                                             'type': 'Base'},
                                                                  'BeamShutter': {'active': 1,
                                                                                  'lowerSoftLimit': 0,
                                                                                  'nexus_name': 'beam_shutter',
                                                                                  'type': 'Base',
                                                                                  'upperSoftLimit': 1},
                                                                  'CoarseX': {'active': 1,
                                                                              'axisName': 'SampleX',
                                                                              'description': 'Coarse '
                                                                                             'translation '
                                                                                             'of '
                                                                                             'the '
                                                                                             'sample '
                                                                                             'along '
                                                                                             'the '
                                                                                             'X-axis',
                                                                              'distributionMode': 'n',
                                                                              'finePositioner': 'FineX',
                                                                              'hardwareUnitFactor': 1000,
                                                                              'lowerSoftLimit': -11000,
                                                                              'maxVelocity': 300,
                                                                              'nexus_name': 'coarse_x',
                                                                              'positionOffset': 0,
                                                                              'type': 'Base',
                                                                              'unit': 'μm',
                                                                              'upperSoftLimit': 11000},
                                                                  'CoarseY': {'active': 1,
                                                                              'axisName': 'SampleY',
                                                                              'description': 'Coarse '
                                                                                             'translation '
                                                                                             'of '
                                                                                             'the '
                                                                                             'sample '
                                                                                             'along '
                                                                                             'the '
                                                                                             'Y-axis',
                                                                              'distributionMode': 'n',
                                                                              'finePositioner': 'FineY',
                                                                              'hardwareUnitFactor': 1000,
                                                                              'lowerSoftLimit': -11000,
                                                                              'maxVelocity': 300,
                                                                              'nexus_name': 'coarse_y',
                                                                              'positionOffset': 0,
                                                                              'type': 'Base',
                                                                              'unit': 'μm',
                                                                              'upperSoftLimit': 11000},
                                                                  'CoarseZ': {'active': 0,
                                                                              'axisName': 'SampleZ',
                                                                              'description': 'Coarse '
                                                                                             'translation '
                                                                                             'of '
                                                                                             'the '
                                                                                             'sample '
                                                                                             'along '
                                                                                             'the '
                                                                                             'Z-axis',
                                                                              'distributionMode': 'n',
                                                                              'finePositioner': 'FineZ',
                                                                              'hardwareUnitFactor': 1000,
                                                                              'lowerSoftLimit': 0,
                                                                              'maxVelocity': 300,
                                                                              'nexus_name': 'coarse_z',
                                                                              'positionOffset': 0,
                                                                              'type': 'Base',
                                                                              'unit': 'μm',
                                                                              'upperSoftLimit': 11000},
                                                                  'DetectorX': {'active': 1,
                                                                                'description': 'Translation '
                                                                                               'of '
                                                                                               'the '
                                                                                               'detector '
                                                                                               'stage '
                                                                                               'along '
                                                                                               'the '
                                                                                               'X-axis',
                                                                                'distributionMode': 'n',
                                                                                'hardwareUnitFactor': 1000,
                                                                                'lowerSoftLimit': -11000,
                                                                                'nexus_name': 'detector_x',
                                                                                'positionOffset': 0,
                                                                                'type': 'Base',
                                                                                'unit': 'μm',
                                                                                'upperSoftLimit': 11000},
                                                                  'DetectorY': {'active': 1,
                                                                                'description': 'Translation '
                                                                                               'of '
                                                                                               'the '
                                                                                               'detector '
                                                                                               'stage '
                                                                                               'along '
                                                                                               'the '
                                                                                               'Y-axis',
                                                                                'distributionMode': 'n',
                                                                                'hardwareUnitFactor': 1000,
                                                                                'lowerSoftLimit': -11000,
                                                                                'maxVelocity': 300,
                                                                                'nexus_name': 'detector_y',
                                                                                'positionOffset': 0,
                                                                                'type': 'Base',
                                                                                'unit': 'μm',
                                                                                'upperSoftLimit': 11000},
                                                                  'DetectorZ': {'active': 1,
                                                                                'description': 'Translation '
                                                                                               'of '
                                                                                               'the '
                                                                                               'detector '
                                                                                               'stage '
                                                                                               'along '
                                                                                               'the '
                                                                                               'Z-axis',
                                                                                'distributionMode': 'n',
                                                                                'hardwareUnitFactor': 1000,
                                                                                'lowerSoftLimit': -11000,
                                                                                'maxVelocity': 300,
                                                                                'nexus_name': 'detector_z',
                                                                                'positionOffset': 0,
                                                                                'type': 'Base',
                                                                                'unit': 'μm',
                                                                                'upperSoftLimit': 11000},
                                                                  'Energy': {'active': 1,
                                                                             'beamlineControlPosition': 1,
                                                                             'description': 'Photon '
                                                                                            'energy '
                                                                                            'currently '
                                                                                            'transmitted '
                                                                                            'by '
                                                                                            'the '
                                                                                            'monochromator',
                                                                             'distributionMode': 'nPlus1',
                                                                             'hardwareUnitFactor': 1,
                                                                             'lowerSoftLimit': 10,
                                                                             'nexus_name': 'energy',
                                                                             'positionOffset': 0,
                                                                             'type': 'Base',
                                                                             'unit': 'eV',
                                                                             'upperSoftLimit': 1000},
                                                                  'EntranceSlit': {'active': 0,
                                                                                   'beamlineControlPosition': 2,
                                                                                   'description': 'Width '
                                                                                                  'of '
                                                                                                  'the '
                                                                                                  'entrance '
                                                                                                  'slit '
                                                                                                  'aperture',
                                                                                   'distributionMode': 'nPlus1',
                                                                                   'hardwareUnitFactor': 1,
                                                                                   'lowerSoftLimit': -10,
                                                                                   'nexus_name': 'entrance_slit',
                                                                                   'positionOffset': 0,
                                                                                   'type': 'Base',
                                                                                   'unit': 'mm',
                                                                                   'upperSoftLimit': 10},
                                                                  'ExitSlit_H': {'active': 0,
                                                                                 'beamlineControlPosition': 3,
                                                                                 'description': 'Width '
                                                                                                'of '
                                                                                                'the '
                                                                                                'exit '
                                                                                                'slit '
                                                                                                'aperture',
                                                                                 'distributionMode': 'nPlus1',
                                                                                 'hardwareUnitFactor': 1,
                                                                                 'lowerSoftLimit': -10,
                                                                                 'nexus_name': 'exit_slit_h',
                                                                                 'positionOffset': 0,
                                                                                 'type': 'Base',
                                                                                 'unit': 'mm',
                                                                                 'upperSoftLimit': 10},
                                                                  'ExitSlit_V': {'active': 0,
                                                                                 'beamlineControlPosition': 4,
                                                                                 'description': 'Height '
                                                                                                'of '
                                                                                                'the '
                                                                                                'exit '
                                                                                                'slit '
                                                                                                'aperture',
                                                                                 'distributionMode': 'nPlus1',
                                                                                 'hardwareUnitFactor': 1,
                                                                                 'lowerSoftLimit': -10,
                                                                                 'nexus_name': 'exit_slit_v',
                                                                                 'positionOffset': 0,
                                                                                 'type': 'Base',
                                                                                 'unit': 'mm',
                                                                                 'upperSoftLimit': 10},
                                                                  'FineX': {'active': 1,
                                                                            'axisName': 'SampleX',
                                                                            'coarsePositioner': 'CoarseX',
                                                                            'description': 'Fine '
                                                                                           'translation '
                                                                                           'of '
                                                                                           'the '
                                                                                           'sample '
                                                                                           'along '
                                                                                           'the '
                                                                                           'X-axis',
                                                                            'distributionMode': 'n',
                                                                            'hardwareUnitFactor': 1000,
                                                                            'lowerSoftLimit': -5,
                                                                            'maxVelocity': 300,
                                                                            'nexus_name': 'fine_x',
                                                                            'positionOffset': 0,
                                                                            'type': 'Base',
                                                                            'unit': 'μm',
                                                                            'upperSoftLimit': 5},
                                                                  'FineY': {'active': 1,
                                                                            'axisName': 'SampleY',
                                                                            'coarsePositioner': 'CoarseY',
                                                                            'description': 'Fine '
                                                                                           'translation '
                                                                                           'of '
                                                                                           'the '
                                                                                           'sample '
                                                                                           'along '
                                                                                           'the '
                                                                                           'Y-axis',
                                                                            'distributionMode': 'n',
                                                                            'hardwareUnitFactor': 1000,
                                                                            'lowerSoftLimit': -5,
                                                                            'maxVelocity': 300,
                                                                            'nexus_name': 'fine_y',
                                                                            'positionOffset': 0,
                                                                            'type': 'Base',
                                                                            'unit': 'μm',
                                                                            'upperSoftLimit': 5},
                                                                  'FineZ': {'active': 0,
                                                                            'axisName': 'SampleZ',
                                                                            'coarsePositioner': 'CoarseZ',
                                                                            'description': 'Fine '
                                                                                           'translation '
                                                                                           'of '
                                                                                           'the '
                                                                                           'sample '
                                                                                           'along '
                                                                                           'the '
                                                                                           'Z-axis',
                                                                            'distributionMode': 'n',
                                                                            'hardwareUnitFactor': 1000,
                                                                            'lowerSoftLimit': -5,
                                                                            'maxVelocity': 300,
                                                                            'nexus_name': 'fine_z',
                                                                            'positionOffset': 0,
                                                                            'type': 'Base',
                                                                            'unit': 'μm',
                                                                            'upperSoftLimit': 5},
                                                                  'FrontEndSlit_H1': {'active': 0,
                                                                                      'description': 'Translation '
                                                                                                     'of '
                                                                                                     'the '
                                                                                                     'front '
                                                                                                     'end '
                                                                                                     'slits '
                                                                                                     'ring-side '
                                                                                                     'blade',
                                                                                      'nexus_name': 'front_end_slit_h1',
                                                                                      'readOnly': True,
                                                                                      'type': 'Base'},
                                                                  'FrontEndSlit_H2': {'active': 0,
                                                                                      'description': 'Translation '
                                                                                                     'of '
                                                                                                     'the '
                                                                                                     'front '
                                                                                                     'end '
                                                                                                     'slits '
                                                                                                     'wall-side '
                                                                                                     'blade',
                                                                                      'nexus_name': 'front_end_slit_h2',
                                                                                      'readOnly': True,
                                                                                      'type': 'Base'},
                                                                  'FrontEndSlit_V1': {'active': 0,
                                                                                      'description': 'Translation '
                                                                                                     'of '
                                                                                                     'the '
                                                                                                     'front '
                                                                                                     'end '
                                                                                                     'slits '
                                                                                                     'upper '
                                                                                                     'blade',
                                                                                      'nexus_name': 'front_end_slit_v1',
                                                                                      'readOnly': True,
                                                                                      'type': 'Base'},
                                                                  'FrontEndSlit_V2': {'active': 0,
                                                                                      'description': 'Translation '
                                                                                                     'of '
                                                                                                     'the '
                                                                                                     'front '
                                                                                                     'end '
                                                                                                     'slits '
                                                                                                     'lower '
                                                                                                     'blade',
                                                                                      'nexus_name': 'front_end_slit_v2',
                                                                                      'readOnly': True,
                                                                                      'type': 'Base'},
                                                                  'Girder_Rx': {'active': 0,
                                                                                'description': 'Rotation '
                                                                                               'of '
                                                                                               'the '
                                                                                               'girder-mover '
                                                                                               'about '
                                                                                               'the '
                                                                                               'X-axis',
                                                                                'nexus_name': 'girder_rx',
                                                                                'readOnly': True,
                                                                                'type': 'Base'},
                                                                  'Girder_Ry': {'active': 0,
                                                                                'description': 'Rotation '
                                                                                               'of '
                                                                                               'the '
                                                                                               'girder-mover '
                                                                                               'about '
                                                                                               'the '
                                                                                               'Y-axis',
                                                                                'nexus_name': 'girder_ry',
                                                                                'readOnly': True,
                                                                                'type': 'Base'},
                                                                  'Girder_Rz': {'active': 0,
                                                                                'description': 'Rotation '
                                                                                               'of '
                                                                                               'the '
                                                                                               'girder-mover '
                                                                                               'about '
                                                                                               'the '
                                                                                               'Z-axis',
                                                                                'nexus_name': 'girder_rz',
                                                                                'readOnly': True,
                                                                                'type': 'Base'},
                                                                  'Girder_x': {'active': 0,
                                                                               'description': 'Translation '
                                                                                              'of '
                                                                                              'the '
                                                                                              'girder-mover '
                                                                                              'along '
                                                                                              'the '
                                                                                              'X-axis',
                                                                               'nexus_name': 'girder_x',
                                                                               'readOnly': True,
                                                                               'type': 'Base'},
                                                                  'Girder_y': {'active': 0,
                                                                               'description': 'Translation '
                                                                                              'of '
                                                                                              'the '
                                                                                              'girder-mover '
                                                                                              'along '
                                                                                              'the '
                                                                                              'Y-axis',
                                                                               'nexus_name': 'girder_y',
                                                                               'readOnly': True,
                                                                               'type': 'Base'},
                                                                  'Girder_z': {'active': 0,
                                                                               'description': 'Translation '
                                                                                              'of '
                                                                                              'the '
                                                                                              'girder-mover '
                                                                                              'along '
                                                                                              'the '
                                                                                              'Z-axis',
                                                                               'nexus_name': 'girder_z',
                                                                               'readOnly': True,
                                                                               'type': 'Base'},
                                                                  'Grating_Ry': {'active': 0,
                                                                                 'description': 'Rotation '
                                                                                                'of '
                                                                                                'the '
                                                                                                'monochromator '
                                                                                                'grating '
                                                                                                'about '
                                                                                                'the '
                                                                                                'Y-axis',
                                                                                 'nexus_name': 'grating_ry',
                                                                                 'readOnly': True,
                                                                                 'type': 'Base'},
                                                                  'Grating_y': {'active': 0,
                                                                                'description': 'Translation '
                                                                                               'of '
                                                                                               'the '
                                                                                               'monochromator '
                                                                                               'grating '
                                                                                               'carriage '
                                                                                               'along '
                                                                                               'the '
                                                                                               'Y-axis',
                                                                                'nexus_name': 'grating_y',
                                                                                'readOnly': True,
                                                                                'type': 'Base'},
                                                                  'HOS_Rz1': {'active': 0,
                                                                              'description': 'Rotation '
                                                                                             'of '
                                                                                             'the '
                                                                                             'first '
                                                                                             'higher '
                                                                                             'order '
                                                                                             'suppressor '
                                                                                             'mirror '
                                                                                             'about '
                                                                                             'the '
                                                                                             'X-axis '
                                                                                             '(-Z '
                                                                                             'translation '
                                                                                             'in '
                                                                                             'EPICS)',
                                                                              'nexus_name': 'hos_rz1',
                                                                              'readOnly': True,
                                                                              'type': 'Base'},
                                                                  'HOS_Rz2': {'active': 0,
                                                                              'description': 'Rotation '
                                                                                             'of '
                                                                                             'the '
                                                                                             'last '
                                                                                             'higher '
                                                                                             'order '
                                                                                             'suppressor '
                                                                                             'mirror '
                                                                                             'about '
                                                                                             'the '
                                                                                             'X-axis '
                                                                                             '(+Z '
                                                                                             'translation '
                                                                                             'in '
                                                                                             'EPICS)',
                                                                              'nexus_name': 'hos_rz2',
                                                                              'readOnly': True,
                                                                              'type': 'Base'},
                                                                  'HOS_z': {'active': 0,
                                                                            'description': 'Translation '
                                                                                           'of '
                                                                                           'the '
                                                                                           'higher '
                                                                                           'order '
                                                                                           'suppressor '
                                                                                           'along '
                                                                                           'the '
                                                                                           'X-axis '
                                                                                           '(-Z '
                                                                                           'in '
                                                                                           'EPICS)',
                                                                            'nexus_name': 'hos_z',
                                                                            'readOnly': True,
                                                                            'type': 'Base'},
                                                                  'ID1Off': {'active': 1,
                                                                             'beamlineControlPosition': 2,
                                                                             'description': 'ID '
                                                                                            '1 '
                                                                                            'Energy '
                                                                                            'Offset',
                                                                             'distributionMode': 'nPlus1',
                                                                             'hardwareUnitFactor': 1,
                                                                             'lowerSoftLimit': -100,
                                                                             'nexus_name': 'id1_off',
                                                                             'positionOffset': 0,
                                                                             'type': 'Base',
                                                                             'unit': 'eV',
                                                                             'upperSoftLimit': 100.0},
                                                                  'ID2Off': {'active': 1,
                                                                             'beamlineControlPosition': 3,
                                                                             'description': 'ID '
                                                                                            '2 '
                                                                                            'Energy '
                                                                                            'Offset',
                                                                             'distributionMode': 'nPlus1',
                                                                             'hardwareUnitFactor': 1,
                                                                             'lowerSoftLimit': -100,
                                                                             'nexus_name': 'id2_off',
                                                                             'positionOffset': 0,
                                                                             'type': 'Base',
                                                                             'unit': 'eV',
                                                                             'upperSoftLimit': 100.0},
                                                                  'Mirror1_Rx': {'active': 0,
                                                                                 'description': 'Rotation '
                                                                                                'of '
                                                                                                'the '
                                                                                                'first '
                                                                                                'mirror '
                                                                                                'about '
                                                                                                'the '
                                                                                                'Z-axis '
                                                                                                '(+X '
                                                                                                'in '
                                                                                                'EPICS)',
                                                                                 'nexus_name': 'mirror1_rx',
                                                                                 'readOnly': True,
                                                                                 'type': 'Base'},
                                                                  'Mirror1_Ry': {'active': 0,
                                                                                 'description': 'Rotation '
                                                                                                'of '
                                                                                                'the '
                                                                                                'first '
                                                                                                'mirror '
                                                                                                'about '
                                                                                                'the '
                                                                                                'Y-axis',
                                                                                 'nexus_name': 'mirror1_ry',
                                                                                 'readOnly': True,
                                                                                 'type': 'Base'},
                                                                  'Mirror1_Rz': {'active': 0,
                                                                                 'description': 'Rotation '
                                                                                                'of '
                                                                                                'the '
                                                                                                'first '
                                                                                                'mirror '
                                                                                                'about '
                                                                                                'the '
                                                                                                'X-axis '
                                                                                                '(-Z '
                                                                                                'in '
                                                                                                'EPICS)',
                                                                                 'nexus_name': 'mirror1_rz',
                                                                                 'readOnly': True,
                                                                                 'type': 'Base'},
                                                                  'Mirror1_x': {'active': 0,
                                                                                'description': 'Translation '
                                                                                               'of '
                                                                                               'the '
                                                                                               'first '
                                                                                               'mirror '
                                                                                               'along '
                                                                                               'the '
                                                                                               'Z-axis '
                                                                                               '(+X '
                                                                                               'in '
                                                                                               'EPICS)',
                                                                                'nexus_name': 'mirror1_x',
                                                                                'readOnly': True,
                                                                                'type': 'Base'},
                                                                  'Mirror1_y': {'active': 0,
                                                                                'description': 'Translation '
                                                                                               'of '
                                                                                               'the '
                                                                                               'first '
                                                                                               'mirror '
                                                                                               'along '
                                                                                               'the '
                                                                                               'Y-axis',
                                                                                'nexus_name': 'mirror1_y',
                                                                                'readOnly': True,
                                                                                'type': 'Base'},
                                                                  'Mirror1_z': {'active': 0,
                                                                                'description': 'Translation '
                                                                                               'of '
                                                                                               'the '
                                                                                               'first '
                                                                                               'mirror '
                                                                                               'along '
                                                                                               'the '
                                                                                               'X-axis '
                                                                                               '(-Z '
                                                                                               'in '
                                                                                               'EPICS)',
                                                                                'nexus_name': 'mirror1_z',
                                                                                'readOnly': True,
                                                                                'type': 'Base'},
                                                                  'MoenchNumFrames': {'active': 1,
                                                                                      'beamlineControlPosition': 4,
                                                                                      'description': 'Number '
                                                                                                     'of '
                                                                                                     'Frames',
                                                                                      'lowerSoftLimit': 0,
                                                                                      'nexus_name': 'moench_num_frames',
                                                                                      'type': 'Base',
                                                                                      'upperSoftLimit': 100000},
                                                                  'OSAX': {'active': 1,
                                                                           'description': 'Translation '
                                                                                          'of '
                                                                                          'the '
                                                                                          'order '
                                                                                          'selecting '
                                                                                          'aperture '
                                                                                          'along '
                                                                                          'the '
                                                                                          'X-axis',
                                                                           'distributionMode': 'n',
                                                                           'hardwareUnitFactor': 1000,
                                                                           'lowerSoftLimit': -11000,
                                                                           'maxVelocity': 300,
                                                                           'nexus_name': 'osa_x',
                                                                           'positionOffset': 0,
                                                                           'type': 'Base',
                                                                           'unit': 'μm',
                                                                           'upperSoftLimit': 11000},
                                                                  'OSAY': {'active': 1,
                                                                           'description': 'Translation '
                                                                                          'of '
                                                                                          'the '
                                                                                          'order '
                                                                                          'selecting '
                                                                                          'aperture '
                                                                                          'along '
                                                                                          'the '
                                                                                          'Y-axis',
                                                                           'distributionMode': 'n',
                                                                           'hardwareUnitFactor': 1000,
                                                                           'lowerSoftLimit': -11000,
                                                                           'maxVelocity': 300,
                                                                           'nexus_name': 'osa_y',
                                                                           'positionOffset': 0,
                                                                           'type': 'Base',
                                                                           'unit': 'μm',
                                                                           'upperSoftLimit': 11000},
                                                                  'Polarization': {'active': 1,
                                                                                   'description': 'Polarization',
                                                                                   'hardwareUnitFactor': 1,
                                                                                   'lowerSoftLimit': -0.2,
                                                                                   'nexus_name': 'polarization',
                                                                                   'positionOffset': 0,
                                                                                   'type': 'Base',
                                                                                   'upperSoftLimit': 0.2},
                                                                  'Ring_Current': {'active': 1,
                                                                                   'description': 'Storage '
                                                                                                  'ring '
                                                                                                  'electron '
                                                                                                  'beam '
                                                                                                  'current',
                                                                                   'nexus_name': 'ring_current',
                                                                                   'readOnly': True,
                                                                                   'type': 'Base'},
                                                                  'Ring_Injection': {'active': 0,
                                                                                     'description': 'Storage '
                                                                                                    'ring '
                                                                                                    'injection '
                                                                                                    'mode',
                                                                                     'nexus_name': 'ring_injection',
                                                                                     'readOnly': True,
                                                                                     'type': 'Base'},
                                                                  'Ring_OFBMode': {'active': 0,
                                                                                   'description': 'Storage '
                                                                                                  'ring '
                                                                                                  'electron '
                                                                                                  'beam '
                                                                                                  'orbit '
                                                                                                  'feedback '
                                                                                                  'mode',
                                                                                   'nexus_name': 'ring_ofb_mode',
                                                                                   'readOnly': True,
                                                                                   'type': 'Base'},
                                                                  'Ring_xMin': {'active': 0,
                                                                                'description': 'Width '
                                                                                               'of '
                                                                                               'the '
                                                                                               'storage '
                                                                                               'ring '
                                                                                               'electron '
                                                                                               'beam',
                                                                                'nexus_name': 'ring_x_min',
                                                                                'readOnly': True,
                                                                                'type': 'Base'},
                                                                  'Ring_xRMS': {'active': 0,
                                                                                'description': 'Storage '
                                                                                               'ring '
                                                                                               'electron '
                                                                                               'beam '
                                                                                               'orbit '
                                                                                               'variation '
                                                                                               'in '
                                                                                               'X-position',
                                                                                'nexus_name': 'ring_x_rms',
                                                                                'readOnly': True,
                                                                                'type': 'Base'},
                                                                  'Ring_yAsym': {'active': 1,
                                                                                 'description': 'Vertical '
                                                                                                'offset '
                                                                                                'applied '
                                                                                                'to '
                                                                                                'the '
                                                                                                'orbit '
                                                                                                'of '
                                                                                                'the '
                                                                                                'storage '
                                                                                                'ring '
                                                                                                'electron '
                                                                                                'beam',
                                                                                 'nexus_name': 'ring_y_asym',
                                                                                 'readOnly': True,
                                                                                 'type': 'Base'},
                                                                  'Ring_yMin': {'active': 0,
                                                                                'description': 'Height '
                                                                                               'of '
                                                                                               'the '
                                                                                               'storage '
                                                                                               'ring '
                                                                                               'electron '
                                                                                               'beam',
                                                                                'nexus_name': 'ring_y_min',
                                                                                'readOnly': True,
                                                                                'type': 'Base'},
                                                                  'Ring_yRMS': {'active': 0,
                                                                                'description': 'Storage '
                                                                                               'ring '
                                                                                               'electron '
                                                                                               'beam '
                                                                                               'orbit '
                                                                                               'variation '
                                                                                               'in '
                                                                                               'Y-position',
                                                                                'nexus_name': 'ring_y_rms',
                                                                                'readOnly': True,
                                                                                'type': 'Base'},
                                                                  'Zoneplate': {'active': 1,
                                                                                'description': 'Translation '
                                                                                               'of '
                                                                                               'the '
                                                                                               'zoneplate '
                                                                                               'along '
                                                                                               'the '
                                                                                               'Z-axis',
                                                                                'distributionMode': 'n',
                                                                                'hardwareUnitFactor': 1000,
                                                                                'lowerSoftLimit': -11000,
                                                                                'maxVelocity': 300,
                                                                                'nexus_name': 'zone_plate',
                                                                                'positionOffset': 0,
                                                                                'type': 'Base',
                                                                                'unit': 'μm',
                                                                                'upperSoftLimit': 0}},
                                                      'fileName': './config/positionerNoHardware.json',
                                                      'resolvedFileName': './config/positionerNoHardware.json'},
                         'sampleConfigFileName': {'content': {'rotation_angle': {'positioner': 'Auxilliary2'},
                                                              'start_position': [{'positioner': 'FineX'},
                                                                                 {'positioner': 'FineY'},
                                                                                 {'positioner': 'FineZ'}]},
                                                  'fileName': './config/sample.json',
                                                  'resolvedFileName': './config/sample.json'},
                         'topupConfigFileName': {'content': {'active': 0},
                                                 'fileName': './config/topupNoHardware.json',
                                                 'resolvedFileName': './config/topupNoHardware.json'},
                         'zonePlateConfigFileName': {'content': {'OSAs': [{'diameter': {'unit': 'μm',
                                                                                        'value': 50.0},
                                                                           'name': 'OSA '
                                                                                   '50'},
                                                                          {'diameter': {'unit': 'μm',
                                                                                        'value': 60.0},
                                                                           'name': 'OSA '
                                                                                   '60'},
                                                                          {'diameter': {'unit': 'μm',
                                                                                        'value': 70.0},
                                                                           'name': 'OSA '
                                                                                   '70'}],
                                                                 'activeOSA': 'OSA '
                                                                              '50',
                                                                 'activeZonePlate': 'ZonePlate '
                                                                                    'B',
                                                                 'autoFocusDeadBand': 0.5,
                                                                 'dOsa': 298.0,
                                                                 'distance_exitSlit_OSA': 1005000,
                                                                 'zonePlates': [{'NXgeometry': '"Engineering" '
                                                                                               'position '
                                                                                               'of '
                                                                                               'the '
                                                                                               'fresnel '
                                                                                               'zone '
                                                                                               'plate',
                                                                                 'b': [0,
                                                                                       6.875],
                                                                                 'central_stop_diameter': {'unit': 'μm',
                                                                                                           'value': 75},
                                                                                 'central_stop_material': 'Pb',
                                                                                 'central_stop_thickness': 500,
                                                                                 'fabrication': 'etched',
                                                                                 'geometry': {'class': 'NXgeometry',
                                                                                              'translation': {'class': 'NXtranslation',
                                                                                                              'distances': [0.0,
                                                                                                                            0.0,
                                                                                                                            -35.0]}},
                                                                                 'mask_material': 'mask',
                                                                                 'mask_thickness': 400,
                                                                                 'name': 'ZonePlate '
                                                                                         'B',
                                                                                 'outer_diameter': 240,
                                                                                 'outermost_zone_width': 35,
                                                                                 'support_membrane_material': 'membrane',
                                                                                 'support_membrane_thickness': 300,
                                                                                 'zone_height': 200,
                                                                                 'zone_material': 'Pt',
                                                                                 'zone_support_material': 'air '
                                                                                                          ';)'},
                                                                                {'NXgeometry': '"Engineering" '
                                                                                               'position '
                                                                                               'of '
                                                                                               'the '
                                                                                               'fresnel '
                                                                                               'zone '
                                                                                               'plate',
                                                                                 'b': [0,
                                                                                       1.795],
                                                                                 'central_stop_diameter': 75,
                                                                                 'central_stop_material': 'Pb',
                                                                                 'central_stop_thickness': 500,
                                                                                 'fabrication': 'etched',
                                                                                 'geometry': {'class': 'NXgeometry',
                                                                                              'translation': {'class': 'NXtranslation',
                                                                                                              'distances': [0.0,
                                                                                                                            0.0,
                                                                                                                            -35.0]}},
                                                                                 'mask_material': 'mask',
                                                                                 'mask_thickness': 400,
                                                                                 'name': 'ZonePlate '
                                                                                         'A',
                                                                                 'outer_diameter': 150,
                                                                                 'outermost_zone_width': 15,
                                                                                 'support_membrane_material': 'membrane',
                                                                                 'support_membrane_thickness': 300,
                                                                                 'zone_height': 200,
                                                                                 'zone_material': 'Pt',
                                                                                 'zone_support_material': 'air '
                                                                                                          ';)'},
                                                                                {'NXgeometry': '"Engineering" '
                                                                                               'position '
                                                                                               'of '
                                                                                               'the '
                                                                                               'fresnel '
                                                                                               'zone '
                                                                                               'plate',
                                                                                 'b': [0,
                                                                                       4.821],
                                                                                 'central_stop_diameter': 75,
                                                                                 'central_stop_material': 'Au',
                                                                                 'central_stop_thickness': 500,
                                                                                 'fabrication': 'etched',
                                                                                 'geometry': {'class': 'NXgeometry',
                                                                                              'translation': {'class': 'NXtranslation',
                                                                                                              'distances': [0.0,
                                                                                                                            0.0,
                                                                                                                            -35.0]}},
                                                                                 'mask_material': 'mask',
                                                                                 'mask_thickness': 400,
                                                                                 'name': 'ZonePlate '
                                                                                         'C',
                                                                                 'outer_diameter': 240,
                                                                                 'outermost_zone_width': 25,
                                                                                 'support_membrane_material': 'membrane',
                                                                                 'support_membrane_thickness': 300,
                                                                                 'zone_height': 200,
                                                                                 'zone_material': 'Au',
                                                                                 'zone_support_material': 'air '
                                                                                                          ';)'}]},
                                                     'fileName': './config/zonePlate.json',
                                                     'resolvedFileName': './config/zonePlate.json'}},
 'requestPort': '56562',
 'sampleConfigFileName': './config/sample.json',
 'topupConfigFileName': './config/topupNoHardware.json',
 'zonePlateConfigFileName': './config/zonePlate.json'}