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

.. only:: html

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

        :ref:`Go to the end <sphx_glr_download_examples_tracking_merged_eddies.py>`
        to download the full example code.

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

.. _sphx_glr_examples_tracking_merged_eddies.py:


Detect eddies from different files and merge tracking
=====================================================

.. GENERATED FROM PYTHON SOURCE LINES 8-12

Initialisations
-----------------

Import needed stuff.

.. GENERATED FROM PYTHON SOURCE LINES 12-23

.. code-block:: Python

    import tempfile
    import time

    import xarray as xr

    from shoot.eddies.eddies2d import EvolEddies2D
    from shoot.eddies.track import track_eddies
    from shoot.samples import get_sample_file

    xr.set_options(display_style="text")


.. GENERATED FROM PYTHON SOURCE LINES 24-25

Read data

.. GENERATED FROM PYTHON SOURCE LINES 25-31

.. code-block:: Python

    path = get_sample_file("OBS/SATELLITE/jan2024_ionian_sea_duacs.nc")
    out_dir = tempfile.mkdtemp()
    # partition into 2 dataset continuous in time
    ds1 = xr.open_dataset(path).isel(time=slice(0, 10))
    ds2 = xr.open_dataset(path).isel(time=slice(10, 20))


.. GENERATED FROM PYTHON SOURCE LINES 32-38

Detect eddies
-------------
Parameters
~~~~~~~~~~

Window size in km to compute the LNAM and find eddy centers : Lb

.. GENERATED FROM PYTHON SOURCE LINES 38-40

.. code-block:: Python

    window_center = 50  # 20  # 100#50


.. GENERATED FROM PYTHON SOURCE LINES 41-42

Window size in km to fit SSH and make other diagnostics like contours : 10Rd suggested

.. GENERATED FROM PYTHON SOURCE LINES 42-44

.. code-block:: Python

    window_fit = 120  # 100  # 120


.. GENERATED FROM PYTHON SOURCE LINES 45-46

Minimal radius of an eddy to retain it

.. GENERATED FROM PYTHON SOURCE LINES 46-48

.. code-block:: Python

    min_radius = 20


.. GENERATED FROM PYTHON SOURCE LINES 49-50

Ellipse error

.. GENERATED FROM PYTHON SOURCE LINES 50-52

.. code-block:: Python

    ellipse_error = 0.05


.. GENERATED FROM PYTHON SOURCE LINES 53-55

Detection
~~~~~~~~~

.. GENERATED FROM PYTHON SOURCE LINES 55-77

.. code-block:: Python


    start = time.time()
    eddies1 = EvolEddies2D.detect_eddies(
        ds1,
        window_center,
        window_fit,
        min_radius,
        ssh="adt",
        ellipse_error=ellipse_error,
    )
    eddies2 = EvolEddies2D.detect_eddies(
        ds2,
        window_center,
        window_fit,
        min_radius,
        ssh="adt",
        ellipse_error=ellipse_error,
    )
    end = time.time()
    time_detect = end - start
    print(f"nb days {len(eddies1.eddies)} in {time_detect / 60:.1f} min")


.. GENERATED FROM PYTHON SOURCE LINES 78-80

Tracking
~~~~~~~~

.. GENERATED FROM PYTHON SOURCE LINES 80-89

.. code-block:: Python


    nbackward = 10  # number of admitted time step without detection

    start = time.time()
    tracks1 = track_eddies(eddies1, nbackward)  # 10*dt
    tracks2 = track_eddies(eddies2, nbackward)  # 10*dt
    end = time.time()
    print("duree totale du calcul sur 1 mois : %.1f s" % (end - start))


.. GENERATED FROM PYTHON SOURCE LINES 90-93

.. code-block:: Python

    tracks1.to_netcdf(out_dir + "/eddies_med_test1.nc")
    tracks2.to_netcdf(out_dir + "/eddies_med_test2.nc")


.. GENERATED FROM PYTHON SOURCE LINES 94-97

.. code-block:: Python

    ds1 = xr.open_dataset(out_dir + "/eddies_med_test1.nc")
    ds2 = xr.open_dataset(out_dir + "/eddies_med_test2.nc")


.. GENERATED FROM PYTHON SOURCE LINES 98-102

.. code-block:: Python

    eddies = EvolEddies2D.merge_ds([ds1, ds2])
    eddies
    print(len(eddies.eddies))


.. GENERATED FROM PYTHON SOURCE LINES 103-105

.. code-block:: Python

    tracks = track_eddies(eddies, 10)


.. GENERATED FROM PYTHON SOURCE LINES 106-109

.. code-block:: Python


    tracks.to_netcdf(out_dir + "/eddies_mest_test_merged.nc")


.. GENERATED FROM PYTHON SOURCE LINES 110-111

.. code-block:: Python

    ds_merged = xr.open_dataset(out_dir + "/eddies_mest_test_merged.nc")


.. _sphx_glr_download_examples_tracking_merged_eddies.py:

.. only:: html

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

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

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

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

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

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

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


.. only:: html

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

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