# Czjzek distribution Model¶

class mrsimulator.models.CzjzekDistribution(sigma: float, polar=False)

Bases: AbstractDistribution

A Czjzek distribution model class.

The Czjzek distribution model is a random sampling of second-rank traceless symmetric tensors whose explicit matrix form follows

(78)$\begin{split}{\bf S} = \left[ \begin{array}{l l l} \sqrt{3} U_5 - U_1 & \sqrt{3} U_4 & \sqrt{3} U_2 \\ \sqrt{3} U_4 & -\sqrt{3} U_5 - U_1 & \sqrt{3} U_3 \\ \sqrt{3} U_2 & \sqrt{3} U_3 & 2 U_1 \end{array} \right],\end{split}$

where the components, $$U_i$$, are randomly drawn from a five-dimensional multivariate normal distribution. Each component, $$U_i$$, is a dimension of the five-dimensional uncorrelated multivariate normal distribution with the mean of $$<U_i>=0$$ and the variance $$<U_iU_i>=\sigma^2$$.

(79)$S_T = S_C(\sigma),$
Parameters:

sigma (float) – The Gaussian standard deviation.

Note

In the original Czjzek paper, the parameter $$\sigma$$ is given as two times the standard deviation of the multi-variate normal distribution used here.

Example

>>> from mrsimulator.models import CzjzekDistribution
>>> cz_model = CzjzekDistribution(0.5)

pdf(pos, size: int = 400000)

Generates a probability distribution function by binning the random variates of length size onto the given grid system.

Parameters:
• pos – A list of coordinates along the two dimensions given as NumPy arrays.

• size – The number of random variates drawn in generating the pdf. The default is 400000.

Returns:

A list of x and y coordinates and the corresponding amplitudes.

Example

>>> import numpy as np
>>> cq = np.arange(50) - 25
>>> eta = np.arange(21)/20
>>> Cq_dist, eta_dist, amp = cz_model.pdf(pos=[cq, eta])

rvs(size: int)

Draw random variates of length size from the distribution.

Parameters:

size – The number of random points to draw.

Returns:

A list of two NumPy array, where the first and the second array are the anisotropic/quadrupolar coupling constant and asymmetry parameter, respectively.

Example

>>> Cq_dist, eta_dist = cz_model.rvs(size=1000000)