orientation matrix などをMOSFLM の出力でも確認してみる

逆格子ベクトルを R で確認 - biochem_fan's noteの続きとして10日ほど前にやりかけたまま、盆休みなどで止まってしまっていること。下書きに溜め込んでいても仕方がないので公開しておく。

さきほどと同じ Thaumatin in house のデータセットを使う。

 Suggested Solution: 10  P4
            penalty:  3
               cell:  58.029   58.073  151.393  90.48  90.04  90.33
   regularized cell:  58.051   58.051  151.393  90.00  90.00  90.00
           Symmetry: tP (Primitive Tetragonal)
 AMAT is now         -0.004362 -0.022340  0.005186
                     -0.016936 -0.008306 -0.007219
                      0.020002 -0.011699 -0.004972
 CELL is         58.03   58.07  151.39   90.48   90.04   90.33
 UMAT is now         -0.164166 -0.840467  0.516395
                     -0.637424 -0.309135 -0.705780
                      0.752822 -0.445028 -0.484984
 Angles are:             99.45    147.19     58.91
                        129.60    108.01    134.89
                         41.16    116.43    119.01

AMAT というのは、UB matrix のこと。B が逆格子の基底ベクトルで U は回転行列。

# U が回転行列であることは、行列式が1であることから分かる
umat <- matrix(c(-0.164166, -0.840467,  0.516395,-0.637424, -0.309135, -0.705780,  0.752822, -0.445028, -0.484984), 3, 3)
apply(umat, 1, function(x)sqrt(sum(x*x))) # 0.9999995 0.9999996 1.0000002
det(umat) # 0.9999993

# UB matrix が逆格子ベクトルを回転した物であることを確認。
# XDS との違いは二点: 波長の項が入っていること、既に転置されていること
amat <- matrix(c(-0.004362, -0.022340, 0.005186, -0.016936, -0.008306, -0.007219, 0.020002, -0.011699, -0.004972), 3, 3)
real_basis <- solve(amat / 1.5418)

# CELL に出ている格子定数と一致することを確認
apply(real_basis,  2, function(x)sqrt(sum(x*x))) # 58.03007  58.07339 151.38842
degree(real_basis[, 2], real_basis[, 3]) # b と c の間が α = 90.48143
degree(real_basis[, 3], real_basis[, 1]) # c と a の間が β =  90.03736
degree(real_basis[, 1], real_basis[, 2]) # a と b の間が γ = 90.33383

さきほどの XDS の場合と比べてみると、

> real_basis
           [,1]      [,2]       [,3]
[1,]  -9.261938 -49.05923   78.17512
[2,] -36.857803 -17.60690 -106.84767
[3,]  43.854398 -25.60679  -73.42127
> xds_real_basis
        [,1]   [,2]    [,3]
[1,] -37.629 21.380 100.241
[2,]  43.677 25.634  73.468
[3,]  -6.639 47.471 -84.820

となっていて、座標系の取り方が違う。また、Thaumatin は空間群 P41212 で点群 422 だから、基底ベクトルの取り方にもそれだけの自由度がある(注意: 自由度があるとはいえ、強度も同じだから、indexing ambiguity は来さない)。

座標系の変換方法は xdsmehttps://github.com/legrandp/xdsme/blob/master/XOconv/xds2mos.py に実装がある。

2016/05/04: 少し手入れした。