Skip to content

Commit bc7254e

Browse files
adding parameters to bash tools
- expose underlying parameters to users (min_overlapp, minimal_area) - correction of some docstrings
1 parent 2672ab9 commit bc7254e

File tree

3 files changed

+46
-12
lines changed

3 files changed

+46
-12
lines changed

src/py_eddy_tracker/appli/network.py

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,16 @@ def build_network():
2121
parser.add_argument(
2222
"--window", "-w", type=int, help="Half time window to search eddy", default=1
2323
)
24+
25+
parser.add_argument(
26+
"--min-overlap", "-p", type=float, help="minimum overlap area to associate observations", default=0.2
27+
)
28+
parser.add_argument(
29+
"--minimal-area",
30+
action="store_true",
31+
help="If True, use intersection/little polygon, else intersection/union",
32+
)
33+
2434
parser.contour_intern_arg()
2535

2636
parser.memory_arg()
@@ -32,7 +42,7 @@ def build_network():
3242
intern=args.intern,
3343
memory=args.memory,
3444
)
35-
group = n.group_observations(minimal_area=True)
45+
group = n.group_observations(min_overlap=args.min_overlap, minimal_area=args.minimal_area)
3646
n.build_dataset(group).write_file(filename=args.out)
3747

3848

@@ -44,6 +54,14 @@ def divide_network():
4454
parser.add_argument(
4555
"--window", "-w", type=int, help="Half time window to search eddy", default=1
4656
)
57+
parser.add_argument(
58+
"--min-overlap", "-p", type=float, help="minimum overlap area to associate observations", default=0.2
59+
)
60+
parser.add_argument(
61+
"--minimal-area",
62+
action="store_true",
63+
help="If True, use intersection/little polygon, else intersection/union",
64+
)
4765
args = parser.parse_args()
4866
contour_name = TrackEddiesObservations.intern(args.intern, public_label=True)
4967
e = TrackEddiesObservations.load_file(
@@ -52,7 +70,7 @@ def divide_network():
5270
)
5371
n = NetworkObservations.from_split_network(
5472
TrackEddiesObservations.load_file(args.input, raw_data=True),
55-
e.split_network(intern=args.intern, window=args.window),
73+
e.split_network(intern=args.intern, window=args.window, min_overlap=args.min_overlap, minimal_area=args.minimal_area),
5674
)
5775
n.write_file(filename=args.out)
5876

src/py_eddy_tracker/observations/network.py

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1701,7 +1701,23 @@ def group_translator(nb, duos):
17011701
apply_replace(translate, gr_i, gr_j)
17021702
return translate
17031703

1704-
def group_observations(self, **kwargs):
1704+
def group_observations(self, min_overlap=0.2, minimal_area=False):
1705+
"""Store every interaction between identifications
1706+
1707+
Parameters
1708+
----------
1709+
minimal_area : bool, optional
1710+
If True, function will compute intersection/little polygon, else intersection/union, by default False
1711+
1712+
min_overlap : float, optional
1713+
minimum overlap area to associate observations, by default 0.2
1714+
1715+
Returns
1716+
-------
1717+
TrackEddiesObservations
1718+
netcdf with interactions
1719+
"""
1720+
17051721
results, nb_obs = list(), list()
17061722
# To display print only in INFO
17071723
display_iteration = logger.getEffectiveLevel() == logging.INFO
@@ -1715,7 +1731,7 @@ def group_observations(self, **kwargs):
17151731
for j in range(i + 1, min(self.window + i + 1, self.nb_input)):
17161732
xj, yj = self.buffer.load_contour(self.filenames[j])
17171733
ii, ij = bbox_intersection(xi, yi, xj, yj)
1718-
m = vertice_overlap(xi[ii], yi[ii], xj[ij], yj[ij], **kwargs) > 0.2
1734+
m = vertice_overlap(xi[ii], yi[ii], xj[ij], yj[ij], minimal_area=minimal_area) > min_overlap
17191735
results.append((i, j, ii[m], ij[m]))
17201736
if display_iteration:
17211737
print()

src/py_eddy_tracker/observations/tracking.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -656,12 +656,12 @@ def split_network(self, intern=True, **kwargs):
656656

657657
def set_tracks(self, x, y, ids, window, **kwargs):
658658
"""
659-
Will split one group (network) in segments
659+
Split one group (network) in segments
660660
661661
:param array x: coordinates of group
662662
:param array y: coordinates of group
663663
:param ndarray ids: several fields like time, group, ...
664-
:param int windows: number of days where observations could missed
664+
:param int window: number of days where observations could missed
665665
"""
666666
time_index = build_index((ids["time"]).astype("i4"))
667667
nb = x.shape[0]
@@ -713,8 +713,8 @@ def get_previous_obs(
713713
time_e,
714714
time_ref,
715715
window,
716-
min_overlap=0.01,
717-
**kwargs,
716+
min_overlap=0.2,
717+
minimal_area=False,
718718
):
719719
"""Backward association of observations to the segments"""
720720
time_cur = int_(ids["time"][i_current])
@@ -730,7 +730,7 @@ def get_previous_obs(
730730
if len(ii) == 0:
731731
continue
732732
c = zeros(len(xj))
733-
c[ij] = vertice_overlap(xi[ii], yi[ii], xj[ij], yj[ij], **kwargs)
733+
c[ij] = vertice_overlap(xi[ii], yi[ii], xj[ij], yj[ij], minimal_area=minimal_area)
734734
# We remove low overlap
735735
c[c < min_overlap] = 0
736736
# We get index of maximal overlap
@@ -753,8 +753,8 @@ def get_next_obs(
753753
time_e,
754754
time_ref,
755755
window,
756-
min_overlap=0.01,
757-
**kwargs,
756+
min_overlap=0.2,
757+
minimal_area=False,
758758
):
759759
"""Forward association of observations to the segments"""
760760
time_max = time_e.shape[0] - 1
@@ -773,7 +773,7 @@ def get_next_obs(
773773
if len(ii) == 0:
774774
continue
775775
c = zeros(len(xj))
776-
c[ij] = vertice_overlap(xi[ii], yi[ii], xj[ij], yj[ij], **kwargs)
776+
c[ij] = vertice_overlap(xi[ii], yi[ii], xj[ij], yj[ij], minimal_area=minimal_area)
777777
# We remove low overlap
778778
c[c < min_overlap] = 0
779779
# We get index of maximal overlap

0 commit comments

Comments
 (0)