Frappy


Sample Environment at SINQ under NICOS

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.

Accessing Sample Environment at SINQ from NICOS

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()

Frequently Asked Questions

Are values of sample environment devices automatically stored in the data file?

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.

There is nothing displayed on the SEA client, what is going wrong here?

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

The sample environment device I want to use is not available

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.

How to Restart a Frappy server(s)

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=...).

How do I configure to use the sample stick rotation instead of the sample table for omega?

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