Skip to content

Commit edb8cd1

Browse files
committed
2 parents 004f845 + 959dcf8 commit edb8cd1

File tree

24 files changed

+1054
-648
lines changed

24 files changed

+1054
-648
lines changed

examples/02_eddy_identification/pet_sla_and_adt.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -55,32 +55,32 @@ def update_axes(ax, mappable=None):
5555
# over filtered
5656
ax = start_axes(f"ADT (m) filtered ({wavelength}km)")
5757
m = g.display(ax, "adt", vmin=-0.15, vmax=0.15)
58-
a_adt.display(ax, **kwargs_a_adt), c_adt.display(ax, **kwargs_a_sla)
58+
a_adt.display(ax, **kwargs_a_adt), c_adt.display(ax, **kwargs_c_adt)
5959
ax.legend(), update_axes(ax, m)
6060

6161
ax = start_axes(f"SLA (m) filtered ({wavelength}km)")
6262
m = g.display(ax, "sla", vmin=-0.15, vmax=0.15)
63-
a_sla.display(ax, **kwargs_c_adt), c_sla.display(ax, **kwargs_c_sla)
63+
a_sla.display(ax, **kwargs_a_sla), c_sla.display(ax, **kwargs_c_sla)
6464
ax.legend(), update_axes(ax, m)
6565

6666
# %%
6767
# over raw
6868
ax = start_axes("ADT (m)")
6969
m = g.display(ax, "adt_raw", vmin=-0.15, vmax=0.15)
70-
a_adt.display(ax, **kwargs_a_adt), c_adt.display(ax, **kwargs_a_sla)
70+
a_adt.display(ax, **kwargs_a_adt), c_adt.display(ax, **kwargs_c_adt)
7171
ax.legend(), update_axes(ax, m)
7272

7373
ax = start_axes("SLA (m)")
7474
m = g.display(ax, "sla_raw", vmin=-0.15, vmax=0.15)
75-
a_sla.display(ax, **kwargs_c_adt), c_sla.display(ax, **kwargs_c_sla)
75+
a_sla.display(ax, **kwargs_a_sla), c_sla.display(ax, **kwargs_c_sla)
7676
ax.legend(), update_axes(ax, m)
7777

7878
# %%
7979
# Display detection
8080
ax = start_axes("Eddies detected")
8181
a_adt.display(ax, **kwargs_a_adt)
82-
a_sla.display(ax, **kwargs_c_adt)
83-
c_adt.display(ax, **kwargs_a_sla)
82+
a_sla.display(ax, **kwargs_a_sla)
83+
c_adt.display(ax, **kwargs_c_adt)
8484
c_sla.display(ax, **kwargs_c_sla)
8585
ax.legend()
8686
update_axes(ax)

examples/08_tracking_manipulation/pet_track_anim.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
77
"""
88
from py_eddy_tracker.observations.tracking import TrackEddiesObservations
9-
from py_eddy_tracker.appli import Anim
9+
from py_eddy_tracker.appli.gui import Anim
1010
import py_eddy_tracker_sample
1111

1212
# %%

notebooks/python_module/02_eddy_identification/pet_sla_and_adt.ipynb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@
102102
},
103103
"outputs": [],
104104
"source": [
105-
"ax = start_axes(f\"ADT (m) filtered ({wavelength}km)\")\nm = g.display(ax, \"adt\", vmin=-0.15, vmax=0.15)\na_adt.display(ax, **kwargs_a_adt), c_adt.display(ax, **kwargs_a_sla)\nax.legend(), update_axes(ax, m)\n\nax = start_axes(f\"SLA (m) filtered ({wavelength}km)\")\nm = g.display(ax, \"sla\", vmin=-0.15, vmax=0.15)\na_sla.display(ax, **kwargs_c_adt), c_sla.display(ax, **kwargs_c_sla)\nax.legend(), update_axes(ax, m)"
105+
"ax = start_axes(f\"ADT (m) filtered ({wavelength}km)\")\nm = g.display(ax, \"adt\", vmin=-0.15, vmax=0.15)\na_adt.display(ax, **kwargs_a_adt), c_adt.display(ax, **kwargs_c_adt)\nax.legend(), update_axes(ax, m)\n\nax = start_axes(f\"SLA (m) filtered ({wavelength}km)\")\nm = g.display(ax, \"sla\", vmin=-0.15, vmax=0.15)\na_sla.display(ax, **kwargs_a_sla), c_sla.display(ax, **kwargs_c_sla)\nax.legend(), update_axes(ax, m)"
106106
]
107107
},
108108
{
@@ -120,7 +120,7 @@
120120
},
121121
"outputs": [],
122122
"source": [
123-
"ax = start_axes(\"ADT (m)\")\nm = g.display(ax, \"adt_raw\", vmin=-0.15, vmax=0.15)\na_adt.display(ax, **kwargs_a_adt), c_adt.display(ax, **kwargs_a_sla)\nax.legend(), update_axes(ax, m)\n\nax = start_axes(\"SLA (m)\")\nm = g.display(ax, \"sla_raw\", vmin=-0.15, vmax=0.15)\na_sla.display(ax, **kwargs_c_adt), c_sla.display(ax, **kwargs_c_sla)\nax.legend(), update_axes(ax, m)"
123+
"ax = start_axes(\"ADT (m)\")\nm = g.display(ax, \"adt_raw\", vmin=-0.15, vmax=0.15)\na_adt.display(ax, **kwargs_a_adt), c_adt.display(ax, **kwargs_c_adt)\nax.legend(), update_axes(ax, m)\n\nax = start_axes(\"SLA (m)\")\nm = g.display(ax, \"sla_raw\", vmin=-0.15, vmax=0.15)\na_sla.display(ax, **kwargs_a_sla), c_sla.display(ax, **kwargs_c_sla)\nax.legend(), update_axes(ax, m)"
124124
]
125125
},
126126
{
@@ -138,7 +138,7 @@
138138
},
139139
"outputs": [],
140140
"source": [
141-
"ax = start_axes(\"Eddies detected\")\na_adt.display(ax, **kwargs_a_adt)\na_sla.display(ax, **kwargs_c_adt)\nc_adt.display(ax, **kwargs_a_sla)\nc_sla.display(ax, **kwargs_c_sla)\nax.legend()\nupdate_axes(ax)"
141+
"ax = start_axes(\"Eddies detected\")\na_adt.display(ax, **kwargs_a_adt)\na_sla.display(ax, **kwargs_a_sla)\nc_adt.display(ax, **kwargs_c_adt)\nc_sla.display(ax, **kwargs_c_sla)\nax.legend()\nupdate_axes(ax)"
142142
]
143143
},
144144
{

notebooks/python_module/08_tracking_manipulation/pet_track_anim.ipynb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
},
2727
"outputs": [],
2828
"source": [
29-
"from py_eddy_tracker.observations.tracking import TrackEddiesObservations\nfrom py_eddy_tracker.appli import Anim\nimport py_eddy_tracker_sample"
29+
"from py_eddy_tracker.observations.tracking import TrackEddiesObservations\nfrom py_eddy_tracker.appli.gui import Anim\nimport py_eddy_tracker_sample"
3030
]
3131
},
3232
{

setup.py

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,27 +20,33 @@
2020
"Programming Language :: Python",
2121
],
2222
keywords="eddy science, eddy tracking, eddy tracker",
23-
author="emason",
23+
author="emason & adelepoulle",
2424
author_email="[email protected]",
2525
packages=find_packages("src"),
2626
package_dir={"": "src"},
2727
scripts=[
28-
"src/scripts/GridFiltering",
29-
"src/scripts/EddyId",
3028
"src/scripts/EddySubSetter",
3129
"src/scripts/EddyTranslate",
3230
"src/scripts/EddyTracking",
3331
"src/scripts/EddyFinalTracking",
3432
"src/scripts/EddyMergeCorrespondances",
35-
"src/scripts/ZarrDump",
3633
"src/scripts/GUIEddy",
3734
],
3835
zip_safe=False,
3936
entry_points=dict(
4037
console_scripts=[
41-
"MergeEddies = py_eddy_tracker.appli:merge_eddies",
42-
"EddyNetworkGroup = py_eddy_tracker.network:build_network",
43-
"EddyAnim = py_eddy_tracker.appli:anim"
38+
# grid
39+
"GridFiltering = py_eddy_tracker.appli.grid:grid_filtering",
40+
"EddyId = py_eddy_tracker.appli.grid:eddy_id",
41+
# eddies
42+
"MergeEddies = py_eddy_tracker.appli.eddies:merge_eddies",
43+
# network
44+
"EddyNetworkGroup = py_eddy_tracker.appli.network:build_network",
45+
"EddyNetworkBuildPath = py_eddy_tracker.appli.network:divide_network",
46+
# anim/gui
47+
"EddyAnim = py_eddy_tracker.appli.gui:anim",
48+
# misc
49+
"ZarrDump = py_eddy_tracker.appli.misc:zarrdump",
4450
]
4551
),
4652
package_data={

share/eddy_identification.yaml

Lines changed: 0 additions & 98 deletions
This file was deleted.

src/py_eddy_tracker/__init__.py

Lines changed: 34 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,13 @@ def start_logger():
3131
FORMAT_LOG = (
3232
"%(levelname)-8s %(asctime)s %(module)s.%(funcName)s :\n\t\t\t\t\t%(message)s"
3333
)
34-
# set up logging to CONSOLE
35-
console = logging.StreamHandler()
36-
console.setFormatter(ColoredFormatter(FORMAT_LOG))
3734
logger = logging.getLogger("pet")
38-
# add the handler to the root logger
39-
logger.addHandler(console)
35+
if len(logger.handlers) == 0:
36+
# set up logging to CONSOLE
37+
console = logging.StreamHandler()
38+
console.setFormatter(ColoredFormatter(FORMAT_LOG))
39+
# add the handler to the root logger
40+
logger.addHandler(console)
4041
return logger
4142

4243

@@ -50,7 +51,7 @@ class ColoredFormatter(logging.Formatter):
5051
)
5152

5253
def __init__(self, message):
53-
super(ColoredFormatter, self).__init__(message)
54+
super().__init__(message)
5455

5556
def format(self, record):
5657
color = self.COLOR_LEVEL.get(record.levelname, "")
@@ -60,15 +61,15 @@ def format(self, record):
6061
record.funcName = model % record.funcName
6162
record.module = model % record.module
6263
record.levelname = model % record.levelname
63-
return super(ColoredFormatter, self).format(record)
64+
return super().format(record)
6465

6566

6667
class EddyParser(ArgumentParser):
6768
"""General parser for applications
6869
"""
6970

7071
def __init__(self, *args, **kwargs):
71-
super(EddyParser, self).__init__(*args, **kwargs)
72+
super().__init__(*args, **kwargs)
7273
self.add_base_argument()
7374

7475
def add_base_argument(self):
@@ -85,7 +86,7 @@ def add_base_argument(self):
8586
def parse_args(self, *args, **kwargs):
8687
logger = start_logger()
8788
# Parsing
88-
opts = super(EddyParser, self).parse_args(*args, **kwargs)
89+
opts = super().parse_args(*args, **kwargs)
8990
# set current level
9091
logger.setLevel(getattr(logging, opts.logging_level.upper()))
9192
return opts
@@ -385,6 +386,17 @@ def parse_args(self, *args, **kwargs):
385386
axis="X",
386387
),
387388
),
389+
num_point_e=dict(
390+
attr_name=None,
391+
nc_name="num_point_e",
392+
nc_type="u2",
393+
nc_dims=("obs",),
394+
nc_attr=dict(
395+
longname="number of point for effective contour",
396+
units="ordinal",
397+
description="Number of point for effective contour, if greater than NbSample, there is a resampling",
398+
),
399+
),
388400
contour_lon_s=dict(
389401
attr_name=None,
390402
nc_name="speed_contour_longitude",
@@ -418,6 +430,17 @@ def parse_args(self, *args, **kwargs):
418430
axis="X",
419431
),
420432
),
433+
num_point_s=dict(
434+
attr_name=None,
435+
nc_name="num_point_s",
436+
nc_type="u2",
437+
nc_dims=("obs",),
438+
nc_attr=dict(
439+
longname="number of point for speed contour",
440+
units="ordinal",
441+
description="Number of point for speed contour, if greater than NbSample, there is a resampling",
442+
),
443+
),
421444
shape_error_e=dict(
422445
attr_name=None,
423446
nc_name="effective_contour_shape_error",
@@ -579,5 +602,6 @@ def parse_args(self, *args, **kwargs):
579602
VAR_DESCR_inv[key_old] = key
580603

581604
from ._version import get_versions
582-
__version__ = get_versions()['version']
605+
606+
__version__ = get_versions()["version"]
583607
del get_versions

src/py_eddy_tracker/appli/__init__.py

Whitespace-only changes.
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
# -*- coding: utf-8 -*-
2+
"""
3+
===========================================================================
4+
This file is part of py-eddy-tracker.
5+
6+
py-eddy-tracker is free software: you can redistribute it and/or modify
7+
it under the terms of the GNU General Public License as published by
8+
the Free Software Foundation, either version 3 of the License, or
9+
(at your option) any later version.
10+
11+
py-eddy-tracker is distributed in the hope that it will be useful,
12+
but WITHOUT ANY WARRANTY; without even the implied warranty of
13+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14+
GNU General Public License for more details.
15+
16+
You should have received a copy of the GNU General Public License
17+
along with py-eddy-tracker. If not, see <http://www.gnu.org/licenses/>.
18+
19+
Copyright (c) 2014-2020 by Evan Mason
20+
21+
===========================================================================
22+
"""
23+
from netCDF4 import Dataset
24+
from .. import EddyParser
25+
from ..observations.tracking import TrackEddiesObservations
26+
27+
28+
def merge_eddies():
29+
parser = EddyParser("Merge eddies")
30+
parser.add_argument("filename", nargs="+", help="all file to merge")
31+
parser.add_argument("out", help="output file")
32+
parser.add_argument(
33+
"--add_rotation_variable", help="add rotation variables", action="store_true"
34+
)
35+
parser.add_argument(
36+
"--include_var", nargs="+", type=str, help="use only listed variable"
37+
)
38+
args = parser.parse_args()
39+
40+
if args.include_var is None:
41+
with Dataset(args.filename[0]) as h:
42+
args.include_var = h.variables.keys()
43+
44+
obs = TrackEddiesObservations.load_file(
45+
args.filename[0], raw_data=True, include_vars=args.include_var
46+
)
47+
if args.add_rotation_variable:
48+
obs = obs.add_rotation_type()
49+
for filename in args.filename[1:]:
50+
other = TrackEddiesObservations.load_file(
51+
filename, raw_data=True, include_vars=args.include_var
52+
)
53+
if args.add_rotation_variable:
54+
other = other.add_rotation_type()
55+
obs = obs.merge(other)
56+
obs.write_file(filename=args.out)

0 commit comments

Comments
 (0)