datastock 0.0.35__py3-none-any.whl → 0.0.37__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.
- datastock/_class1.py +88 -127
- datastock/_class1_check.py +1 -98
- datastock/_class1_compute.py +203 -43
- datastock/_class1_domain.py +2 -2
- datastock/_class1_interpolate.py +8 -8
- datastock/_class1_show.py +406 -0
- datastock/_class1_uniformize.py +37 -19
- datastock/_class2.py +4 -48
- datastock/_class3.py +14 -6
- datastock/_generic_check.py +41 -43
- datastock/_generic_utils.py +11 -1
- datastock/_generic_utils_plot.py +76 -3
- datastock/_plot_BvsA_as_distribution_check.py +9 -5
- datastock/_plot_as_array.py +368 -2523
- datastock/_plot_as_array_1d.py +298 -0
- datastock/_plot_as_array_234d.py +786 -0
- datastock/_plot_as_mobile_lines.py +18 -13
- datastock/_plot_as_profile1d.py +27 -12
- datastock/_saveload.py +2 -0
- datastock/tests/test_01_DataStock.py +102 -27
- datastock/version.py +1 -1
- {datastock-0.0.35.dist-info → datastock-0.0.37.dist-info}/METADATA +1 -1
- datastock-0.0.37.dist-info/RECORD +42 -0
- datastock-0.0.35.dist-info/RECORD +0 -39
- /datastock/{_plot_misc.py → _plot_old_backup.py} +0 -0
- {datastock-0.0.35.dist-info → datastock-0.0.37.dist-info}/LICENSE +0 -0
- {datastock-0.0.35.dist-info → datastock-0.0.37.dist-info}/WHEEL +0 -0
- {datastock-0.0.35.dist-info → datastock-0.0.37.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,406 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
"""
|
3
|
+
Created on Mon Feb 5 15:16:42 2024
|
4
|
+
|
5
|
+
@author: dvezinet
|
6
|
+
"""
|
7
|
+
|
8
|
+
|
9
|
+
import numpy as np
|
10
|
+
|
11
|
+
|
12
|
+
from . import _generic_utils
|
13
|
+
from . import _generic_check
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
#############################################
|
18
|
+
#############################################
|
19
|
+
# Main
|
20
|
+
#############################################
|
21
|
+
|
22
|
+
|
23
|
+
def main(
|
24
|
+
coll=None,
|
25
|
+
# options
|
26
|
+
show_which=None,
|
27
|
+
show=None,
|
28
|
+
# print parameters
|
29
|
+
sep=None,
|
30
|
+
line=None,
|
31
|
+
justify=None,
|
32
|
+
table_sep=None,
|
33
|
+
# bool options
|
34
|
+
verb=True,
|
35
|
+
returnas=False,
|
36
|
+
):
|
37
|
+
|
38
|
+
# -------------
|
39
|
+
# check inputs
|
40
|
+
# -------------
|
41
|
+
|
42
|
+
show_which, show = _check_inputs(
|
43
|
+
coll=coll,
|
44
|
+
show_which=show_which,
|
45
|
+
show=show,
|
46
|
+
)
|
47
|
+
|
48
|
+
# intialize
|
49
|
+
lcol, lar = [], []
|
50
|
+
|
51
|
+
# -----------------------
|
52
|
+
# Build for dref
|
53
|
+
# -----------------------
|
54
|
+
|
55
|
+
if 'ref' in show_which and len(coll._dref) > 0:
|
56
|
+
lcol, lar = _show_ref(coll, lcol=lcol, lar=lar, show=show)
|
57
|
+
|
58
|
+
# -----------------------
|
59
|
+
# Build for ddata
|
60
|
+
# -----------------------
|
61
|
+
|
62
|
+
if 'data' in show_which and len(coll._ddata) > 0:
|
63
|
+
lcol, lar = _show_data(coll, lcol=lcol, lar=lar, show=show)
|
64
|
+
|
65
|
+
# -----------------------
|
66
|
+
# Build for dobj
|
67
|
+
# -----------------------
|
68
|
+
|
69
|
+
anyobj = (
|
70
|
+
len(coll._dobj) > 0
|
71
|
+
and any([
|
72
|
+
ss in show_which
|
73
|
+
for ss in ['obj'] + list(coll._dobj.keys())
|
74
|
+
])
|
75
|
+
)
|
76
|
+
if anyobj:
|
77
|
+
for k0 in coll._dobj.keys():
|
78
|
+
if 'obj' in show_which or k0 in show_which:
|
79
|
+
func = coll._get_show_obj(k0)
|
80
|
+
lcol, lar = func(coll=coll, which=k0, lcol=lcol, lar=lar, show=show)
|
81
|
+
|
82
|
+
return _generic_utils.pretty_print(
|
83
|
+
headers=lcol,
|
84
|
+
content=lar,
|
85
|
+
sep=sep,
|
86
|
+
line=line,
|
87
|
+
table_sep=table_sep,
|
88
|
+
verb=verb,
|
89
|
+
returnas=returnas,
|
90
|
+
)
|
91
|
+
|
92
|
+
|
93
|
+
###########################################################
|
94
|
+
###########################################################
|
95
|
+
# check
|
96
|
+
###########################################################
|
97
|
+
|
98
|
+
|
99
|
+
def _check_inputs(
|
100
|
+
coll=None,
|
101
|
+
show_which=None,
|
102
|
+
show=None,
|
103
|
+
):
|
104
|
+
|
105
|
+
# -------------
|
106
|
+
# show_which
|
107
|
+
# -------------
|
108
|
+
|
109
|
+
if show_which is None:
|
110
|
+
show_which = ['ref', 'data', 'obj']
|
111
|
+
|
112
|
+
if isinstance(show_which, str):
|
113
|
+
show_which = [show_which]
|
114
|
+
|
115
|
+
lok = ['ref', 'data'] + list(coll._dobj.keys())
|
116
|
+
show_which = _generic_check._check_var_iter(
|
117
|
+
show_which, 'show_which',
|
118
|
+
types=(list, tuple),
|
119
|
+
types_iter=str,
|
120
|
+
allowed=lok + ['obj'],
|
121
|
+
)
|
122
|
+
|
123
|
+
# tuple => exclusion
|
124
|
+
if isinstance(show_which, tuple):
|
125
|
+
|
126
|
+
if 'obj' in show_which:
|
127
|
+
show_which = [
|
128
|
+
k0 for k0 in ['ref', 'data'] if k0 not in show_which
|
129
|
+
]
|
130
|
+
|
131
|
+
else:
|
132
|
+
show_which = [
|
133
|
+
k0 for k0 in lok
|
134
|
+
if k0 not in show_which
|
135
|
+
]
|
136
|
+
else:
|
137
|
+
if 'obj' in show_which:
|
138
|
+
show_which = (
|
139
|
+
[k0 for k0 in ['ref', 'data'] if k0 in show_which]
|
140
|
+
+ list(coll._dobj.keys())
|
141
|
+
)
|
142
|
+
|
143
|
+
# -------------
|
144
|
+
# show
|
145
|
+
# -------------
|
146
|
+
|
147
|
+
if len(show_which) == 1:
|
148
|
+
|
149
|
+
if isinstance(show, str):
|
150
|
+
show = [show]
|
151
|
+
|
152
|
+
if show_which[0] == 'ref':
|
153
|
+
lok = list(coll.dref.keys())
|
154
|
+
elif show_which[0] == 'data':
|
155
|
+
lok = list(coll.ddata.keys())
|
156
|
+
else:
|
157
|
+
lok = list(coll.dobj.get(show_which[0], {}).keys())
|
158
|
+
|
159
|
+
show = _generic_check._check_var_iter(
|
160
|
+
show, 'show',
|
161
|
+
types=(list, tuple),
|
162
|
+
types_iter=str,
|
163
|
+
allowed=lok,
|
164
|
+
)
|
165
|
+
|
166
|
+
else:
|
167
|
+
show = None
|
168
|
+
|
169
|
+
return show_which, show
|
170
|
+
|
171
|
+
|
172
|
+
###########################################################
|
173
|
+
###########################################################
|
174
|
+
# specific show
|
175
|
+
###########################################################
|
176
|
+
|
177
|
+
|
178
|
+
def _show_ref(coll=None, lcol=None, lar=None, show=None):
|
179
|
+
|
180
|
+
# ----------------
|
181
|
+
# column names
|
182
|
+
# ----------------
|
183
|
+
|
184
|
+
lcol.append(['ref key', 'size', 'nb. data', 'nb. data monot.'])
|
185
|
+
|
186
|
+
# ---------------
|
187
|
+
# prepare array
|
188
|
+
# ---------------
|
189
|
+
|
190
|
+
lk0 = [
|
191
|
+
k0 for k0 in coll._dref.keys()
|
192
|
+
if show is None or k0 in show
|
193
|
+
]
|
194
|
+
|
195
|
+
lar.append([
|
196
|
+
[
|
197
|
+
k0,
|
198
|
+
str(coll._dref[k0]['size']),
|
199
|
+
str(len(coll._dref[k0]['ldata'])),
|
200
|
+
str(len(coll._dref[k0]['ldata_monot'])),
|
201
|
+
]
|
202
|
+
for k0 in lk0
|
203
|
+
])
|
204
|
+
|
205
|
+
# ---------------------------
|
206
|
+
# indices (for interactivity)
|
207
|
+
# ---------------------------
|
208
|
+
|
209
|
+
lp = coll.get_lparam(which='ref')
|
210
|
+
if 'indices' in lp:
|
211
|
+
lcol[0].append('indices')
|
212
|
+
for ii, (k0, v0) in enumerate(coll._dref.items()):
|
213
|
+
if coll._dref[k0]['indices'] is None:
|
214
|
+
lar[0][ii].append(str(v0['indices']))
|
215
|
+
else:
|
216
|
+
lar[0][ii].append(str(list(v0['indices'])))
|
217
|
+
|
218
|
+
# ---------------------------
|
219
|
+
# group (for interactivity)
|
220
|
+
# ---------------------------
|
221
|
+
|
222
|
+
if 'group' in lp:
|
223
|
+
lcol[0].append('group')
|
224
|
+
for ii, (k0, v0) in enumerate(coll._dref.items()):
|
225
|
+
lar[0][ii].append(str(coll._dref[k0]['group']))
|
226
|
+
|
227
|
+
# ---------------------------
|
228
|
+
# inc (for interactivity)
|
229
|
+
# ---------------------------
|
230
|
+
|
231
|
+
if 'inc' in lp:
|
232
|
+
lcol[0].append('increment')
|
233
|
+
for ii, (k0, v0) in enumerate(coll._dref.items()):
|
234
|
+
lar[0][ii].append(str(coll._dref[k0]['inc']))
|
235
|
+
|
236
|
+
return lcol, lar
|
237
|
+
|
238
|
+
|
239
|
+
def _show_data(coll=None, lcol=None, lar=None, show=None):
|
240
|
+
|
241
|
+
# ----------------
|
242
|
+
# parameters
|
243
|
+
# ----------------
|
244
|
+
|
245
|
+
lk = _show_get_fields(
|
246
|
+
which='data',
|
247
|
+
lparam=coll.get_lparam(which='data', for_show=True),
|
248
|
+
dshow=coll._dshow,
|
249
|
+
)
|
250
|
+
|
251
|
+
# ---------------------------
|
252
|
+
# column names
|
253
|
+
# ---------------------------
|
254
|
+
|
255
|
+
lcol.append(['data'] + [pp.split('.')[-1] for pp in lk])
|
256
|
+
|
257
|
+
# ---------------------------
|
258
|
+
# data
|
259
|
+
# ---------------------------
|
260
|
+
|
261
|
+
lk0 = [
|
262
|
+
k0 for k0 in coll._ddata.keys()
|
263
|
+
if show is None or k0 in show
|
264
|
+
]
|
265
|
+
|
266
|
+
lar.append([
|
267
|
+
[k0] + _show_extract(dobj=coll._ddata[k0], lk=lk)
|
268
|
+
for k0 in lk0
|
269
|
+
])
|
270
|
+
|
271
|
+
return lcol, lar
|
272
|
+
|
273
|
+
|
274
|
+
def _show_obj_def(coll=None, which=None, lcol=None, lar=None, show=None):
|
275
|
+
|
276
|
+
# ----------------
|
277
|
+
# parameters
|
278
|
+
# ----------------
|
279
|
+
|
280
|
+
lk = _show_get_fields(
|
281
|
+
which=which,
|
282
|
+
lparam=coll.get_lparam(which=which, for_show=True),
|
283
|
+
dshow=coll._dshow,
|
284
|
+
)
|
285
|
+
|
286
|
+
# ---------------------------
|
287
|
+
# column names
|
288
|
+
# ---------------------------
|
289
|
+
|
290
|
+
lcol.append([which] + [pp.split('.')[-1] for pp in lk])
|
291
|
+
|
292
|
+
# ---------------------------
|
293
|
+
# data
|
294
|
+
# ---------------------------
|
295
|
+
|
296
|
+
lkey = [
|
297
|
+
k1 for k1 in coll._dobj.get(which, {}).keys()
|
298
|
+
if show is None or k1 in show
|
299
|
+
]
|
300
|
+
|
301
|
+
lar.append([
|
302
|
+
[k1] + _show_extract(dobj=coll.dobj[which][k1], lk=lk)
|
303
|
+
for k1 in lkey
|
304
|
+
])
|
305
|
+
|
306
|
+
return lcol, lar
|
307
|
+
|
308
|
+
|
309
|
+
###########################################################
|
310
|
+
###########################################################
|
311
|
+
# Utilities
|
312
|
+
###########################################################
|
313
|
+
|
314
|
+
|
315
|
+
def _get_lparam_show_append(which, key, val, lparam, for_show):
|
316
|
+
|
317
|
+
c0 = (
|
318
|
+
callable(val)
|
319
|
+
or 'class' in key
|
320
|
+
or 'handle' in key
|
321
|
+
or (which == 'axes' and key == 'bck')
|
322
|
+
or isinstance(val, dict)
|
323
|
+
)
|
324
|
+
if key not in lparam and ((not for_show) or (for_show and not c0)):
|
325
|
+
lparam.append(key)
|
326
|
+
|
327
|
+
|
328
|
+
def _get_lparam(which=None, dd=None, for_show=None):
|
329
|
+
|
330
|
+
if for_show:
|
331
|
+
lparam = []
|
332
|
+
for k0, v0 in dd.items():
|
333
|
+
for k1, v1 in v0.items():
|
334
|
+
if isinstance(v1, dict):
|
335
|
+
for k2, v2 in v1.items():
|
336
|
+
k3 = f'{k1}.{k2}'
|
337
|
+
_get_lparam_show_append(
|
338
|
+
which, k3, v2, lparam, for_show,
|
339
|
+
)
|
340
|
+
else:
|
341
|
+
_get_lparam_show_append(
|
342
|
+
which, k1, v1, lparam, for_show,
|
343
|
+
)
|
344
|
+
|
345
|
+
else:
|
346
|
+
lparam = list(list(dd.values())[0].keys())
|
347
|
+
|
348
|
+
return lparam
|
349
|
+
|
350
|
+
|
351
|
+
def _show_get_fields(which=None, lparam=None, dshow=None):
|
352
|
+
|
353
|
+
# show dict
|
354
|
+
if which not in dshow.keys():
|
355
|
+
lk = lparam
|
356
|
+
|
357
|
+
else:
|
358
|
+
lk = dshow[which]
|
359
|
+
|
360
|
+
if isinstance(lk, list):
|
361
|
+
lk = [
|
362
|
+
kk for kk in dshow[which]
|
363
|
+
if kk in lparam
|
364
|
+
]
|
365
|
+
elif isinstance(lk, tuple):
|
366
|
+
lk = [
|
367
|
+
kk for kk in lparam
|
368
|
+
if kk not in dshow[which]
|
369
|
+
]
|
370
|
+
else:
|
371
|
+
msg = f"Unreckognized dshow['{which}']"
|
372
|
+
raise Exception(msg)
|
373
|
+
|
374
|
+
return lk
|
375
|
+
|
376
|
+
|
377
|
+
def _show_extract(dobj=None, lk=None):
|
378
|
+
|
379
|
+
lv0 = []
|
380
|
+
for k0 in lk:
|
381
|
+
|
382
|
+
lk0 = k0.split('.')
|
383
|
+
for ii in range(len(lk0)):
|
384
|
+
if ii == 0:
|
385
|
+
v0 = dobj[lk0[ii]]
|
386
|
+
elif v0 is not None:
|
387
|
+
v0 = v0[lk0[ii]]
|
388
|
+
|
389
|
+
# formatting
|
390
|
+
if isinstance(v0, float):
|
391
|
+
lv0.append(f'{v0:.2e}')
|
392
|
+
|
393
|
+
elif isinstance(v0, np.ndarray) and v0.size == 3:
|
394
|
+
if v0.dtype == float:
|
395
|
+
lv0.append(
|
396
|
+
np.array2string(
|
397
|
+
v0,
|
398
|
+
formatter={'float': lambda x: f'{x:.3e}'},
|
399
|
+
),
|
400
|
+
)
|
401
|
+
else:
|
402
|
+
lv0.append(str(v0))
|
403
|
+
else:
|
404
|
+
lv0.append(str(v0))
|
405
|
+
|
406
|
+
return lv0
|
datastock/_class1_uniformize.py
CHANGED
@@ -34,6 +34,8 @@ def get_ref_vector(
|
|
34
34
|
# ressources
|
35
35
|
ddata=None,
|
36
36
|
dref=None,
|
37
|
+
# data to find vector for
|
38
|
+
key0=None,
|
37
39
|
# inputs
|
38
40
|
key=None,
|
39
41
|
ref=None,
|
@@ -58,13 +60,21 @@ def get_ref_vector(
|
|
58
60
|
default=True,
|
59
61
|
)
|
60
62
|
|
61
|
-
#
|
63
|
+
# key0
|
62
64
|
lkok = list(ddata.keys()) + [None]
|
63
|
-
|
64
|
-
|
65
|
+
key0 = _generic_check._check_var(
|
66
|
+
key0, 'key0',
|
65
67
|
allowed=lkok,
|
66
68
|
)
|
67
69
|
|
70
|
+
# key
|
71
|
+
if key is not None:
|
72
|
+
lkok = list(ddata.keys()) + [None]
|
73
|
+
key = _generic_check._check_var(
|
74
|
+
key, 'key',
|
75
|
+
allowed=lkok,
|
76
|
+
)
|
77
|
+
|
68
78
|
# ref
|
69
79
|
lkok = list(dref.keys()) + [None]
|
70
80
|
ref = _generic_check._check_var(
|
@@ -72,8 +82,8 @@ def get_ref_vector(
|
|
72
82
|
allowed=lkok,
|
73
83
|
)
|
74
84
|
|
75
|
-
if
|
76
|
-
msg = "Please provide
|
85
|
+
if key0 is None and ref is None:
|
86
|
+
msg = "Please provide key0 or ref at least!"
|
77
87
|
raise Exception(msg)
|
78
88
|
|
79
89
|
# warn
|
@@ -87,8 +97,8 @@ def get_ref_vector(
|
|
87
97
|
# hasref, hasvect
|
88
98
|
|
89
99
|
hasref = None
|
90
|
-
if ref is not None and
|
91
|
-
hasref = ref in ddata[
|
100
|
+
if ref is not None and key0 is not None:
|
101
|
+
hasref = ref in ddata[key0]['ref']
|
92
102
|
if not hasref:
|
93
103
|
ref = None
|
94
104
|
elif ref is not None:
|
@@ -96,8 +106,8 @@ def get_ref_vector(
|
|
96
106
|
|
97
107
|
if hasref is True:
|
98
108
|
refok = (ref,)
|
99
|
-
elif
|
100
|
-
refok = ddata[
|
109
|
+
elif key0 is not None:
|
110
|
+
refok = ddata[key0]['ref']
|
101
111
|
|
102
112
|
# identify possible vect
|
103
113
|
if hasref is not False:
|
@@ -113,10 +123,14 @@ def get_ref_vector(
|
|
113
123
|
])
|
114
124
|
]
|
115
125
|
|
116
|
-
#
|
126
|
+
# if key is provided
|
117
127
|
if key is not None and key in lk_vect:
|
118
128
|
lk_vect = [key]
|
119
129
|
|
130
|
+
# particular case
|
131
|
+
if key0 is not None and key0 in lk_vect:
|
132
|
+
lk_vect = [key0]
|
133
|
+
|
120
134
|
# cases
|
121
135
|
if len(lk_vect) == 0:
|
122
136
|
if warn is True:
|
@@ -137,7 +151,7 @@ def get_ref_vector(
|
|
137
151
|
if warn is True:
|
138
152
|
msg = (
|
139
153
|
f"Multiple possible vectors found:\n{lk_vect}\n"
|
140
|
-
f"\t-
|
154
|
+
f"\t- key0: {key0}\n"
|
141
155
|
f"\t- ref: {ref}\n"
|
142
156
|
f"\t- hasref: {hasref}\n"
|
143
157
|
f"\t- refok: {refok}\n"
|
@@ -397,7 +411,7 @@ def _get_ref_vector_find_identical(
|
|
397
411
|
_, hasvecti, _, key_vecti = get_ref_vector(
|
398
412
|
ddata=ddata,
|
399
413
|
dref=dref,
|
400
|
-
|
414
|
+
key0=k0,
|
401
415
|
ref=ref,
|
402
416
|
dim=dim,
|
403
417
|
quant=quant,
|
@@ -437,6 +451,7 @@ def get_ref_vector_common(
|
|
437
451
|
# inputs
|
438
452
|
keys=None,
|
439
453
|
# for selecting ref vector
|
454
|
+
key=None,
|
440
455
|
ref=None,
|
441
456
|
dim=None,
|
442
457
|
quant=None,
|
@@ -499,7 +514,9 @@ def get_ref_vector_common(
|
|
499
514
|
hasrefi, hasvecti, refi, key_vecti, vali, dindi = get_ref_vector(
|
500
515
|
ddata=ddata,
|
501
516
|
dref=dref,
|
502
|
-
|
517
|
+
key0=k0,
|
518
|
+
# select vector
|
519
|
+
key=key,
|
503
520
|
ref=ref,
|
504
521
|
dim=dim,
|
505
522
|
quant=quant,
|
@@ -732,7 +749,7 @@ def _get_ref_vector_common_values(
|
|
732
749
|
hasrefi, hasvecti, refi, key_vecti, vali, dindi = get_ref_vector(
|
733
750
|
ddata=ddata,
|
734
751
|
dref=dref,
|
735
|
-
|
752
|
+
key0=k0,
|
736
753
|
ref=ref,
|
737
754
|
dim=dim,
|
738
755
|
quant=quant,
|
@@ -847,7 +864,7 @@ def _uniformize_check(
|
|
847
864
|
param = _generic_check._check_var(
|
848
865
|
param, 'param',
|
849
866
|
types=str,
|
850
|
-
allowed=['dim', 'quant', 'name', 'units'],
|
867
|
+
allowed=['key', 'dim', 'quant', 'name', 'units'],
|
851
868
|
default='dim',
|
852
869
|
)
|
853
870
|
|
@@ -855,10 +872,11 @@ def _uniformize_check(
|
|
855
872
|
# list availabe values for param and associated refs
|
856
873
|
dparref = {
|
857
874
|
k0: [
|
858
|
-
|
875
|
+
(k1 if param == 'key' else v1[param])
|
876
|
+
for k1, v1 in coll.ddata.items()
|
859
877
|
if v1['monot'] == (True,)
|
860
878
|
and v1['ref'][0] == k0
|
861
|
-
and (lparam is None or v1[param] in lparam)
|
879
|
+
and (lparam is None or (param != 'key' and v1[param] in lparam))
|
862
880
|
]
|
863
881
|
for k0 in refs
|
864
882
|
}
|
@@ -898,7 +916,7 @@ def _uniformize_check(
|
|
898
916
|
for k0, v0 in dparam.items():
|
899
917
|
lout = [
|
900
918
|
k1 for k1 in v0['keys']
|
901
|
-
if coll.get_ref_vector(
|
919
|
+
if coll.get_ref_vector(key0=k1, **{param: k0})[3] is None
|
902
920
|
]
|
903
921
|
if len(lout) > 0:
|
904
922
|
dfails[k0] = lout
|
@@ -1047,4 +1065,4 @@ def uniformize(
|
|
1047
1065
|
if returnas == 'dataframe':
|
1048
1066
|
pass
|
1049
1067
|
|
1050
|
-
return stu
|
1068
|
+
return stu
|
datastock/_class2.py
CHANGED
@@ -1374,53 +1374,9 @@ class DataStock2(DataStock1):
|
|
1374
1374
|
# -------------------
|
1375
1375
|
|
1376
1376
|
def on_close(self, event):
|
1377
|
-
|
1378
|
-
|
1379
|
-
|
1380
|
-
]
|
1381
|
-
if len(kcan) > 1:
|
1382
|
-
raise Exception('Several matching canvas')
|
1383
|
-
elif len(kcan) == 1:
|
1384
|
-
|
1385
|
-
if len(self._dobj['canvas']) == 1:
|
1386
|
-
self.close_all()
|
1387
|
-
|
1388
|
-
else:
|
1389
|
-
lax = [
|
1390
|
-
k1 for k1, v1 in self._dobj['axes'].items()
|
1391
|
-
if v1['canvas'] == kcan[0]
|
1392
|
-
]
|
1393
|
-
lmob = [
|
1394
|
-
k1 for k1, v1 in self._dobj['mobile'].items()
|
1395
|
-
if v1['axes'] in lax
|
1396
|
-
]
|
1397
|
-
for k1 in lax:
|
1398
|
-
del self._dobj['axes'][k1]
|
1399
|
-
for k1 in lmob:
|
1400
|
-
del self._dobj['mobile'][k1]
|
1401
|
-
del self._dobj['canvas'][kcan[0]]
|
1402
|
-
|
1403
|
-
def close_all(self):
|
1404
|
-
|
1405
|
-
# close figures
|
1406
|
-
if 'axes' in self._dobj.keys():
|
1407
|
-
lfig = set([
|
1408
|
-
v0['handle'].figure for v0 in self._dobj['axes'].values()
|
1409
|
-
])
|
1410
|
-
for ff in lfig:
|
1411
|
-
plt.close(ff)
|
1412
|
-
|
1413
|
-
# delete obj dict
|
1414
|
-
lk = ['interactivity', 'mobile', 'key', 'canvas', 'group', 'axes']
|
1415
|
-
for kk in lk:
|
1416
|
-
if kk in self._dobj.keys():
|
1417
|
-
del self._dobj[kk]
|
1418
|
-
|
1419
|
-
# remove interactivity-specific param in dref
|
1420
|
-
lp = list(set(self.get_lparam(which='ref')).intersection(
|
1421
|
-
['indices', 'group', 'inc']
|
1422
|
-
))
|
1423
|
-
self.remove_param(which='ref', param=lp)
|
1377
|
+
self.remove_all(excluded=['canvas']) # to avoid crash
|
1378
|
+
print("\n---- CLOSING interactive figure ----")
|
1379
|
+
print(f"\tleft in dax: {self.get_nbytes()[0]/1000} Ko\n")
|
1424
1380
|
|
1425
1381
|
|
1426
1382
|
# #############################################################################
|
@@ -1431,4 +1387,4 @@ class DataStock2(DataStock1):
|
|
1431
1387
|
|
1432
1388
|
__all__ = [
|
1433
1389
|
sorted([k0 for k0 in locals() if k0.startswith('DataStock')])[-1]
|
1434
|
-
]
|
1390
|
+
]
|
datastock/_class3.py
CHANGED
@@ -24,8 +24,8 @@ class DataStock3(DataStock2):
|
|
24
24
|
keyZ=None,
|
25
25
|
keyU=None,
|
26
26
|
ind=None,
|
27
|
-
|
28
|
-
|
27
|
+
dvminmax=None,
|
28
|
+
dscale=None,
|
29
29
|
cmap=None,
|
30
30
|
aspect=None,
|
31
31
|
nmax=None,
|
@@ -43,13 +43,19 @@ class DataStock3(DataStock2):
|
|
43
43
|
dax=None,
|
44
44
|
dmargin=None,
|
45
45
|
fs=None,
|
46
|
+
wintit=None,
|
47
|
+
tit=None,
|
46
48
|
dcolorbar=None,
|
47
49
|
dleg=None,
|
48
50
|
label=None,
|
49
51
|
connect=None,
|
50
52
|
inplace=None,
|
51
53
|
):
|
52
|
-
""" Plot the desired
|
54
|
+
""" Plot the desired 1d, 2, 3, or 4d data array as a matrix
|
55
|
+
|
56
|
+
other axes can be plotted using monotonous (optionally uniform) arrays
|
57
|
+
|
58
|
+
"""
|
53
59
|
return _plot_as_array.plot_as_array(
|
54
60
|
# parameters
|
55
61
|
coll=self,
|
@@ -59,8 +65,8 @@ class DataStock3(DataStock2):
|
|
59
65
|
keyZ=keyZ,
|
60
66
|
keyU=keyU,
|
61
67
|
ind=ind,
|
62
|
-
|
63
|
-
|
68
|
+
dvminmax=dvminmax,
|
69
|
+
dscale=dscale,
|
64
70
|
cmap=cmap,
|
65
71
|
aspect=aspect,
|
66
72
|
nmax=nmax,
|
@@ -78,6 +84,8 @@ class DataStock3(DataStock2):
|
|
78
84
|
dax=dax,
|
79
85
|
dmargin=dmargin,
|
80
86
|
fs=fs,
|
87
|
+
wintit=wintit,
|
88
|
+
tit=tit,
|
81
89
|
dcolorbar=dcolorbar,
|
82
90
|
dleg=dleg,
|
83
91
|
label=label,
|
@@ -416,4 +424,4 @@ class DataStock3(DataStock2):
|
|
416
424
|
|
417
425
|
__all__ = [
|
418
426
|
sorted([k0 for k0 in locals() if k0.startswith('DataStock')])[-1]
|
419
|
-
]
|
427
|
+
]
|