wolfhece 2.0.47__py3-none-any.whl → 2.0.49__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- wolfhece/PyGui.py +207 -19
- wolfhece/PyPalette.py +2 -2
- wolfhece/apps/version.py +1 -1
- wolfhece/eva/pyseries.py +37 -25
- wolfhece/irm_qdf.py +5 -4
- wolfhece/mesh2d/wolf2dprev.py +19 -0
- wolfhece/wolf_array.py +21 -7
- {wolfhece-2.0.47.dist-info → wolfhece-2.0.49.dist-info}/METADATA +1 -1
- {wolfhece-2.0.47.dist-info → wolfhece-2.0.49.dist-info}/RECORD +12 -12
- {wolfhece-2.0.47.dist-info → wolfhece-2.0.49.dist-info}/WHEEL +0 -0
- {wolfhece-2.0.47.dist-info → wolfhece-2.0.49.dist-info}/entry_points.txt +0 -0
- {wolfhece-2.0.47.dist-info → wolfhece-2.0.49.dist-info}/top_level.txt +0 -0
wolfhece/PyGui.py
CHANGED
@@ -8,7 +8,7 @@ import logging
|
|
8
8
|
from pathlib import Path
|
9
9
|
|
10
10
|
from .apps.splashscreen import WolfLauncher
|
11
|
-
from .wolf_array import WOLF_ARRAY_FULL_LOGICAL, WOLF_ARRAY_MB_SINGLE, WolfArray,getkeyblock, WolfArray_Sim2D
|
11
|
+
from .wolf_array import WOLF_ARRAY_FULL_LOGICAL, WOLF_ARRAY_MB_SINGLE, WolfArray, getkeyblock, WolfArray_Sim2D, WOLF_ARRAY_FULL_INTEGER16, WOLF_ARRAY_MB_INTEGER
|
12
12
|
from .PyTranslate import _
|
13
13
|
from .PyDraw import WolfMapViewer,imagetexture
|
14
14
|
|
@@ -409,7 +409,7 @@ class Wolf2DModel(GenMapManager):
|
|
409
409
|
self.myparam = myparam
|
410
410
|
self.myparam.parent = self
|
411
411
|
|
412
|
-
self.mynap= np.ones([self.myparam.nxfin, self.myparam.nyfin], order='F')
|
412
|
+
self.mynap= np.ones([self.myparam.nxfin, self.myparam.nyfin], order='F', dtype=np.int16)
|
413
413
|
|
414
414
|
self.mysuxy = prev_suxsuy(self)
|
415
415
|
self.xyfile = xy_file(self)
|
@@ -543,7 +543,7 @@ class Wolf2DModel(GenMapManager):
|
|
543
543
|
if dir != '':
|
544
544
|
# Either a directory or a file "/_/_/_/dir/simul" for example.
|
545
545
|
|
546
|
-
assert exists(dir) or dirname(dir), f"'{dir}' does
|
546
|
+
assert exists(dir) or dirname(dir), f"'{dir}' does not exists"
|
547
547
|
|
548
548
|
if dir=='':
|
549
549
|
if self.wx_exists:
|
@@ -643,7 +643,7 @@ class Wolf2DModel(GenMapManager):
|
|
643
643
|
('.top','Bed Elevation [m]',WOLF_ARRAY_FULL_SINGLE),
|
644
644
|
('.topini_fine','Bed Elevation - computed [m]',WOLF_ARRAY_FULL_SINGLE),
|
645
645
|
('.frot','Roughness coefficient [law dependent]',WOLF_ARRAY_FULL_SINGLE),
|
646
|
-
('.inf','Infiltration zone [-]',
|
646
|
+
('.inf','Infiltration zone [-]', WOLF_ARRAY_FULL_INTEGER),
|
647
647
|
('.hbin','Initial water depth [m]',WOLF_ARRAY_FULL_SINGLE),
|
648
648
|
('.qxbin','Initial discharge along X [m^2/s]',WOLF_ARRAY_FULL_SINGLE),
|
649
649
|
('.qybin','Initial discharge along Y [m^2/s]',WOLF_ARRAY_FULL_SINGLE)
|
@@ -1146,7 +1146,7 @@ class Wolf2DModel(GenMapManager):
|
|
1146
1146
|
self.myblocfile.my_vec_blocks.find_minmax(True)
|
1147
1147
|
self.myblocfile.write_file()
|
1148
1148
|
|
1149
|
-
def get_header_MB(self,abs=False):
|
1149
|
+
def get_header_MB(self, abs=False):
|
1150
1150
|
"""#> Renvoit un header avec les infos multi-blocs"""
|
1151
1151
|
myheader:header_wolf
|
1152
1152
|
myheader = self.mymnap.get_header(abs=abs)
|
@@ -1154,8 +1154,15 @@ class Wolf2DModel(GenMapManager):
|
|
1154
1154
|
myheader.head_blocks[getkeyblock(curblock.blockindex)] = curblock.get_header(abs=abs)
|
1155
1155
|
return myheader
|
1156
1156
|
|
1157
|
-
def get_header(self,abs=
|
1158
|
-
"""
|
1157
|
+
def get_header(self, abs=False):
|
1158
|
+
"""
|
1159
|
+
Renvoi d'un header de matrice "fine" non MB
|
1160
|
+
|
1161
|
+
@param abs: If True, the header will be absolute, if False, it will be relative
|
1162
|
+
@type abs: bool
|
1163
|
+
|
1164
|
+
@return: header_wolf
|
1165
|
+
"""
|
1159
1166
|
|
1160
1167
|
curhead = header_wolf()
|
1161
1168
|
|
@@ -1165,26 +1172,51 @@ class Wolf2DModel(GenMapManager):
|
|
1165
1172
|
curhead.dx = self.myparam.dxfin
|
1166
1173
|
curhead.dy = self.myparam.dyfin
|
1167
1174
|
|
1168
|
-
|
1169
|
-
|
1175
|
+
if abs:
|
1176
|
+
curhead.origx = self.myparam.xminfin + self.myparam.translx
|
1177
|
+
curhead.origy = self.myparam.yminfin + self.myparam.transly
|
1170
1178
|
|
1171
|
-
|
1172
|
-
|
1179
|
+
curhead.translx = 0.
|
1180
|
+
curhead.transly = 0.
|
1181
|
+
|
1182
|
+
else:
|
1183
|
+
|
1184
|
+
curhead.origx = self.myparam.xminfin
|
1185
|
+
curhead.origy = self.myparam.yminfin
|
1186
|
+
|
1187
|
+
curhead.translx = self.myparam.translx
|
1188
|
+
curhead.transly = self.myparam.transly
|
1173
1189
|
|
1174
1190
|
return curhead
|
1175
1191
|
|
1176
|
-
def read_fine_array(self,which=''):
|
1177
|
-
"""
|
1192
|
+
def read_fine_array(self, which:str=''):
|
1193
|
+
"""
|
1194
|
+
Lecture d'une matrice fine
|
1195
|
+
|
1196
|
+
@param which: suffixe du fichier
|
1197
|
+
@type which: str
|
1198
|
+
"""
|
1178
1199
|
|
1179
|
-
|
1180
|
-
|
1181
|
-
|
1182
|
-
|
1200
|
+
if Path(self.filenamegen + which).exists():
|
1201
|
+
myarray = WolfArray(fname = self.filenamegen + which)
|
1202
|
+
|
1203
|
+
else:
|
1204
|
+
logging.error(f"File {self.filenamegen + which} does not exist")
|
1205
|
+
myarray = None
|
1206
|
+
|
1207
|
+
# myarray.set_header(self.get_header())
|
1208
|
+
# myarray.filename = self.filenamegen+which
|
1209
|
+
# myarray.read_data()
|
1183
1210
|
|
1184
1211
|
return myarray
|
1185
1212
|
|
1186
|
-
def read_MB_array(self,which=''):
|
1187
|
-
"""
|
1213
|
+
def read_MB_array(self, which:str=''):
|
1214
|
+
"""
|
1215
|
+
Lecture d'une matrice MB
|
1216
|
+
|
1217
|
+
@param which: suffixe du fichier
|
1218
|
+
@type which: str
|
1219
|
+
"""
|
1188
1220
|
|
1189
1221
|
myarray =WolfArrayMB()
|
1190
1222
|
myarray.set_header(self.get_header_MB())
|
@@ -1252,3 +1284,159 @@ class Wolf2DModel(GenMapManager):
|
|
1252
1284
|
logging.info(_('Finished !'))
|
1253
1285
|
|
1254
1286
|
pass
|
1287
|
+
|
1288
|
+
@property
|
1289
|
+
def is_multiblock(self):
|
1290
|
+
return self.myblocfile.nb_blocks>1
|
1291
|
+
|
1292
|
+
@property
|
1293
|
+
def nb_blocks(self):
|
1294
|
+
return self.myblocfile.nb_blocks
|
1295
|
+
|
1296
|
+
def help_files(self):
|
1297
|
+
|
1298
|
+
ret= _('Text files\n')
|
1299
|
+
ret+= ('----------\n')
|
1300
|
+
|
1301
|
+
for key, val in self.files_others['Charachteristics']:
|
1302
|
+
ret += f"{val} : {key}\n"
|
1303
|
+
|
1304
|
+
ret +='\n\n'
|
1305
|
+
|
1306
|
+
ret += _('Fine array - monoblock\n')
|
1307
|
+
ret += ('----------------------\n')
|
1308
|
+
|
1309
|
+
for key, val, dtype in self.files_fine_array['Characteristics']:
|
1310
|
+
|
1311
|
+
if dtype == WOLF_ARRAY_FULL_LOGICAL:
|
1312
|
+
ret += f"{val} : {key} [int16]\n"
|
1313
|
+
elif dtype == WOLF_ARRAY_FULL_INTEGER:
|
1314
|
+
ret += f"{val} : {key} [int32]\n"
|
1315
|
+
elif dtype == WOLF_ARRAY_FULL_SINGLE:
|
1316
|
+
ret += f"{val} : {key} [float32]\n"
|
1317
|
+
else:
|
1318
|
+
ret += f"{val} : {key} error - check code\n"
|
1319
|
+
|
1320
|
+
ret +='\n\n'
|
1321
|
+
|
1322
|
+
ret += _('Multiblock arrays\n')
|
1323
|
+
ret += ('-----------------\n')
|
1324
|
+
|
1325
|
+
for key, val, dtype in self.files_MB_array['Initial Conditions']:
|
1326
|
+
|
1327
|
+
if dtype == WOLF_ARRAY_MB_INTEGER:
|
1328
|
+
ret += f"{val} : {key} [int32]\n"
|
1329
|
+
elif dtype == WOLF_ARRAY_MB_SINGLE:
|
1330
|
+
ret += f"{val} : {key} [float32]\n"
|
1331
|
+
else:
|
1332
|
+
ret += f"{val} : {key} error - check code\n"
|
1333
|
+
|
1334
|
+
return ret
|
1335
|
+
|
1336
|
+
def check_infiltration(self):
|
1337
|
+
|
1338
|
+
ret = _('inside .inf binary file') + '\n'
|
1339
|
+
ret += ('-----------------------') + '\n'
|
1340
|
+
|
1341
|
+
inf = self.read_fine_array('.inf')
|
1342
|
+
|
1343
|
+
maxinf = inf.array.data.max()
|
1344
|
+
ret += _('Maximum infiltration zone : ') + str(maxinf) + '\n'
|
1345
|
+
for i in range(1,maxinf+1):
|
1346
|
+
|
1347
|
+
nb = np.sum(inf.array.data == i)
|
1348
|
+
if nb>0:
|
1349
|
+
indices = np.where(inf.array.data == i)
|
1350
|
+
ret += f"Zone {i} : {nb} cells -- Indices (i,j) of the zone's first cell ({indices[0][0]+1} ; {indices[1][0]+1}) (1-based)\n"
|
1351
|
+
else:
|
1352
|
+
ret += f"Zone {i} : 0 cells\n"
|
1353
|
+
|
1354
|
+
ret += '\n'
|
1355
|
+
|
1356
|
+
ret += _('inside .fil text file') + '\n'
|
1357
|
+
ret += ('----------------------') + '\n'
|
1358
|
+
|
1359
|
+
ret += f"Zones {self.myinfil.nb_zones}" + '\n'
|
1360
|
+
ret += f"Time steps {self.myinfil.nb_steps}" + '\n'
|
1361
|
+
|
1362
|
+
if maxinf != self.myinfil.nb_zones:
|
1363
|
+
ret += _('Warning : number of zones in .inf and .fil files are different') + '\n'
|
1364
|
+
|
1365
|
+
return ret
|
1366
|
+
|
1367
|
+
|
1368
|
+
def copy2gpu(self, dirout:str=''):
|
1369
|
+
"""
|
1370
|
+
Copie des matrices pour le code GPU
|
1371
|
+
"""
|
1372
|
+
|
1373
|
+
def to_absolute(array:WolfArray):
|
1374
|
+
array.origx += array.translx
|
1375
|
+
array.origy += array.transly
|
1376
|
+
array.translx = 0.
|
1377
|
+
array.transly = 0.
|
1378
|
+
|
1379
|
+
ret = ''
|
1380
|
+
|
1381
|
+
dirout = Path(dirout)
|
1382
|
+
makedirs(dirout, exist_ok=True)
|
1383
|
+
|
1384
|
+
inf = self.read_fine_array('.inf')
|
1385
|
+
to_absolute(inf)
|
1386
|
+
inf.write_all(dirout / 'infiltration_zones.npy')
|
1387
|
+
del(inf)
|
1388
|
+
|
1389
|
+
ret += '.inf --> infiltration_zones.npy [np.int32]\n'
|
1390
|
+
|
1391
|
+
frot = self.read_fine_array('.frot')
|
1392
|
+
to_absolute(frot)
|
1393
|
+
frot.write_all(dirout / 'manning.npy')
|
1394
|
+
del(frot)
|
1395
|
+
|
1396
|
+
ret += '.frot --> manning.npy [np.float32]\n'
|
1397
|
+
|
1398
|
+
hbin = self.read_fine_array('.hbin')
|
1399
|
+
to_absolute(hbin)
|
1400
|
+
hbin.write_all(dirout / 'h.npy')
|
1401
|
+
del(hbin)
|
1402
|
+
|
1403
|
+
ret += '.hbin --> h.npy [np.float32]\n'
|
1404
|
+
|
1405
|
+
qxbin = self.read_fine_array('.qxbin')
|
1406
|
+
to_absolute(qxbin)
|
1407
|
+
qxbin.write_all(dirout / 'qx.npy')
|
1408
|
+
del(qxbin)
|
1409
|
+
|
1410
|
+
ret += '.qxbin --> qx.npy [np.float32]\n'
|
1411
|
+
|
1412
|
+
qybin = self.read_fine_array('.qybin')
|
1413
|
+
to_absolute(qybin)
|
1414
|
+
qybin.write_all(dirout / 'qy.npy')
|
1415
|
+
del(qybin)
|
1416
|
+
|
1417
|
+
ret += '.qybin --> qy.npy [np.float32]\n'
|
1418
|
+
|
1419
|
+
nap = self.read_fine_array('.napbin')
|
1420
|
+
napgpu = np.zeros_like(nap.array.data, dtype = np.uint8)
|
1421
|
+
napgpu[np.where(nap.array.data != 0)] = 1
|
1422
|
+
np.save(dirout / 'nap.npy', napgpu)
|
1423
|
+
|
1424
|
+
ret += '.napbin --> nap.npy [np.uint8]\n'
|
1425
|
+
|
1426
|
+
top = self.read_fine_array('.top')
|
1427
|
+
to_absolute(top)
|
1428
|
+
top.array.data[np.where(napgpu != 1)] = 99999.
|
1429
|
+
top.nullvalue = 99999.
|
1430
|
+
top.write_all(dirout / 'bathymetry.npy')
|
1431
|
+
|
1432
|
+
ret += '.top --> bathymetry.npy [np.float32]\n'
|
1433
|
+
ret += _('Force a value 99999. outside nap')
|
1434
|
+
|
1435
|
+
nb = np.sum(top.array.data != 99999.)
|
1436
|
+
assert nb == np.sum(napgpu == 1), 'Error in couting active cells'
|
1437
|
+
|
1438
|
+
ret += f'\n{nb} active cells in bathymetry.npy'
|
1439
|
+
|
1440
|
+
del(top)
|
1441
|
+
|
1442
|
+
return ret
|
wolfhece/PyPalette.py
CHANGED
@@ -136,9 +136,9 @@ class wolfpalette(wx.Frame,LinearSegmentedColormap):
|
|
136
136
|
dlg.Destroy()
|
137
137
|
|
138
138
|
if step==0:
|
139
|
-
self.values = np.linspace(self.values[0], self.values[-1], num=self.nb, endpoint=True)
|
139
|
+
self.values = np.linspace(self.values[0], self.values[-1], num=self.nb, endpoint=True)[0:self.nb]
|
140
140
|
else:
|
141
|
-
self.values = np.arange(self.values[0], self.values[0]+(self.nb)*step, step)
|
141
|
+
self.values = np.arange(self.values[0], self.values[0]+(self.nb)*step, step)[0:self.nb]
|
142
142
|
|
143
143
|
self.fill_segmentdata()
|
144
144
|
|
wolfhece/apps/version.py
CHANGED
wolfhece/eva/pyseries.py
CHANGED
@@ -298,6 +298,8 @@ class EVA_Serie:
|
|
298
298
|
else:
|
299
299
|
raise Exception('Format non supported -- Please code your importing filter')
|
300
300
|
|
301
|
+
self.check_dupliactes()
|
302
|
+
|
301
303
|
self.nb = self.data.shape[0]
|
302
304
|
|
303
305
|
self.index_isnan = np.where(np.isnan(self.data))[0]
|
@@ -341,6 +343,17 @@ class EVA_Serie:
|
|
341
343
|
|
342
344
|
self.tz_info = self.data.index[0].tz
|
343
345
|
|
346
|
+
def check_dupliactes(self):
|
347
|
+
"""
|
348
|
+
Check if there are duplicates in the data
|
349
|
+
"""
|
350
|
+
if not self.data.index.is_unique:
|
351
|
+
print('****\n')
|
352
|
+
print('Non unique index detected - removing duplicates - keep first value\n')
|
353
|
+
print(self.data.index[self.data.index.duplicated()])
|
354
|
+
print('****\n\n')
|
355
|
+
self.data = self.data[~self.data.index.duplicated(keep='first')]
|
356
|
+
|
344
357
|
def filter(self):
|
345
358
|
"""
|
346
359
|
Set zero, negative, NaN, Nat to np.nan
|
@@ -349,7 +362,7 @@ class EVA_Serie:
|
|
349
362
|
if len(curindex)>0:
|
350
363
|
self.data.iloc[curindex]=np.nan
|
351
364
|
|
352
|
-
def get_date_max(self, year, seasons=None) -> list
|
365
|
+
def get_date_max(self, year, seasons=None) -> list:
|
353
366
|
"""
|
354
367
|
Récupère la date du maximum de l'année "year"
|
355
368
|
Possibilité de traiter plusieurs saisons
|
@@ -365,7 +378,7 @@ class EVA_Serie:
|
|
365
378
|
resdates.append((self.maxima[curseason]['date'][idx], curseason))
|
366
379
|
return resdates
|
367
380
|
|
368
|
-
def get_one_maxevent(self, year, seasons=None) -> list
|
381
|
+
def get_one_maxevent(self, year, seasons=None) -> list:
|
369
382
|
"""
|
370
383
|
Récupération de l'événement max pour une année spécifique
|
371
384
|
Possibilité de traiter plusieurs saisons
|
@@ -431,7 +444,6 @@ class EVA_Serie:
|
|
431
444
|
def save_max_events(self, filename, years_bounds:list=None, seasons=None):
|
432
445
|
"""
|
433
446
|
Enregistrement des crues maximales dans un fichier CSV
|
434
|
-
Un onglet par saison
|
435
447
|
"""
|
436
448
|
seasons = sanitize_seasons(seasons)
|
437
449
|
|
@@ -1238,7 +1250,7 @@ class EVA_Serie:
|
|
1238
1250
|
fig:Figure=None,
|
1239
1251
|
ax:Axes=None,
|
1240
1252
|
color:str='red',
|
1241
|
-
alpha=1.) -> tuple
|
1253
|
+
alpha=1.) -> tuple[Figure,Axes]:
|
1242
1254
|
"""
|
1243
1255
|
Plot median hydrograph scale by constant
|
1244
1256
|
"""
|
@@ -1265,7 +1277,7 @@ class EVA_Serie:
|
|
1265
1277
|
k+=1
|
1266
1278
|
|
1267
1279
|
|
1268
|
-
def plot_classified_flowrate_curve(self, fig:Figure=None, ax:Axes=None, label='', textvalues=True, show=False) -> tuple
|
1280
|
+
def plot_classified_flowrate_curve(self, fig:Figure=None, ax:Axes=None, label='', textvalues=True, show=False) -> tuple[Figure,Axes]:
|
1269
1281
|
|
1270
1282
|
if ax is None:
|
1271
1283
|
fig,ax = plt.subplots(1,1)
|
@@ -1367,7 +1379,7 @@ class EVA_Serie:
|
|
1367
1379
|
if show:
|
1368
1380
|
plt.show()
|
1369
1381
|
|
1370
|
-
def plot_ci(self, seasons=None, laws=['GEV'], methods=['MLE'], fig:Figure=None, ax:Axes=None, show=False, alpha=.1) -> tuple
|
1382
|
+
def plot_ci(self, seasons=None, laws=['GEV'], methods=['MLE'], fig:Figure=None, ax:Axes=None, show=False, alpha=.1) -> tuple[Figure,Axes]:
|
1371
1383
|
"""
|
1372
1384
|
Plotting confidence interval
|
1373
1385
|
"""
|
@@ -1419,7 +1431,7 @@ class EVA_Serie:
|
|
1419
1431
|
|
1420
1432
|
return (fig,ax)
|
1421
1433
|
|
1422
|
-
def plot_annual(self, years=None, hydrol=True, fig:Figure=None, ax:Axes=None, show=False, withdatemax=True) -> tuple
|
1434
|
+
def plot_annual(self, years=None, hydrol=True, fig:Figure=None, ax:Axes=None, show=False, withdatemax=True) -> tuple[Figure,Axes]:
|
1423
1435
|
"""
|
1424
1436
|
Tracé en superposition des différentes années sur l'emprise d'une année civile ou hydrologique
|
1425
1437
|
"""
|
@@ -1483,7 +1495,7 @@ class EVA_Serie:
|
|
1483
1495
|
|
1484
1496
|
return (fig,ax)
|
1485
1497
|
|
1486
|
-
def plot_serie(self, fig:Figure=None, ax:Axes=None, show=False, background=True, backcolor='lemonchiffon') -> tuple
|
1498
|
+
def plot_serie(self, fig:Figure=None, ax:Axes=None, show=False, background=True, backcolor='lemonchiffon') -> tuple[Figure,Axes]:
|
1487
1499
|
"""Tracé de l'ensemble de la série pour toutes les années"""
|
1488
1500
|
if fig is None and ax is None:
|
1489
1501
|
fig,ax = plt.subplots(1,1)
|
@@ -1510,7 +1522,7 @@ class EVA_Serie:
|
|
1510
1522
|
|
1511
1523
|
return (fig,ax)
|
1512
1524
|
|
1513
|
-
def plot_cdf(self, seasons=None, fig:Figure=None, ax:Axes=None, show=False, n_bins=100) -> tuple
|
1525
|
+
def plot_cdf(self, seasons=None, fig:Figure=None, ax:Axes=None, show=False, n_bins=100) -> tuple[Figure,Axes]:
|
1514
1526
|
"""
|
1515
1527
|
Plotting empirical cdf
|
1516
1528
|
"""
|
@@ -1537,7 +1549,7 @@ class EVA_Serie:
|
|
1537
1549
|
|
1538
1550
|
return (fig,ax)
|
1539
1551
|
|
1540
|
-
def plot_T_Qmaxima(self, seasons=None, empirical_func='Cunnane', fig:Figure=None, ax:Axes=None, show=False, alpha=1., color_marker_label=None) -> tuple
|
1552
|
+
def plot_T_Qmaxima(self, seasons=None, empirical_func='Cunnane', fig:Figure=None, ax:Axes=None, show=False, alpha=1., color_marker_label=None) -> tuple[Figure,Axes]:
|
1541
1553
|
"""
|
1542
1554
|
Plotting Q vs return period
|
1543
1555
|
"""
|
@@ -1600,7 +1612,7 @@ class EVA_Serie:
|
|
1600
1612
|
|
1601
1613
|
return (fig,ax)
|
1602
1614
|
|
1603
|
-
def plot_maxevents(self, seasons=None, before=1, after=2, adim=True, fig:Figure=None, ax:Axes=None, show=False, alpha=.2, nbevents=None) -> tuple
|
1615
|
+
def plot_maxevents(self, seasons=None, before=1, after=2, adim=True, fig:Figure=None, ax:Axes=None, show=False, alpha=.2, nbevents=None) -> tuple[Figure,Axes]:
|
1604
1616
|
"""
|
1605
1617
|
Tracé des événements/hydrogrammes associés aux maxima identifiés
|
1606
1618
|
Les ordonnées sont adimensionnaliées sur base de la valeur maximale
|
@@ -1692,7 +1704,7 @@ class EVA_Serie:
|
|
1692
1704
|
|
1693
1705
|
return (fig,ax)
|
1694
1706
|
|
1695
|
-
def plot_comp_maxevents(self, seasons=None, before=1, after=2, fig:Figure=None, ax:Axes=None, show=False, alpha=.2, nbevents=None) -> tuple
|
1707
|
+
def plot_comp_maxevents(self, seasons=None, before=1, after=2, fig:Figure=None, ax:Axes=None, show=False, alpha=.2, nbevents=None) -> tuple[Figure,Axes]:
|
1696
1708
|
"""
|
1697
1709
|
Tracé des événements médians
|
1698
1710
|
Les ordonnées sont adimensionnaliées sur base de la valeur maximale
|
@@ -1781,7 +1793,7 @@ class EVA_Serie:
|
|
1781
1793
|
fig:Figure=None,
|
1782
1794
|
ax:Axes=None,
|
1783
1795
|
show=False,
|
1784
|
-
alpha=.2) -> tuple
|
1796
|
+
alpha=.2) -> tuple[Figure,Axes]:
|
1785
1797
|
"""
|
1786
1798
|
Tracé d'un événement quelconque autour d'une date
|
1787
1799
|
"""
|
@@ -1825,7 +1837,7 @@ class EVA_Serie:
|
|
1825
1837
|
fig:Figure=None,
|
1826
1838
|
ax:Axes=None,
|
1827
1839
|
show=False,
|
1828
|
-
alpha=.2) -> tuple
|
1840
|
+
alpha=.2) -> tuple[Figure,Axes]:
|
1829
1841
|
"""
|
1830
1842
|
Tracé d'un événement spécifique associés au maxima identifié
|
1831
1843
|
Les ordonnées sont adimensionnaliées sur base de la valeur maximale
|
@@ -1875,7 +1887,7 @@ class EVA_Serie:
|
|
1875
1887
|
ax:Axes=None,
|
1876
1888
|
show=False,
|
1877
1889
|
alpha=1.,
|
1878
|
-
styles:dict=None) -> tuple
|
1890
|
+
styles:dict=None) -> tuple[Figure,Axes]:
|
1879
1891
|
"""
|
1880
1892
|
Plotting fitted models
|
1881
1893
|
"""
|
@@ -1969,7 +1981,7 @@ class EVA_Serie:
|
|
1969
1981
|
|
1970
1982
|
return (fig,ax)
|
1971
1983
|
|
1972
|
-
def plot_qq(self, seasons=None, laws=['GEV'], methods=['MLE'], fig:Figure=None, ax:Axes=None) -> tuple
|
1984
|
+
def plot_qq(self, seasons=None, laws=['GEV'], methods=['MLE'], fig:Figure=None, ax:Axes=None) -> tuple[Figure,Axes]:
|
1973
1985
|
"""
|
1974
1986
|
Q-Q Plot
|
1975
1987
|
|
@@ -2011,7 +2023,7 @@ class EVA_Serie:
|
|
2011
2023
|
ax.legend()
|
2012
2024
|
return(fig, ax)
|
2013
2025
|
|
2014
|
-
def plot_summary(self, seasons=None, nb_laws=None, forced_laws=[], sort:typing.Literal['RSS', 'AICc', 'AIC', 'BIC']='RSS', fig:Figure=None, ax:Axes=None, show=False) -> tuple
|
2026
|
+
def plot_summary(self, seasons=None, nb_laws=None, forced_laws=[], sort:typing.Literal['RSS', 'AICc', 'AIC', 'BIC']='RSS', fig:Figure=None, ax:Axes=None, show=False) -> tuple[Figure,Axes]:
|
2015
2027
|
"""Plot summary results.
|
2016
2028
|
|
2017
2029
|
Parameters
|
@@ -2202,7 +2214,7 @@ class EVA_Series:
|
|
2202
2214
|
ax:Axes=None,
|
2203
2215
|
show=False,
|
2204
2216
|
alpha=1.,
|
2205
|
-
color_marker_label=None) -> tuple
|
2217
|
+
color_marker_label=None) -> tuple[Figure,Axes]:
|
2206
2218
|
|
2207
2219
|
return self._current_serie.plot_T_Qmaxima(seasons, empirical_func, fig, ax, show, alpha, color_marker_label)
|
2208
2220
|
|
@@ -2214,7 +2226,7 @@ class EVA_Series:
|
|
2214
2226
|
ax:Axes=None,
|
2215
2227
|
show=False,
|
2216
2228
|
alpha=1.,
|
2217
|
-
styles:dict=None) -> tuple
|
2229
|
+
styles:dict=None) -> tuple[Figure,Axes]:
|
2218
2230
|
|
2219
2231
|
return self._current_serie.plot_fit(seasons, laws, methods, fig, ax, show, alpha, styles)
|
2220
2232
|
|
@@ -2437,7 +2449,7 @@ class EVA_Series:
|
|
2437
2449
|
|
2438
2450
|
return plots
|
2439
2451
|
|
2440
|
-
def evaluate_ci(self, seasons=None, durations=[1], laws=['GEV'], nboot=100, show=False) -> dict
|
2452
|
+
def evaluate_ci(self, seasons=None, durations=[1], laws=['GEV'], nboot=100, show=False) -> dict:
|
2441
2453
|
"""
|
2442
2454
|
Intervalles de confiance
|
2443
2455
|
|
@@ -2468,7 +2480,7 @@ class EVA_Series:
|
|
2468
2480
|
|
2469
2481
|
return figax
|
2470
2482
|
|
2471
|
-
def evaluate_ic(self, seasons=None, durations=[1], laws=['GEV'], nboot=100, show=False) -> dict
|
2483
|
+
def evaluate_ic(self, seasons=None, durations=[1], laws=['GEV'], nboot=100, show=False) -> dict:
|
2472
2484
|
""" alias evaluate_ci """
|
2473
2485
|
return self.evaluate_ci(seasons, durations, laws, nboot, show)
|
2474
2486
|
|
@@ -2561,7 +2573,7 @@ class EVA_Series:
|
|
2561
2573
|
ylim=None,
|
2562
2574
|
before = 1,
|
2563
2575
|
after = 3,
|
2564
|
-
show=False) -> tuple
|
2576
|
+
show=False) -> tuple[Figure, Axes, Axes]:
|
2565
2577
|
"""
|
2566
2578
|
################
|
2567
2579
|
## GRAPHIQUES ##
|
@@ -2600,7 +2612,7 @@ class EVA_Series:
|
|
2600
2612
|
ylim=None,
|
2601
2613
|
before = 1,
|
2602
2614
|
after=2,
|
2603
|
-
show=False) -> tuple
|
2615
|
+
show=False) -> tuple[Figure, Axes]:
|
2604
2616
|
"""
|
2605
2617
|
################
|
2606
2618
|
## GRAPHIQUES ##
|
@@ -2661,7 +2673,7 @@ class EVA_Series:
|
|
2661
2673
|
|
2662
2674
|
def plot_one_fit(self, seasons=None, durations=None, laws='popular',
|
2663
2675
|
split_duration=True, split_season=True, xbounds=None,
|
2664
|
-
ybounds=None, show=False) -> tuple
|
2676
|
+
ybounds=None, show=False) -> tuple[Figure, Axes]:
|
2665
2677
|
|
2666
2678
|
seasons = sanitize_seasons(seasons)
|
2667
2679
|
|
@@ -2752,7 +2764,7 @@ class EVA_Series:
|
|
2752
2764
|
return summary
|
2753
2765
|
|
2754
2766
|
def plot_selected_max(self, seasons=None, durations=None,
|
2755
|
-
split_seasons = False, scaling=False, show=False)-> tuple
|
2767
|
+
split_seasons = False, scaling=False, show=False)-> tuple[Figure, Axes]:
|
2756
2768
|
"""
|
2757
2769
|
Graphique des dates des événements sélectionnés pour chaque durée (par défaut, toutes les durées)
|
2758
2770
|
"""
|
wolfhece/irm_qdf.py
CHANGED
@@ -167,18 +167,19 @@ class Qdf_IRM():
|
|
167
167
|
|
168
168
|
Exemple d'utilisation :
|
169
169
|
|
170
|
-
|
171
|
-
|
170
|
+
Pour importer les fichiers depuis le site web de l'IRM meteo.be
|
171
|
+
from wolfhece.irm_qdf import Qdf_IRM
|
172
172
|
qdf = Qdf_IRM(force_import=True)
|
173
173
|
|
174
174
|
Il est possible de spécifier le répertoire de stockage des fichiers Excel
|
175
175
|
Par défaut, il s'agit d'un sous-répertoire 'irm' du répertoire courant qui sera créé s'il n'exsiste pas
|
176
176
|
|
177
|
-
Une fois importé, il est possible de charger une commune sur base de l'INS ou de son nom
|
177
|
+
Une fois importé/téléchargé, il est possible de charger une commune sur base de l'INS ou de son nom
|
178
178
|
|
179
|
-
myqdf =
|
179
|
+
myqdf = Qdf_IRM(name='Jalhay')
|
180
180
|
|
181
181
|
Les données sont ensuite disponibles dans les propriétés, qui sont des "dataframes" pandas (https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html) :
|
182
|
+
|
182
183
|
- qdf : les relation Quantité/durée/fréquence
|
183
184
|
- standarddev : l'écart-type de l'erreur
|
184
185
|
- confintlow : la valeur inférieure de l'intervalle de confiance (-2*stddev)
|
wolfhece/mesh2d/wolf2dprev.py
CHANGED
@@ -3029,6 +3029,25 @@ class prev_sim2D():
|
|
3029
3029
|
('.qybin','Initial discharge along Y [m^2/s]',WOLF_ARRAY_FULL_SINGLE)
|
3030
3030
|
]}
|
3031
3031
|
|
3032
|
+
self.files_others={'Generic file':[
|
3033
|
+
('','First parametric file - historical'),
|
3034
|
+
('.par','Parametric file - multiblocks')],
|
3035
|
+
'Charachteristics':[
|
3036
|
+
('.fil','Infiltration hydrographs [m³/s]'),
|
3037
|
+
('.mnap','Resulting mesh [-]'),
|
3038
|
+
('.trl','Translation to real world [m]')
|
3039
|
+
]}
|
3040
|
+
|
3041
|
+
self.files_vectors={'Block file':[
|
3042
|
+
('.bloc','Blocks geometry')],
|
3043
|
+
'Borders':[
|
3044
|
+
('.sux','X borders'),
|
3045
|
+
('.suy','Y borders')],
|
3046
|
+
'Contour':[
|
3047
|
+
('.xy','General perimeter')
|
3048
|
+
]}
|
3049
|
+
|
3050
|
+
|
3032
3051
|
def get_header(self):
|
3033
3052
|
curhead = header_wolf()
|
3034
3053
|
|
wolfhece/wolf_array.py
CHANGED
@@ -71,6 +71,7 @@ WOLF_ARRAY_FULL_INTEGER8 = 8
|
|
71
71
|
WOLF_ARRAY_MB_SINGLE = 3
|
72
72
|
WOLF_ARRAY_MB_INTEGER = 9
|
73
73
|
|
74
|
+
WOLF_ARRAY_FULL_INTEGER16_2 = 0
|
74
75
|
WOLF_ARRAY_FULL_INTEGER16 = 11
|
75
76
|
WOLF_ARRAY_MNAP_INTEGER = 20
|
76
77
|
|
@@ -156,7 +157,14 @@ class header_wolf():
|
|
156
157
|
ret += _(' - Origin : ({} ; {}) \n').format(self.origx, self.origy)
|
157
158
|
ret += _(' - End : ({} ; {}) \n').format(self.origx + self.nbx * self.dx, self.origy +self.nby * self.dy)
|
158
159
|
ret += _(' - Widht x Height : {} x {} \n').format(self.nbx * self.dx, self.nby * self.dy)
|
159
|
-
ret += _('
|
160
|
+
ret += _(' - Translation : ({} ; {})\n').format(self.translx, self.transly)
|
161
|
+
ret += _('Null value : {}\n\n'.format(self.nullvalue))
|
162
|
+
|
163
|
+
if len(self.head_blocks) > 0:
|
164
|
+
ret += _('Number of blocks : {}\n\n').format(len(self.head_blocks))
|
165
|
+
for key, value in self.head_blocks.items():
|
166
|
+
ret += _('Block {} : \n\n').format(key)
|
167
|
+
ret += str(value)
|
160
168
|
|
161
169
|
return ret
|
162
170
|
|
@@ -697,7 +705,7 @@ class header_wolf():
|
|
697
705
|
:param forceupdate : if True, the file is rewritten even if it already exists
|
698
706
|
"""
|
699
707
|
|
700
|
-
assert wolftype in [WOLF_ARRAY_CSR_DOUBLE, WOLF_ARRAY_FULL_SINGLE, WOLF_ARRAY_FULL_DOUBLE, WOLF_ARRAY_SYM_DOUBLE, WOLF_ARRAY_FULL_LOGICAL, WOLF_ARRAY_CSR_DOUBLE, WOLF_ARRAY_FULL_INTEGER, WOLF_ARRAY_FULL_SINGLE_3D, WOLF_ARRAY_FULL_INTEGER8, WOLF_ARRAY_MB_SINGLE, WOLF_ARRAY_MB_INTEGER, WOLF_ARRAY_FULL_INTEGER16, WOLF_ARRAY_MNAP_INTEGER]
|
708
|
+
assert wolftype in [WOLF_ARRAY_CSR_DOUBLE, WOLF_ARRAY_FULL_SINGLE, WOLF_ARRAY_FULL_DOUBLE, WOLF_ARRAY_SYM_DOUBLE, WOLF_ARRAY_FULL_LOGICAL, WOLF_ARRAY_CSR_DOUBLE, WOLF_ARRAY_FULL_INTEGER, WOLF_ARRAY_FULL_SINGLE_3D, WOLF_ARRAY_FULL_INTEGER8, WOLF_ARRAY_MB_SINGLE, WOLF_ARRAY_MB_INTEGER, WOLF_ARRAY_FULL_INTEGER16, WOLF_ARRAY_MNAP_INTEGER, WOLF_ARRAY_FULL_INTEGER16_2], _('The type of array is not correct')
|
701
709
|
|
702
710
|
if not os.path.exists(filename) or forceupdate:
|
703
711
|
with open(filename,'w') as f:
|
@@ -2458,6 +2466,9 @@ class SelectionData():
|
|
2458
2466
|
logging.error(_('Selection {} does not exist').format(which))
|
2459
2467
|
return ''
|
2460
2468
|
|
2469
|
+
if len(curlist) == 0:
|
2470
|
+
return ''
|
2471
|
+
|
2461
2472
|
for cur in curlist:
|
2462
2473
|
txt += str(cur[0]) + '\t' + str(cur[1]) + '\n'
|
2463
2474
|
|
@@ -2487,6 +2498,9 @@ class SelectionData():
|
|
2487
2498
|
logging.error(_('Selection {} does not exist').format(which))
|
2488
2499
|
return ''
|
2489
2500
|
|
2501
|
+
if len(curlist) == 0:
|
2502
|
+
return ''
|
2503
|
+
|
2490
2504
|
txt += '# For boundary conditions :\n'
|
2491
2505
|
for cur in curlist:
|
2492
2506
|
i,j = self.parent.get_ij_from_xy(cur[0], cur[1], aswolf=True)
|
@@ -3608,7 +3622,7 @@ class WolfArray(Element_To_Draw, header_wolf):
|
|
3608
3622
|
dtype = np.float32
|
3609
3623
|
elif self.wolftype in [WOLF_ARRAY_FULL_INTEGER, WOLF_ARRAY_MB_INTEGER, WOLF_ARRAY_MNAP_INTEGER]:
|
3610
3624
|
dtype = np.int32
|
3611
|
-
elif self.wolftype
|
3625
|
+
elif self.wolftype in [WOLF_ARRAY_FULL_INTEGER16, WOLF_ARRAY_FULL_INTEGER16_2]:
|
3612
3626
|
dtype = np.int16
|
3613
3627
|
elif self.wolftype == WOLF_ARRAY_FULL_INTEGER8:
|
3614
3628
|
dtype = np.int8
|
@@ -4618,7 +4632,7 @@ class WolfArray(Element_To_Draw, header_wolf):
|
|
4618
4632
|
dtype = np.float32
|
4619
4633
|
elif self.wolftype == WOLF_ARRAY_FULL_INTEGER:
|
4620
4634
|
dtype = np.int32
|
4621
|
-
elif self.wolftype
|
4635
|
+
elif self.wolftype in [WOLF_ARRAY_FULL_INTEGER16, WOLF_ARRAY_FULL_INTEGER16_2]:
|
4622
4636
|
dtype = np.int16
|
4623
4637
|
|
4624
4638
|
self.dx = myhead.dx
|
@@ -5435,7 +5449,7 @@ class WolfArray(Element_To_Draw, header_wolf):
|
|
5435
5449
|
elif self.wolftype == WOLF_ARRAY_FULL_INTEGER:
|
5436
5450
|
locarray = np.frombuffer(f.read(self.nbx * self.nby * 4), dtype=np.int32)
|
5437
5451
|
self.array = ma.masked_array(locarray.copy(), dtype=np.int32)
|
5438
|
-
elif self.wolftype
|
5452
|
+
elif self.wolftype in [WOLF_ARRAY_FULL_INTEGER16, WOLF_ARRAY_FULL_INTEGER16_2]:
|
5439
5453
|
locarray = np.frombuffer(f.read(self.nbx * self.nby * 2), dtype=np.int16)
|
5440
5454
|
self.array = ma.masked_array(locarray.copy(), dtype=np.int16)
|
5441
5455
|
|
@@ -5565,7 +5579,7 @@ class WolfArray(Element_To_Draw, header_wolf):
|
|
5565
5579
|
if self.array is None:
|
5566
5580
|
return
|
5567
5581
|
|
5568
|
-
if self.wolftype in [WOLF_ARRAY_FULL_INTEGER, WOLF_ARRAY_FULL_INTEGER16]:
|
5582
|
+
if self.wolftype in [WOLF_ARRAY_FULL_INTEGER, WOLF_ARRAY_FULL_INTEGER16, WOLF_ARRAY_FULL_INTEGER16_2]:
|
5569
5583
|
value=int(value)
|
5570
5584
|
|
5571
5585
|
if value is not None:
|
@@ -6423,7 +6437,7 @@ class WolfArrayMB(WolfArray):
|
|
6423
6437
|
def mask_data(self, value):
|
6424
6438
|
""" Mask cells where values are equal to `value`"""
|
6425
6439
|
|
6426
|
-
if self.wolftype in [WOLF_ARRAY_FULL_INTEGER, WOLF_ARRAY_FULL_INTEGER16]:
|
6440
|
+
if self.wolftype in [WOLF_ARRAY_FULL_INTEGER, WOLF_ARRAY_FULL_INTEGER16, WOLF_ARRAY_FULL_INTEGER16_2]:
|
6427
6441
|
value=int(value)
|
6428
6442
|
|
6429
6443
|
if value is not None:
|
@@ -7,10 +7,10 @@ wolfhece/Model1D.py,sha256=-cMz-ePSYzrKVVDidiDOz6cojEZ3y6u9gIb7RPwT6Y8,476593
|
|
7
7
|
wolfhece/PyConfig.py,sha256=oGSL1WsLM9uinlNP4zGBLK3uHPmBfduUi7R-VtWuRFA,8034
|
8
8
|
wolfhece/PyCrosssections.py,sha256=f4dNYRUGZKePruaaBiTcn5vlrw8TFTj9XwTDrdiF_uU,112450
|
9
9
|
wolfhece/PyDraw.py,sha256=Zz2pcBUGA7s3FURP-4CPdoBqENtSrf-RLH1o-xZ6qrA,343578
|
10
|
-
wolfhece/PyGui.py,sha256=
|
10
|
+
wolfhece/PyGui.py,sha256=LZtmQuEa0p-67iYyvLHJRK8uBs1zKmA3UqDzejWogy8,59795
|
11
11
|
wolfhece/PyGuiHydrology.py,sha256=wKhR-KthPRyzJ887NmsozmUpm2CIQIwO3IbYORCYjrE,7290
|
12
12
|
wolfhece/PyHydrographs.py,sha256=GKK8U0byI45H9O_e4LAOOi7Aw0Tg7Q0Lx322stPg5IQ,3453
|
13
|
-
wolfhece/PyPalette.py,sha256=
|
13
|
+
wolfhece/PyPalette.py,sha256=SYKYx_vxF_FVuceLhcIqFQsivGD6EoO_Xu-EGN9Ivko,22252
|
14
14
|
wolfhece/PyParams.py,sha256=-0cax_Db6kFTe46BAgT24Ga2Xyp2Dm3gpuI-5uUSMxw,84758
|
15
15
|
wolfhece/PyPictures.py,sha256=-mJB0JL2YYiEK3D7_ssDkvYiMWK4ve9kXhozQXNeSx8,2216
|
16
16
|
wolfhece/PyTranslate.py,sha256=4appkmNeHHZLFmUtaA_k5_5QL-5ymxnbVN4R2OblmtE,622
|
@@ -32,7 +32,7 @@ wolfhece/friction_law.py,sha256=vMr6BgVVV2JqhPDjBtZBtosDIZcbykZxw-fKxiJzd4M,5200
|
|
32
32
|
wolfhece/gpuview.py,sha256=Lq17jV2ytQShUuvi1UE_A1-6Q0IojsKxrKhkYHRf_8w,23437
|
33
33
|
wolfhece/import_ascfiles.py,sha256=jg4urcLdSgFS1Knvh7AVGJqM44qc_uYDNrR568tMh-A,4167
|
34
34
|
wolfhece/ins.py,sha256=0aU1mo4tYbw64Gwzrqbh-NCTH1tukmk0mpPHjRPHZXU,12661
|
35
|
-
wolfhece/irm_qdf.py,sha256=
|
35
|
+
wolfhece/irm_qdf.py,sha256=749SlAXiN1oXp5tfBJoPNJWxydQlY55K0qvIM5YexlM,15436
|
36
36
|
wolfhece/ismember.py,sha256=fkLvaH9fhx-p0QrlEzqa6ySO-ios3ysjAgXVXzLgSpY,2482
|
37
37
|
wolfhece/multiprojects.py,sha256=AMwEQZqo1Twh6tSPP-4L29-Fa8cI9d6dWce7l88awws,14675
|
38
38
|
wolfhece/picc.py,sha256=KKPNk1BEe7QBzo2icIsdsxUopJ1LXYTomfdfeG2gCeA,7419
|
@@ -48,7 +48,7 @@ wolfhece/rain_SPWMI.py,sha256=YqsF-yFro3y_a6MfVRFfr-Rxi7NR1gl_i8VX7scmzes,13548
|
|
48
48
|
wolfhece/test_Results2DGPU.py,sha256=NOJ_hFXrcLSQXS1dtsqXRQltqIZtDSHMz_EgAJ2_FHU,307
|
49
49
|
wolfhece/textpillow.py,sha256=zEfLrKhfCDyMaVuQOUjHqz6MGKeQ4aewMxOsWi5-wKI,13832
|
50
50
|
wolfhece/tools_mpl.py,sha256=q8Yc4aukPPiUcEzREvZRM_em67XqXaahdoaNt0DETfE,266
|
51
|
-
wolfhece/wolf_array.py,sha256=
|
51
|
+
wolfhece/wolf_array.py,sha256=ZdiL2UngJ3gpxu0in36bXqDXAFkNXfXgoNKlYshe5qI,288379
|
52
52
|
wolfhece/wolf_hist.py,sha256=JpRXvzJLUP-RkSkvth3DQWglgTMFI2ZEUDb4RYOfeeI,3284
|
53
53
|
wolfhece/wolf_texture.py,sha256=llQ7aV8scWXIkhpri9XjaPejzoBJsGfsln2ZnlRbFkU,16270
|
54
54
|
wolfhece/wolf_tiles.py,sha256=F2JsJHdAP8fIffNJdG_J26bonCIRtIwMmxKFqdSCRDA,10088
|
@@ -66,7 +66,7 @@ wolfhece/apps/check_install.py,sha256=jrKR-njqnpIh6ZJqvP6KbDUPVCfwTNQj4glQhcyzs9
|
|
66
66
|
wolfhece/apps/curvedigitizer.py,sha256=avWERHuVxPnJBOD_ibczwW_XG4vAenqWS8W1zjhBox8,4898
|
67
67
|
wolfhece/apps/isocurrent.py,sha256=4XnNWPa8mYUK7V4zdDRFrHFIXNG2AN2og3TqWKKcqjY,3811
|
68
68
|
wolfhece/apps/splashscreen.py,sha256=m9hMTqzhSUcTudApyNNjoAK9e2u5vgEkJVV79xmfM1s,2118
|
69
|
-
wolfhece/apps/version.py,sha256=
|
69
|
+
wolfhece/apps/version.py,sha256=tejIrO28wyVtzgDMOfulj8-lCo6fAuZLVAHNwyLgfLM,388
|
70
70
|
wolfhece/apps/wolf.py,sha256=gqfm-ZaUJqNsfCzmdtemSeqLw-GVdSVix-evg5WArJI,293
|
71
71
|
wolfhece/apps/wolf2D.py,sha256=gWD9ee2-1pw_nUxjgRaJMuSe4kUT-RWhOeoTt_Lh1mM,267
|
72
72
|
wolfhece/apps/wolf_logo.bmp,sha256=ruJ4MA51CpGO_AYUp_dB4SWKHelvhOvd7Q8NrVOjDJk,3126
|
@@ -83,7 +83,7 @@ wolfhece/eva/bootstrap.py,sha256=xHbIAZzFuaKLwiRpgvsLi5OZYqwaxYACqsAU-FnB6Pc,605
|
|
83
83
|
wolfhece/eva/hydrogramme_mono.py,sha256=uZFIgJJ-JogMFzt7D7OnyVaHvgxCQJPZz9W9FgnuthA,8138
|
84
84
|
wolfhece/eva/joint_models.py,sha256=KTal-jVJmeEWXPQ5mKyT032q186Drz3IFdc60daz-t0,5565
|
85
85
|
wolfhece/eva/mixture_models.py,sha256=WRzGxE2rQ-RkQUskL6IlSeUqEWlAeezJrNhkr0QpeOI,15923
|
86
|
-
wolfhece/eva/pyseries.py,sha256=
|
86
|
+
wolfhece/eva/pyseries.py,sha256=Oz2QCPGrbebAwQL1Vl-kc4t1OkzS-pCuj5rZwDGEJ-I,118536
|
87
87
|
wolfhece/fonts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
88
88
|
wolfhece/fonts/arial.ttf,sha256=uwYWwXEZKaG6axcVPiDDM0MXLgf40xAQmMwR8BSShSY,37496
|
89
89
|
wolfhece/fonts/helvetica.ttf,sha256=X4Zd3zdUmuRGMLE6UB-BMIbirpdK3Ia5czfNnuSx5P8,317968
|
@@ -211,7 +211,7 @@ wolfhece/mesh2d/bc_manager.py,sha256=vSVogXy1x3A6fZKWA6mPZSGX2e3EAUVmEjD9Bgww_hU
|
|
211
211
|
wolfhece/mesh2d/cell_tracker.py,sha256=AR-Bty-QnrY1ni8Lwak2kU2UWMAJSBCF2ugl2YpfsB4,8660
|
212
212
|
wolfhece/mesh2d/config_manager.py,sha256=vrxLku4isZJTxbHOACEEIEEjQB9pkLpaVPteJz9GhnE,14417
|
213
213
|
wolfhece/mesh2d/cst_2D_boundary_conditions.py,sha256=BaJeKHyJiKEFWBkTQeYsDBW86703ooj65MFVpPMgjLg,2810
|
214
|
-
wolfhece/mesh2d/wolf2dprev.py,sha256=
|
214
|
+
wolfhece/mesh2d/wolf2dprev.py,sha256=q-5dwegcBjNy2IAn511Uuktnl8zt3cTtSowardpml2g,137113
|
215
215
|
wolfhece/models/HECE_169.pptx,sha256=OWJtsWz504A-REFaaxw8lwStHyQU2l7KEeiE7IZvtbk,3396930
|
216
216
|
wolfhece/models/blue.pal,sha256=NnjJnjnYVdQkG54RyPXvo4Tl9ytB0cN7zpiHtj1N6bw,33
|
217
217
|
wolfhece/models/diff16.pal,sha256=Pkp9kQ1GvmAKz3lgwohsw8eQySjVVKHbjhoWw-gZ6Nc,303
|
@@ -256,8 +256,8 @@ wolfhece/sounds/sonsw2.wav,sha256=pFLVt6By0_EPQNt_3KfEZ9a1uSuYTgQSX1I_Zurv9Rc,11
|
|
256
256
|
wolfhece/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
257
257
|
wolfhece/ui/wolf_multiselection_collapsiblepane.py,sha256=yGbU_JsF56jsmms0gh7mxa7tbNQ_SxqhpAZxhm-mTy4,14860
|
258
258
|
wolfhece/ui/wolf_times_selection_comparison_models.py,sha256=wCxGRnE3kzEkWlWA6-3X8ADOFux_B0a5QWJ2GnXTgJw,4709
|
259
|
-
wolfhece-2.0.
|
260
|
-
wolfhece-2.0.
|
261
|
-
wolfhece-2.0.
|
262
|
-
wolfhece-2.0.
|
263
|
-
wolfhece-2.0.
|
259
|
+
wolfhece-2.0.49.dist-info/METADATA,sha256=yvh37UvJwhh4d8FQvjpMLs2A9VYIMcuQRNmD02fszi8,2233
|
260
|
+
wolfhece-2.0.49.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
261
|
+
wolfhece-2.0.49.dist-info/entry_points.txt,sha256=AIu1KMswrdsqNq_2jPtrRIU4tLjuTnj2dCY-pxIlshw,276
|
262
|
+
wolfhece-2.0.49.dist-info/top_level.txt,sha256=EfqZXMVCn7eILUzx9xsEu2oBbSo9liWPFWjIHik0iCI,9
|
263
|
+
wolfhece-2.0.49.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|