diff --git a/Convert_Matlab/overlap.m b/Convert_Matlab/overlap.m index 21508ba0a635f241618cf527bd13bb73cf393590..4de059cba28e0fbc79505067bb4fd25051709b53 100644 --- a/Convert_Matlab/overlap.m +++ b/Convert_Matlab/overlap.m @@ -24,8 +24,9 @@ toc clear disp('Processing Parameters_Anticyclonic_Eddies...') -load('Parameters_Anticyclonic_Eddies.mat', 'Nanti') +load('Parameters_Anticyclonic_Eddies.mat', 'Nanti', 'date_num') save('Nanti', 'Nanti', '-v6') +save('date_num', 'date_num', '-v6') clear disp('Processing Parameters_Cyclonic_Eddies...') diff --git a/Convert_Matlab/overlap_v6.py b/Convert_Matlab/overlap_v6.py index 56769e4251caf03957b1fbccdb198c11cd67ec25..737ee0fab28a0f2f76951603644f2bac253913c7 100755 --- a/Convert_Matlab/overlap_v6.py +++ b/Convert_Matlab/overlap_v6.py @@ -10,11 +10,17 @@ import scipy.io as sio import csv import sys +def adjust_n(n_Matlab): + k_Matlab = (n_Matlab - 1) // e_overestim + k = date_num[k_Matlab] - date_num[0] + return n_Matlab + (k - k_Matlab) * e_overestim + orientation = sys.argv[1] # "cyclo" or "anti" id_child = sio.loadmat(f"id_child_{orientation}.mat", squeeze_me=True)\ ["id_child"] n_eddies = sio.loadmat(f"N{orientation}.mat", squeeze_me = True)\ [f"N{orientation}"].astype(int, casting = "safe", copy = False) +date_num = sio.loadmat("date_num.mat", squeeze_me = True)["date_num"] n_dates = n_eddies.size print("n_dates =", n_dates) e_overestim = id_child.shape[0] @@ -23,17 +29,19 @@ print("e_overestim =", e_overestim) with open(f"edgelist_{orientation}.csv", "w", newline = '') as edgelist: writer = csv.writer(edgelist, delimiter = ' ', lineterminator = "\n") - for k1 in range(n_dates): - for i1, id_child_1 in enumerate(id_child[:n_eddies[k1], k1]): - n1 = k1 * e_overestim + i1 + 1 + for j1 in range(n_dates): + for i1, id_child_1 in enumerate(id_child[:n_eddies[j1], j1]): + n1 = (date_num[j1] - date_num[0]) * e_overestim + i1 + 1 # id_child_1 may be an int, which means there is a single # successor, or id_child_1 may be a numpy array, which means # there are several successors. try: # Try processing id_child_1 as an array: - for n2 in id_child_1: + for n_Matlab in id_child_1: + n2 = adjust_n(n_Matlab) writer.writerow((n1, n2)) except TypeError: # id_child_1 is a scalar int. - writer.writerow((n1, id_child_1)) + n2 = adjust_n(id_child_1) + writer.writerow((n1, n2)) diff --git a/Convert_Matlab/tests.json b/Convert_Matlab/tests.json index 02c990015b31cd10c590c4ebef9f8d6e89eb1be6..3b9e2fa343a5165e125a48139d66b4d49af18587 100644 --- a/Convert_Matlab/tests.json +++ b/Convert_Matlab/tests.json @@ -5,7 +5,8 @@ "required": [ "$src_dir/Convert_Matlab/Eurec4A_OA/id_child_cyclo.mat", - "$src_dir/Convert_Matlab/Eurec4A_OA/Ncyclo.mat" + "$src_dir/Convert_Matlab/Eurec4A_OA/Ncyclo.mat", + "$src_dir/Convert_Matlab/Eurec4A_OA/date_num.mat" ] }, { @@ -14,7 +15,8 @@ "required": [ "$src_dir/Convert_Matlab/Eurec4A_OA/id_child_anti.mat", - "$src_dir/Convert_Matlab/Eurec4A_OA/Nanti.mat" + "$src_dir/Convert_Matlab/Eurec4A_OA/Nanti.mat", + "$src_dir/Convert_Matlab/Eurec4A_OA/date_num.mat" ] }, {