zea 0.0.4__py3-none-any.whl → 0.0.6__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.
- zea/__init__.py +8 -7
- zea/__main__.py +8 -26
- zea/agent/selection.py +166 -0
- zea/backend/__init__.py +89 -0
- zea/backend/jax/__init__.py +14 -51
- zea/backend/tensorflow/__init__.py +0 -49
- zea/backend/torch/__init__.py +27 -62
- zea/data/__main__.py +6 -3
- zea/data/file.py +19 -74
- zea/data/layers.py +2 -3
- zea/display.py +1 -5
- zea/doppler.py +75 -0
- zea/internal/_generate_keras_ops.py +125 -0
- zea/internal/core.py +10 -3
- zea/internal/device.py +33 -16
- zea/internal/notebooks.py +39 -0
- zea/internal/operators.py +10 -0
- zea/internal/parameters.py +75 -19
- zea/internal/registry.py +1 -1
- zea/internal/viewer.py +24 -24
- zea/io_lib.py +60 -62
- zea/keras_ops.py +1989 -0
- zea/metrics.py +357 -65
- zea/models/__init__.py +6 -3
- zea/models/deeplabv3.py +131 -0
- zea/models/diffusion.py +18 -18
- zea/models/echonetlvh.py +279 -0
- zea/models/lv_segmentation.py +79 -0
- zea/models/presets.py +50 -0
- zea/models/regional_quality.py +122 -0
- zea/ops.py +52 -56
- zea/scan.py +10 -3
- zea/tensor_ops.py +251 -0
- zea/tools/fit_scan_cone.py +2 -2
- zea/tools/selection_tool.py +28 -9
- {zea-0.0.4.dist-info → zea-0.0.6.dist-info}/METADATA +10 -3
- {zea-0.0.4.dist-info → zea-0.0.6.dist-info}/RECORD +40 -33
- {zea-0.0.4.dist-info → zea-0.0.6.dist-info}/WHEEL +1 -1
- zea/internal/convert.py +0 -150
- {zea-0.0.4.dist-info → zea-0.0.6.dist-info}/entry_points.txt +0 -0
- {zea-0.0.4.dist-info → zea-0.0.6.dist-info/licenses}/LICENSE +0 -0
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
zea/__init__.py,sha256
|
|
2
|
-
zea/__main__.py,sha256=
|
|
1
|
+
zea/__init__.py,sha256=C93vEqaOeNObiK-tGmSFrpJ9pAsYEuOltmhGMaKpXuY,2345
|
|
2
|
+
zea/__main__.py,sha256=4OCFujuZ5ooIDMF7xxE4Esin9dfFlgX9PdOi9uB64y8,1569
|
|
3
3
|
zea/agent/__init__.py,sha256=uJjMiPvvCXmUxC2mkSkh1Q9Ege0Vf7WazKX1_Ul80GY,924
|
|
4
4
|
zea/agent/gumbel.py,sha256=WbvSrM8meXtZmDLkyXDGUyRzjB4dWZmNO_qzloRxB_s,3770
|
|
5
5
|
zea/agent/masks.py,sha256=qdSGbTs9449hUxcX6gAl_s47mrs1FKI6U_T2KjS-iz8,6581
|
|
6
|
-
zea/agent/selection.py,sha256=
|
|
7
|
-
zea/backend/__init__.py,sha256=
|
|
6
|
+
zea/agent/selection.py,sha256=ut8I_TcfcoDRQnBBsxiVjNqjFp_PLNNHxgoE1FTP4rw,27072
|
|
7
|
+
zea/backend/__init__.py,sha256=XiBtxpXMYgcSBXjJ-uEWh7a92XqWs-4uDUh6NeKeUE4,6922
|
|
8
8
|
zea/backend/autograd.py,sha256=buWy19ctDFsAoktZaLm5qyLN9nQRicI91-V3ND-t3f4,6868
|
|
9
|
-
zea/backend/jax/__init__.py,sha256=
|
|
10
|
-
zea/backend/tensorflow/__init__.py,sha256=
|
|
9
|
+
zea/backend/jax/__init__.py,sha256=AvO6tUDTMiyrRuY_M2KKwUpzzzqWIRlSh3NhI_lcw9w,1056
|
|
10
|
+
zea/backend/tensorflow/__init__.py,sha256=FQAMCrUgvHm4LCVfnP9sXGACQSMFx3nIarPve_MgxYM,422
|
|
11
11
|
zea/backend/tensorflow/dataloader.py,sha256=yM25UPhoRBm46ePkIQ-QQZ_9gZfCaqhdC_Gzf57eLNE,14394
|
|
12
12
|
zea/backend/tensorflow/layers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
13
13
|
zea/backend/tensorflow/layers/apodization.py,sha256=Pi5GpkoMSwPq8_FL1fqkuGINmOD-sIHkHXEtF62VNSc,826
|
|
@@ -21,7 +21,7 @@ zea/backend/tensorflow/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NM
|
|
|
21
21
|
zea/backend/tensorflow/utils/callbacks.py,sha256=4biWDzQiqgnmE8YWF9mlxLZGxrVMMs-cpgBZI7iD2oI,57
|
|
22
22
|
zea/backend/tensorflow/utils/utils.py,sha256=4uOLfbxko2xUsyVjw7bClTdLkif7-NYscIo7ljqON6U,1050
|
|
23
23
|
zea/backend/tf2jax.py,sha256=qld6VecFEVOpUI4wUqA8wj9xvpsIjH2o72TcQqOyxbY,384
|
|
24
|
-
zea/backend/torch/__init__.py,sha256=
|
|
24
|
+
zea/backend/torch/__init__.py,sha256=YMNTzqRqhPu7pjGPczupT3jo4SwjYpI8Ch97GI0OPDg,1119
|
|
25
25
|
zea/backend/torch/losses.py,sha256=7ITD_p630eyJzjgAT79XUNiff7XmW-naMGOUgKFnAAQ,2114
|
|
26
26
|
zea/beamform/__init__.py,sha256=rlRy-Og_KsbnU4Qm0NR8SP5ymePCwSr2aMW9jjOaeHI,1018
|
|
27
27
|
zea/beamform/beamformer.py,sha256=KLVNkQ6Af3De2FB0z0VNpLftc8SDw5SpR0oNPmQReSM,18388
|
|
@@ -32,7 +32,7 @@ zea/beamform/phantoms.py,sha256=zow6j4mPXOJjSl31dLQbuDW8rH_qEV2dsfcy-TqkhkI,1108
|
|
|
32
32
|
zea/beamform/pixelgrid.py,sha256=XONJqgWC9XUkEL7iaphy0YBr6xLAyXz-yaTdPQju1r0,5432
|
|
33
33
|
zea/config.py,sha256=mhmTxD1ylyc6zl7yq834-BUiBpcqJ-sNVnJd38yinCs,19509
|
|
34
34
|
zea/data/__init__.py,sha256=h2wKll096dKxTRrEKHnFmgURqp9lDHlqJM884HzmhSY,1757
|
|
35
|
-
zea/data/__main__.py,sha256=
|
|
35
|
+
zea/data/__main__.py,sha256=xEXj3m3gJ6MoV1f9WbDl3QVPMbDXedTj1J9WeT83NrI,909
|
|
36
36
|
zea/data/augmentations.py,sha256=R09_dVkhOFGHiiVFaTjP9pYcHCMtwri9Nz8wsM5mRPY,12686
|
|
37
37
|
zea/data/convert/__init__.py,sha256=xuPIB-Dd8voTTRoQr-Mb5KTbPpWzk46alCgKQ_EZqzY,244
|
|
38
38
|
zea/data/convert/camus.py,sha256=PgFN6b0AgHZRS0JjcsiOGOzoagG-sHvlmhDuNR6iNKo,9555
|
|
@@ -46,60 +46,67 @@ zea/data/convert/picmus.py,sha256=1TK1vDWzfHmnFErtt0ad36TInIiy4fm3nMmfx83G5nw,62
|
|
|
46
46
|
zea/data/data_format.py,sha256=n4OTQKl1newgvTamlPprAsRubAVt3bPeNYHJXNc89G0,25684
|
|
47
47
|
zea/data/dataloader.py,sha256=ZAlWbZB6F43EtLvRcUzfeHVtMhYViJTvyaRb9CmpEFc,14865
|
|
48
48
|
zea/data/datasets.py,sha256=XcNlJVmkfNo7TXp80y4Si_by75Ix2ULIU_iEiNEhl6Q,24492
|
|
49
|
-
zea/data/file.py,sha256=
|
|
50
|
-
zea/data/layers.py,sha256=
|
|
49
|
+
zea/data/file.py,sha256=DJHqYlVDNZtQWj0VvytrdGeZEnpDJqc2zZPWz3rF_7k,27152
|
|
50
|
+
zea/data/layers.py,sha256=vAVBJJOd0cRp2vxjk01aP6PTWzJfBEO6Lx54Jj9gldg,6714
|
|
51
51
|
zea/data/preset_utils.py,sha256=mJ7YC7W9X91__V6Wk2xenORIqZ0reZQerbX3zgapBJM,4408
|
|
52
52
|
zea/data/utils.py,sha256=Y8eO7DznJFiq89SUQmDdiYetQ3aHjf72sC8ih9ooht4,2687
|
|
53
53
|
zea/datapaths.py,sha256=SzsgW4KuZ72aieUbKTUPBmErEPPNcthgI01ixrKX0RQ,20239
|
|
54
|
-
zea/display.py,sha256=
|
|
54
|
+
zea/display.py,sha256=tIrPY2wcQFhdsijgydeNkZviZHkVZDtpz4lFAyPzRv0,24250
|
|
55
|
+
zea/doppler.py,sha256=PG8-GhgTxo2eUjFQ2D6Ag74HD2SkJa6b5LUQjXCS8a8,2994
|
|
55
56
|
zea/interface.py,sha256=2xa3wSNwVlESBa3hWqsJIypjnemioPUGJxEgwl4mDXY,18176
|
|
57
|
+
zea/internal/_generate_keras_ops.py,sha256=0K64fBSDBirTGiwP_qPPT4gdrGwVvKLzPylbHzT-qus,3853
|
|
56
58
|
zea/internal/cache.py,sha256=JHbWJ2vXz_NnXWHXrfSKAhcvi1_JMMeQnBzQIrSlYBo,10559
|
|
57
59
|
zea/internal/checks.py,sha256=Dj8kMY0BY5M170V7NmM9TENyiI7tb6wT9tG6jdrxy-0,10809
|
|
58
60
|
zea/internal/config/create.py,sha256=f8dy6YcAUZbROxwCvORI26ACMRO4Q7EL188KyTL8Bpk,5447
|
|
59
61
|
zea/internal/config/parameters.py,sha256=3YE8aBeiosxTuIT0RAEEMkJPmkykSyZZ7hbmmyGnsuc,6602
|
|
60
62
|
zea/internal/config/validation.py,sha256=vPGFWC-UVtNh8jqfQ4V8HTUIjfnOtsJrqcG2R2ae5hg,6522
|
|
61
|
-
zea/internal/
|
|
62
|
-
zea/internal/
|
|
63
|
-
zea/internal/device.py,sha256=pcgKHWudolflxe6umQh5DVNDz8QtQBZ8tDiWDNwTays,15175
|
|
63
|
+
zea/internal/core.py,sha256=wJHqp3h_MCCkugTPpvmsxNIOOQ6_VAF7-skNUY-bvmc,9587
|
|
64
|
+
zea/internal/device.py,sha256=YM-yuB2wu8hmILP84LfIjxmcLq9mI6FMI_iS8Lr04i0,15841
|
|
64
65
|
zea/internal/git_info.py,sha256=vEeN7cdppNIJPRkC69pUQqtAfTdwCN-tpfo702xpGzY,1040
|
|
65
|
-
zea/internal/
|
|
66
|
-
zea/internal/
|
|
67
|
-
zea/internal/
|
|
66
|
+
zea/internal/notebooks.py,sha256=57qBEJMzLIfWndZslQ6NphJgU4Wlu_jL_XgDWft_xkY,1136
|
|
67
|
+
zea/internal/operators.py,sha256=F4J5R6L_VBfq5JbYKtqXuMQqk1q-L-n3JaOakcX_fDg,2005
|
|
68
|
+
zea/internal/parameters.py,sha256=kyHbEg0otKN-_kPFPIg4iaHSNBJ-TitFmhahR5DRhlk,19871
|
|
69
|
+
zea/internal/registry.py,sha256=DYwZsz5p4zheW1D3DEqKPS5unFbGF2YOvsm55ypTeaQ,7867
|
|
68
70
|
zea/internal/setup_zea.py,sha256=P8dmHk_0hwfukaf-DfPxeDofOH4Kj1s5YvUs8yeFqAQ,7800
|
|
69
|
-
zea/internal/viewer.py,sha256=
|
|
70
|
-
zea/io_lib.py,sha256=
|
|
71
|
+
zea/internal/viewer.py,sha256=nXTJwaWM9x8_R3X8YB9B5bNkZwwfVGKUu8pIr2HMweQ,15840
|
|
72
|
+
zea/io_lib.py,sha256=9yjiYQmoyaJ6IYo4SuNZ5ofX8DB67mbypvmKxd8iZqk,12506
|
|
73
|
+
zea/keras_ops.py,sha256=QUN8sX3tNvyxXPcabiE2V41EJNFDIDBdOrwDscPL1aE,65461
|
|
71
74
|
zea/log.py,sha256=UJIL91lHUgWc-vrlJWOn1PX60fX3TFQ5slIs-b5EWEQ,10540
|
|
72
|
-
zea/metrics.py,sha256=
|
|
73
|
-
zea/models/__init__.py,sha256=
|
|
75
|
+
zea/metrics.py,sha256=88nsFP3pKeoMvNQaDKA6w-NFX8KRauhhc0CWzOtsiZ4,15241
|
|
76
|
+
zea/models/__init__.py,sha256=xeyo23kLfXCEy92eev4qLVVA2oSVWsN1XXEMsuwrlBU,4325
|
|
74
77
|
zea/models/base.py,sha256=_l1RlXIYS2V5py-en5llJpX1oU0IXK_hzLhfCYybzHg,7121
|
|
75
78
|
zea/models/carotid_segmenter.py,sha256=qxv4xSSbwLQ3AWeP8xoVCFhpPLOqsN-4dNq1ECkG3FM,5401
|
|
79
|
+
zea/models/deeplabv3.py,sha256=Ew-JIaQgekumVZN--pIQ5XQR5xTj1qMbfLm_xQH9qYo,4967
|
|
76
80
|
zea/models/dense.py,sha256=EwrSawfSTi9oWE55Grr7jtwLXC9MNqEOO3su4oYHqfg,4067
|
|
77
|
-
zea/models/diffusion.py,sha256
|
|
81
|
+
zea/models/diffusion.py,sha256=-SS0ZGmwpRFeUdQyFIpKDYgi-ImLolSrFNJosYFBuLM,31971
|
|
78
82
|
zea/models/echonet.py,sha256=toLw6QjpdROvGrm6VEuqHuxxKkiAWtX-__5YzrE-LJA,6346
|
|
83
|
+
zea/models/echonetlvh.py,sha256=8HBbm6jJFMkORzM_-IiBDARq4fGzaWyh0TLcCv8hlxw,10474
|
|
79
84
|
zea/models/generative.py,sha256=iujicyFDuCD7NEk_cZ8thlZ2Rl3Qa8LfkwPsZdWYpR0,2625
|
|
80
85
|
zea/models/gmm.py,sha256=6YYoiizsD7BtISOToEXkki6Cc8iXMkgmPH_rMFQKs3E,8324
|
|
81
86
|
zea/models/layers.py,sha256=hhtBLQgt6ZMKj60FXBNIpThI7gZZeEqkzBMsub_TNFM,1920
|
|
82
87
|
zea/models/lpips.py,sha256=ryJSg2_XIZyOyPP-fcEQKsz3JzlDl9ik4TZPipVbomw,6126
|
|
88
|
+
zea/models/lv_segmentation.py,sha256=UjWbG3WaOPdEvcVH-a_jSOe4Se2WbKaFCejwjFrWpUU,2952
|
|
83
89
|
zea/models/preset_utils.py,sha256=OEs13M92W3NH_lB5_dCvJSNqdW0-QQwKw87QMZg06O4,15396
|
|
84
|
-
zea/models/presets.py,sha256=
|
|
90
|
+
zea/models/presets.py,sha256=cTQRoCBRRFUEFKKS1GGJGDNXRoydRYF9psifBEoO0Y0,4215
|
|
91
|
+
zea/models/regional_quality.py,sha256=2VznMVENi0r9BVfb0y10NeVOOyHSkv7cvjAYfXw0MAA,4280
|
|
85
92
|
zea/models/taesd.py,sha256=Vab5jywo4uxXPXMQ-8VdpOMhVwQsEc_PNztctDzFZfk,8403
|
|
86
93
|
zea/models/unet.py,sha256=B_600WLn3jj_BuhDdRrj5I1XQIHylaQQN8ISq-vt7zM,6392
|
|
87
94
|
zea/models/utils.py,sha256=My6VY27S4udOn7xatIM22Qgn8jED1FmnA2yZw1mcuVw,2015
|
|
88
|
-
zea/ops.py,sha256=
|
|
95
|
+
zea/ops.py,sha256=1ZtqM5UVCjRrkF5ip8qS-Di48F3BpLZ7J_Z_aWZt4sE,109602
|
|
89
96
|
zea/probes.py,sha256=991X4ilpMablekNxAHwBU6DoBIZHrmzoJgs2C6zfU0U,7632
|
|
90
|
-
zea/scan.py,sha256=
|
|
97
|
+
zea/scan.py,sha256=vtF60IgP6V2I5wfvT__ZngfFmhqtEGl5LlbCqSEATw0,27339
|
|
91
98
|
zea/simulator.py,sha256=KziYNRNAwIyKNE4nzVp2cbNyLATaaUkF-Ity6O1fx20,11279
|
|
92
|
-
zea/tensor_ops.py,sha256=
|
|
99
|
+
zea/tensor_ops.py,sha256=_vK2vHs0bEZOzf8PVjYXBNm4qwaI86A67n4mBjpWnmY,56814
|
|
93
100
|
zea/tools/__init__.py,sha256=QunH0W09HdOLYq2rNyNJCajfZgarLjX-ymiHVwjR9Kg,259
|
|
94
|
-
zea/tools/fit_scan_cone.py,sha256=
|
|
101
|
+
zea/tools/fit_scan_cone.py,sha256=0T6PSmMVb8DmU9yLAc-nqZFd5lhTRMxYCvmDmF3Klx8,24672
|
|
95
102
|
zea/tools/hf.py,sha256=ibuTGaLitK1vOlQdZJuVmDBoUkYRrEfCctj3kiiOQGs,5477
|
|
96
|
-
zea/tools/selection_tool.py,sha256=
|
|
103
|
+
zea/tools/selection_tool.py,sha256=nEALcrHGLb4NzRRcN_bxYCwzVyHKNN6Y21Q9jsuPFI8,30514
|
|
97
104
|
zea/tools/wndb.py,sha256=8XY056arnDKpVV7k-B5PrMa-RANur3ldPSR4GW3jgS4,666
|
|
98
105
|
zea/utils.py,sha256=8gxZaojsC0D2S63gs6lN0ulcSJ1jry3AzOMFvBdl4H4,23351
|
|
99
106
|
zea/visualize.py,sha256=4-bEHRYG3hUukmBkx7x4VBoa3oAJffO3HnnnzTfduDE,23905
|
|
100
107
|
zea/zea_darkmode.mplstyle,sha256=wHTXkgy00tLEbRmr8GZULb5zIzU0MTMn9xC0Z3WT7Bo,42141
|
|
101
|
-
zea-0.0.
|
|
102
|
-
zea-0.0.
|
|
103
|
-
zea-0.0.
|
|
104
|
-
zea-0.0.
|
|
105
|
-
zea-0.0.
|
|
108
|
+
zea-0.0.6.dist-info/METADATA,sha256=APlH2sS2gJmC9gv9hwMEYzpnNX0mRpp9CXe_zC0wl98,6780
|
|
109
|
+
zea-0.0.6.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
|
|
110
|
+
zea-0.0.6.dist-info/entry_points.txt,sha256=hQcQYCHdMu2LRM1PGZuaGU5EwAjTGErC-QakgwZKZeo,41
|
|
111
|
+
zea-0.0.6.dist-info/licenses/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
|
|
112
|
+
zea-0.0.6.dist-info/RECORD,,
|
zea/internal/convert.py
DELETED
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
"""This module contains functionality for converting between hdf5, mat and
|
|
2
|
-
dictionary.
|
|
3
|
-
|
|
4
|
-
"""
|
|
5
|
-
|
|
6
|
-
import argparse
|
|
7
|
-
from pathlib import Path
|
|
8
|
-
|
|
9
|
-
import h5py
|
|
10
|
-
import numpy as np
|
|
11
|
-
import scipy.io as sio
|
|
12
|
-
|
|
13
|
-
from zea.data.file import recursively_load_dict_contents_from_group
|
|
14
|
-
from zea.internal.viewer import filename_from_window_dialog
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
def load_mat(filename):
|
|
18
|
-
"""
|
|
19
|
-
This function should be called instead of direct scipy.io.loadmat
|
|
20
|
-
as it cures the problem of not properly recovering python dictionaries
|
|
21
|
-
from mat files. It calls the function check keys to cure all entries
|
|
22
|
-
which are still mat-objects
|
|
23
|
-
"""
|
|
24
|
-
|
|
25
|
-
def _check_vars(d):
|
|
26
|
-
"""
|
|
27
|
-
Checks if entries in dictionary are mat-objects. If yes
|
|
28
|
-
todict is called to change them to nested dictionaries
|
|
29
|
-
"""
|
|
30
|
-
for key in d:
|
|
31
|
-
if isinstance(d[key], sio.matlab.mio5_params.mat_struct):
|
|
32
|
-
d[key] = _todict(d[key])
|
|
33
|
-
elif isinstance(d[key], np.ndarray):
|
|
34
|
-
d[key] = _toarray(d[key])
|
|
35
|
-
return d
|
|
36
|
-
|
|
37
|
-
def _todict(matobj):
|
|
38
|
-
"""
|
|
39
|
-
A recursive function which constructs from matobjects nested dictionaries
|
|
40
|
-
"""
|
|
41
|
-
d = {}
|
|
42
|
-
for strg in matobj._fieldnames:
|
|
43
|
-
elem = matobj.__dict__[strg]
|
|
44
|
-
if isinstance(elem, sio.matlab.mio5_params.mat_struct):
|
|
45
|
-
d[strg] = _todict(elem)
|
|
46
|
-
elif isinstance(elem, np.ndarray):
|
|
47
|
-
d[strg] = _toarray(elem)
|
|
48
|
-
else:
|
|
49
|
-
d[strg] = elem
|
|
50
|
-
return d
|
|
51
|
-
|
|
52
|
-
def _toarray(ndarray):
|
|
53
|
-
"""
|
|
54
|
-
A recursive function which constructs ndarray from cellarrays
|
|
55
|
-
(which are loaded as numpy ndarrays), recursing into the elements
|
|
56
|
-
if they contain matobjects.
|
|
57
|
-
"""
|
|
58
|
-
if ndarray.dtype != "float64":
|
|
59
|
-
elem_list = []
|
|
60
|
-
for sub_elem in ndarray:
|
|
61
|
-
if isinstance(sub_elem, sio.matlab.mio5_params.mat_struct):
|
|
62
|
-
elem_list.append(_todict(sub_elem))
|
|
63
|
-
elif isinstance(sub_elem, np.ndarray):
|
|
64
|
-
elem_list.append(_toarray(sub_elem))
|
|
65
|
-
else:
|
|
66
|
-
elem_list.append(sub_elem)
|
|
67
|
-
return np.array(elem_list)
|
|
68
|
-
else:
|
|
69
|
-
return ndarray
|
|
70
|
-
|
|
71
|
-
data = sio.loadmat(filename, struct_as_record=False, squeeze_me=True)
|
|
72
|
-
return _check_vars(data)
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
def save_dict_to_file(filename, dic):
|
|
76
|
-
"""Save dict to .mat or .hdf5"""
|
|
77
|
-
|
|
78
|
-
filetype = Path(filename).suffix
|
|
79
|
-
assert filetype in [".mat", ".hdf5"]
|
|
80
|
-
|
|
81
|
-
if filetype == ".hdf5":
|
|
82
|
-
with h5py.File(filename, "w") as h5file:
|
|
83
|
-
recursively_save_dict_contents_to_group(h5file, "/", dic)
|
|
84
|
-
elif filetype == ".mat":
|
|
85
|
-
sio.savemat(filename, dic)
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
def recursively_save_dict_contents_to_group(h5file, path, dic):
|
|
89
|
-
"""Save dict contents to group"""
|
|
90
|
-
for key, item in dic.items():
|
|
91
|
-
if isinstance(item, dict):
|
|
92
|
-
recursively_save_dict_contents_to_group(h5file, path + key + "/", item)
|
|
93
|
-
else:
|
|
94
|
-
h5file[path + key] = item
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
def load_dict_from_file(filename, squeeze=True):
|
|
98
|
-
"""dict from file"""
|
|
99
|
-
filetype = Path(filename).suffix
|
|
100
|
-
assert filetype in [".mat", ".hdf5"]
|
|
101
|
-
|
|
102
|
-
v_7_3 = False
|
|
103
|
-
if filetype == ".mat":
|
|
104
|
-
try:
|
|
105
|
-
return load_mat(filename)
|
|
106
|
-
except Exception:
|
|
107
|
-
v_7_3 = True
|
|
108
|
-
|
|
109
|
-
if (filetype == ".hdf5") or (v_7_3 is True):
|
|
110
|
-
with h5py.File(filename, "r", locking=False) as h5file:
|
|
111
|
-
return recursively_load_dict_contents_from_group(h5file, "/", squeeze)
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
def strip_matfile_keys(dic):
|
|
115
|
-
"""Strip some unecessary .mat keys"""
|
|
116
|
-
new_dic = {}
|
|
117
|
-
for key, val in dic.items():
|
|
118
|
-
if key not in ["__globals__", "__header__", "__version__"]:
|
|
119
|
-
new_dic[key] = np.squeeze(val)
|
|
120
|
-
return new_dic
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
def get_args():
|
|
124
|
-
"""Command line argument parser"""
|
|
125
|
-
parser = argparse.ArgumentParser()
|
|
126
|
-
parser.add_argument("--file", default=None, help="hdf5 file or mat file")
|
|
127
|
-
args = parser.parse_args()
|
|
128
|
-
return args
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
if __name__ == "__main__":
|
|
132
|
-
args = get_args()
|
|
133
|
-
data = {}
|
|
134
|
-
if args.file is None:
|
|
135
|
-
file = filename_from_window_dialog(
|
|
136
|
-
"Choose .mat or .hdf5 file",
|
|
137
|
-
filetypes=(("mat or hdf5", "*.mat *.hdf5 *.h5"),),
|
|
138
|
-
)
|
|
139
|
-
else:
|
|
140
|
-
file = Path(args.file)
|
|
141
|
-
|
|
142
|
-
dic = load_dict_from_file(file)
|
|
143
|
-
if file.suffix == ".mat":
|
|
144
|
-
dic = strip_matfile_keys(dic)
|
|
145
|
-
save_dict_to_file(file.with_suffix(".hdf5"), dic)
|
|
146
|
-
|
|
147
|
-
elif file.suffix in [".h5", ".hdf5"]:
|
|
148
|
-
save_dict_to_file(file.with_suffix(".mat"), dic)
|
|
149
|
-
|
|
150
|
-
print(f"Succesfully converted {file}")
|
|
File without changes
|
|
File without changes
|