.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "python_module/16_network/pet_atlas.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code. or to run this example in your browser via Binder .. rst-class:: sphx-glr-example-title .. _sphx_glr_python_module_16_network_pet_atlas.py: Network Analysis ================ .. GENERATED FROM PYTHON SOURCE LINES 5-17 .. code-block:: Python from matplotlib import pyplot as plt from numpy import ma from py_eddy_tracker.data import get_remote_demo_sample from py_eddy_tracker.gui import GUI_AXES from py_eddy_tracker.observations.network import NetworkObservations n = NetworkObservations.load_file( get_remote_demo_sample( "eddies_med_adt_allsat_dt2018_err70_filt500_order1/Anticyclonic_network.nc" ) ) .. GENERATED FROM PYTHON SOURCE LINES 18-19 Parameters .. GENERATED FROM PYTHON SOURCE LINES 19-25 .. code-block:: Python step = 1 / 10.0 bins = ((-10, 37, step), (30, 46, step)) kw_time = dict(cmap="terrain_r", factor=100.0 / n.nb_days, name="count") kw_ratio = dict(cmap=plt.get_cmap("YlGnBu_r", 10)) .. GENERATED FROM PYTHON SOURCE LINES 26-27 Functions .. GENERATED FROM PYTHON SOURCE LINES 27-42 .. code-block:: Python def start_axes(title): fig = plt.figure(figsize=(13, 5)) ax = fig.add_axes([0.03, 0.03, 0.90, 0.94], projection=GUI_AXES) ax.set_xlim(-6, 36.5), ax.set_ylim(30, 46) ax.set_aspect("equal") ax.set_title(title, weight="bold") return ax def update_axes(ax, mappable=None): ax.grid() if mappable: return plt.colorbar(mappable, cax=ax.figure.add_axes([0.94, 0.05, 0.01, 0.9])) .. GENERATED FROM PYTHON SOURCE LINES 43-46 All --- Display the % of time each pixel (1/10°) is within an anticyclonic network .. GENERATED FROM PYTHON SOURCE LINES 46-51 .. code-block:: Python ax = start_axes("") g_all = n.grid_count(bins) m = g_all.display(ax, **kw_time, vmin=0, vmax=75) update_axes(ax, m).set_label("Pixel used in % of time") .. image-sg:: /python_module/16_network/images/sphx_glr_pet_atlas_001.png :alt: pet atlas :srcset: /python_module/16_network/images/sphx_glr_pet_atlas_001.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 52-56 Network longer than 10 days --------------------------- Display the % of time each pixel (1/10°) is within an anticyclonic network which total lifetime in longer than 10 days .. GENERATED FROM PYTHON SOURCE LINES 56-62 .. code-block:: Python ax = start_axes("") n10 = n.longer_than(10) g_10 = n10.grid_count(bins) m = g_10.display(ax, **kw_time, vmin=0, vmax=75) update_axes(ax, m).set_label("Pixel used in % of time") .. image-sg:: /python_module/16_network/images/sphx_glr_pet_atlas_002.png :alt: pet atlas :srcset: /python_module/16_network/images/sphx_glr_pet_atlas_002.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 63-66 Ratio ^^^^^ Ratio between the longer and total presence .. GENERATED FROM PYTHON SOURCE LINES 66-71 .. code-block:: Python ax = start_axes("") g_ = g_10.vars["count"] * 100.0 / g_all.vars["count"] m = g_10.display(ax, **kw_ratio, vmin=50, vmax=100, name=g_) update_axes(ax, m).set_label("Pixel used in % all atlas") .. image-sg:: /python_module/16_network/images/sphx_glr_pet_atlas_003.png :alt: pet atlas :srcset: /python_module/16_network/images/sphx_glr_pet_atlas_003.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 72-78 Blue = mostly short networks Network longer than 20 days --------------------------- Display the % of time each pixel (1/10°) is within an anticyclonic network which total lifetime is longer than 20 days .. GENERATED FROM PYTHON SOURCE LINES 78-84 .. code-block:: Python ax = start_axes("") n20 = n.longer_than(20) g_20 = n20.grid_count(bins) m = g_20.display(ax, **kw_time, vmin=0, vmax=75) update_axes(ax, m).set_label("Pixel used in % of time") .. image-sg:: /python_module/16_network/images/sphx_glr_pet_atlas_004.png :alt: pet atlas :srcset: /python_module/16_network/images/sphx_glr_pet_atlas_004.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 85-88 Ratio ^^^^^ Ratio between the longer and total presence .. GENERATED FROM PYTHON SOURCE LINES 88-93 .. code-block:: Python ax = start_axes("") g_ = g_20.vars["count"] * 100.0 / g_all.vars["count"] m = g_20.display(ax, **kw_ratio, vmin=50, vmax=100, name=g_) update_axes(ax, m).set_label("Pixel used in % all atlas") .. image-sg:: /python_module/16_network/images/sphx_glr_pet_atlas_005.png :alt: pet atlas :srcset: /python_module/16_network/images/sphx_glr_pet_atlas_005.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 94-95 Now we will hide pixel which are used less than 365 times .. GENERATED FROM PYTHON SOURCE LINES 95-101 .. code-block:: Python g_ = ma.array( g_20.vars["count"] * 100.0 / g_all.vars["count"], mask=g_all.vars["count"] < 365 ) ax = start_axes("") m = g_20.display(ax, **kw_ratio, vmin=50, vmax=100, name=g_) update_axes(ax, m).set_label("Pixel used in % all atlas") .. image-sg:: /python_module/16_network/images/sphx_glr_pet_atlas_006.png :alt: pet atlas :srcset: /python_module/16_network/images/sphx_glr_pet_atlas_006.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 102-103 Now we will hide pixel which are used more than 365 times .. GENERATED FROM PYTHON SOURCE LINES 103-110 .. code-block:: Python ax = start_axes("") g_ = ma.array( g_20.vars["count"] * 100.0 / g_all.vars["count"], mask=g_all.vars["count"] >= 365 ) m = g_20.display(ax, **kw_ratio, vmin=50, vmax=100, name=g_) update_axes(ax, m).set_label("Pixel used in % all atlas") .. image-sg:: /python_module/16_network/images/sphx_glr_pet_atlas_007.png :alt: pet atlas :srcset: /python_module/16_network/images/sphx_glr_pet_atlas_007.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 111-116 Coastal areas are mostly populated by short networks All merging ----------- Display the occurence of merging events .. GENERATED FROM PYTHON SOURCE LINES 116-121 .. code-block:: Python ax = start_axes("") g_all_merging = n.merging_event().grid_count(bins) m = g_all_merging.display(ax, **kw_time, vmin=0, vmax=1) update_axes(ax, m).set_label("Pixel used in % of time") .. image-sg:: /python_module/16_network/images/sphx_glr_pet_atlas_008.png :alt: pet atlas :srcset: /python_module/16_network/images/sphx_glr_pet_atlas_008.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 122-123 Ratio merging events / eddy presence .. GENERATED FROM PYTHON SOURCE LINES 123-128 .. code-block:: Python ax = start_axes("") g_ = g_all_merging.vars["count"] * 100.0 / g_all.vars["count"] m = g_all_merging.display(ax, **kw_ratio, vmin=0, vmax=5, name=g_) update_axes(ax, m).set_label("Pixel used in % all atlas") .. image-sg:: /python_module/16_network/images/sphx_glr_pet_atlas_009.png :alt: pet atlas :srcset: /python_module/16_network/images/sphx_glr_pet_atlas_009.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 129-131 Merging in networks longer than 10 days, with dead end remove (shorter than 10 observations) -------------------------------------------------------------------------------------------- .. GENERATED FROM PYTHON SOURCE LINES 131-139 .. code-block:: Python ax = start_axes("") n10_ = n10.copy() n10_.remove_dead_end(nobs=10) merger = n10_.merging_event() g_10_merging = merger.grid_count(bins) m = g_10_merging.display(ax, **kw_time, vmin=0, vmax=1) update_axes(ax, m).set_label("Pixel used in % of time") .. image-sg:: /python_module/16_network/images/sphx_glr_pet_atlas_010.png :alt: pet atlas :srcset: /python_module/16_network/images/sphx_glr_pet_atlas_010.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 140-142 Merging in networks longer than 10 days --------------------------------------- .. GENERATED FROM PYTHON SOURCE LINES 142-147 .. code-block:: Python ax = start_axes("") merger = n10.merging_event() g_10_merging = merger.grid_count(bins) m = g_10_merging.display(ax, **kw_time, vmin=0, vmax=1) update_axes(ax, m).set_label("Pixel used in % of time") .. image-sg:: /python_module/16_network/images/sphx_glr_pet_atlas_011.png :alt: pet atlas :srcset: /python_module/16_network/images/sphx_glr_pet_atlas_011.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 148-149 Ratio merging events / eddy presence .. GENERATED FROM PYTHON SOURCE LINES 149-157 .. code-block:: Python ax = start_axes("") g_ = ma.array( g_10_merging.vars["count"] * 100.0 / g_10.vars["count"], mask=g_10.vars["count"] < 365, ) m = g_10_merging.display(ax, **kw_ratio, vmin=0, vmax=5, name=g_) update_axes(ax, m).set_label("Pixel used in % all atlas") .. image-sg:: /python_module/16_network/images/sphx_glr_pet_atlas_012.png :alt: pet atlas :srcset: /python_module/16_network/images/sphx_glr_pet_atlas_012.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 158-161 All splitting ------------- Display the occurence of splitting events .. GENERATED FROM PYTHON SOURCE LINES 161-166 .. code-block:: Python ax = start_axes("") g_all_splitting = n.splitting_event().grid_count(bins) m = g_all_splitting.display(ax, **kw_time, vmin=0, vmax=1) update_axes(ax, m).set_label("Pixel used in % of time") .. image-sg:: /python_module/16_network/images/sphx_glr_pet_atlas_013.png :alt: pet atlas :srcset: /python_module/16_network/images/sphx_glr_pet_atlas_013.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 167-168 Ratio splitting events / eddy presence .. GENERATED FROM PYTHON SOURCE LINES 168-173 .. code-block:: Python ax = start_axes("") g_ = g_all_splitting.vars["count"] * 100.0 / g_all.vars["count"] m = g_all_splitting.display(ax, **kw_ratio, vmin=0, vmax=5, name=g_) update_axes(ax, m).set_label("Pixel used in % all atlas") .. image-sg:: /python_module/16_network/images/sphx_glr_pet_atlas_014.png :alt: pet atlas :srcset: /python_module/16_network/images/sphx_glr_pet_atlas_014.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 174-176 splitting in networks longer than 10 days ----------------------------------------- .. GENERATED FROM PYTHON SOURCE LINES 176-180 .. code-block:: Python ax = start_axes("") g_10_splitting = n10.splitting_event().grid_count(bins) m = g_10_splitting.display(ax, **kw_time, vmin=0, vmax=1) update_axes(ax, m).set_label("Pixel used in % of time") .. image-sg:: /python_module/16_network/images/sphx_glr_pet_atlas_015.png :alt: pet atlas :srcset: /python_module/16_network/images/sphx_glr_pet_atlas_015.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 181-188 .. code-block:: Python ax = start_axes("") g_ = ma.array( g_10_splitting.vars["count"] * 100.0 / g_10.vars["count"], mask=g_10.vars["count"] < 365, ) m = g_10_splitting.display(ax, **kw_ratio, vmin=0, vmax=5, name=g_) update_axes(ax, m).set_label("Pixel used in % all atlas") .. image-sg:: /python_module/16_network/images/sphx_glr_pet_atlas_016.png :alt: pet atlas :srcset: /python_module/16_network/images/sphx_glr_pet_atlas_016.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 3.867 seconds) .. _sphx_glr_download_python_module_16_network_pet_atlas.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: binder-badge .. image:: images/binder_badge_logo.svg :target: https://mybinder.org/v2/gh/AntSimi/py-eddy-tracker/master?urlpath=lab/tree/notebooks/python_module/16_network/pet_atlas.ipynb :alt: Launch binder :width: 150 px .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: pet_atlas.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: pet_atlas.py ` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: pet_atlas.zip ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_