@@ -252,13 +252,17 @@ def correct_close_events(self, nb_days_max=20):
252
252
"""
253
253
254
254
_time = self .time
255
- segment = self .segment .copy ()
255
+ # segment used to correct and track changes
256
+ segment = self .segment_track_array .copy ()
257
+ # final segment used to copy into self.segment
258
+ segment_copy = self .segment
259
+
256
260
segments_connexion = dict ()
257
261
258
262
previous_obs , next_obs = self .previous_obs , self .next_obs
259
263
260
264
# record for every segments, the slice, indice of next obs & indice of previous obs
261
- for i , seg , _ in self .iter_on (self . segment ):
265
+ for i , seg , _ in self .iter_on (segment ):
262
266
if i .start == i .stop :
263
267
continue
264
268
@@ -270,6 +274,10 @@ def correct_close_events(self, nb_days_max=20):
270
274
271
275
# the segment ID has to be corrected, because we may have changed it since
272
276
seg_corrected = segment [seg_slice .stop - 1 ]
277
+
278
+ # we keep the real segment number
279
+ seg_corrected_copy = segment_copy [seg_slice .stop - 1 ]
280
+
273
281
n_seg = segment [i_seg_n ]
274
282
275
283
# if segment has splitting
@@ -282,13 +290,15 @@ def correct_close_events(self, nb_days_max=20):
282
290
_time [i_seg_n ] - _time [i2_seg_p ] < nb_days_max
283
291
):
284
292
my_slice = slice (i_seg_n , seg2_slice .stop )
293
+ # correct the factice segment
285
294
segment [my_slice ] = seg_corrected
295
+ # correct the good segment
296
+ segment_copy [my_slice ] = seg_corrected_copy
286
297
previous_obs [i_seg_n ] = seg_slice .stop - 1
287
298
288
299
segments_connexion [seg_corrected ][0 ] = my_slice
289
300
290
- self .segment [:] = segment
291
- self .next_obs [:] = next_obs
301
+ self .segment [:] = segment_copy
292
302
self .previous_obs [:] = previous_obs
293
303
294
304
self .sort ()
@@ -1116,7 +1126,7 @@ def extract_with_mask(self, mask):
1116
1126
logger .warning ("Empty dataset will be created" )
1117
1127
else :
1118
1128
logger .info (
1119
- f"{ nb_obs } observations will be extract ({ nb_obs * 100. / self .shape [0 ]} % )"
1129
+ f"{ nb_obs } observations will be extract ({ nb_obs / self .shape [0 ]:.3% } )"
1120
1130
)
1121
1131
for field in self .obs .dtype .descr :
1122
1132
if field in ("next_obs" , "previous_obs" ):
0 commit comments