wolfhece 2.1.13__py3-none-any.whl → 2.1.15__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/picc.py CHANGED
@@ -33,6 +33,9 @@ class Picc_data(Element_To_Draw):
33
33
  self.cloud = None
34
34
  self._colors = {'Habitation': [255, 0, 0], 'Annexe': [0, 255, 0], 'Culture, sport ou loisir': [0, 0, 255], 'Autre': [10, 10, 10]}
35
35
 
36
+ self.active_vector = None
37
+ self.active_zone = None
38
+
36
39
  return None
37
40
 
38
41
  def read_data(self, data_dir:Path = None, bbox:Union[Polygon, list[float]] = None, colorize:bool = True) -> None:
@@ -74,8 +77,9 @@ class Picc_data(Element_To_Draw):
74
77
 
75
78
  try:
76
79
  self.data_dir = Path(pathname).parent
80
+ data_dir = self.data_dir
77
81
  self._filename_vector = Path(pathname).name
78
- self.zones = Zones(pathname, bbox = bbox, mapviewer=self.mapviewer)
82
+ self.zones = Zones(pathname, bbox = bbox, mapviewer=self.mapviewer, parent=self)
79
83
  self.zones.prep_listogl()
80
84
  except:
81
85
  logging.error(_('File not found : {}').format(pathname))
@@ -88,9 +92,10 @@ class Picc_data(Element_To_Draw):
88
92
  pathname = dirDialog.GetPath()
89
93
 
90
94
  try:
91
- self.data_dir = Path(pathname)
95
+ self.data_dir = Path(pathname).parent
96
+ data_dir = self.data_dir
92
97
  self._filename_vector = ''
93
- self.zones = Zones(self.data_dir, bbox = bbox, mapviewer=self.mapviewer)
98
+ self.zones = Zones(pathname, bbox = bbox, mapviewer=self.mapviewer, parent=self)
94
99
  self.zones.prep_listogl()
95
100
 
96
101
  except:
@@ -100,7 +105,7 @@ class Picc_data(Element_To_Draw):
100
105
  pointfile = data_dir / self._filename_points
101
106
 
102
107
  if pointfile.exists():
103
- self.cloud = cloud_vertices(data_dir / self._filename_points, bbox = bbox)
108
+ self.cloud = cloud_vertices(data_dir / self._filename_points, bbox = bbox, mapviewer=self.mapviewer)
104
109
  self.cloud.myprop.width = 3
105
110
  self.cloud.myprop.color = getIfromRGB([0, 0, 255])
106
111
  else:
@@ -168,6 +173,32 @@ class Picc_data(Element_To_Draw):
168
173
  else:
169
174
  logging.warning(_('No cloud properties to show !'))
170
175
 
176
+ def Active_vector(self, vector_to_activate:vector):
177
+ """ Activate a vector """
178
+
179
+ self.active_vector = vector_to_activate
180
+ self.active_zone = vector_to_activate.parentzone
181
+
182
+ if self.mapviewer is not None:
183
+ self.mapviewer.Active_vector(vector_to_activate)
184
+
185
+ else:
186
+ logging.warning(_('No mapviewer to activate vector !'))
187
+
188
+ def Active_zone(self, zone_to_activate:zone):
189
+ """ Activate a zone """
190
+
191
+ self.active_zone = zone_to_activate
192
+
193
+ if len(zone_to_activate.myvectors) > 0:
194
+ self.active_vector = zone_to_activate.myvectors[0]
195
+
196
+ if self.mapviewer is not None:
197
+ self.mapviewer.Active_vector(self.active_vector)
198
+
199
+ else:
200
+ logging.warning(_('No mapviewer to activate zone !'))
201
+
171
202
  class Cadaster_data(Picc_data):
172
203
  """ Read and show cadaster data """
173
204
 
wolfhece/wolf_array.py CHANGED
@@ -348,11 +348,13 @@ class header_wolf():
348
348
  """
349
349
  Get indices from coordinates
350
350
 
351
- :param xy = numpy array containing (x, y, [z]) coordinates
351
+ :param xy = numpy array containing (x, y, [z]) coordinates - shape (n, 2) or (n, 3)
352
352
  :param scale = scaling of the spatial resolution (dx,dy,[dz])
353
353
  :param aswolf = if True, return if one-based (as Wolf VB6 or Fortran), otherwise 0-based (default Python standard)
354
354
  :param abs = if True, remove translation from (x, y, [z]) (coordinate from global space)
355
355
  :param forcedims2 = if True, force to return only 2 indices even if z is supplied
356
+
357
+ :return : numpy array containing (i, j, [k]) indices - shape (n, 2) or (n, 3)
356
358
  """
357
359
 
358
360
  locxy = xy.copy()
@@ -494,24 +496,47 @@ class header_wolf():
494
496
  """ alias for get_xy_from_ij """
495
497
  return self.get_xy_from_ij(i, j, k, scale, aswolf, abs)
496
498
 
497
- def ij2xy(self, ij:np.ndarray, scale:float=1., aswolf:bool=False, abs:bool=True) -> np.ndarray:
498
- """ alias for get_xy_from_ij_array """
499
+ def ij2xy_np(self, ij:np.ndarray, scale:float=1., aswolf:bool=False, abs:bool=True) -> np.ndarray:
500
+ """ alias for get_xy_from_ij_array
501
+
502
+ :param ij = numpy array containing (i, j, [k]) indices
503
+ :param scale = scaling of the spatial resolution (dx,dy,[dz])
504
+ :param aswolf = if True, input is one-based (as Wolf VB6 or Fortran), otherwise 0-based (default Python standard)
505
+ :param abs = if True, add translation to results (x, y, [z]) (coordinate to global space)
506
+
507
+ ..warning: 'ij' is not the result of np.where() but if you want to use np.where() you can use the following code:
508
+ ```
509
+ np.vstack((ij[0], ij[1])).T
510
+ ```
511
+
512
+ :return : numpy array containing (x, y, [z]) coordinates - shape (n, 2) or (n, 3)
513
+ """
499
514
  return self.get_xy_from_ij_array(ij, scale, aswolf, abs)
500
515
 
501
516
  def xy2ij(self, x:float, y:float, z:float=0., scale:float=1., aswolf:bool=False, abs:bool=True, forcedims2:bool=False) -> Union[tuple[np.int32,np.int32], tuple[np.int32,np.int32,np.int32]]:
502
517
  """ alias for get_ij_from_xy """
503
518
  return self.get_ij_from_xy(x, y, z, scale, aswolf, abs, forcedims2)
504
519
 
505
- def xy2ij(self, xy:np.ndarray, scale:float=1., aswolf:bool=False, abs:bool=True) -> np.ndarray:
506
- """ alias for get_xy_from_ij_array """
520
+ def xy2ij_np(self, xy:np.ndarray, scale:float=1., aswolf:bool=False, abs:bool=True) -> np.ndarray:
521
+ """
522
+ alias for get_ij_from_xy_array
523
+
524
+ :param xy = numpy array containing (x, y, [z]) coordinates - shape (n, 2) or (n, 3)
525
+ :param scale = scaling of the spatial resolution (dx,dy,[dz])
526
+ :param aswolf = if True, return if one-based (as Wolf VB6 or Fortran), otherwise 0-based (default Python standard)
527
+ :param abs = if True, remove translation from (x, y, [z]) (coordinate from global space)
528
+ :param forcedims2 = if True, force to return only 2 indices even if z is supplied
529
+
530
+ :return : numpy array containing (i, j, [k]) indices - shape (n, 2) or (n, 3)
531
+ """
507
532
  return self.get_xy_from_ij_array(xy, scale, aswolf, abs)
508
533
 
509
- def xyz2ijk(self, xyz:np.ndarray, scale:float=1., aswolf:bool=False, abs:bool=True) -> np.ndarray:
534
+ def xyz2ijk_np(self, xyz:np.ndarray, scale:float=1., aswolf:bool=False, abs:bool=True) -> np.ndarray:
510
535
  """ alias for get_xy_from_ij_array """
511
536
  assert xyz.shape[1] == 3, _('xyz must be a 2D array with 3 columns')
512
537
  return self.get_xy_from_ij_array(xyz, scale, aswolf, abs)
513
538
 
514
- def ijk2xyz(self, ijk:np.ndarray, scale:float=1., aswolf:bool=False, abs:bool=True) -> np.ndarray:
539
+ def ijk2xyz_np(self, ijk:np.ndarray, scale:float=1., aswolf:bool=False, abs:bool=True) -> np.ndarray:
515
540
  """ alias for get_xy_from_ij_array """
516
541
  assert ijk.shape[1] == 3, _('ijk must be a 2D array with 3 columns')
517
542
  return self.get_xy_from_ij_array(ijk, scale, aswolf, abs)
@@ -653,7 +678,7 @@ class header_wolf():
653
678
 
654
679
  else:
655
680
  if not os.path.exists(filename + '.txt'):
656
- logging.info(_('File {} does not exist -- Retry!'.format(filename + '.txt')))
681
+ logging.info(_('File {} does not exist -- Maybe be a parameter.json exists or retry !'.format(filename + '.txt')))
657
682
  return
658
683
 
659
684
  with open(filename + '.txt', 'r') as f:
@@ -2961,6 +2986,89 @@ class SelectionData():
2961
2986
 
2962
2987
  self.update_nb_nodes_selection()
2963
2988
 
2989
+ def dilate_selection(self, nb_iterations:int, use_mask:bool = True, structure:np.ndarray = None):
2990
+ """ Extend the selection """
2991
+
2992
+ if self.myselection == 'all':
2993
+ logging.info(_('Cannot extend selection when all nodes are selected'))
2994
+ return
2995
+
2996
+ if len(self.myselection) == 0:
2997
+ logging.info(_('No nodes selected'))
2998
+ return
2999
+
3000
+ if nb_iterations < 1:
3001
+ logging.info(_('Number of iterations must be greater than 0'))
3002
+ return
3003
+
3004
+ if self.parent.array is None:
3005
+ logging.info(_('No array to select from'))
3006
+ return
3007
+
3008
+ from scipy import ndimage
3009
+
3010
+ xy = self.myselection
3011
+ ij = [self.parent.get_ij_from_xy(x, y) for x, y in xy]
3012
+
3013
+ selected = np.zeros(self.parent.array.shape, dtype=bool)
3014
+ for i, j in ij:
3015
+ selected[i, j] = True
3016
+
3017
+ selected = ndimage.binary_dilation(selected,
3018
+ iterations=nb_iterations,
3019
+ mask=~self.parent.array.mask if use_mask else None,
3020
+ structure=structure)
3021
+
3022
+ ij = np.argwhere(selected)
3023
+ ij = np.vstack([ij[:, 0], ij[:, 1]]).T
3024
+ xy = self.parent.ij2xy_np(ij)
3025
+
3026
+ self.myselection = xy.tolist()
3027
+
3028
+ self.update_nb_nodes_selection()
3029
+
3030
+ def erode_selection(self, nb_iterations:int, use_mask:bool = True, structure:np.ndarray = None):
3031
+ """ Reduce the selection """
3032
+
3033
+ if self.myselection == 'all':
3034
+ logging.info(_('Cannot reduce selection when all nodes are selected'))
3035
+ return
3036
+
3037
+ if len(self.myselection) == 0:
3038
+ logging.info(_('No nodes selected'))
3039
+ return
3040
+
3041
+ if nb_iterations < 1:
3042
+ logging.info(_('Number of iterations must be greater than 0'))
3043
+ return
3044
+
3045
+ if self.parent.array is None:
3046
+ logging.info(_('No array to select from'))
3047
+ return
3048
+
3049
+ from scipy import ndimage
3050
+
3051
+ xy = self.myselection
3052
+ ij = [self.parent.get_ij_from_xy(x, y) for x, y in xy]
3053
+
3054
+ selected = np.zeros(self.parent.array.shape, dtype=bool)
3055
+
3056
+ for i, j in ij:
3057
+ selected[i, j] = True
3058
+
3059
+ selected = ndimage.binary_erosion(selected,
3060
+ iterations=nb_iterations,
3061
+ mask=~self.parent.array.mask if use_mask else None,
3062
+ structure=structure)
3063
+
3064
+ ij = np.argwhere(selected)
3065
+ ij = np.vstack([ij[:, 0], ij[:, 1]]).T
3066
+ xy = self.parent.ij2xy_np(ij)
3067
+
3068
+ self.myselection = xy.tolist()
3069
+
3070
+ self.update_nb_nodes_selection()
3071
+
2964
3072
  def update_nb_nodes_selection(self):
2965
3073
  """ Update the number of selected nodes """
2966
3074
 
@@ -2969,21 +3077,23 @@ class SelectionData():
2969
3077
  else:
2970
3078
  nb = len(self.myselection)
2971
3079
 
2972
- if nb > 10000:
2973
- if not self.hideselection:
2974
- self.update_plot_selection = False # on met par défaut à False car OpenGL va demander une MAJ de l'affichage le temps que l'utilisateur réponde
2975
- dlg = wx.MessageDialog(None,
2976
- 'Large selection !!' + str(nb) + '\n Do you want plot the selected cells?',
2977
- style=wx.YES_NO)
2978
- ret = dlg.ShowModal()
2979
- if ret == wx.ID_YES:
2980
- self.update_plot_selection = True
2981
- else:
2982
- self.update_plot_selection = False
2983
- self.hideselection = True
2984
- dlg.Destroy()
2985
- else:
2986
- self.update_plot_selection = True
3080
+ self.update_plot_selection = True
3081
+ if self.wx_exists:
3082
+ if nb > 10000:
3083
+ if not self.hideselection:
3084
+ self.update_plot_selection = False # on met par défaut à False car OpenGL va demander une MAJ de l'affichage le temps que l'utilisateur réponde
3085
+ dlg = wx.MessageDialog(None,
3086
+ 'Large selection !!' + str(nb) + '\n Do you want plot the selected cells?',
3087
+ style=wx.YES_NO)
3088
+ ret = dlg.ShowModal()
3089
+ if ret == wx.ID_YES:
3090
+ self.update_plot_selection = True
3091
+ else:
3092
+ self.update_plot_selection = False
3093
+ self.hideselection = True
3094
+ dlg.Destroy()
3095
+ else:
3096
+ self.update_plot_selection = True
2987
3097
 
2988
3098
  if nb>0:
2989
3099
  if self.myselection=='all':
@@ -4458,10 +4568,13 @@ class WolfArray(Element_To_Draw, header_wolf):
4458
4568
  arr=self.array
4459
4569
  if arr.dtype == np.float32:
4460
4570
  arr_type = gdal.GDT_Float32
4571
+ nullvalue = self.nullvalue
4461
4572
  elif arr.dtype == np.float64:
4462
4573
  arr_type = gdal.GDT_Float64
4574
+ nullvalue = self.nullvalue
4463
4575
  else:
4464
4576
  arr_type = gdal.GDT_Int32
4577
+ nullvalue = int(self.nullvalue)
4465
4578
 
4466
4579
  driver: gdal.Driver
4467
4580
  out_ds: gdal.Dataset
@@ -4481,7 +4594,7 @@ class WolfArray(Element_To_Draw, header_wolf):
4481
4594
  -self.dy])
4482
4595
 
4483
4596
  band = out_ds.GetRasterBand(1)
4484
- band.SetNoDataValue(self.nullvalue)
4597
+ band.SetNoDataValue(nullvalue)
4485
4598
  band.WriteArray(np.flipud(arr.data.transpose()))
4486
4599
  band.FlushCache()
4487
4600
  band.ComputeStatistics(True)
@@ -4587,6 +4700,9 @@ class WolfArray(Element_To_Draw, header_wolf):
4587
4700
  self.wolftype = WOLF_ARRAY_FULL_SINGLE
4588
4701
  elif self.array.dtype == np.int32:
4589
4702
  self.wolftype = WOLF_ARRAY_FULL_INTEGER
4703
+ elif self.array.dtype == np.uint8:
4704
+ self.array = self.array.astype(np.int32)
4705
+ self.wolftype = WOLF_ARRAY_FULL_INTEGER8
4590
4706
 
4591
4707
  self.mask_data(self.nullvalue)
4592
4708
 
@@ -5372,6 +5488,7 @@ class WolfArray(Element_To_Draw, header_wolf):
5372
5488
  """
5373
5489
 
5374
5490
  sel = np.asarray(xy)
5491
+ z = np.asarray(z)
5375
5492
 
5376
5493
  if len(sel) == 1:
5377
5494
  ijall = np.asarray(self.get_ij_from_xy(sel[0, 0], sel[0, 1])).transpose()
@@ -6089,9 +6206,9 @@ class WolfArray(Element_To_Draw, header_wolf):
6089
6206
  logging.warning(_('No data file : ')+self.filename)
6090
6207
  return
6091
6208
 
6092
- if self.filename.endswith('.tif'):
6209
+ if self.filename.endswith('.tif') or self.filename.endswith('.tiff'):
6093
6210
  self.import_geotif(which= which_band, crop = self.cropini)
6094
- self.mask_data(self.nullvalue)
6211
+ # self.mask_data(self.nullvalue)
6095
6212
  self.loaded = True
6096
6213
  elif self.filename.endswith('.npy'):
6097
6214
  # Numpy format
@@ -6207,7 +6324,7 @@ class WolfArray(Element_To_Draw, header_wolf):
6207
6324
  self.write_txt_header()
6208
6325
  self.write_array()
6209
6326
 
6210
- def rebin(self, factor:float, operation:Literal['mean', 'sum']='mean') -> None:
6327
+ def rebin(self, factor:float, operation:Literal['mean', 'sum', 'min']='mean') -> None:
6211
6328
  """
6212
6329
  Change resolution - in place
6213
6330
 
@@ -6216,7 +6333,7 @@ class WolfArray(Element_To_Draw, header_wolf):
6216
6333
  If you want to keep current data, copy the WolfArray into a new variable -> newWA = Wolfarray(mold=curWA)
6217
6334
  """
6218
6335
  operation = operation.lower()
6219
- if not operation in ['sum', 'mean']:
6336
+ if not operation in ['sum', 'mean', 'min']:
6220
6337
  raise ValueError("Operator not supported.")
6221
6338
 
6222
6339
  if np.mod(self.nbx,factor) != 0 or np.mod(self.nby,factor) != 0 :
@@ -6692,8 +6809,11 @@ class WolfArray(Element_To_Draw, header_wolf):
6692
6809
  return newWolfArray
6693
6810
 
6694
6811
  def extend(self, x_ext:int, y_ext:int):
6812
+ """
6813
+ Extend the array
6695
6814
 
6696
- # crop is the opposite
6815
+ Crop is the opposite
6816
+ """
6697
6817
 
6698
6818
  assert x_ext >= 0 and y_ext >= 0
6699
6819
  assert self.nbdims == 2, "Only 2D arrays are supported"
@@ -6851,6 +6971,11 @@ class WolfArray(Element_To_Draw, header_wolf):
6851
6971
  if self.array is None:
6852
6972
  return
6853
6973
 
6974
+ if self.wolftype != WOLF_ARRAY_FULL_SINGLE:
6975
+ self._tmp_float32 = self.array.astype(dtype=np.float32)
6976
+ else:
6977
+ self._tmp_float32 = None
6978
+
6854
6979
  if self.mypal.automatic:
6855
6980
  if onzoom != []:
6856
6981
  self.mypal.isopop(self.get_working_array(onzoom), self.nbnotnullzoom)
@@ -7062,10 +7187,10 @@ class WolfArray(Element_To_Draw, header_wolf):
7062
7187
  if self.wolftype != WOLF_ARRAY_FULL_SINGLE:
7063
7188
  if self.nbnotnull != self.nbx * self.nby:
7064
7189
  if self.nbnotnull > 0:
7065
- wolfogl.addme(self.array.astype(dtype=np.float32), self.rgb, ox, oy, dx, dy, jstart,
7190
+ wolfogl.addme(self._tmp_float32, self.rgb, ox, oy, dx, dy, jstart,
7066
7191
  jend, istart, iend, cursize, self.nullvalue, self.alpha)
7067
7192
  elif self.nbnotnull > 0:
7068
- wolfogl.addmeall(self.array.astype(dtype=np.float32), self.rgb, ox, oy, dx, dy, jstart,
7193
+ wolfogl.addmeall(self._tmp_float32, self.rgb, ox, oy, dx, dy, jstart,
7069
7194
  jend, istart, iend, cursize, self.nullvalue, self.alpha)
7070
7195
  else:
7071
7196
  if self.nbnotnull != self.nbx * self.nby:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: wolfhece
3
- Version: 2.1.13
3
+ Version: 2.1.15
4
4
  Author-email: Pierre Archambeau <pierre.archambeau@uliege.be>
5
5
  License: AGPL-v3 License
6
6
  Project-URL: Homepage, https://uee.uliege.be/hece
@@ -6,16 +6,16 @@ wolfhece/ManageParams.py,sha256=Wgt5Zh7QBtyiwTAltPHunSLqt4XuVuRH76GTUrXabS4,219
6
6
  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
- wolfhece/PyDraw.py,sha256=JA_tGLF5LbhAK3565bKR32pI-Nvg3nLbxRoQhRGuf1Y,379054
10
- wolfhece/PyGui.py,sha256=7p4ecrrODTggH8Oz4GTg4rWk6Z3vhYH4GNAE4TL3VY8,102058
9
+ wolfhece/PyDraw.py,sha256=Kfu3uoxwP6ZK9LqE5Br-GBex_bSS6k4F3tfsK-qIZvU,379565
10
+ wolfhece/PyGui.py,sha256=fqy8f3tLt7myJskVvspTQ_ZO7kaiSNKmcfFLrfr4w7M,103174
11
11
  wolfhece/PyGuiHydrology.py,sha256=wKhR-KthPRyzJ887NmsozmUpm2CIQIwO3IbYORCYjrE,7290
12
12
  wolfhece/PyHydrographs.py,sha256=GKK8U0byI45H9O_e4LAOOi7Aw0Tg7Q0Lx322stPg5IQ,3453
13
13
  wolfhece/PyPalette.py,sha256=Vl5RrBIC_a5-mZKUtBd5kG0mif946B7OtS3fnehkmOc,25012
14
- wolfhece/PyParams.py,sha256=xUmtwna4rhTCqa3-fpq7bG5pxMpoa4PFRi5hEjxOxPw,96868
14
+ wolfhece/PyParams.py,sha256=V1Pe4rsBpWBA5kI5rRG7B5ijPHAdpM1i2uyxhnrwX94,96896
15
15
  wolfhece/PyPictures.py,sha256=-mJB0JL2YYiEK3D7_ssDkvYiMWK4ve9kXhozQXNeSx8,2216
16
16
  wolfhece/PyTranslate.py,sha256=4appkmNeHHZLFmUtaA_k5_5QL-5ymxnbVN4R2OblmtE,622
17
17
  wolfhece/PyVertex.py,sha256=dHTjyYYTn0F_NWerlAOBKHV79RUzEEtMJMldQtVc1Cs,40092
18
- wolfhece/PyVertexvectors.py,sha256=fp5iCndmybEJij-n_SUrv-Q_Zm3RYn2BwYvPiZuCUwk,223514
18
+ wolfhece/PyVertexvectors.py,sha256=C0uB7MTUeNB3XNxf1R98epvcqoLJIlExvI1zwom48jA,223945
19
19
  wolfhece/PyWMS.py,sha256=t6jVZpTxTNSLJxABk8A79cEMWTKoRM_S_SXRipsHLzw,4493
20
20
  wolfhece/RatingCurve.py,sha256=YSQvSvdMHE6hSlWVBF5Oe0-Fh3waNMpOdmcymaCCTis,21706
21
21
  wolfhece/RatingCurveData.py,sha256=5UvnIm89BwqjnEbLCcY3CA8WoFd_xHJbooNy62fX5iY,57660
@@ -35,7 +35,7 @@ wolfhece/ins.py,sha256=0aU1mo4tYbw64Gwzrqbh-NCTH1tukmk0mpPHjRPHZXU,12661
35
35
  wolfhece/irm_qdf.py,sha256=749SlAXiN1oXp5tfBJoPNJWxydQlY55K0qvIM5YexlM,15436
36
36
  wolfhece/ismember.py,sha256=fkLvaH9fhx-p0QrlEzqa6ySO-ios3ysjAgXVXzLgSpY,2482
37
37
  wolfhece/multiprojects.py,sha256=K40kM09xNkQSjiwANTsA4CpaW7KEkawpBkpoiehk9yo,21251
38
- wolfhece/picc.py,sha256=KKPNk1BEe7QBzo2icIsdsxUopJ1LXYTomfdfeG2gCeA,7419
38
+ wolfhece/picc.py,sha256=UCWX1Y6Xb-iviI4qF-MgBSDZDWQn_tlKNfKRBUY75ow,8504
39
39
  wolfhece/pyGui1D.py,sha256=pzLWXQ_w3Y_yI846w1GklFO9h5lWZOqiUzg1BUPkuRI,121616
40
40
  wolfhece/pybridges.py,sha256=4PRSsWngDmQnlVuN2tJj0C_HT1h47ExH9QTUPs_Wxlg,57215
41
41
  wolfhece/pydike.py,sha256=G4jfSZaAHHr4VWEJqnXSvEswXvlOz1yhbhQ6uu3AqyM,1943
@@ -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=003bWiCVDjfkCGEDp1ZRZd4xVtufYuGiAK7sC9VJycY,330960
51
+ wolfhece/wolf_array.py,sha256=vf3S7vIdN0ziYtpHSyQRCjwneQCKlGOdCYpZE3xQcLk,335853
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=LkEVMK0eCc84NeCWD3CGja7fuQ_k1PrZdyqD3GQk_8c,2118
69
- wolfhece/apps/version.py,sha256=a9eiwDNszu93f8vdAjTr999YFaeZRJGnUP8ygnLdzJg,388
69
+ wolfhece/apps/version.py,sha256=X3iLT7rB3ADIv1WPZzMTWmvsIohdaLhJ_J-11OkQy6U,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
@@ -91,26 +91,26 @@ wolfhece/eva/joint_models.py,sha256=KTal-jVJmeEWXPQ5mKyT032q186Drz3IFdc60daz-t0,
91
91
  wolfhece/eva/mixture_models.py,sha256=WRzGxE2rQ-RkQUskL6IlSeUqEWlAeezJrNhkr0QpeOI,15923
92
92
  wolfhece/eva/pyseries.py,sha256=Oz2QCPGrbebAwQL1Vl-kc4t1OkzS-pCuj5rZwDGEJ-I,118536
93
93
  wolfhece/fonts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
94
- wolfhece/fonts/arial.ttf,sha256=uwYWwXEZKaG6axcVPiDDM0MXLgf40xAQmMwR8BSShSY,37496
94
+ wolfhece/fonts/arial.ttf,sha256=lXZrWPfYabD6LPbm_rJsGyHN8mMfHFhj_JvSBtXG6O4,915212
95
95
  wolfhece/fonts/helvetica.ttf,sha256=X4Zd3zdUmuRGMLE6UB-BMIbirpdK3Ia5czfNnuSx5P8,317968
96
96
  wolfhece/fonts/sanserif.ttf,sha256=Nvv5eMgTl5-bWgV37B7E1-vZpAZPNJwjtJSzMNDrl9A,42696
97
97
  wolfhece/ftp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
98
98
  wolfhece/ftp/downloader.py,sha256=NANzxSzdcp25dFMYin5QA9UnFexNe6-W2AqqTzUE4f4,5223
99
- wolfhece/hydrology/Catchment.py,sha256=j4ggD0FQn04s9thXYHB-HiOx3tkvTmwt8R5QSgwNDlE,135112
100
- wolfhece/hydrology/Comparison.py,sha256=vO9ogoZA8qzG57pg1AdHNL9HWgCCY8-5wqPyCgj1ucg,82209
99
+ wolfhece/hydrology/Catchment.py,sha256=QGTgdt6HQ9ZVzsROdebzZaabZGlgdCh9sQI_soDAL2I,139051
100
+ wolfhece/hydrology/Comparison.py,sha256=FC7syHzczIWERM7AxZWKlak2vbzKuXt2x5XiPYyzUY8,83810
101
101
  wolfhece/hydrology/Dumping.py,sha256=GKYvkKgCfJQT1XEF1ceh7evdhlpZRPcuf6VlBdH-TaM,2085
102
- wolfhece/hydrology/Optimisation.py,sha256=kpfR-krMRzANU96Mn4H2kroIuEmMWns8quEnLSFGB8E,138736
102
+ wolfhece/hydrology/Optimisation.py,sha256=JD72GXAWL6fwagCrCVb0qMEFuYvUlO1vDigteV4EIuA,142220
103
103
  wolfhece/hydrology/Outlet.py,sha256=fpetH2ZKnTKIBNuVclxrncc5OAxWUGI5_ed9gXh6fD4,10201
104
104
  wolfhece/hydrology/PostProcessHydrology.py,sha256=SiW5FIf8FeQL9ItWG8ODt612k5m59aogSLgpsXinr8I,6944
105
- wolfhece/hydrology/PyWatershed.py,sha256=gSCEz7W38fnTNyjBYgiepUbZbluCDSGIpzTMNDVzXPc,74277
106
- wolfhece/hydrology/RetentionBasin.py,sha256=UZiHvygNEMfNdaK49CX3y8jzqwkThwwniS9ob1BTECs,71505
107
- wolfhece/hydrology/SubBasin.py,sha256=4qpvPi41R9gmKDzyJA_S77k953w2FknnsP2ZSRZQstE,169754
105
+ wolfhece/hydrology/PyWatershed.py,sha256=NO2f4XVA8JxW06ysUhlAN4VYVlv3oCqhhyQ8BeTC7d4,92823
106
+ wolfhece/hydrology/RetentionBasin.py,sha256=cV-Rn-Ya7vWHnkl6pHcQ8GFx5HX-wM7uHI4_Zry-kks,82605
107
+ wolfhece/hydrology/SubBasin.py,sha256=b5RawgPmfVWUJhkv-nEVSbdN3ytIxpov7kjBSvMrd1c,171159
108
108
  wolfhece/hydrology/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
109
109
  wolfhece/hydrology/constant.py,sha256=nRn4IuQ1FZakQtS6z9IpVHeudMfU_7KQ66LCxY6NX4k,1227
110
110
  wolfhece/hydrology/cst_exchanges.py,sha256=u0Bs4SBOjgp6n6xuKusHvUCI0abeiEIUpBZRr11RExg,17569
111
111
  wolfhece/hydrology/data_treatment.py,sha256=oCoG1xhUra0GtKnCCJ5s9E0DXoZ3MuUOn2Y0Lq5cEH8,34649
112
112
  wolfhece/hydrology/forcedexchanges.py,sha256=WPIhAHBfnPLornxbImrvdqMI0tKO7ERHrLrHWJ6YRUY,1941
113
- wolfhece/hydrology/plot_hydrology.py,sha256=A3fvICvnNW24uuWfPI5-zV8iMjGTbDh6H6dZtTOUFWQ,32592
113
+ wolfhece/hydrology/plot_hydrology.py,sha256=3Qn_on3ca0IdCSclcZhVPNowQMI0DjRcn8wSDE2loyA,34604
114
114
  wolfhece/hydrology/read.py,sha256=tTU-zCDJ9aI859XTc99R0WhOSZS2q7IZXhRNCpeRqqo,9010
115
115
  wolfhece/hydrology/slope_manager.py,sha256=uZzq7Ba3RMbZL5LPaxdCpkgTVNBAUJs1X_d2sQqHkUs,5262
116
116
  wolfhece/hydrology/wolfMap_treatment.py,sha256=5LO49yj1M-s9sGaK0hVgMtuT3t1yPJq9wd6LDh-GXaA,10288
@@ -163,7 +163,7 @@ wolfhece/lazviewer/viewer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJW
163
163
  wolfhece/lazviewer/viewer/viewer.exe,sha256=pF5nwE8vMWlEzkk-SOekae9zpOsPhTWhZbqaJntumJc,202240
164
164
  wolfhece/lazviewer/viewer/viewer.py,sha256=8_MQCaQOS0Z_oRPiGoRy1lq-aCirReX3hWEBjQID0ig,24665
165
165
  wolfhece/libs/MSVCP140.dll,sha256=2GrBWBI6JFuSdZLIDMAg_qKcjErdwURGbEYloAypx3o,565640
166
- wolfhece/libs/WolfDll.dll,sha256=3--r0CVWTsb_st6oMf0AyP6OyTNPj9b4kl0g_-cAwi0,132934144
166
+ wolfhece/libs/WolfDll.dll,sha256=E8SeV0AHVXW5ikAQuVtijqIvaYx7UIMeqvnnsmTMCT8,132934144
167
167
  wolfhece/libs/WolfOGL.c,sha256=tBWGfpFFe8gfRjImUUlqdxhcRpQ6ytEWU7Z6PC0v9as,1085242
168
168
  wolfhece/libs/WolfOGL.pyx,sha256=kc1uxbO2wQx0Qoe7BVQnqTJgUWYx_Vtf1wzXMxzf8bI,65911
169
169
  wolfhece/libs/api-ms-win-crt-heap-l1-1-0.dll,sha256=r0euvgZa8vBFoZ8g7H5Upuc8DD6aUQimMJWnIyt1OBo,19720
@@ -267,8 +267,8 @@ wolfhece/sounds/sonsw2.wav,sha256=pFLVt6By0_EPQNt_3KfEZ9a1uSuYTgQSX1I_Zurv9Rc,11
267
267
  wolfhece/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
268
268
  wolfhece/ui/wolf_multiselection_collapsiblepane.py,sha256=yGbU_JsF56jsmms0gh7mxa7tbNQ_SxqhpAZxhm-mTy4,14860
269
269
  wolfhece/ui/wolf_times_selection_comparison_models.py,sha256=wCxGRnE3kzEkWlWA6-3X8ADOFux_B0a5QWJ2GnXTgJw,4709
270
- wolfhece-2.1.13.dist-info/METADATA,sha256=DghX1BAmzBJLe8etnO3FCeT-LTKyab8jTTcZ5PUWhlw,2282
271
- wolfhece-2.1.13.dist-info/WHEEL,sha256=cpQTJ5IWu9CdaPViMhC9YzF8gZuS5-vlfoFihTBC86A,91
272
- wolfhece-2.1.13.dist-info/entry_points.txt,sha256=AIu1KMswrdsqNq_2jPtrRIU4tLjuTnj2dCY-pxIlshw,276
273
- wolfhece-2.1.13.dist-info/top_level.txt,sha256=EfqZXMVCn7eILUzx9xsEu2oBbSo9liWPFWjIHik0iCI,9
274
- wolfhece-2.1.13.dist-info/RECORD,,
270
+ wolfhece-2.1.15.dist-info/METADATA,sha256=1jd4LkINbWxRjLu3_KsyhqidpBEGHf9x-MjtBReHkME,2282
271
+ wolfhece-2.1.15.dist-info/WHEEL,sha256=y4mX-SOX4fYIkonsAGA5N0Oy-8_gI4FXw5HNI1xqvWg,91
272
+ wolfhece-2.1.15.dist-info/entry_points.txt,sha256=AIu1KMswrdsqNq_2jPtrRIU4tLjuTnj2dCY-pxIlshw,276
273
+ wolfhece-2.1.15.dist-info/top_level.txt,sha256=EfqZXMVCn7eILUzx9xsEu2oBbSo9liWPFWjIHik0iCI,9
274
+ wolfhece-2.1.15.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (70.1.0)
2
+ Generator: setuptools (70.2.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5