wolfhece 2.1.12__py3-none-any.whl → 2.1.14__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)
@@ -5372,6 +5485,7 @@ class WolfArray(Element_To_Draw, header_wolf):
5372
5485
  """
5373
5486
 
5374
5487
  sel = np.asarray(xy)
5488
+ z = np.asarray(z)
5375
5489
 
5376
5490
  if len(sel) == 1:
5377
5491
  ijall = np.asarray(self.get_ij_from_xy(sel[0, 0], sel[0, 1])).transpose()
@@ -6091,7 +6205,7 @@ class WolfArray(Element_To_Draw, header_wolf):
6091
6205
 
6092
6206
  if self.filename.endswith('.tif'):
6093
6207
  self.import_geotif(which= which_band, crop = self.cropini)
6094
- self.mask_data(self.nullvalue)
6208
+ # self.mask_data(self.nullvalue)
6095
6209
  self.loaded = True
6096
6210
  elif self.filename.endswith('.npy'):
6097
6211
  # Numpy format
@@ -6207,7 +6321,7 @@ class WolfArray(Element_To_Draw, header_wolf):
6207
6321
  self.write_txt_header()
6208
6322
  self.write_array()
6209
6323
 
6210
- def rebin(self, factor:float, operation:Literal['mean', 'sum']='mean') -> None:
6324
+ def rebin(self, factor:float, operation:Literal['mean', 'sum', 'min']='mean') -> None:
6211
6325
  """
6212
6326
  Change resolution - in place
6213
6327
 
@@ -6216,7 +6330,7 @@ class WolfArray(Element_To_Draw, header_wolf):
6216
6330
  If you want to keep current data, copy the WolfArray into a new variable -> newWA = Wolfarray(mold=curWA)
6217
6331
  """
6218
6332
  operation = operation.lower()
6219
- if not operation in ['sum', 'mean']:
6333
+ if not operation in ['sum', 'mean', 'min']:
6220
6334
  raise ValueError("Operator not supported.")
6221
6335
 
6222
6336
  if np.mod(self.nbx,factor) != 0 or np.mod(self.nby,factor) != 0 :
@@ -6692,8 +6806,11 @@ class WolfArray(Element_To_Draw, header_wolf):
6692
6806
  return newWolfArray
6693
6807
 
6694
6808
  def extend(self, x_ext:int, y_ext:int):
6809
+ """
6810
+ Extend the array
6695
6811
 
6696
- # crop is the opposite
6812
+ Crop is the opposite
6813
+ """
6697
6814
 
6698
6815
  assert x_ext >= 0 and y_ext >= 0
6699
6816
  assert self.nbdims == 2, "Only 2D arrays are supported"
@@ -6851,6 +6968,11 @@ class WolfArray(Element_To_Draw, header_wolf):
6851
6968
  if self.array is None:
6852
6969
  return
6853
6970
 
6971
+ if self.wolftype != WOLF_ARRAY_FULL_SINGLE:
6972
+ self._tmp_float32 = self.array.astype(dtype=np.float32)
6973
+ else:
6974
+ self._tmp_float32 = None
6975
+
6854
6976
  if self.mypal.automatic:
6855
6977
  if onzoom != []:
6856
6978
  self.mypal.isopop(self.get_working_array(onzoom), self.nbnotnullzoom)
@@ -7062,10 +7184,10 @@ class WolfArray(Element_To_Draw, header_wolf):
7062
7184
  if self.wolftype != WOLF_ARRAY_FULL_SINGLE:
7063
7185
  if self.nbnotnull != self.nbx * self.nby:
7064
7186
  if self.nbnotnull > 0:
7065
- wolfogl.addme(self.array.astype(dtype=np.float32), self.rgb, ox, oy, dx, dy, jstart,
7187
+ wolfogl.addme(self._tmp_float32, self.rgb, ox, oy, dx, dy, jstart,
7066
7188
  jend, istart, iend, cursize, self.nullvalue, self.alpha)
7067
7189
  elif self.nbnotnull > 0:
7068
- wolfogl.addmeall(self.array.astype(dtype=np.float32), self.rgb, ox, oy, dx, dy, jstart,
7190
+ wolfogl.addmeall(self._tmp_float32, self.rgb, ox, oy, dx, dy, jstart,
7069
7191
  jend, istart, iend, cursize, self.nullvalue, self.alpha)
7070
7192
  else:
7071
7193
  if self.nbnotnull != self.nbx * self.nby:
@@ -1434,7 +1434,7 @@ class OneWolfResult:
1434
1434
  self._sedimentdensity = 2.65
1435
1435
  self._force_update_shields = True # Force la MAJ du Shields si le diametre ou la densité change
1436
1436
 
1437
- self.mngselection = SelectionData(self.current)
1437
+ # self.mngselection = SelectionData(self.current)
1438
1438
 
1439
1439
  @property
1440
1440
  def SelectionData(self) -> SelectionDataMB:
@@ -1716,6 +1716,9 @@ class OneWolfResult:
1716
1716
  self._current.idx = self.idx
1717
1717
  self._current.nullvalue = nullvalue
1718
1718
 
1719
+ self.mngselection = SelectionData(self._current)
1720
+
1721
+
1719
1722
  @property
1720
1723
  def min_field_size(self):
1721
1724
  return self._min_field_size
@@ -2008,7 +2011,10 @@ class Wolfresults_2D(Element_To_Draw):
2008
2011
  self._epsilon_default = self.epsilon
2009
2012
 
2010
2013
  self.loaded=True
2014
+
2011
2015
  self.current_result = -1
2016
+ self._step_interval = 1
2017
+
2012
2018
  self.mypal = wolfpalette(None,'Colors')
2013
2019
  self.mypal.default16()
2014
2020
  self.mypal.automatic = True
@@ -2308,6 +2314,14 @@ class Wolfresults_2D(Element_To_Draw):
2308
2314
 
2309
2315
  return x>=xmin and x<=xmax and y>=ymin and y<=ymax
2310
2316
 
2317
+ @property
2318
+ def step_interval_results(self):
2319
+ return self._step_interval
2320
+
2321
+ @step_interval_results.setter
2322
+ def step_interval_results(self, value:int):
2323
+ self._step_interval = value
2324
+
2311
2325
  @property
2312
2326
  def nullvalue(self):
2313
2327
  """ Get nullvalue from the first block """
@@ -2875,7 +2889,7 @@ class Wolfresults_2D(Element_To_Draw):
2875
2889
  Lecture du pas suivant
2876
2890
  """
2877
2891
 
2878
- self.current_result += 1
2892
+ self.current_result += self._step_interval
2879
2893
  self._update_result_view()
2880
2894
 
2881
2895
  def _sanitize_result_step(self, which_step:int=-1):
@@ -3006,7 +3020,7 @@ class Wolfresults_2D(Element_To_Draw):
3006
3020
  """
3007
3021
 
3008
3022
  # if self.current_result > 0:
3009
- self.current_result -= 1
3023
+ self.current_result -= self._step_interval
3010
3024
  self._update_result_view()
3011
3025
 
3012
3026
  def get_h_for_block(self, block: Union[int, str]) -> WolfArray:
@@ -4026,7 +4040,7 @@ class Wolfresults_2D(Element_To_Draw):
4026
4040
  if self.current_result==-1:
4027
4041
  self.read_oneresult(-1)
4028
4042
  else:
4029
- self.current_result+=1
4043
+ self.current_result+= self._step_interval
4030
4044
  self.current_result = min(nb,self.current_result)
4031
4045
  self.read_oneresult(self.current_result)
4032
4046
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: wolfhece
3
- Version: 2.1.12
3
+ Version: 2.1.14
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,22 +6,22 @@ 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=eYv0X1NFCWlgOgiRaIjW0SPlR_uVLdZhFpztY1jX6Lo,378408
10
- wolfhece/PyGui.py,sha256=7p4ecrrODTggH8Oz4GTg4rWk6Z3vhYH4GNAE4TL3VY8,102058
9
+ wolfhece/PyDraw.py,sha256=mwewDF61NQuG4Yh8p5lkla3-h5QxRD7eBBTS4jfEdMM,379576
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
22
22
  wolfhece/RatingCurve_xml.py,sha256=vbLxSWwHPsCAsR13KaG5WVmVn_cha7-6cF4zj7Diiz8,33593
23
23
  wolfhece/ReadDataDCENN.py,sha256=4OMDBgkZ_v7OWmVhyQ-reab7MPxGhFEDY2qS8yThhdM,1240
24
- wolfhece/Results2DGPU.py,sha256=kUgLZhUbqVVl-LNQX_GghmU70b0IQHoye3bpAy3hPno,20238
24
+ wolfhece/Results2DGPU.py,sha256=pC7jHQhzSJPmGiboNNLG619yVYaOUT_O5_yhKMzslxA,20563
25
25
  wolfhece/__init__.py,sha256=FRDE8PiJAWxX9PMXsShRMZ8YADAY4WIgKMRh52rmhiw,23
26
26
  wolfhece/_add_path.py,sha256=nudniS-lsgHwXXq5o626XRDzIeYj76GoGKYt6lcu2Nc,616
27
27
  wolfhece/cli.py,sha256=rHxZGgs_R776VCWhs36pYFoiuiQycwgGTVOLK-JNzjE,1937
@@ -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,13 +48,13 @@ 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=lUedE9UgJNR7IoGIwixrDWyKICXt0OFXjkgkmMjbZAw,335654
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
55
55
  wolfhece/wolf_vrt.py,sha256=un5CKzAUmzSsjLXK7YLnQEWz8FLoafXJs8oqUvS_-h0,10271
56
56
  wolfhece/wolf_zi_db.py,sha256=Ok0MxQYZMMLRJN1QY-HSplLhUzzb6gkXgBQ3ihhLQHk,12669
57
- wolfhece/wolfresults_2D.py,sha256=1OhARaLhP8-8mQfq5hrvt-9D-2eSRdJz7SYfaqSkvXg,159021
57
+ wolfhece/wolfresults_2D.py,sha256=6VbONzD2lMFCnZ2-gyBk7pW9LcBmSWkZxiVLTMKVPIQ,159403
58
58
  wolfhece/xyz_file.py,sha256=aQOcTHkHRhXHxL_WxTHwzygp6e47San7SHSpxKQU0dw,5457
59
59
  wolfhece/apps/ManageParams.py,sha256=heg5L4fMn0ettR7Bad_Q680o_JWnTbe3WFkL_9IziAk,312
60
60
  wolfhece/apps/Optimisation_hydro.py,sha256=mHazBazTUGyxPbHPXhaQim8vqIeOOuKPjH0B48VWduA,374
@@ -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=N0uYf8Ph8RZNrkgDZfWNxv4HyEW8y5h7YyQXXAZnSUQ,388
69
+ wolfhece/apps/version.py,sha256=iAAc-eeR7zIz-iR6FeTQIhd8wNdBHE1QcClTeElRpg4,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=1ZrAPyXhy23ENbhSf9e2-D-Y-jNkof--L6R6B-BgHBo,135021
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=K6yz8UquJi51v2nGqWmeo8qs82-QHoa2LYaxwoUBTxM,73914
106
- wolfhece/hydrology/RetentionBasin.py,sha256=UZiHvygNEMfNdaK49CX3y8jzqwkThwwniS9ob1BTECs,71505
107
- wolfhece/hydrology/SubBasin.py,sha256=ZXEJwUDAsa6nGtdPVuzjEH3CCZu6V4fZhRCujWr1ACY,169749
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.12.dist-info/METADATA,sha256=7wMYhHxIq5GvX5q_b21FFj0JQcLTWtT8CRXEqvPjXdU,2282
271
- wolfhece-2.1.12.dist-info/WHEEL,sha256=cpQTJ5IWu9CdaPViMhC9YzF8gZuS5-vlfoFihTBC86A,91
272
- wolfhece-2.1.12.dist-info/entry_points.txt,sha256=AIu1KMswrdsqNq_2jPtrRIU4tLjuTnj2dCY-pxIlshw,276
273
- wolfhece-2.1.12.dist-info/top_level.txt,sha256=EfqZXMVCn7eILUzx9xsEu2oBbSo9liWPFWjIHik0iCI,9
274
- wolfhece-2.1.12.dist-info/RECORD,,
270
+ wolfhece-2.1.14.dist-info/METADATA,sha256=wY1eN44TVbJRXbZOTfGdkZIwii_vMv1Ytyr1a-NOXyE,2282
271
+ wolfhece-2.1.14.dist-info/WHEEL,sha256=y4mX-SOX4fYIkonsAGA5N0Oy-8_gI4FXw5HNI1xqvWg,91
272
+ wolfhece-2.1.14.dist-info/entry_points.txt,sha256=AIu1KMswrdsqNq_2jPtrRIU4tLjuTnj2dCY-pxIlshw,276
273
+ wolfhece-2.1.14.dist-info/top_level.txt,sha256=EfqZXMVCn7eILUzx9xsEu2oBbSo9liWPFWjIHik0iCI,9
274
+ wolfhece-2.1.14.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