シリアル結晶学における partiality の分布

シリアル結晶学における partiality の分布がどうなるかをシミュレーションで調べる。

まず、rocking curve のモデルとして、標準正規分布を採用する(XDS のモデル)。

図では、-4, 4, -3, 3, -2, 2 のところに縦線をひいた。

仮に、結晶の mosaicity やビームのパラメータが一定だったとすると、partiality の分布は rocking curve のランダムな位置を一定の幅で切り出した時の面積の分布に等しい。以下では、切り出しの幅(ビームのスペクトル幅、ビームの発散、結晶の mosaicity、モザイクブロックごとの格子定数のバラつきに依存)を 0.1, 0.2, 0.3 で変化させている。また、Bragg 条件からどこまでズレた場合も積分に含めるか(offset_max)のパラメータも振っている。

get_partiality <- function(width, offset_max, N=1000) {
  points <- runif(N, -offset_max + width, offset_max - width)
  partialities <- pnorm(points + width) - pnorm(points - width)  
  return(partialities)
}

x <- seq(-10, 10, 0.01)
rocking_curve <- dnorm(x)
plot(x, rocking_curve, type="l", xlab="offset", main="Rocking curve")
abline(v=c(-4,4,-3,3,-2,2))

set.seed(1)

par(lwd=1)
plot(0, type="n", xlim=c(0, 0.3), ylim=c(0, 30), xlab="Partiality", ylab="Density", main="Distribution of partialities")
par(lwd=2)
lines(density(get_partiality(0.3, 4)), col=1)
lines(density(get_partiality(0.2, 4)), col=2)
lines(density(get_partiality(0.1, 4)), col=4)

lines(density(get_partiality(0.3, 3)), col=1, lty=2)
lines(density(get_partiality(0.2, 3)), col=2, lty=2)
lines(density(get_partiality(0.1, 3)), col=4, lty=2)

lines(density(get_partiality(0.3, 2)), col=1, lty=3)
lines(density(get_partiality(0.2, 2)), col=2, lty=3)
lines(density(get_partiality(0.1, 2)), col=4, lty=3)

legend("topright", c(paste0("width=",c(0.3, 0.2, 0.1)), paste0("offset_max=", c(4, 3, 2))), 
                     col=c(1, 2, 4, 1, 1, 1), lty=c(1, 1, 1, 1, 2, 3))
par(lwd=1)

結果は以下の通り。

Rocking curve の端の方までサンプリングした場合や、切り出しの幅が小さい場合は、partiality がごく小さいところに主要なピークがある。正規分布の裾野は平坦なので、どのあたりを切り出しても、ほぼ同じ面積になるからだ。また、partiality が大きい部分に小さな山がある。これは、ちょうど rocking curve の中心付近を切り出した場合に相当する。この部分をサンプルする頻度は低いものの、強いシグナルを与えるので、SFX のマージ時には相対的に大きな影響を及ぼす。また、複数格子の混入などによる outlier との区別は難しい。こういう性質が、シリアル結晶学のマージを難しくしている。

切り出し幅を広くしていった場合や、切り出す範囲の両端を切り詰めた場合は、中心付近をサンプリングする確率が高くなるので、分布は平坦に近づく。ある程度までなら mosaicity が高かったりビームの波長幅が広いほうが収束が速くなるのは、このせいだろう。

放射光と違って XFEL の場合、スペクトルの分布は実際には均一ではなく、ショットごとにばらつく。また、SASE に由来する鋭いピークを含むので、hat 関数で近似するのは問題がある。実際の partiality の分布は、これらの影響で、上よりも広がりを持つ。