continued with omny documentation

This commit is contained in:
Mirko Holler
2024-11-29 13:20:39 +01:00
parent 79f63b84fc
commit 9699b39a7e
2 changed files with 86 additions and 62 deletions
+9 -9
View File
@@ -1,8 +1,9 @@
(user.ptychography.flomni)=
# flOMNI
flOMNI is an instrument for tomographic measurements via X-ray ptychography.
flOMNI is an instrument for tomographic measurements via X-ray ptychography. The sample environment is at atmospheric pressure and room temperature (or higher).
An early version of the setup is described [here](https://www.dora.lib4ri.ch/psi/islandora/object/psi:12560). Nano positioning is based on closed loop control to a position signal obtained from dedicated [laser interferometry](https://www.dora.lib4ri.ch/psi/islandora/object/psi:7524). For fast scanning a combined motion of the sample (slow axis) and beam defining fresnel zone plate (fast axis) is used. The method is described [here](https://www.dora.lib4ri.ch/psi/islandora/object/psi:21021). The setup is equipped with a [heater](https://www.dora.lib4ri.ch/psi/islandora/object/psi:45302), that can be used to apply hot gas streams to the sample.
Samples are to be mounted on [OMNY pins](https://www.dora.lib4ri.ch/psi/islandora/object/psi:4528).
## How to flOMNI
@@ -54,24 +55,25 @@ If you see your sample already at the approximately correct height, you can skip
1. `flomni.rt_feedback_disable()` disable the closed loop operation to allow movement of coarse stages
1. `umvr(dev.fsamy, 0.01)`, attention: unit <mm>, move the sample stage relative up (positive) or down (negative) until the sample is approximately vertically centered in xray eye screen
1. `flomni.xrayeye_update_frame()` will update the current image on the xray eye screen
1. `flomni.xrayeye_alignment_start()` start the coarse alignment of the sample by measuring the sample position at 0, 45, 90, 135, 180 degrees. Then use the matlab routine `SPEC_ptycho_align.m` to fit this data.
1. `flomni.xrayeye_alignment_start()` start the coarse alignment of the sample by measuring (clicking in the X-ray eye software) the sample position at 0, 45, 90, 135, 180 degrees. Then use the matlab routine `SPEC_ptycho_align.m` to fit this data.
1. `flomni.read_alignment_offset()` read the generated alignment data.
#### Fine alignment
After the xrayeyealign a fine alignment needs to be performed using ptychography.
After the xrayeyealign, a fine alignment needs to be performed using ptychography.
_To bypass the fine alignment: `feye_out`_
1. `flomni.tomo_parameters()` Adjust the ptychographic scan parameters for performing an alignment scan. Typically FOVX = FOVX(Xrayeye)+30 mu, shell step = beamsize/2.5, number of projections and tomo mode are ignored in the alignment scans.
1. `flomni.tomo_parameters()` Adjust the ptychographic scan parameters for performing an alignment scan. Typically FOVX = FOVX(Xrayeye)+20 mu, shell step = beamsize/2.5, number of projections and tomo mode are ignored in the alignment scans.
1. `flomni.tomo_alignment_scan()` perform the alignment scan. When the first scan is running, switch to a matlab session and run `SPEC_ptycho_align` again. Click left and right. The third click can define the height of the scan, but is not needed and ignored by default. The widest horizontal field of view will be printed at the end of the matlab session.
1. `flomni.read_alignment_offset()` Load alignment parameters calculated in matlab.
### Tomographic Measurement
Now that the sample is aligned, the tomographic measurement can be performed.
1. `flomni.tomo_parameters()` Adjust the scan parameters for the tomographic scan. This includes the parameters for ptychographic scans of projections plus the strategy for angular sampling. The vertical shift adjusts the field of view from the vertical click up (positive) or down (negative). After adjusting the numbers, type again `flomni.tomo_parameters()` and verify that they are correct.
1. `flomni.tomo_scan_projection(angle)` perform a ptychographic scan at the rotation angle <angle>. Launch the tomographic measurement by `flomni.tomo_scan()`. Before changing sample, verify that all subtomograms were completely acquired using the `tomo_recons matlab` script.
1. `flomni.tomo_parameters()` adjust the scan parameters for the tomographic scan. This includes the parameters for ptychographic scans of projections plus the strategy for angular sampling. The vertical shift adjusts the field of view, up (positive) or down (negative). After adjusting the numbers, type again `flomni.tomo_parameters()` and verify that they are correct.
1. `flomni.tomo_scan_projection(angle)` perform a ptychographic scan at the rotation angle <angle>. Launch the tomographic measurement by `flomni.tomo_scan()`.
1. Before changing sample, verify that all subtomograms were completely acquired using the `tomo_recons matlab` script.
#### If something went wrong…
@@ -88,12 +90,10 @@ Depending on the tomo mode following parameters can be given to the `flomni.tomo
| Golden ratio tomography (sorted in bunches) | projection_number=None |
| Equally spaced with golden starting angle | projection_number=None |
## How to setup flOMNI
## How to setup flOMNI (software)
This part of the manual is intended for beamline staff and expert users
### how to start the realtime feedback loop and bec with flOMNI
The nano-positioning is controlled by a feedback loop running on a real-time linux based computer. With all related hardware connected, this loop has to be started manually.
1. Login to the computer by `ssh control@mpc2680`. The password is "engine".
+77 -53
View File
@@ -1,8 +1,84 @@
(user.ptychography.omny)=
# OMNY
OMNY is a microscope setup for 3D mesurements via ptychographic X-ray computed tomography. The sample enviroment is in ultra-high vacuum and at a sample temperature of 90 K. The instrument is equipped with a load-lock system and allows loading and unloading of samples under cryogenic conditions. The setup is described in detail [here](https://www.dora.lib4ri.ch/psi/islandora/object/psi:4776). Samples have to be mounted on [OMNY pins](https://www.dora.lib4ri.ch/psi/islandora/object/psi:4528).
## HowTo OMNY
This manual is intended for beamline staff and expert users
… a step-by-step guide for _beamline staff and expert users_.
### Change to a new sample
1. `omny.otransfer_get_sample(0)` remove current sample from sample stage. Watch gripper action and be ready to ctrl+c in case something is wrong.
_If in doubt check that the correct sample shutte is in the active position by calling `omny.otransfer_storage()`. The slot can be selected by `omny.otransfer_park_slot(slot)`._
1. `omny.otransfer_put_sample(position)` put the sample to the selected shuttle
1. `omny.otransfer_get_sample(position) ` get the new sample from a shuttle
1. `omny.otransfer_put_sample(0)`, mount the sample in the sample stage
### Alignment of samples
#### Coarse alignment
After mounting a new sample, the Xray eye will automatically be at the correct position to collect X-ray data. It can also be manually moved to the correct position by `omny.oeye_xray_in()`.
1. `omny.xrayeye_update_frame()` obtain a new frame that will be displayed on the Windows computer, OMNY software. If you see your sample already at the approximately correct height, you can skip step 2. Otherwise adjust the height:
1. `umvr(dev.osamy, 0.01)`, attention: unit <mm>, move the sample stage relative up (positive) or down (negative) until the sample is approximately vertically centered in xray eye screen. After a move get a new frame by `omny.xrayeye_update_frame()`.
1. `omny.xrayeye_alignment_start()` start the coarse alignment of the sample by measuring (clicking in the X-ray eye software) the sample position at 0, 45, 90, 135, 180 degrees. Then use the matlab routine `SPEC_ptycho_align.m` to fit this data.
1. `omny.read_alignment_offset()` read the generated alignment data.
#### Fine alignment
After the xrayeyealign, a fine alignment needs to be performed using ptychography.
_To bypass the fine alignment skip steps_.
1. `omny.tomo_parameters()` adjust the ptychographic scan parameters for performing an alignment scan. Typically FOVX = FOVX(Xrayeye)+20 mu, shell step = beamsize/2.5, number of projections and tomo mode are ignored in the alignment scans.
1. `omny.optics_in()` move the Fresnel zone plate and order sorting aperture into position for ptychographic measurements.
1. `omny.oeye_out` move the X-ray eye out of the beam path.
1. `omny.tomo_alignment_scan()` perform the alignment scan. When the first scan is running, switch to a matlab session and run `SPEC_ptycho_align` again. Click left and right. The third click can define the height of the scan, but is not needed and ignored by default. The widest horizontal field of view will be printed at the end of the matlab session.
1. `omny.read_alignment_offset()` Load alignment parameters calculated in matlab.
### Tomographic Measurement
Now that the sample is aligned, the tomographic measurement can be performed.
1. `omny.tomo_parameters()` adjust the scan parameters for the tomographic scan. This includes the parameters for ptychographic scans of projections plus the strategy for angular sampling. The vertical shift adjusts the field of view, up (positive) or down (negative). After adjusting the numbers, type again `omny.tomo_parameters()` and verify that they are correct.
1. `omny.tomo_scan_projection(angle)` perform a ptychographic scan at the rotation angle <angle>, e.g. at zero degrees. When happy with the scan parameters launch the tomographic measurement by `omny.tomo_scan()`.
1. Before changing to the next sample sample, verify that all subtomograms were completely acquired using the `tomo_recons matlab` script.
#### If something went wrong…
Special cases:
If something got stuck and no errors
umv otransy 0
_otransfer_gripper_to_park_z
If the gripper fails (vertical movement)
ctrl+C if it is stuck
try moving up and down a bit (umvr otransy .5), potentially requires a ctrl+C again if stuck
umv otransy -1.5
_otransfer_gripper_to_park_z
if this happened after a sample was mounted the storage might not be updated
to do this manually
GRIPPER
otransfer_modify_samples 0 110 0/1
SAMPLE STAGE 0 0 0/1
otransfer_modify_samples
For closing the shield at the parking station
_otransfer_shield_close(1)
Oeye out in xray in
### Sample storage and transfer
#### Managing sample storage
#### Sample transfer
## How to setup OMNY (software)
This part of the manual describes the software structure in more detail.
### how to start the realtime feedback loop and bec with flOMNI
Start the bec server and client as documented elsewhere
@@ -299,55 +375,3 @@ If the start angle is not specified, it will be computed depending on the subtom
Typical work-flow for a measurement with OMNY
Remove current sample from sample stage
Watch gripper action and be ready to ctrl+c in case something goes wrong
omny.otransfer_get_sample(0)
check that otransfer_park_slot is set (active parking pos in the correct parking station)
omny.otransfer_storage()
(if not) omny.otransfer_park_slot(slot)
Put the sample to a shuttle
omny.otransfer_put_sample(position)
Get the new sample from a shuttle
omny.otransfer_get_sample(position)
Mount the sample in the sample stage
omny.otransfer_put_sample(0)
To see a frame on the X-ray eye
xrayeyeupdateframe
umvr osamy xxx and xrayeyeupdateframe
xrayeyealign
matlab run SPEC_ptycho_align
tomo_parameters
ooptics_in
oeye_out
tomo_scan 0 0
matlab run SPEC_ptycho_align
tomo_scan 0 1
tomo_parameters
tomo_scan_projection
tomo_parameters
tomo_parameters_checked
tomo_scan
Special cases:
If something got stuck and no errors
umv otransy 0
_otransfer_gripper_to_park_z
If the gripper fails (vertical movement)
ctrl+C if it is stuck
try moving up and down a bit (umvr otransy .5), potentially requires a ctrl+C again if stuck
umv otransy -1.5
_otransfer_gripper_to_park_z
if this happened after a sample was mounted the storage might not be updated
to do this manually
GRIPPER
otransfer_modify_samples 0 110 0/1
SAMPLE STAGE 0 0 0/1
otransfer_modify_samples
For closing the shield at the parking station
_otransfer_shield_close(1)
Oeye out in xray in