.. only:: html
.. note::
:class: sphx-glr-download-link-note
Click :ref:`here ` to download the full example code or to run this example in your browser via Binder
.. rst-class:: sphx-glr-example-title
.. _sphx_glr_examples_1D_simulation(macro_amorphous)_plot_5_czjzek_distribution.py:
Czjzek distribution (Shielding and Quadrupolar)
===============================================
In this example, we illustrate the simulation of spectrum originating from a Czjzek
distribution of traceless symmetric tensors. We show two cases, the Czjzek distribution
of the shielding and quadrupolar tensor parameters, respectively.
Import the required modules.
.. code-block:: python
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
from mrsimulator import Simulator
from mrsimulator.methods import BlochDecaySpectrum, BlochDecayCentralTransitionSpectrum
from mrsimulator.models import CzjzekDistribution
from mrsimulator.utils.collection import single_site_system_generator
# pre config the figures
mpl.rcParams["figure.figsize"] = [4.25, 3.0]
Symmetric shielding tensor
--------------------------
Create the Czjzek distribution
''''''''''''''''''''''''''''''
First, create a distribution of the zeta and eta parameters of the shielding tensors
using the :ref:`czjzek_distribution` model as follows.
.. code-block:: python
# The range of zeta and eta coordinates over which the distribution is sampled.
z_range = np.arange(100) - 50 # in ppm
e_range = np.arange(21) / 20
z_dist, e_dist, amp = CzjzekDistribution(sigma=3.1415).pdf(pos=[z_range, e_range])
Here ``z_range`` and ``e_range`` are the coordinates along the :math:`\zeta` and
:math:`\eta` dimensions that form a two-dimensional :math:`\zeta`-:math:`\eta` grid.
The argument `sigma` of the CzjzekDistribution class is the standard deviation of the
second-rank tensor parameters used in generating the distribution, and `pos` hold the
one-dimensional arrays of :math:`\zeta` and :math:`\eta` coordinates, respectively.
The following is the contour plot of the Czjzek distribution.
.. code-block:: python
plt.contourf(z_dist, e_dist, amp, levels=10)
plt.xlabel(r"$\zeta$ / ppm")
plt.ylabel(r"$\eta$")
plt.tight_layout()
plt.show()
.. image:: /examples/1D_simulation(macro_amorphous)/images/sphx_glr_plot_5_czjzek_distribution_001.png
:alt: plot 5 czjzek distribution
:class: sphx-glr-single-img
Simulate the spectrum
'''''''''''''''''''''
To quickly generate single-site spin systems from the above :math:`\zeta` and
:math:`\eta` parameters, use the
:func:`~mrsimulator.utils.collection.single_site_system_generator` utility function.
.. code-block:: python
systems = single_site_system_generator(
isotopes="13C", shielding_symmetric={"zeta": z_dist, "eta": e_dist}, abundance=amp
)
Here, the variable ``systems`` hold an array of single-site spin systems.
Next, create a simulator object and add the above system and a method.
.. code-block:: python
sim = Simulator()
sim.spin_systems = systems # add the systems
sim.methods = [BlochDecaySpectrum(channels=["13C"])] # add the method
sim.run()
The following is the static spectrum arising from a Czjzek distribution of the
second-rank traceless shielding tensors.
.. code-block:: python
plt.figure(figsize=(4.5, 3.0))
ax = plt.gca(projection="csdm")
ax.plot(sim.methods[0].simulation, color="black", linewidth=1)
plt.tight_layout()
plt.show()
.. image:: /examples/1D_simulation(macro_amorphous)/images/sphx_glr_plot_5_czjzek_distribution_002.png
:alt: plot 5 czjzek distribution
:class: sphx-glr-single-img
Quadrupolar tensor
------------------
Create the Czjzek distribution
''''''''''''''''''''''''''''''
Similarly, you may also create a Czjzek distribution of the electric field gradient
(EFG) tensor parameters.
.. code-block:: python
# The range of Cq and eta coordinates over which the distribution is sampled.
cq_range = np.arange(100) * 0.6 - 30 # in MHz
e_range = np.arange(21) / 20
cq_dist, e_dist, amp = CzjzekDistribution(sigma=2.3).pdf(pos=[cq_range, e_range])
# The following is the contour plot of the Czjzek distribution.
plt.contourf(cq_dist, e_dist, amp, levels=10)
plt.xlabel(r"Cq / MHz")
plt.ylabel(r"$\eta$")
plt.tight_layout()
plt.show()
.. image:: /examples/1D_simulation(macro_amorphous)/images/sphx_glr_plot_5_czjzek_distribution_003.png
:alt: plot 5 czjzek distribution
:class: sphx-glr-single-img
Simulate the spectrum
'''''''''''''''''''''
Create the spin systems.
.. code-block:: python
systems = single_site_system_generator(
isotopes="71Ga", quadrupolar={"Cq": cq_dist * 1e6, "eta": e_dist}, abundance=amp
)
Create a simulator object and add the above system.
.. code-block:: python
sim = Simulator()
sim.spin_systems = systems # add the systems
sim.methods = [
BlochDecayCentralTransitionSpectrum(
channels=["71Ga"],
magnetic_flux_density=4.8, # in T
spectral_dimensions=[{"count": 2048, "spectral_width": 1.2e6}],
)
] # add the method
sim.run()
The following is the static spectrum arising from a Czjzek distribution of the
second-rank traceless EFG tensors.
.. code-block:: python
plt.figure(figsize=(4.25, 3.0))
ax = plt.gca(projection="csdm")
ax.plot(sim.methods[0].simulation, color="black", linewidth=1)
ax.invert_xaxis()
plt.tight_layout()
plt.show()
.. image:: /examples/1D_simulation(macro_amorphous)/images/sphx_glr_plot_5_czjzek_distribution_004.png
:alt: plot 5 czjzek distribution
:class: sphx-glr-single-img
.. rst-class:: sphx-glr-timing
**Total running time of the script:** ( 0 minutes 3.926 seconds)
.. _sphx_glr_download_examples_1D_simulation(macro_amorphous)_plot_5_czjzek_distribution.py:
.. only :: html
.. container:: sphx-glr-footer
:class: sphx-glr-footer-example
.. container:: binder-badge
.. image:: images/binder_badge_logo.svg
:target: https://mybinder.org/v2/gh/DeepanshS/mrsimulator/master?urlpath=lab/tree/docs/_build/html/../../notebooks/examples/1D_simulation(macro_amorphous)/plot_5_czjzek_distribution.ipynb
:alt: Launch binder
:width: 150 px
.. container:: sphx-glr-download sphx-glr-download-python
:download:`Download Python source code: plot_5_czjzek_distribution.py `
.. container:: sphx-glr-download sphx-glr-download-jupyter
:download:`Download Jupyter notebook: plot_5_czjzek_distribution.ipynb `
.. only:: html
.. rst-class:: sphx-glr-signature
`Gallery generated by Sphinx-Gallery `_