SEA is getting outdated sooner or later, and is based on SICS, that is why the transition from SICS to NICOS is a good trigger
to go also for a new sample environment framework Frappy. Frappy is a Python Framework developed at MLZ and PSI,
for creating servers to access mobile equipment like sample environment,
using SECoP as communication protocol towards the experiment control software.
For a transition period SEA is still used for all devices not yet migrated to Frappy. Today (spring 2025) still a lot of the sample environment devices at SINQ are controlled by SEA.
By default a setup 'frappy' is loaded providing the following commands:
frappy('<main cfg>') # change main SE configuration (e.g. cryostat) frappy('<main cfg>', '<stick cfg>') # change main and sample-stick configuration frappy(stick='<stick cfg>') # change stick only frappy('') # remove main SE apparatus including stick frappy.show() # show the current SE configuration frappy(addons=...) # similar to above, for additional equipment not covered by main/stick frappy_list() # list available configurations
note: use AddSetup('frappy') if the setup is not yet loaded
There is some automatic detection of devices in SEA. You might get a message in NICOS to accept the detected devices. To confirm, execute simply frappy()
When the SE configuration is changed, automatically the following aliases are created, if the corresponding object is available:
The aliases above (except T) are automatically put into the envrionment list, and should be saved in the data file. When the sample temperature is controlled, T and Ts point to the same real device.
You might add additional devices to be stored with the AddEnvironment command.
It might be that the SEA server is not yet running. Controlling the SEA and Frappy servers:
sea start # start the SEA and graph servers sea restart # restart above sea list # show running SEA and Frappy servers sea help # list available sea subcommands
Please use the command frappy_list() in NICOS to see a list of available configurations. Creating the configuration files for Frappy is still under work. The devices to be used on above mentioned instruments according to the schedule are created first. Please contact Markus Zolliker, if you want to use a device not yet on the list.
If a sample environment device is not working properly, for example due to communication problems, it might be helpful to restart the frappy server(s):
frappy('restart') # stop and start main and stick frappy servers
If the problem is related to a device on the stick or addons, you can restart them individually with frappy(stick=...) or frappy(addons=...).
With vertical field cryomagnets, typically the stick rotation should be used instead of the standard sample table for omega. In this case (configured on TASP, EIGER, CAMEA, ZEBRA and DMC), the frappy_main setups should contain a device se_om for the stick rotation. This is automatically assigned to the device used for omega.
Instrument | name of omega | name of sample table |
---|---|---|
TASP | a3 | a3_st |
EIGER | a3 | a3_raw |
ZEBRA | om | om_raw |
DMC | a3 | a3s |
CAMEA | a3 | som |
On horizontal field magnets, the stick rotation is called om_stickrot, and is not automatically assigned to omega. In both cases, an alias dom is assigned to either se_om or se_stickrot, whatever is present.
To change this behaviour, it is possible to assign another device to the alias, e.g.
om.alias = se_stickrot