Skip to content

Commit 1c4654c

Browse files
author
adelepoulle
committed
Add options to manage filename
Add some correction for numpy/python3
1 parent b6e5cd8 commit 1c4654c

File tree

6 files changed

+36
-16
lines changed

6 files changed

+36
-16
lines changed

src/py_eddy_tracker/featured_tracking/old_tracker_reference.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77

88
class CheltonTracker(Model):
9-
GROUND = GridDataset(path.join(path.dirname(__file__), 'mask_old.nc'), 'lon', 'lat')
9+
GROUND = GridDataset(path.join(path.dirname(__file__), '/data/adelepoulle/Test/Test_eddy/20180220_high_res_mask/mask_1_60.nc'), 'lon', 'lat')
1010

1111
@staticmethod
1212
def cost_function(records_in, records_out, distance):

src/py_eddy_tracker/grid/aviso.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ def set_mask(self, sla):
203203
self.mask[:125, minus70] = True
204204

205205
# Mask all unwanted regions (Caspian Sea, etc)
206-
self.labels = ndimage.label(-self.mask)[0]
206+
self.labels = ndimage.label(~self.mask)[0]
207207

208208
# Set to known sea point
209209
plus200 = argmin(abs(self.lonpad[0] - 200))

src/py_eddy_tracker/observations.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
from shapely.geos import TopologicalError
3838
from . import VAR_DESCR, VAR_DESCR_inv
3939
import logging
40+
from datetime import datetime
4041
from scipy.interpolate import RectBivariateSpline
4142

4243

@@ -781,7 +782,7 @@ def write_netcdf(self, path='./', filename='%(path)s/%(sign_type)s.nc'):
781782
"""
782783
eddy_size = len(self.observations)
783784
sign_type = 'Cyclonic' if self.sign_type == -1 else 'Anticyclonic'
784-
filename = filename % dict(path=path, sign_type=sign_type)
785+
filename = filename % dict(path=path, sign_type=sign_type, prod_time=datetime.now().strftime('%Y%d%d'))
785786
logging.info('Store in %s', filename)
786787
with Dataset(filename, 'w', format='NETCDF4') as h_nc:
787788
logging.info('Create file %s', filename)

src/py_eddy_tracker/tracking.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -298,11 +298,12 @@ def load_state(self):
298298
flg_virtual = self.previous_correspondance.virtual
299299
with Dataset(self.filename_previous_correspondance) as general_handler:
300300
self.current_id = general_handler.last_current_id
301-
# Load last virtual obs
302-
self.virtual_obs = VirtualEddiesObservations.from_netcdf(general_handler.groups['LastVirtualObs'])
303-
# Load and last previous virtual obs to be merge with current => will be previous2_obs
304-
self.current_obs = self.current_obs.merge(
305-
VirtualEddiesObservations.from_netcdf(general_handler.groups['LastPreviousVirtualObs']))
301+
if flg_virtual:
302+
# Load last virtual obs
303+
self.virtual_obs = VirtualEddiesObservations.from_netcdf(general_handler.groups['LastVirtualObs'])
304+
# Load and last previous virtual obs to be merge with current => will be previous2_obs
305+
self.current_obs = self.current_obs.merge(
306+
VirtualEddiesObservations.from_netcdf(general_handler.groups['LastPreviousVirtualObs']))
306307
return first_dataset, flg_virtual
307308
return 1, False
308309

@@ -406,8 +407,8 @@ def load_compatible(self, filename):
406407

407408
@classmethod
408409
def load(cls, filename):
410+
logging.info('Try load %s', filename)
409411
with Dataset(filename, 'r', format='NETCDF4') as h_nc:
410-
logging.info('load %s', filename)
411412
datasets = list(h_nc.variables['FileIn'][:])
412413
datasets.append(h_nc.variables['FileOut'][-1])
413414

src/scripts/EddyFinalTracking

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ def usage():
2424
parser.add_argument('--path_out',
2525
default='./',
2626
help='Path, where to write file')
27+
parser.add_argument('--filename_model',
28+
default='%(path)s/%(sign_type)s.nc',
29+
help='Model to create file')
2730
parser.add_argument('--nb_obs_min',
2831
type=int,
2932
default=28,
@@ -61,4 +64,4 @@ if __name__ == '__main__':
6164
logging.info('%d tracks will be saved', len(unique(FINAL_EDDIES['track'])))
6265
logging.info('The mean length is %d observations after filtering', CORRESPONDANCES.nb_obs_by_tracks.mean())
6366

64-
FINAL_EDDIES.write_netcdf(path=CONFIG.path_out)
67+
FINAL_EDDIES.write_netcdf(path=CONFIG.path_out, filename=CONFIG.filename_model)

src/scripts/EddyTracking

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,32 +22,43 @@ def usage():
2222
"Tool to use identification step to compute tracking")
2323
parser.add_argument('yaml_file',
2424
help='Yaml file to configure py-eddy-tracker')
25-
parser.add_argument('--filename',
25+
parser.add_argument('--correspondance_in',
26+
help='Filename to save correspondance')
27+
parser.add_argument('--correspondance_out',
2628
help='Filename to save correspondance')
2729
parser.add_argument('--save_correspondance_and_stop',
2830
action='store_true',
2931
help='Stop tracking after correspondance computation,'
3032
' merging can be done with EddyFinalTracking')
33+
parser.add_argument('--blank_period',
34+
type=int,
35+
default=0,
36+
help='Nb of detection which will not use at the end of the period')
3137
args = parser.parse_args()
3238

3339
# Read yaml configuration file
3440
with open(args.yaml_file, 'r') as stream:
3541
config = yaml_load(stream)
36-
return config, args.save_correspondance_and_stop, args.filename
42+
if not exists(args.correspondance_in):
43+
args.correspondance_in = None
44+
return config, args.save_correspondance_and_stop, args.correspondance_in, args.correspondance_out, args.blank_period
3745

3846

3947
if __name__ == '__main__':
40-
CONFIG, SAVE_STOP, CORRESPONDANCES_OUT = usage()
48+
CONFIG, SAVE_STOP, CORRESPONDANCES_IN, CORRESPONDANCES_OUT, BLANK_PERIOD = usage()
4149

4250
# Create output directory
4351
SAVE_DIR = CONFIG['PATHS'].get('SAVE_DIR', None)
4452
if SAVE_DIR is not None and not exists(SAVE_DIR):
4553
mkdir(SAVE_DIR)
4654

55+
YAML_CORRESPONDANCES_IN = CONFIG['PATHS'].get('CORRESPONDANCES_IN', None)
4756
YAML_CORRESPONDANCES_OUT = CONFIG['PATHS'].get('CORRESPONDANCES_OUT', None)
48-
if CORRESPONDANCES_OUT is None and YAML_CORRESPONDANCES_OUT is not None:
57+
if CORRESPONDANCES_IN is None:
58+
CORRESPONDANCES_IN = YAML_CORRESPONDANCES_IN
59+
if CORRESPONDANCES_OUT is None:
4960
CORRESPONDANCES_OUT = YAML_CORRESPONDANCES_OUT
50-
else:
61+
if YAML_CORRESPONDANCES_OUT is None and CORRESPONDANCES_OUT is None:
5162
CORRESPONDANCES_OUT = 'Correspondances.nc'
5263

5364
if 'CLASS' in CONFIG:
@@ -68,14 +79,18 @@ if __name__ == '__main__':
6879
FILENAMES += glob(PATTERN)
6980
FILENAMES.sort()
7081

82+
if BLANK_PERIOD > 0:
83+
FILENAMES = FILENAMES[:-BLANK_PERIOD]
84+
logging.info('Last %d files will be pop', BLANK_PERIOD)
85+
7186
START_TIME = dt.datetime.now()
7287
logging.info('Start tracking on %d files', len(FILENAMES))
7388

7489
CORRESPONDANCES = Correspondances(
7590
datasets=FILENAMES,
7691
virtual=NB_VIRTUAL_OBS_MAX_BY_SEGMENT,
7792
class_method=CLASS,
78-
previous_correspondance=CONFIG['PATHS'].get('CORRESPONDANCES_IN', None))
93+
previous_correspondance=CORRESPONDANCES_IN)
7994

8095
DATE_START, DATE_STOP = CORRESPONDANCES.period
8196
DICT_COMPLETION = dict(date_start=DATE_START, date_stop=DATE_STOP, date_prod=START_TIME)

0 commit comments

Comments
 (0)