.. only:: html .. note:: :class: sphx-glr-download-link-note Click :ref:`here ` to download the full example code .. rst-class:: sphx-glr-example-title .. _sphx_glr_auto_examples_1D_1_examples_plot_1_NMR_bloch.py: Nuclear Magnetic Resonance (NMR) dataset ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The following dataset is a :math:`^{13}\mathrm{C}` time-domain NMR Bloch decay signal of ethanol. Let's load this data file and take a quick look at its data structure. We follow the steps described in the previous example. .. code-block:: default import csdmpy as cp filename = "https://osu.box.com/shared/static/2e4fqm8n8bh4i5wgrinbwcavafa8x7y1.csdf" NMR_data = cp.load(filename) print(NMR_data.data_structure) .. rst-class:: sphx-glr-script-out Out: .. code-block:: none { "csdm": { "version": "1.0", "read_only": true, "timestamp": "2016-03-12T16:41:00Z", "geographic_coordinate": { "altitude": "238.9719543457031 m", "longitude": "-83.05154573892345 °", "latitude": "39.97968794964322 °" }, "tags": [ "13C", "NMR", "spectrum", "ethanol" ], "description": "A time domain NMR 13C Bloch decay signal of ethanol.", "dimensions": [ { "type": "linear", "count": 4096, "increment": "0.1 ms", "coordinates_offset": "-0.3 ms", "quantity_name": "time", "reciprocal": { "coordinates_offset": "-3005.363 Hz", "origin_offset": "75426328.86 Hz", "quantity_name": "frequency", "label": "13C frequency shift" } } ], "dependent_variables": [ { "type": "internal", "numeric_type": "complex128", "quantity_type": "scalar", "components": [ [ "(-8899.40625-1276.7734375j), (-4606.88037109375-742.4124755859375j), ..., (37.548492431640625+20.156890869140625j), (-193.9228515625-67.06524658203125j)" ] ] } ] } } This particular example illustrates two additional attributes of the CSD model, namely, the :attr:`~csdmpy.CSDM.geographic_coordinate` and :attr:`~csdmpy.CSDM.tags`. The `geographic_coordinate` described the location where the CSDM file was last serialized. You may access this attribute through, .. code-block:: default NMR_data.geographic_coordinate .. rst-class:: sphx-glr-script-out Out: .. code-block:: none {'altitude': '238.9719543457031 m', 'longitude': '-83.05154573892345 °', 'latitude': '39.97968794964322 °'} The `tags` attribute is a list of keywords that best describe the dataset. The `tags` attribute is accessed through, .. code-block:: default NMR_data.tags .. rst-class:: sphx-glr-script-out Out: .. code-block:: none ['13C', 'NMR', 'spectrum', 'ethanol'] You may add additional tags, if so desired, using the `append` method of python's list class, for example, .. code-block:: default NMR_data.tags.append("Bloch decay") NMR_data.tags .. rst-class:: sphx-glr-script-out Out: .. code-block:: none ['13C', 'NMR', 'spectrum', 'ethanol', 'Bloch decay'] The coordinates along the dimension are .. code-block:: default x = NMR_data.dimensions x0 = x[0].coordinates print(x0) .. rst-class:: sphx-glr-script-out Out: .. code-block:: none [-3.000e-01 -2.000e-01 -1.000e-01 ... 4.090e+02 4.091e+02 4.092e+02] ms Unlike the previous example, the data structure of an NMR measurement is a complex-valued dependent variable. The numeric type of the components from a dependent variable is accessed through the :attr:`~csdmpy.DependentVariable.numeric_type` attribute. .. code-block:: default y = NMR_data.dependent_variables print(y[0].numeric_type) .. rst-class:: sphx-glr-script-out Out: .. code-block:: none complex128 **Visualizing the dataset** In the previous example, we illustrated a matplotlib script for plotting 1D data. Here, we use the csdmpy :meth:`~csdmpy.plot` method, which is a supplementary method for plotting 1D and 2D datasets only. .. code-block:: default cp.plot(NMR_data) .. image:: /auto_examples/1D_1_examples/images/sphx_glr_plot_1_NMR_bloch_001.png :class: sphx-glr-single-img **Reciprocal dimension object** When closely observing the dimension instance of `NMR_data`, .. code-block:: default print(x[0].data_structure) .. rst-class:: sphx-glr-script-out Out: .. code-block:: none { "type": "linear", "count": 4096, "increment": "0.1 ms", "coordinates_offset": "-0.3 ms", "quantity_name": "time", "reciprocal": { "coordinates_offset": "-3005.363 Hz", "origin_offset": "75426328.86 Hz", "quantity_name": "frequency", "label": "13C frequency shift" } } notice, there is a reciprocal keyword. The :attr:`~csdmpy.Dimension.reciprocal` attribute is useful for datasets that frequently transform to a reciprocal domain, such as the NMR dataset. The value of the reciprocal attribute is the reciprocal object, which contains metadata for describing the reciprocal coordinates, such as the `coordinates_offset`, `origin_offset` of the reciprocal dimension. You may perform a fourier transform to visualize the NMR spectrum. Use the :meth:`~csdmpy.CSDM.fft` method on the csdm object ``NMR_data`` as follows .. code-block:: default fft_NMR_data = NMR_data.fft() cp.plot(fft_NMR_data) .. image:: /auto_examples/1D_1_examples/images/sphx_glr_plot_1_NMR_bloch_002.png :class: sphx-glr-single-img To return to time domain signal, use the :meth:`~csdmpy.CSDM.fft` method on the ``fft_NMR_data`` object, .. code-block:: default NMR_data_2 = fft_NMR_data.fft() cp.plot(NMR_data_2) .. image:: /auto_examples/1D_1_examples/images/sphx_glr_plot_1_NMR_bloch_003.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-timing **Total running time of the script:** ( 0 minutes 1.545 seconds) .. _sphx_glr_download_auto_examples_1D_1_examples_plot_1_NMR_bloch.py: .. only :: html .. container:: sphx-glr-footer :class: sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_1_NMR_bloch.py ` .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_1_NMR_bloch.ipynb ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_