This is a Jupyter notebook that was composed to run most of the examples distributed with SpinEvolution. It gives a visual overview of the examples and shows how to use SpinEvolution from Jupyter notebooks.
If you are viewing this content in a web browser, then this is just an HTML export (a Web version) of the original notebook. While the notebook format allows making all figures fully interactive, only some of the 2D spectra were made interactive in the Web version.
The whole gallery (~40 simulations) can be fully computed in about 10 minutes on a 4-core CPU. About 95% of this time is spent on five relatively large calculations.
Only about one third of these problems can be simulated with SIMPSON. Except for the most basic ones, however, they will be quite difficult to program for that software and will typically take at least an order of magnitude longer to compute.
#%matplotlib widget
%matplotlib inline
from plot import spinev, plot, setup_ipynb
setup_ipynb()
%cd '~/spinev/examples/'
opts = '-v0 -vf0 -vsf0 --verb'
spinev('csa/csa', opts)
spinev('redor/redor-full', opts)
It is sometimes desireable to simulate a pulse sequence, in which some of the RF field parameters are varied continuously rather than in steps, as is usually the case. The simulation below illustrates, on the simplest possible example, how this can be done is SpinEvolution. In the input file, the RF frequency offset is specified as an analytic function of time: xfreq_1_1=0.025*(t_-tp)/tp
.
This example also demonstrates that one can use alternative design styles for the output figures.
spinev('cw-nmr/cw-xfreq --style seaborn-dark', opts)
spinev('adiabatic-inversion/adiab', opts)
spinev('cpmg-echo/echo', opts)
spinev('tppm/tppm', opts)
The following shows the Linear Ramp Cross-Polarization pulse sequence, which consists of 30 elementary pulse sequences. The diagram shows each sequence repeated just once, but the $D_1$ symbols over the sequences says that the number of repeats grows in dimension 1.
spinev('ramped-cp/rampcp1 -pseq')
spinev('ramped-cp/rampcp1', opts)
The following simulation computes a histogram demonstrating that even ramped CP may result in the $^{13}$C polarization, which is extremely non-uniform over the crystallite orientations.
spinev('ramped-cp/rampcp-hist', opts)
The following two simulations compute the R$^2$ magnetization exchange curves between CO and C$_\beta$ in alanine using two model spin systems: C2 (without protons) and C2H7. The normal plotting of the results of the first simulation is suppressed with the -px0
option. Instead, these results are plotted as a reference curve by the second simulation. The -macroX=3
option selects C$_\beta$ as the second $^{13}$C nucleus. Using -macroX=2
instead would select C$_\alpha$.
This illustrates that even at 80 kHz CW decoupling and with both CH3 and NH3 groups in the fast exchange regime, the presence of protons leads to ZQ relaxation and to apparent attenuation of the C-C coupling.
spinev('rotational-resonance/r2-C2 -px0 -macroX=3', opts)
spinev('rotational-resonance/r2-C2H7-hot -macroX=3', opts)
These effects become much more pronounced when the fast hopping of both CH3 and NH3 groups is frozen.
The --ref
option requests to show the difference in the input files.
spinev('rotational-resonance/r2-C2H7-frozen -macroX=3 --ref rotational-resonance/r2-C2H7-hot', opts)
We can model these effects by supplementing the two-spin model with a ZQ relaxation time constant and with a dipolar coupling scaling factor. These two parameters can then be fit using SpinEvolution data fitting feature to "explain" the behavior observed in the C2H7 systems:
spinev('rotational-resonance/r2-C2-T2ZQ -macroX=3 -macroTEMP=hot', opts)
The following shows the SPC-5 dipolar recoupling pulse sequence
spinev('spc5/spc5 -pseq')
spinev('spc5/spc5', opts)
spinev('hccn/hccn', opts)
spinev('noesy/noesy', opts)