Quaternions

Table of quaternions was generated using methods in pyimgalgos/src/Quaternion.py

Self-test for Quaternion

self-test uses a chain of conversions:

  • angles -> rotation matrix -> quaternion -> rotation matrix -> angles,

It was tested that input and output angles and rotation matrix coincide.

Script cxif5315/make-quaternions.py generates file with a list of quaternions from file with table of angles

List of few quaternions
Angles around x,y,z:     0.0     0.0     0.0   quaternion: w, x, y, z:   1.000000   0.000000   0.000000   0.000000
Angles around x,y,z:    30.0     0.0     0.0   quaternion: w, x, y, z:   0.965926   0.258819   0.000000   0.000000
Angles around x,y,z:    60.0     0.0     0.0   quaternion: w, x, y, z:   0.866025   0.500000   0.000000   0.000000
Angles around x,y,z:    90.0     0.0     0.0   quaternion: w, x, y, z:   0.707107   0.707107   0.000000   0.000000
Angles around x,y,z:   120.0     0.0     0.0   quaternion: w, x, y, z:   0.500000   0.866025   0.000000   0.000000
Angles around x,y,z:   150.0     0.0     0.0   quaternion: w, x, y, z:   0.258819   0.965926   0.000000   0.000000
Angles around x,y,z:     0.0     0.0     0.0   quaternion: w, x, y, z:   1.000000   0.000000   0.000000   0.000000
Angles around x,y,z:     0.0    30.0     0.0   quaternion: w, x, y, z:   0.965926   0.000000   0.258819   0.000000
Angles around x,y,z:     0.0    60.0     0.0   quaternion: w, x, y, z:   0.866025   0.000000   0.500000   0.000000
Angles around x,y,z:     0.0    90.0     0.0   quaternion: w, x, y, z:   0.707107   0.000000   0.707107   0.000000
Angles around x,y,z:     0.0   120.0     0.0   quaternion: w, x, y, z:   0.500000   0.000000   0.866025   0.000000
Angles around x,y,z:     0.0   150.0     0.0   quaternion: w, x, y, z:   0.258819   0.000000   0.965926   0.000000
Angles around x,y,z:     0.0     0.0     0.0   quaternion: w, x, y, z:   1.000000   0.000000   0.000000   0.000000
Angles around x,y,z:     0.0     0.0    30.0   quaternion: w, x, y, z:   0.965926   0.000000   0.000000   0.258819
Angles around x,y,z:     0.0     0.0    60.0   quaternion: w, x, y, z:   0.866025   0.000000   0.000000   0.500000
Angles around x,y,z:     0.0     0.0    90.0   quaternion: w, x, y, z:   0.707107   0.000000   0.000000   0.707107
Angles around x,y,z:     0.0     0.0   120.0   quaternion: w, x, y, z:   0.500000   0.000000   0.000000   0.866025
Angles around x,y,z:     0.0     0.0   150.0   quaternion: w, x, y, z:   0.258819   0.000000   0.000000   0.965926

Unit cell

sim-cell-fiber.cell
CrystFEL unit cell file version 1.0
lattice_type = triclinic
centering = I
a = 18.36 A
b = 26.65 A
c = 4.81 A
al = 90.0 deg
be = 90.0 deg
ga = 102.83 deg

Detector

sim-det1500x1500.geom
adu_per_eV = 1.0
; Single panel
0/min_fs = 0
0/max_fs = 1500
0/min_ss = 0
0/max_ss = 1500
0/corner_x = -750.00
0/corner_y = -750.00
0/fs = x
0/ss = y
0/clen = 0.1   ; 10cm
0/res = 9098   ; 109.92 micron pixel size

pattern_sim

command to generate simulated events:

source conda_setup
source /reg/g/cfel/crystfel/crystfel-dev/setup-sh
cat quaternion_basis_x90.txt | pattern_sim -g sim-det1500x1500.geom -p sim-cell-fiber.cell -o result_x90.h5 --photon-energy=6003 --spectrum=tophat --beam-bandwidth=1e-6 --min-size=30 --max-size=30 -n 3 -s 1 --no-noise

# output file accumulates events... (bug?)
# OR per event with complete control on names etc.

echo "0.587174 0.803196 0.095372 0.031718" | pattern_sim -g sim-det1500x1500.geom -p sim-cell-fiber.cell -o results_x90.h5 --photon-energy=6003 --spectrum=tophat --beam-bandwidth=1e-6 --min-size=30 --max-size=30 -n 1 -s 1 --no-noise --no-fringes

Results

Rotation angles and associated quaternions

beta=90, phi=0, omega=(0,180,1)
Angles around x,y,z:    90.0     0.0     0.0   quaternion: w,x,y,z:   0.707107   0.707107   0.000000   0.000000
Angles around x,y,z:    90.0     0.0     1.0   quaternion: w,x,y,z:   0.707080   0.707080   0.006171   0.006171
Angles around x,y,z:    90.0     0.0     2.0   quaternion: w,x,y,z:   0.706999   0.706999   0.012341   0.012341
Angles around x,y,z:    90.0     0.0     3.0   quaternion: w,x,y,z:   0.706864   0.706864   0.018510   0.018510
Angles around x,y,z:    90.0     0.0     4.0   quaternion: w,x,y,z:   0.706676   0.706676   0.024678   0.024678
Angles around x,y,z:    90.0     0.0     5.0   quaternion: w,x,y,z:   0.706434   0.706434   0.030844   0.030844
Angles around x,y,z:    90.0     0.0     6.0   quaternion: w,x,y,z:   0.706138   0.706138   0.037007   0.037007
...

Movies generated with default sample size

images for 30um sample size:

 

beta=90, phi=-3.5, omega=(0,180,1)
Angles around x,y,z:    90.0    -3.5     0.0   quaternion: w,x,y,z:   0.706777   0.706777  -0.021594   0.021594
Angles around x,y,z:    90.0    -3.5     1.0   quaternion: w,x,y,z:   0.706562   0.706939  -0.015425   0.027761
Angles around x,y,z:    90.0    -3.5     2.0   quaternion: w,x,y,z:   0.706292   0.707046  -0.009256   0.033926
Angles around x,y,z:    90.0    -3.5     3.0   quaternion: w,x,y,z:   0.705970   0.707100  -0.003085   0.040088
Angles around x,y,z:    90.0    -3.5     4.0   quaternion: w,x,y,z:   0.705593   0.707100   0.003085   0.046247
Angles around x,y,z:    90.0    -3.5     5.0   quaternion: w,x,y,z:   0.705162   0.707046   0.009256   0.052403
...

Movies:

Single images:

beta=90-18=72, phi=-3.5, omega=(0,180,1)
Angles around x,y,z:    72.0    -3.5     0.0   quaternion: w,x,y,z:   0.808640   0.587511  -0.024706   0.017950
Angles around x,y,z:    72.0    -3.5     1.0   quaternion: w,x,y,z:   0.808452   0.587704  -0.019578   0.025006
Angles around x,y,z:    72.0    -3.5     2.0   quaternion: w,x,y,z:   0.808203   0.587853  -0.014449   0.032060
Angles around x,y,z:    72.0    -3.5     3.0   quaternion: w,x,y,z:   0.807893   0.587957  -0.009318   0.039112
Angles around x,y,z:    72.0    -3.5     4.0   quaternion: w,x,y,z:   0.807521   0.588015  -0.004187   0.046160
Angles around x,y,z:    72.0    -3.5     5.0   quaternion: w,x,y,z:   0.807087   0.588030   0.000944   0.053205
...

Movies:

Single images:

Summary

  • Thomas White did not advice to use pattern_sim due to potential bugs. In stead he suggested to use diffraction.
  • pattern_sim has a few problems in different versions
    • source /reg/g/cfel/crystfel/crystfel-0.6.2/setup-sh  # has problems with peak intensity ~25*e6 ADU, not sensitive to adu_per_eV, etc

    • --spectrum=tophat --beam-bandwidth=1e-6 - removes photon energy spread
    • --min-size=30 --max-size=30  - changes a size of sample and peak size and intensity
    • -n NNN - this option generates accumulated image
    •  ...

 

  • No labels