wolfhece 2.1.99__py3-none-any.whl → 2.1.100__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/PyDraw.py +20 -13
- wolfhece/PyVertexvectors.py +2 -2
- wolfhece/acceptability/Parallels.py +2 -2
- wolfhece/acceptability/_add_path.py +23 -0
- wolfhece/acceptability/acceptability.py +594 -563
- wolfhece/acceptability/acceptability_gui.py +564 -331
- wolfhece/acceptability/cli.py +307 -120
- wolfhece/acceptability/func.py +1743 -1597
- wolfhece/apps/version.py +1 -1
- wolfhece/bernoulli/losses.py +75 -22
- wolfhece/bernoulli/losses_jax.py +143 -0
- wolfhece/bernoulli/pipe.py +7 -2
- wolfhece/math_parser/__init__.py +4 -4
- wolfhece/math_parser/calculator.py +50 -9
- wolfhece/mesh2d/simple_2d.py +2399 -0
- wolfhece/mesh2d/wolf2dprev.py +1 -1
- wolfhece/pidcontroller.py +131 -0
- wolfhece/pywalous.py +7 -7
- wolfhece/scenario/config_manager.py +1 -1
- wolfhece/wolf_array.py +156 -103
- wolfhece/wolf_vrt.py +108 -7
- wolfhece/wolfresults_2D.py +74 -0
- wolfhece/xyz_file.py +91 -51
- {wolfhece-2.1.99.dist-info → wolfhece-2.1.100.dist-info}/METADATA +1 -1
- {wolfhece-2.1.99.dist-info → wolfhece-2.1.100.dist-info}/RECORD +28 -24
- {wolfhece-2.1.99.dist-info → wolfhece-2.1.100.dist-info}/WHEEL +1 -1
- {wolfhece-2.1.99.dist-info → wolfhece-2.1.100.dist-info}/entry_points.txt +0 -0
- {wolfhece-2.1.99.dist-info → wolfhece-2.1.100.dist-info}/top_level.txt +0 -0
wolfhece/wolf_vrt.py
CHANGED
@@ -38,7 +38,24 @@ def create_vrt(wdir:str, fout:str='out.vrt', format:str='tif'):
|
|
38
38
|
myvrt = None
|
39
39
|
|
40
40
|
os.chdir(curdir)
|
41
|
-
|
41
|
+
def _get_diverged_relative_path(path: Path, base: Path) -> Path:
|
42
|
+
"""
|
43
|
+
Get relative path from base to path, even if they only share part of their paths.
|
44
|
+
More general than the next function "_get_relative_path", especially for not "child/parents paths"
|
45
|
+
"""
|
46
|
+
|
47
|
+
# Parts of the paths
|
48
|
+
relative_path_parts = path.parts
|
49
|
+
base_parts = base.parts
|
50
|
+
# Where do they diverge ?
|
51
|
+
i = 0
|
52
|
+
while i < min(len(relative_path_parts), len(base_parts)) and relative_path_parts[i] == base_parts[i]:
|
53
|
+
i += 1
|
54
|
+
|
55
|
+
# Building of the relative path, by adding ".." from the divergence point
|
56
|
+
return Path(*(['..'] * (len(base_parts) - i) + list(relative_path_parts[i:])))
|
57
|
+
|
58
|
+
|
42
59
|
def _get_relative_path(path:Path, base:Path):
|
43
60
|
"""
|
44
61
|
Get relative path from base to path
|
@@ -47,7 +64,6 @@ def _get_relative_path(path:Path, base:Path):
|
|
47
64
|
:type path: Path
|
48
65
|
:param base: base path
|
49
66
|
:type base: Path
|
50
|
-
|
51
67
|
"""
|
52
68
|
|
53
69
|
if base in path.parents:
|
@@ -79,7 +95,8 @@ def create_vrt_from_files(files:list[Path]=[], fout:Path='assembly.vrt'):
|
|
79
95
|
# change working directory to the parent of the output file
|
80
96
|
os.chdir(fout.parent)
|
81
97
|
# work with relative paths
|
82
|
-
|
98
|
+
|
99
|
+
myvrt = gdal.BuildVRT(str(fout.with_suffix('.vrt').name) , [str(_get_diverged_relative_path(file, fout.parent)) for file in files])
|
83
100
|
# close the dataset -- force to write on disk
|
84
101
|
myvrt = None
|
85
102
|
# restore working directory
|
@@ -91,7 +108,7 @@ def create_vrt_from_files_first_based(files:list[Path]=[], fout:Path='assembly.v
|
|
91
108
|
|
92
109
|
Restreint l'emprise et force la résolution sur le premier fichier listé
|
93
110
|
"""
|
94
|
-
|
111
|
+
|
95
112
|
if isinstance(fout, str):
|
96
113
|
fout = Path(fout)
|
97
114
|
|
@@ -119,6 +136,7 @@ def create_vrt_from_files_first_based(files:list[Path]=[], fout:Path='assembly.v
|
|
119
136
|
|
120
137
|
locNoData = raster.GetRasterBand(1).GetNoDataValue()
|
121
138
|
|
139
|
+
# options of BuildVRT defined on properties of "files[0]"
|
122
140
|
options = gdal.BuildVRTOptions(resolution='user',
|
123
141
|
xRes=abs(geotr[1]),
|
124
142
|
yRes=abs(geotr[5]),
|
@@ -128,11 +146,94 @@ def create_vrt_from_files_first_based(files:list[Path]=[], fout:Path='assembly.v
|
|
128
146
|
|
129
147
|
# retain current working directory
|
130
148
|
oldcwd = os.getcwd()
|
131
|
-
# change working directory to the parent of the output file
|
132
|
-
os.chdir(fout.parent.absolute())
|
149
|
+
# change working directory to the parent of the output file
|
150
|
+
os.chdir(fout.parent.absolute())
|
151
|
+
# work with relative paths
|
152
|
+
myvrt = gdal.BuildVRT(str(fout.with_suffix('.vrt').name),[str(_get_diverged_relative_path(file, fout.parent)) for file in files], options=options) #str(_get_diverged_relative_path(file, fout.parent)) for file in files
|
153
|
+
|
154
|
+
# close the dataset -- force to write on disk
|
155
|
+
myvrt = None
|
156
|
+
# restore working directory
|
157
|
+
os.chdir(oldcwd)
|
158
|
+
|
159
|
+
|
160
|
+
def create_vrt_from_diverged_files(files:list[Path]=[], fout:Path='assembly.vrt'):
|
161
|
+
"""
|
162
|
+
Agglomération de tous les fichiers énumérés dans files dans un layer virtuel .vrt
|
133
163
|
|
164
|
+
:param files: list of files to process
|
165
|
+
:type files: list[Path]
|
166
|
+
:param fout: output file
|
167
|
+
:type fout: Path
|
168
|
+
"""
|
169
|
+
|
170
|
+
if isinstance(fout, str):
|
171
|
+
fout = Path(fout)
|
172
|
+
|
173
|
+
if isinstance(files[0], str):
|
174
|
+
files = [Path(file) for file in files]
|
175
|
+
|
176
|
+
# retain current working directory
|
177
|
+
oldcwd = os.getcwd()
|
178
|
+
# change working directory to the parent of the output file
|
179
|
+
os.chdir(fout.parent)
|
134
180
|
# work with relative paths
|
135
|
-
|
181
|
+
|
182
|
+
myvrt = gdal.BuildVRT(str(fout.with_suffix('.vrt').name) , [str(_get_diverged_relative_path(file, fout.parent)) for file in files])
|
183
|
+
# close the dataset -- force to write on disk
|
184
|
+
myvrt = None
|
185
|
+
# restore working directory
|
186
|
+
os.chdir(oldcwd)
|
187
|
+
|
188
|
+
def create_vrt_from_diverged_files_first_based(files:list[Path]=[], fout:Path='assembly.vrt', Nodata:float=99999.):
|
189
|
+
"""
|
190
|
+
Agglomération de tous les fichiers énumérés dans files dans un layer virtuel .vrt
|
191
|
+
|
192
|
+
Restreint l'emprise et force la résolution sur le premier fichier listé
|
193
|
+
"""
|
194
|
+
|
195
|
+
if isinstance(fout, str):
|
196
|
+
fout = Path(fout)
|
197
|
+
|
198
|
+
if isinstance(files[0], str):
|
199
|
+
files = [Path(file) for file in files]
|
200
|
+
|
201
|
+
first = files[0]
|
202
|
+
raster:gdal.Dataset
|
203
|
+
raster = gdal.Open(str(first))
|
204
|
+
geotr = raster.GetGeoTransform()
|
205
|
+
|
206
|
+
# Dimensions
|
207
|
+
nbx = raster.RasterXSize
|
208
|
+
nby = raster.RasterYSize
|
209
|
+
|
210
|
+
xmin = geotr[0]
|
211
|
+
xmax = geotr[0]+geotr[1]*float(nbx)
|
212
|
+
|
213
|
+
if geotr[5]>0:
|
214
|
+
ymin = geotr[3]
|
215
|
+
ymax = geotr[3]+geotr[5]*float(nby)
|
216
|
+
else:
|
217
|
+
ymin = geotr[3]+geotr[5]*float(nby)
|
218
|
+
ymax = geotr[3]
|
219
|
+
|
220
|
+
locNoData = raster.GetRasterBand(1).GetNoDataValue()
|
221
|
+
|
222
|
+
# options of BuildVRT defined on properties of "files[0]"
|
223
|
+
options = gdal.BuildVRTOptions(resolution='user',
|
224
|
+
xRes=abs(geotr[1]),
|
225
|
+
yRes=abs(geotr[5]),
|
226
|
+
outputBounds=[xmin,ymin,xmax,ymax],
|
227
|
+
resampleAlg='bilinear',
|
228
|
+
srcNodata=Nodata)
|
229
|
+
|
230
|
+
# retain current working directory
|
231
|
+
oldcwd = os.getcwd()
|
232
|
+
# change working directory to the parent of the output file
|
233
|
+
os.chdir(fout.parent.absolute())
|
234
|
+
# work with relative paths
|
235
|
+
myvrt = gdal.BuildVRT(str(fout.with_suffix('.vrt').name),[str(_get_diverged_relative_path(file, fout.parent)) for file in files], options=options) #str(_get_diverged_relative_path(file, fout.parent)) for file in files
|
236
|
+
|
136
237
|
# close the dataset -- force to write on disk
|
137
238
|
myvrt = None
|
138
239
|
# restore working directory
|
wolfhece/wolfresults_2D.py
CHANGED
@@ -3709,6 +3709,80 @@ class Wolfresults_2D(Element_To_Draw):
|
|
3709
3709
|
"""
|
3710
3710
|
self._cache = None
|
3711
3711
|
|
3712
|
+
def get_hydrographs(self, vect:Union[vector, list[vector], zone]):
|
3713
|
+
""" Get hydrograph accross a vector
|
3714
|
+
|
3715
|
+
:param vect: wolf polyline or list of wolf polylines or zone
|
3716
|
+
"""
|
3717
|
+
|
3718
|
+
assert isinstance(vect, vector | list | zone), 'Expected a vector'
|
3719
|
+
|
3720
|
+
if isinstance(vect, zone):
|
3721
|
+
vect = vect.myvectors
|
3722
|
+
|
3723
|
+
nb = self.get_nbresults()
|
3724
|
+
times, steps = self.times, self.timesteps
|
3725
|
+
|
3726
|
+
if isinstance(vect, vector):
|
3727
|
+
q=[]
|
3728
|
+
for i in tqdm(range(nb)):
|
3729
|
+
if i==0:
|
3730
|
+
myhead = self.get_header_block(1)
|
3731
|
+
vect_raster = myhead.rasterize_vector(vect)
|
3732
|
+
self.read_oneresult(i)
|
3733
|
+
q.append(self._plot_one_q_raster_splitting(vect_raster, True, to_rasterize = False))
|
3734
|
+
|
3735
|
+
elif isinstance(vect, list):
|
3736
|
+
q={str:list}
|
3737
|
+
vect_raster = []
|
3738
|
+
myhead = self.get_header_block(1)
|
3739
|
+
|
3740
|
+
for i in range(len(vect)):
|
3741
|
+
q[vect[i].myname]= []
|
3742
|
+
vect_raster.append(myhead.rasterize_vector(vect[i]))
|
3743
|
+
|
3744
|
+
for i in tqdm(range(nb)):
|
3745
|
+
self.read_oneresult(i)
|
3746
|
+
|
3747
|
+
for curvec, cur_vect_raster in zip(vect, vect_raster):
|
3748
|
+
q[curvec.myname].append(self._plot_one_q_raster_splitting(cur_vect_raster, True, to_rasterize = False))
|
3749
|
+
|
3750
|
+
return times, q
|
3751
|
+
|
3752
|
+
def export_hydrographs(self, vect:Union[vector, list[vector], zone], filename:str|Path):
|
3753
|
+
""" Export hydrograph accross a vector as CSV file
|
3754
|
+
|
3755
|
+
:param vect: wolf polyline or list of wolf polylines or zone
|
3756
|
+
:param filename: output filename
|
3757
|
+
"""
|
3758
|
+
|
3759
|
+
assert isinstance(vect, vector | list | zone), 'Expected a vector'
|
3760
|
+
|
3761
|
+
filename = Path(filename)
|
3762
|
+
filename = filename.with_suffix('.csv')
|
3763
|
+
|
3764
|
+
if isinstance(vect, zone):
|
3765
|
+
vect = vect.myvectors
|
3766
|
+
|
3767
|
+
times, q = self.get_hydrographs(vect)
|
3768
|
+
|
3769
|
+
with open(filename, 'w') as f:
|
3770
|
+
f.write('Time [s],')
|
3771
|
+
if isinstance(vect, vector):
|
3772
|
+
f.write(vect.myname)
|
3773
|
+
elif isinstance(vect, list):
|
3774
|
+
f.write(','.join([cur.myname for cur in vect]))
|
3775
|
+
f.write('\n')
|
3776
|
+
|
3777
|
+
for i in range(len(times)):
|
3778
|
+
f.write(f'{times[i]},')
|
3779
|
+
if isinstance(vect, vector):
|
3780
|
+
f.write(f'{q[i]}')
|
3781
|
+
elif isinstance(vect, list):
|
3782
|
+
f.write(','.join([str(q[cur.myname][i]) for cur in vect]))
|
3783
|
+
f.write('\n')
|
3784
|
+
|
3785
|
+
|
3712
3786
|
#FIXME : rename 'x_or_y' to be more explicit
|
3713
3787
|
def plot_q(self,
|
3714
3788
|
vect:Union[vector, list[vector]],
|
wolfhece/xyz_file.py
CHANGED
@@ -13,106 +13,130 @@ import numpy as np
|
|
13
13
|
import matplotlib.pyplot as plt
|
14
14
|
from os.path import normpath,exists,join,basename
|
15
15
|
from os import listdir,scandir
|
16
|
+
import logging
|
16
17
|
|
17
18
|
from .PyTranslate import _
|
18
19
|
|
19
20
|
class XYZFile:
|
20
21
|
""" Classe pour la gestion des fichiers xyz """
|
21
|
-
nblines:int
|
22
22
|
x:np.array
|
23
23
|
y:np.array
|
24
24
|
z:np.array
|
25
25
|
filename:str
|
26
26
|
|
27
|
-
def __init__(self, fname,toread=True
|
27
|
+
def __init__(self, fname:str, toread:bool= True,
|
28
|
+
folder:str= None, bounds:list= None,
|
29
|
+
delimiter:str=','):
|
28
30
|
""" Initialisation du nom du fichier """
|
31
|
+
|
29
32
|
self.filename = fname
|
30
|
-
|
31
|
-
|
33
|
+
|
32
34
|
self.x = None
|
33
35
|
self.y = None
|
34
36
|
self.z = None
|
35
37
|
self.xyz = None
|
36
|
-
|
38
|
+
|
37
39
|
if toread:
|
38
|
-
self.read_from_file()
|
40
|
+
self.read_from_file(folder=folder, bounds=bounds, delimiter=delimiter)
|
41
|
+
|
42
|
+
@property
|
43
|
+
def nblines(self):
|
44
|
+
if self.x is None:
|
45
|
+
return 0
|
46
|
+
else:
|
47
|
+
return len(self.x)
|
48
|
+
|
49
|
+
def reset(self):
|
50
|
+
""" Reset des données """
|
51
|
+
self.x = None
|
52
|
+
self.y = None
|
53
|
+
self.z = None
|
54
|
+
self.xyz = None
|
39
55
|
|
40
56
|
def test_bounds(self,bounds):
|
41
|
-
|
57
|
+
|
42
58
|
if bounds is None:
|
43
59
|
return True
|
44
|
-
|
60
|
+
|
45
61
|
x1=bounds[0][0]
|
46
62
|
x2=bounds[0][1]
|
47
63
|
y1=bounds[1][0]
|
48
64
|
y2=bounds[1][1]
|
49
|
-
|
65
|
+
|
50
66
|
mybounds = self.get_extent()
|
51
67
|
|
52
68
|
test = not(x2 < mybounds[0][0] or x1 > mybounds[0][1] or y2 < mybounds[1][0] or y1 > mybounds[1][1])
|
53
|
-
|
69
|
+
|
54
70
|
return test
|
55
71
|
|
56
|
-
def read_from_file(self):
|
72
|
+
def read_from_file(self, folder:str=None, bounds:list=None, delimiter=','):
|
57
73
|
""" Lecture d'un fichier xyz et remplissage de l'objet """
|
58
|
-
|
59
|
-
|
74
|
+
|
75
|
+
try:
|
76
|
+
if folder is None:
|
77
|
+
self.xyz = np.genfromtxt(self.filename, delimiter=delimiter, dtype=np.float32)
|
78
|
+
else:
|
79
|
+
if bounds is None:
|
80
|
+
self.reset()
|
81
|
+
logging.error(_('Bounds must be defined when reading a directory'))
|
82
|
+
return
|
83
|
+
|
84
|
+
self.xyz = xyz_scandir(folder,bounds=bounds,delimiter=delimiter)
|
85
|
+
# check if self.xyz is an empty array
|
86
|
+
if len(self.xyz) == 0:
|
87
|
+
self.xyz = None
|
88
|
+
return
|
89
|
+
except:
|
90
|
+
self.reset()
|
91
|
+
logging.error(_('Error reading file: {self.filename}'))
|
92
|
+
return
|
93
|
+
|
60
94
|
self.x = self.xyz[:,0]
|
61
95
|
self.y = self.xyz[:,1]
|
62
96
|
self.z = self.xyz[:,2]
|
63
|
-
self.nblines = len(self.xyz)
|
64
|
-
|
65
|
-
# with open(self.filename, 'r') as f:
|
66
|
-
# self.nblines = sum(1 for line in f)
|
67
|
-
# self.x = np.zeros(self.nblines)
|
68
|
-
# self.y = np.zeros(self.nblines)
|
69
|
-
# self.z = np.zeros(self.nblines)
|
70
|
-
# f.seek(0)
|
71
|
-
# self.nblines = 0
|
72
|
-
# for line in f:
|
73
|
-
# tmp = line.split()
|
74
|
-
# if tmp:
|
75
|
-
# if is_float(tmp[0]):
|
76
|
-
# self.x[self.nblines] = float(tmp[0])
|
77
|
-
# self.y[self.nblines] = float(tmp[1])
|
78
|
-
# self.z[self.nblines] = float(tmp[2])
|
79
|
-
# self.nblines += 1
|
80
97
|
|
81
98
|
def fill_from_wolf_array(self, myarray,nullvalue=0.):
|
82
99
|
""" Création d'un fichier xyz depuis les données d'un WOLF array """
|
83
|
-
|
84
|
-
|
85
|
-
self.
|
86
|
-
self.
|
87
|
-
self.
|
100
|
+
|
101
|
+
nbmaxlines = myarray.nbx * myarray.nby
|
102
|
+
self.x = np.zeros(nbmaxlines)
|
103
|
+
self.y = np.zeros(nbmaxlines)
|
104
|
+
self.z = np.zeros(nbmaxlines)
|
105
|
+
|
106
|
+
k=0
|
88
107
|
for cury in range(myarray.nby):
|
89
108
|
y = cury * myarray.dy + 0.5 * myarray.dy + myarray.origy + myarray.transly
|
90
109
|
for curx in range(myarray.nbx):
|
91
110
|
z = myarray.array[curx, cury]
|
92
111
|
if z != nullvalue:
|
93
112
|
x = curx * myarray.dx + 0.5 * myarray.dx + myarray.origx + myarray.translx
|
94
|
-
self.x[
|
95
|
-
self.y[
|
96
|
-
self.z[
|
97
|
-
|
113
|
+
self.x[k] = x
|
114
|
+
self.y[k] = y
|
115
|
+
self.z[k] = z
|
116
|
+
k+=1
|
117
|
+
|
118
|
+
# crop the arrays
|
119
|
+
self.x = self.x[:k]
|
120
|
+
self.y = self.y[:k]
|
121
|
+
self.z = self.z[:k]
|
98
122
|
|
99
123
|
def write_to_file(self):
|
100
124
|
""" Ecriture des informations dans un fichier """
|
125
|
+
|
101
126
|
with open(self.filename, 'w') as f:
|
102
127
|
for i in range(self.nblines):
|
103
128
|
f.write('{:.3f},{:.3f},{:.3f}\n'.format(self.x[i], self.y[i], self.z[i]))
|
104
129
|
|
105
130
|
def get_extent(self):
|
106
131
|
""" Retourne les limites du rectangle qui encadre le nuage de points """
|
132
|
+
|
107
133
|
xlim = [np.min(self.x), np.max(self.x)]
|
108
134
|
ylim = [np.min(self.y), np.max(self.y)]
|
109
135
|
return (xlim, ylim)
|
110
136
|
|
111
|
-
def merge(self, xyz_list):
|
137
|
+
def merge(self, xyz_list:list["XYZFile"]):
|
112
138
|
""" Merge des fichiers xyz en 1 seul """
|
113
|
-
|
114
|
-
self.nblines += cur_xyz.nblines
|
115
|
-
|
139
|
+
|
116
140
|
newxyz = np.concatenate([cur.xyz for cur in xyz_list])
|
117
141
|
|
118
142
|
if self.xyz is not None:
|
@@ -126,6 +150,7 @@ class XYZFile:
|
|
126
150
|
|
127
151
|
def plot(self):
|
128
152
|
""" Représentation graphique des points """
|
153
|
+
|
129
154
|
plt.scatter(self.x, self.y, c=self.z, marker='.', cmap='viridis', edgecolors='none')
|
130
155
|
plt.xlabel('x [m]')
|
131
156
|
plt.ylabel('y [m]')
|
@@ -137,16 +162,17 @@ class XYZFile:
|
|
137
162
|
plt.pause(0.1)
|
138
163
|
|
139
164
|
def find_points(self,bounds):
|
140
|
-
|
165
|
+
|
141
166
|
if bounds is None:
|
142
167
|
return self.xyz
|
143
|
-
|
168
|
+
|
144
169
|
xb=bounds[0]
|
145
170
|
yb=bounds[1]
|
171
|
+
|
146
172
|
# Get arrays which indicate invalid X, Y, or Z values.
|
147
173
|
X_valid = (xb[0] <= self.x) & (xb[1] > self.x)
|
148
174
|
Y_valid = (yb[0] <= self.y) & (yb[1] > self.y)
|
149
|
-
good_indices = np.where(X_valid & Y_valid)[0]
|
175
|
+
good_indices = np.where(X_valid & Y_valid)[0]
|
150
176
|
return self.xyz[good_indices]
|
151
177
|
|
152
178
|
def is_float(s):
|
@@ -156,19 +182,33 @@ def is_float(s):
|
|
156
182
|
except ValueError:
|
157
183
|
return False
|
158
184
|
|
159
|
-
def xyz_scandir(mydir,bounds):
|
160
|
-
|
185
|
+
def xyz_scandir(mydir:str, bounds:list, delimiter:str=',') -> np.ndarray:
|
186
|
+
"""
|
187
|
+
Function that reads all the xyz files in a directory and its subdirectories
|
188
|
+
|
189
|
+
:param mydir: directory to scan
|
190
|
+
:dtype mydir: str
|
191
|
+
:param bounds: bounds of the area to consider [[x1,x2],[y1,y2]]
|
192
|
+
:dtype bounds: list
|
193
|
+
:return: list of points
|
194
|
+
"""
|
195
|
+
|
161
196
|
first=[]
|
162
197
|
for curfile in listdir(mydir):
|
163
198
|
if curfile.endswith('.xyz'):
|
164
|
-
mydata = XYZFile(join(mydir,curfile))
|
199
|
+
mydata = XYZFile(join(mydir,curfile), delimiter=delimiter)
|
165
200
|
if mydata.test_bounds(bounds):
|
166
|
-
|
201
|
+
if isinstance(mydir,str):
|
202
|
+
logging.info(mydir)
|
203
|
+
else:
|
204
|
+
logging.info(mydir.path)
|
205
|
+
logging.info(curfile)
|
167
206
|
first.append(mydata.find_points(bounds))
|
168
207
|
|
208
|
+
# if there is a subdirectory, we go deeper
|
169
209
|
for entry in scandir(mydir):
|
170
210
|
if entry.is_dir():
|
171
|
-
locf=xyz_scandir(entry,bounds)
|
211
|
+
locf=xyz_scandir(entry, bounds, delimiter)
|
172
212
|
if len(locf)>0:
|
173
213
|
first.append(locf)
|
174
214
|
|
@@ -7,7 +7,7 @@ wolfhece/ManageParams.py,sha256=EeuUI5Vvh9ixCvYf8YShMC1s1Yacc7OxOCN7q81gqiQ,517
|
|
7
7
|
wolfhece/Model1D.py,sha256=SI4oNF_J3MdjiWZoizS8kuRXLMVyymX9dYfYJNVCQVI,476989
|
8
8
|
wolfhece/PyConfig.py,sha256=Bb1T8qjgKMChadJYDrHO9uo6CwItiAXScZpYkDXqZF8,11387
|
9
9
|
wolfhece/PyCrosssections.py,sha256=FnmM9DWY_SAF2EDH9Gu2PojXNtSTRF4-aYQuAAJXBh4,112771
|
10
|
-
wolfhece/PyDraw.py,sha256=
|
10
|
+
wolfhece/PyDraw.py,sha256=MbAHjB9rYWq4IoCD8cYJph3NKlqwUVE5faauv-5YXCk,468676
|
11
11
|
wolfhece/PyGui.py,sha256=HY0beOMSp1JEyq8-vfVynzVrmKxvaO_sJSMwlNqCNrg,105289
|
12
12
|
wolfhece/PyGuiHydrology.py,sha256=f60E8K9eGTnRq5RDF6yvt-ahf2AYegwQ9t25zZ2Mk1A,14946
|
13
13
|
wolfhece/PyHydrographs.py,sha256=jwtSNMMACwarxrtN1UeQYth99UNrhwPx1IGgUwcooHA,3774
|
@@ -16,7 +16,7 @@ wolfhece/PyParams.py,sha256=GRp1zZDUJIjs8PtjwScDdov-E9orr1JWOntDazN5AOw,98577
|
|
16
16
|
wolfhece/PyPictures.py,sha256=m1kY0saW6Y9Q0bDCo47lW6XxDkBrbQG-Fd8uVn8G5ic,2514
|
17
17
|
wolfhece/PyTranslate.py,sha256=4appkmNeHHZLFmUtaA_k5_5QL-5ymxnbVN4R2OblmtE,622
|
18
18
|
wolfhece/PyVertex.py,sha256=3-1zV8-U8bcf9wUL0mJao54Sf3Ew-wmzxhRWUajnGXM,42210
|
19
|
-
wolfhece/PyVertexvectors.py,sha256=
|
19
|
+
wolfhece/PyVertexvectors.py,sha256=bwXWtZ9qjrrf94G8n_Ne5qETExB9p4oUR6GDDuCBVH0,253864
|
20
20
|
wolfhece/PyWMS.py,sha256=fyyzm2HFwq8aRwVYHKiBatcZOeKnFi6DWhv4nfscySQ,4602
|
21
21
|
wolfhece/RatingCurve.py,sha256=bUjIrQjvIjkD4V-z8bZmA6pe1ILtYNM0-3fT6YUY1RU,22498
|
22
22
|
wolfhece/RatingCurveData.py,sha256=5UvnIm89BwqjnEbLCcY3CA8WoFd_xHJbooNy62fX5iY,57660
|
@@ -39,6 +39,7 @@ wolfhece/ismember.py,sha256=fkLvaH9fhx-p0QrlEzqa6ySO-ios3ysjAgXVXzLgSpY,2482
|
|
39
39
|
wolfhece/matplotlib_fig.py,sha256=JM3wmURaBCWXu-pRKzmjCBm05MPYtFqdUdkU3njiLfY,67812
|
40
40
|
wolfhece/multiprojects.py,sha256=Sd6Bl6YP33jlR79A6rvSLu23vq8sqbFYL8lWuVPkEpE,21549
|
41
41
|
wolfhece/picc.py,sha256=oATEiPmj_om7TIOWucNZszIu8K18yq8yKU_GwpGJEMs,8531
|
42
|
+
wolfhece/pidcontroller.py,sha256=PHYenOdzfyPK2pXAhyRolCxMSMRd2AFza0eVMafpPHk,5205
|
42
43
|
wolfhece/pyGui1D.py,sha256=9g7OS3YiKsqy--6y0cBD7x2gaqTTYFXWkxImpgnTA20,121937
|
43
44
|
wolfhece/pybridges.py,sha256=EU_r6yRYDf5zKmwwXEBsGYvTKFbSfE3iTxPwusKR-1I,57398
|
44
45
|
wolfhece/pydike.py,sha256=hPBQsmSTW4QAp1wcOzb-TL3L7eet2WT1sJx2q-WNQ-Q,2241
|
@@ -46,24 +47,25 @@ wolfhece/pylogging.py,sha256=4TI8hgBB65z-zpvU5Rfa2jkPXPhJaqXjHVPwbcdzTNc,4528
|
|
46
47
|
wolfhece/pypolygons_scen.py,sha256=vMfAKXKrW6vKR7l9Fl2hEt-jihLwIiMur7qNTNfwRg4,46101
|
47
48
|
wolfhece/pyshields.py,sha256=6YncgmcA6QvbyIl4jbFRf24uJVjhiSplQKWtZH42lXI,24108
|
48
49
|
wolfhece/pyviews.py,sha256=5Hqqo9MRw1eiomYkmc7QywNu1KmEkytLJG-wH_aG38Y,13748
|
49
|
-
wolfhece/pywalous.py,sha256=
|
50
|
+
wolfhece/pywalous.py,sha256=mWB7UxlYMIbPxNUDlONQEjcOOy9VSaRU9aYWZ5IFLu8,19164
|
50
51
|
wolfhece/rain_SPWMI.py,sha256=qCfcmF7LajloOaCwnTrrSMzyME03YyilmRUOqrPrv3U,13846
|
51
52
|
wolfhece/textpillow.py,sha256=map7HsGYML_o5NHRdFg2s_TVQed_lDnpYNDv27MM0Vw,14130
|
52
53
|
wolfhece/tools_mpl.py,sha256=gQ3Jg1iuZiecmMqa5Eli2ZLSkttu68VXL8YmMDBaEYU,564
|
53
|
-
wolfhece/wolf_array.py,sha256=
|
54
|
+
wolfhece/wolf_array.py,sha256=H-ol0OtoZKr2I8hyQlEPa5OKWEYVJNKHj3B3HG8WtUk,410054
|
54
55
|
wolfhece/wolf_hist.py,sha256=7jeVrgSkM3ErJO6SRMH_PGzfLjIdw8vTy87kesldggk,3582
|
55
56
|
wolfhece/wolf_texture.py,sha256=DS5eobLxrq9ljyebYfpMSQPn8shkUAZZVfqrOKN_QUU,16951
|
56
57
|
wolfhece/wolf_tiles.py,sha256=2Ho2I20rHRY81KXxjgLOYISdF4OkJ2d6omeY4shDoGI,10386
|
57
|
-
wolfhece/wolf_vrt.py,sha256=
|
58
|
+
wolfhece/wolf_vrt.py,sha256=NcPZYW4bu06IpqQuiutoAhCvDkeZ3TzOVb8z4wTQ1h8,14319
|
58
59
|
wolfhece/wolf_zi_db.py,sha256=baE0niMCzybWGSvPJc5FNxo9ZxsGfU4p-FmfiavFHAs,12967
|
59
|
-
wolfhece/wolfresults_2D.py,sha256=
|
60
|
-
wolfhece/xyz_file.py,sha256=
|
61
|
-
wolfhece/acceptability/Parallels.py,sha256=
|
60
|
+
wolfhece/wolfresults_2D.py,sha256=yssZzi5TN_KSvlqQ8sL5FjMqelfiAVCuPhzLTwWsDQQ,183420
|
61
|
+
wolfhece/xyz_file.py,sha256=1pzLFmmdHca4yBVR9Jitic6N82rY28mRytGC1zMbY28,6615
|
62
|
+
wolfhece/acceptability/Parallels.py,sha256=njrJFH_tTdQUg2px-QqQR6VdhImP1TEujLhpM3JEKNo,4001
|
62
63
|
wolfhece/acceptability/__init__.py,sha256=hfgoPKLDpX7drN1Vpvux-_5Lfyc_7feT2C2zQr5v-Os,258
|
63
|
-
wolfhece/acceptability/
|
64
|
-
wolfhece/acceptability/
|
65
|
-
wolfhece/acceptability/
|
66
|
-
wolfhece/acceptability/
|
64
|
+
wolfhece/acceptability/_add_path.py,sha256=nudniS-lsgHwXXq5o626XRDzIeYj76GoGKYt6lcu2Nc,616
|
65
|
+
wolfhece/acceptability/acceptability.py,sha256=TlpvP7EITcRhtDMtQAe32BD-vWdHURf8r9tIF_PZmnc,26668
|
66
|
+
wolfhece/acceptability/acceptability_gui.py,sha256=S4tcCfjKlqWph9mukBVx4kPxcs1T07l4Pj9N_sHPaSc,23887
|
67
|
+
wolfhece/acceptability/cli.py,sha256=ul_GmDnSgKSgA7z5ZIzeA_MlS2uqo-Xi48bqmWUS-Qk,19141
|
68
|
+
wolfhece/acceptability/func.py,sha256=J7EyZXelpJFrOpamsuw9XxYaMC5koyA3f2tA77l4viI,66553
|
67
69
|
wolfhece/apps/ManageParams.py,sha256=9okXHGHKEayA9iKTnv8jsVYCP2up5kr6hDaKO_fMCaQ,748
|
68
70
|
wolfhece/apps/Optimisation_hydro.py,sha256=ySIaVsFNEx4PaHFLlT2QW9BiwChVcTNd2TBnW1aICsI,810
|
69
71
|
wolfhece/apps/WolfPython.png,sha256=K3dcbeZUiJCFNwOAAlGMaRGLJ56yM8WD2I_0bk0xT1g,104622
|
@@ -77,7 +79,7 @@ wolfhece/apps/curvedigitizer.py,sha256=Yps4bcayzbsz0AoVc_dkSk35dEhhn_esIBy1Ziefg
|
|
77
79
|
wolfhece/apps/hydrometry.py,sha256=lhhJsFeb4zGL4bNQTs0co85OQ_6ssL1Oy0OUJCzhfYE,656
|
78
80
|
wolfhece/apps/isocurrent.py,sha256=dagmGR8ja9QQ1gwz_8fU-N052hIw-W0mWGVkzLu6C7I,4247
|
79
81
|
wolfhece/apps/splashscreen.py,sha256=SrustmIQeXnsiD-92OzjdGhBi-S7c_j-cSvuX4T6rtg,2929
|
80
|
-
wolfhece/apps/version.py,sha256=
|
82
|
+
wolfhece/apps/version.py,sha256=dbPO_X23JyL0yY0CRsgYL2MFlhZ_fYFqTzYKHZORaEw,389
|
81
83
|
wolfhece/apps/wolf.py,sha256=j_CgvsL8rwixbVvVD5Z0s7m7cHZ86gmFLojKGuetMls,729
|
82
84
|
wolfhece/apps/wolf2D.py,sha256=4z_OPQ3IgaLtjexjMKX9ppvqEYyjFLt1hcfFABy3-jU,703
|
83
85
|
wolfhece/apps/wolf_logo.bmp,sha256=ruJ4MA51CpGO_AYUp_dB4SWKHelvhOvd7Q8NrVOjDJk,3126
|
@@ -89,9 +91,10 @@ wolfhece/apps/wolfhydro.py,sha256=EsXTtXhnsQV1j-tiFYcyfMrJpjFv1MrWiftwODdi_8I,81
|
|
89
91
|
wolfhece/bernoulli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
90
92
|
wolfhece/bernoulli/chamber.py,sha256=ZWNjTAmTaH8u8J00n8uEib7dy84mUfHWN43805W_Qsw,2354
|
91
93
|
wolfhece/bernoulli/fluids.py,sha256=-mPv3EtCcIEfvTI7oSELtOjUFiKhKANu8w96NnUnrvU,464
|
92
|
-
wolfhece/bernoulli/losses.py,sha256=
|
94
|
+
wolfhece/bernoulli/losses.py,sha256=dH8iDXkQ4EX990wjz3TnNUAOIbfJ13iF6Qbx-CuXFkA,5277
|
95
|
+
wolfhece/bernoulli/losses_jax.py,sha256=Tv1Rem2D--ViyPT7noStXvc9YsZJVkAiSmHwGa7sn9Q,5438
|
93
96
|
wolfhece/bernoulli/network.py,sha256=wSiVpPfcXr-KaOx_ZIsPK1DYxklFGShPvX431-Gpdsg,3339
|
94
|
-
wolfhece/bernoulli/pipe.py,sha256=
|
97
|
+
wolfhece/bernoulli/pipe.py,sha256=_Fq66XC8-BLbZdIjnYf_p7DZdLTS1XPPPGmwif3DdOk,5092
|
95
98
|
wolfhece/blender/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
96
99
|
wolfhece/blender/array2polygons.py,sha256=UxsVHXqEJexaPXSAm_jEylMiJuvk9dd5RI6rvEPzgvg,8857
|
97
100
|
wolfhece/blender/ply.py,sha256=USF3_aaTQNNS90YciQL5LJN3ThKrxtWRyVf21P536F0,853
|
@@ -216,14 +219,15 @@ wolfhece/mar/Interface_MAR_WOLF_objet.py,sha256=_PNOrZDr-7CR19x_XHqLB5Si2hk8e469
|
|
216
219
|
wolfhece/mar/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
217
220
|
wolfhece/mar/commontools.py,sha256=vCmoNI2sMOco6Y4KPpKb7WORq45qFU_lSxbKGV9oZ8A,53824
|
218
221
|
wolfhece/mar/interface_MAR_WOLF.py,sha256=MWeXaHLDT4Eo9jZOAvz013lmpgGYT1v9VUYGAgBgSRU,21454
|
219
|
-
wolfhece/math_parser/__init__.py,sha256=
|
220
|
-
wolfhece/math_parser/calculator.py,sha256=
|
222
|
+
wolfhece/math_parser/__init__.py,sha256=Mi7YTrlJtcflyrRdZHHgE-uNPUFfOWmsf8FsOwKBRPI,27961
|
223
|
+
wolfhece/math_parser/calculator.py,sha256=NhyxiQkicuJC2LlekXCiDh-CeWC4t7xsfeNXUDoqSng,7392
|
221
224
|
wolfhece/mesh2d/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
222
225
|
wolfhece/mesh2d/bc_manager.py,sha256=QTGkb5TR8Y5xVnGUXPXzscGyTEQ6PA8CZPkVNwrlR1Y,53265
|
223
226
|
wolfhece/mesh2d/cell_tracker.py,sha256=mPmnD5lEf3gLPuLqtAIo-Gp-ipAwQdPxzjWOGt0b7jM,8958
|
224
227
|
wolfhece/mesh2d/config_manager.py,sha256=DcdxCIIs_dyC6ayJOBULeY364LONogL9PBaqBtC9eQ4,14736
|
225
228
|
wolfhece/mesh2d/cst_2D_boundary_conditions.py,sha256=Y4DF68uAklF3fXJgf05nb_JvJk2pvzcu_wu5nFXpWJo,5008
|
226
|
-
wolfhece/mesh2d/
|
229
|
+
wolfhece/mesh2d/simple_2d.py,sha256=WbDGScu2PwmhLI-qRv-nEsr7NYc-i1Jgeh-jI0JBKjM,93424
|
230
|
+
wolfhece/mesh2d/wolf2dprev.py,sha256=ji34vpE3RUZDyWo0WV-bedofa8J-RY0JCEj2sRyVKZE,491483
|
227
231
|
wolfhece/models/5_coul.pal,sha256=OI1UqcNIDBpJn2k_VDel__r-hKjjvdob0eqinGCI3QY,160
|
228
232
|
wolfhece/models/6_coul.pal,sha256=z7NK2dg0tAQBUweRQV54dIwJbPM1U5y1AR2LLw19Idw,148
|
229
233
|
wolfhece/models/7_coul.pal,sha256=XTnnUyCE8ONokScB2YzYDnSTft7E6sppmr7P-XwMsCE,205
|
@@ -264,7 +268,7 @@ wolfhece/report/reporting.py,sha256=JUEXovx_S4jpYkJEBU0AC-1Qw2OkkWyV3VAp6iOfSHc,
|
|
264
268
|
wolfhece/report/wolf_report.png,sha256=NoSV58LSwb-oxCcZScRiJno-kxDwRdm_bK-fiMsKJdA,592485
|
265
269
|
wolfhece/scenario/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
266
270
|
wolfhece/scenario/check_scenario.py,sha256=VVjtxfcLAgq_Pf8VSqRq6BJ-y4Zi24CntJpZWxAv3n8,5162
|
267
|
-
wolfhece/scenario/config_manager.py,sha256=
|
271
|
+
wolfhece/scenario/config_manager.py,sha256=DjDbioxANiMGyC4keIXovTWywNrXavYRh_nhg0yB0kY,96088
|
268
272
|
wolfhece/scenario/imposebc_void.py,sha256=PqA_99hKcaqK5zsK6IRIc5Exgg3WVpgWU8xpwNL49zQ,5571
|
269
273
|
wolfhece/scenario/update_void.py,sha256=ay8C_FxfXN627Hx46waaAO6F3ovYmOCTxseUumKAY7c,7474
|
270
274
|
wolfhece/shaders/fragment_shader_texture.glsl,sha256=w6h8d5mJqFaGbao0LGmjRcFFdcEQ3ICIl9JpuT71K5k,177
|
@@ -287,8 +291,8 @@ wolfhece/ui/wolf_multiselection_collapsiblepane.py,sha256=8PlMYrb_8jI8h9F0_EagpM
|
|
287
291
|
wolfhece/ui/wolf_times_selection_comparison_models.py,sha256=ORy7fz4dcp691qKzaOZHrRLZ0uXNhL-LIHxmpDGL6BI,5007
|
288
292
|
wolfhece/wintab/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
289
293
|
wolfhece/wintab/wintab.py,sha256=8A-JNONV6ujgsgG3lM5Uw-pVgglPATwKs86oBzzljoc,7179
|
290
|
-
wolfhece-2.1.
|
291
|
-
wolfhece-2.1.
|
292
|
-
wolfhece-2.1.
|
293
|
-
wolfhece-2.1.
|
294
|
-
wolfhece-2.1.
|
294
|
+
wolfhece-2.1.100.dist-info/METADATA,sha256=z6WVxL_W6QsldMdki33X3NOKxmsa4MsGdJsLLjb6aJw,2571
|
295
|
+
wolfhece-2.1.100.dist-info/WHEEL,sha256=R06PA3UVYHThwHvxuRWMqaGcr-PuniXahwjmQRFMEkY,91
|
296
|
+
wolfhece-2.1.100.dist-info/entry_points.txt,sha256=ZZ-aSfbpdcmo-wo84lRFzBN7LaSnD1XRGSaAKVX-Gpc,522
|
297
|
+
wolfhece-2.1.100.dist-info/top_level.txt,sha256=EfqZXMVCn7eILUzx9xsEu2oBbSo9liWPFWjIHik0iCI,9
|
298
|
+
wolfhece-2.1.100.dist-info/RECORD,,
|
File without changes
|
File without changes
|