
.. DO NOT EDIT.
.. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY.
.. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE:
.. "generated/gallery/14-bssfp/bssfp2D_sequence.py"
.. LINE NUMBERS ARE GIVEN BELOW.

.. only:: html

    .. note::
        :class: sphx-glr-download-link-note

        :ref:`Go to the end <sphx_glr_download_generated_gallery_14-bssfp_bssfp2D_sequence.py>`
        to download the full example code.

.. rst-class:: sphx-glr-example-title

.. _sphx_glr_generated_gallery_14-bssfp_bssfp2D_sequence.py:


==================
2D balanced SSFP
==================

A low-flip-angle excitation and balanced Cartesian gradient-echo readout repeat
with alternating RF phase. Zero net gradient moment in every TR preserves
transverse coherence and establishes a steady state governed by T2/T1 and
off-resonance. A half-flip preparation reduces transient oscillation. 2D bSSFP
is widely used for cardiac cine and dynamic cardiac imaging.

.. GENERATED FROM PYTHON SOURCE LINES 12-32








.. GENERATED FROM PYTHON SOURCE LINES 33-37

Fully sampled acquisition
-------------------------

One cardiac phase, with every phase-encode line acquired.

.. GENERATED FROM PYTHON SOURCE LINES 37-56

.. code-block:: Python


    import pypulseqpp as pp
    from pypulseqpp.sequences import bssfp2D_sequence

    diagram = bssfp2D_sequence(
        n_x=48,
        n_y=12,
        n_slices=1,
        n_phases=1,
        readout_bandwidth_hz=25_000,
        tr=None,
        n_dummy=1,
    )
    baseline = bssfp2D_sequence(
        n_x=192, n_y=192, n_slices=1, n_phases=1, tr=None, n_dummy=0
    )
    print(f"{baseline.num_blocks} blocks, {baseline.duration()[0]:.2f} s")
    print(f"TR {baseline.get_definition('TR')[0] * 1e3:.2f} ms")





.. rst-class:: sphx-glr-script-out

 .. code-block:: none

    579 blocks, 0.74 s
    TR 3.84 ms




.. GENERATED FROM PYTHON SOURCE LINES 57-59

Sequence diagram
----------------

.. GENERATED FROM PYTHON SOURCE LINES 59-62

.. code-block:: Python


    diagram.paper_plot()




.. image-sg:: /generated/gallery/14-bssfp/images/sphx_glr_bssfp2D_sequence_001.png
   :alt: bssfp2D sequence
   :srcset: /generated/gallery/14-bssfp/images/sphx_glr_bssfp2D_sequence_001.png
   :class: sphx-glr-single-img





.. GENERATED FROM PYTHON SOURCE LINES 63-68

Sampling order
--------------

Colour encodes phase-encode line acquisition order; lines are acquired in
segments of ``views_per_segment``.

.. GENERATED FROM PYTHON SOURCE LINES 68-71

.. code-block:: Python


    pp.plot.plot_kspace(baseline, color_by="order", plane="xy", show_trajectory=False)




.. image-sg:: /generated/gallery/14-bssfp/images/sphx_glr_bssfp2D_sequence_002.png
   :alt: bssfp2D sequence
   :srcset: /generated/gallery/14-bssfp/images/sphx_glr_bssfp2D_sequence_002.png
   :class: sphx-glr-single-img





.. GENERATED FROM PYTHON SOURCE LINES 72-79

Cine
----

Prospective gating acquires each segment once per requested cardiac phase
after a trigger. Retrospective gating cycles the segment throughout one
heartbeat and records the cycle index in ``PHS`` for later cardiac binning.
Segment length sets the temporal footprint of each cardiac phase.

.. GENERATED FROM PYTHON SOURCE LINES 79-114

.. code-block:: Python


    prospective = bssfp2D_sequence(
        n_x=96,
        n_y=48,
        n_slices=1,
        n_phases=6,
        views_per_segment=8,
        gating="prospective",
        tr=None,
        n_dummy=0,
    )
    retrospective = bssfp2D_sequence(
        n_x=96,
        n_y=48,
        n_slices=1,
        n_phases=6,
        views_per_segment=8,
        gating="retrospective",
        tr=None,
        n_dummy=0,
    )






.. rst-class:: sphx-glr-script-out

 .. code-block:: none

                       blocks  duration (s)  acquisitions
    ungated               579          0.74           192
    prospective           873          0.83           288
    retrospective        6195          5.95          2064




.. GENERATED FROM PYTHON SOURCE LINES 115-117

.. code-block:: Python

    pp.plot.plot_kspace(prospective, color_by="order", plane="xy", show_trajectory=False)




.. image-sg:: /generated/gallery/14-bssfp/images/sphx_glr_bssfp2D_sequence_003.png
   :alt: bssfp2D sequence
   :srcset: /generated/gallery/14-bssfp/images/sphx_glr_bssfp2D_sequence_003.png
   :class: sphx-glr-single-img






.. rst-class:: sphx-glr-timing

   **Total running time of the script:** (0 minutes 1.377 seconds)


.. _sphx_glr_download_generated_gallery_14-bssfp_bssfp2D_sequence.py:

.. only:: html

  .. container:: sphx-glr-footer sphx-glr-footer-example

    .. container:: sphx-glr-download sphx-glr-download-jupyter

      :download:`Download Jupyter notebook: bssfp2D_sequence.ipynb <bssfp2D_sequence.ipynb>`

    .. container:: sphx-glr-download sphx-glr-download-python

      :download:`Download Python source code: bssfp2D_sequence.py <bssfp2D_sequence.py>`

    .. container:: sphx-glr-download sphx-glr-download-zip

      :download:`Download zipped: bssfp2D_sequence.zip <bssfp2D_sequence.zip>`


.. only:: html

 .. rst-class:: sphx-glr-signature

    `Gallery generated by Sphinx-Gallery <https://sphinx-gallery.github.io>`_
