2.6.1.4.2. embeam.stem.probe.resolution.rise_distance

rise_distance(discretized_rspace_intensity, rise=60, skip_validation_and_conversion=False)[source]

Estimate the rise-distance measure of the spatial resolution of the probe of interest for a given rise-distance ratio.

We define the \(\eta\) percent to \(\left(100-\eta\right)\) percent rise-distance for a given non-negative bivariate function \(F\left(x,y\right)\) to be

(2.6.1.4.2.1)\[R_{\text{rise-distance}}\left(\eta\right)=S^{-1}\left(100-\eta\right) -S^{-1}\left(\eta\right),\]

where

(2.6.1.4.2.2)\[0<\eta<50,\]

\(S^{-1}\left(\eta\right)\) is the inverse function to

(2.6.1.4.2.3)\[S\left(u\right)=100\frac{\int_{-\infty}^{u}dx\, \int_{-\infty}^{\infty}dy\, \overline{F}\left(r_{xy}\right)}{\int_{-\infty}^{\infty}dx\, \int_{-\infty}^{\infty}dy\,\overline{F}\left(r_{xy}\right)},\]

with

(2.6.1.4.2.4)\[r_{xy}=\sqrt{x^{2}+y^{2}},\]

and \(\overline{F}\left(r_{xy}\right)\) being the azimuthal average of \(F\left(x,y\right)\):

(2.6.1.4.2.5)\[\overline{F}\left(r_{xy}\right)=\frac{1}{2\pi r_{xy}} \int_{0}^{2\pi}d\phi\,r_{xy} F\left(r_{xy}\cos\left(\phi\right),r_{xy}\sin\left(\phi\right)\right).\]

In our discussion, it is convenient to define the quantity

(2.6.1.4.2.6)\[\Delta_{S}=100-2\eta\]

as the “rise”, and to let \(p_{\text{probe};\mathbf{R};n_{1},n_{2}}\) be a discretized real-space probe fractional intensity that samples a continuous function \(\tilde{p}_{\text{probe}}\left(\left.X=x\right|Y=y\right)\):

(2.6.1.4.2.7)\[p_{\text{probe};\mathbf{R};n_{1},n_{2}}= \tilde{p}_{\text{probe}}\left(\left.X=x_{n_{2}}\right| Y=y_{n_{1}}\right),\]

where

(2.6.1.4.2.8)\[x_{n}=\Delta x\left\{ -\left\lfloor N_{x}/2\right\rfloor +n\right\} ,\]

with \(\Delta x\) being the \(x\)-dimension of each pixel, and \(N_{x}\) being the total number of columns of \(p_{\text{probe};\mathbf{R};n_{1},n_{2}}\); and

(2.6.1.4.2.9)\[y_{n}=\Delta y\left\{ \left\lfloor \left(N_{y}-1\right)/2\right\rfloor -n\right\} ,\]

with \(\Delta y\) being the \(y\)-dimension of each pixel, and \(N_{y}\) being the total number of rows of \(p_{\text{probe};\mathbf{R};n_{1},n_{2}}\); and

(2.6.1.4.2.10)\[\lim_{\Delta x,\Delta y\to0} \lim_{N_{x},N_{y}\to\infty} \lim_{N_{f}\to\infty} p_{\text{probe};\mathbf{R};n_{1},n_{2}}= p_{\text{probe}}\left(\left.X=x_{n_{2}}\right|Y=y_{n_{1}}\right),\]

with \(N_{f}\) being the number of points used in the Gauss-Hermite quadrature scheme of Eq. (2.6.1.1.11), and \(p_{\text{probe}}\left(\left.X=x\right|Y=y\right)\) being the real-space fractional intensity of the probe for which we want to estimate \(R_{\text{rise-distance}}\left(\eta\right)\).

For given \(p_{\text{probe};\mathbf{R};n_{1},n_{2}}\) and \(\Delta_{S}\) as input, the Python function embeam.stem.probe.resolution.rise_distance() estimates \(R_{\text{rise-distance}}\left(\eta\right)\) for the function

(2.6.1.4.2.11)\[F\left(x,y\right)=p_{\text{probe}}\left(\left.X=x\right|Y=y\right).\]

The Python function estimates \(R_{\text{rise-distance}}\left(\eta\right)\) by performing a series of interpolations and numerical integrations, where the integrands are sampled at the points

(2.6.1.4.2.12)\[A=\left\{ \left.\left(x_{n_{2}},y_{n_{1}}\right)\right| n_{1}\in\left\{ 0,\ldots,N_{y}-1\right\}, n_{2}\in\left\{ 0,\ldots,N_{x}-1\right\} \right\} ,\]

[i.e. the sampling points of \(p_{\text{probe};\mathbf{R};n_{1},n_{2}}\)]; and the interpolation knots include points in \(A\). In the sequence of limits introduced in Eq. (2.6.1.4.2.10) above, embeam.stem.probe.resolution.rise_distance() should give the exact \(R_{\text{rise-distance}}\left(\eta\right)\) for \(p_{\text{probe}}\left(\left.X=x\right|Y=y\right)\) within machine precision.

See the documentation for the class embeam.stem.probe.ModelParams for further discussion on probe modelling.

Parameters:
discretized_rspace_intensityembeam.stem.probe.discretized.symmetric.rspace.Intensity | embeam.stem.probe.discretized.periodic.rspace.Intensity

The discretized real-space probe fractional intensity \(p_{\text{probe};\mathbf{R};n_{1},n_{2}}\) described above.

risefloat | array_like (float, ndim=1), optional

The value or set of values of the rise \(\Delta_{S}\) [i.e. (2.6.1.4.2.6)] for which to estimate the \(\eta\) percent to \(\left(100-\eta\right)\) percent rise-distance of the probe of interest. Note that the rise must be greater than 0, and less than 100.

skip_validation_and_conversionbool, optional

If skip_validation_and_conversion is set to False, then validations and conversions are performed on the above parameters.

Otherwise, if skip_validation_and_conversion is set to True, no validations and conversions are performed on the above parameters. This option is desired primarily when the user wants to avoid potentially expensive validation and/or conversion operations.

Returns:
resultfloat | array_like (float, ndim=1)

If the input argument rise is a floating-point number, then result is the estimate of the \(\eta\) percent to \(\left(100-\eta\right)\) percent rise-distance of the probe of interest for the rise of value rise. Otherwise, if the input argument rise is an array of floating-point numbers, then result is an array of floating-point numbers where result[i] is the estimate of the \(\eta\) percent to \(\left(100-\eta\right)\) percent rise-distance of the probe of interest for the rise of value rise[i], with i being an integer satisfying 0<=i<len(rise).