zea 0.0.6__py3-none-any.whl → 0.0.8__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 +54 -19
- zea/agent/__init__.py +12 -12
- zea/agent/masks.py +2 -1
- zea/backend/tensorflow/dataloader.py +2 -5
- zea/beamform/beamformer.py +100 -50
- zea/beamform/lens_correction.py +9 -2
- zea/beamform/pfield.py +9 -2
- zea/beamform/pixelgrid.py +1 -1
- zea/config.py +34 -25
- zea/data/__init__.py +22 -25
- zea/data/augmentations.py +221 -28
- zea/data/convert/__init__.py +1 -6
- zea/data/convert/__main__.py +123 -0
- zea/data/convert/camus.py +101 -40
- zea/data/convert/echonet.py +187 -86
- zea/data/convert/echonetlvh/README.md +2 -3
- zea/data/convert/echonetlvh/{convert_raw_to_usbmd.py → __init__.py} +174 -103
- zea/data/convert/echonetlvh/manual_rejections.txt +73 -0
- zea/data/convert/echonetlvh/precompute_crop.py +43 -64
- zea/data/convert/picmus.py +37 -40
- zea/data/convert/utils.py +86 -0
- zea/data/convert/{matlab.py → verasonics.py} +44 -65
- zea/data/data_format.py +155 -34
- zea/data/dataloader.py +12 -7
- zea/data/datasets.py +112 -71
- zea/data/file.py +184 -73
- zea/data/file_operations.py +496 -0
- zea/data/layers.py +3 -3
- zea/data/preset_utils.py +1 -1
- zea/datapaths.py +16 -4
- zea/display.py +14 -13
- zea/interface.py +14 -16
- zea/internal/_generate_keras_ops.py +6 -7
- zea/internal/cache.py +2 -49
- zea/internal/checks.py +6 -12
- zea/internal/config/validation.py +1 -2
- zea/internal/core.py +69 -6
- zea/internal/device.py +6 -2
- zea/internal/dummy_scan.py +330 -0
- zea/internal/operators.py +118 -2
- zea/internal/parameters.py +101 -70
- zea/internal/setup_zea.py +5 -6
- zea/internal/utils.py +282 -0
- zea/io_lib.py +322 -146
- zea/keras_ops.py +74 -4
- zea/log.py +9 -7
- zea/metrics.py +15 -7
- zea/models/__init__.py +31 -21
- zea/models/base.py +30 -14
- zea/models/carotid_segmenter.py +19 -4
- zea/models/diffusion.py +235 -23
- zea/models/echonet.py +22 -8
- zea/models/echonetlvh.py +31 -7
- zea/models/lpips.py +19 -2
- zea/models/lv_segmentation.py +30 -11
- zea/models/preset_utils.py +5 -5
- zea/models/regional_quality.py +30 -10
- zea/models/taesd.py +21 -5
- zea/models/unet.py +15 -1
- zea/ops.py +770 -336
- zea/probes.py +6 -6
- zea/scan.py +121 -51
- zea/simulator.py +24 -21
- zea/tensor_ops.py +477 -353
- zea/tools/fit_scan_cone.py +90 -160
- zea/tools/hf.py +1 -1
- zea/tools/selection_tool.py +47 -86
- zea/tracking/__init__.py +16 -0
- zea/tracking/base.py +94 -0
- zea/tracking/lucas_kanade.py +474 -0
- zea/tracking/segmentation.py +110 -0
- zea/utils.py +101 -480
- zea/visualize.py +177 -39
- {zea-0.0.6.dist-info → zea-0.0.8.dist-info}/METADATA +6 -2
- zea-0.0.8.dist-info/RECORD +122 -0
- zea-0.0.6.dist-info/RECORD +0 -112
- {zea-0.0.6.dist-info → zea-0.0.8.dist-info}/WHEEL +0 -0
- {zea-0.0.6.dist-info → zea-0.0.8.dist-info}/entry_points.txt +0 -0
- {zea-0.0.6.dist-info → zea-0.0.8.dist-info}/licenses/LICENSE +0 -0
zea/visualize.py
CHANGED
|
@@ -6,8 +6,11 @@ from typing import List, Optional, Tuple, Union
|
|
|
6
6
|
import matplotlib.pyplot as plt
|
|
7
7
|
import numpy as np
|
|
8
8
|
from keras.ops.image import crop_images
|
|
9
|
+
from matplotlib.patches import PathPatch, Rectangle
|
|
10
|
+
from matplotlib.path import Path as pltPath
|
|
9
11
|
from mpl_toolkits.axes_grid1 import ImageGrid
|
|
10
12
|
from scipy.ndimage import zoom
|
|
13
|
+
from skimage import measure
|
|
11
14
|
|
|
12
15
|
from zea.display import frustum_convert_rtp2xyz
|
|
13
16
|
|
|
@@ -37,13 +40,13 @@ def plot_image_grid(
|
|
|
37
40
|
interpolation: Optional[str] = "auto",
|
|
38
41
|
titles: Optional[List[str]] = None,
|
|
39
42
|
suptitle: Optional[str] = None,
|
|
40
|
-
aspect: Optional[str] = None,
|
|
43
|
+
aspect: Optional[Union[str, int, float, List[Union[str, int, float]]]] = None,
|
|
41
44
|
figsize: Optional[Tuple[float, float]] = None,
|
|
42
45
|
fig: Optional[plt.Figure] = None,
|
|
43
46
|
fig_contents: Optional[List] = None,
|
|
44
47
|
remove_axis: Optional[bool] = True,
|
|
45
|
-
background_color: Optional[str] =
|
|
46
|
-
text_color: Optional[str] =
|
|
48
|
+
background_color: Optional[str] = None,
|
|
49
|
+
text_color: Optional[str] = None,
|
|
47
50
|
**kwargs,
|
|
48
51
|
) -> Tuple[plt.Figure, List]:
|
|
49
52
|
"""Plot a batch of images in a grid.
|
|
@@ -65,16 +68,33 @@ def plot_image_grid(
|
|
|
65
68
|
fig (figure, optional): Matplotlib figure object. Defaults to None. Can
|
|
66
69
|
be used to plot on an existing figure.
|
|
67
70
|
fig_contents (list, optional): List of matplotlib image objects. Defaults to None.
|
|
68
|
-
remove_axis (bool, optional): Whether to remove axis. Defaults to True. If
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
background_color (str, optional): Background color. Defaults to None.
|
|
71
|
+
remove_axis (bool, optional): Whether to remove axis. Defaults to True. If False, axes r
|
|
72
|
+
emain but spines are colored to background and ticks/labels are hidden,
|
|
73
|
+
allowing later label drawing to remain visible.
|
|
74
|
+
background_color (str, optional): Background color. Defaults to None. (Matplotlib default)
|
|
75
|
+
text_color (str, optional): Text color. Defaults to None. (Matplotlib default)
|
|
72
76
|
**kwargs: arguments for plt.Figure.
|
|
73
77
|
|
|
74
78
|
Returns:
|
|
75
79
|
fig (figure): Matplotlib figure object
|
|
76
80
|
fig_contents (list): List of matplotlib image objects.
|
|
77
81
|
|
|
82
|
+
Example:
|
|
83
|
+
.. doctest::
|
|
84
|
+
|
|
85
|
+
>>> from zea.visualize import plot_image_grid
|
|
86
|
+
>>> import numpy as np
|
|
87
|
+
|
|
88
|
+
>>> images = [np.random.rand(128, 128) for _ in range(6)]
|
|
89
|
+
|
|
90
|
+
>>> fig, fig_contents = plot_image_grid(
|
|
91
|
+
... images,
|
|
92
|
+
... ncols=3,
|
|
93
|
+
... cmap="gray",
|
|
94
|
+
... vmin=0,
|
|
95
|
+
... vmax=1,
|
|
96
|
+
... )
|
|
97
|
+
|
|
78
98
|
"""
|
|
79
99
|
if ncols is None:
|
|
80
100
|
factors = [i for i in range(1, len(images) + 1) if len(images) % i == 0]
|
|
@@ -86,15 +106,21 @@ def plot_image_grid(
|
|
|
86
106
|
if figsize is None:
|
|
87
107
|
figsize = (ncols * 2, nrows * 2 / aspect_ratio)
|
|
88
108
|
|
|
109
|
+
# get default colors for matplotlib
|
|
110
|
+
if background_color is None:
|
|
111
|
+
background_color = plt.rcParams["axes.facecolor"]
|
|
112
|
+
if text_color is None:
|
|
113
|
+
text_color = plt.rcParams["text.color"]
|
|
114
|
+
|
|
89
115
|
# either supply both fig and fig_contents or neither
|
|
90
116
|
assert (fig is None) == (fig_contents is None), "Supply both fig and fig_contents or neither"
|
|
91
117
|
|
|
92
118
|
if fig is None:
|
|
93
119
|
fig = plt.figure(figsize=figsize, **kwargs)
|
|
94
120
|
axes = ImageGrid(fig, 111, nrows_ncols=(nrows, ncols), axes_pad=0.1)
|
|
95
|
-
if background_color:
|
|
121
|
+
if background_color is not None:
|
|
96
122
|
fig.patch.set_facecolor(background_color)
|
|
97
|
-
fig.
|
|
123
|
+
fig.set_layout_engine("tight", pad=0.1)
|
|
98
124
|
else:
|
|
99
125
|
axes = fig.axes[: len(images)]
|
|
100
126
|
|
|
@@ -104,7 +130,7 @@ def plot_image_grid(
|
|
|
104
130
|
if cmap is None:
|
|
105
131
|
cmap = [None] * len(images)
|
|
106
132
|
assert len(cmap) == len(images), (
|
|
107
|
-
f"cmap must be a string or list of strings of length {len(images)}"
|
|
133
|
+
f"cmap must be a string or list of strings of length {len(images)}, but got {cmap}"
|
|
108
134
|
)
|
|
109
135
|
|
|
110
136
|
if isinstance(vmin, (int, float)):
|
|
@@ -113,7 +139,7 @@ def plot_image_grid(
|
|
|
113
139
|
if vmin is None:
|
|
114
140
|
vmin = [None] * len(images)
|
|
115
141
|
assert len(vmin) == len(images), (
|
|
116
|
-
f"vmin must be a float or list of floats of length {len(images)}"
|
|
142
|
+
f"vmin must be a float or list of floats of length {len(images)}, but got {vmin}"
|
|
117
143
|
)
|
|
118
144
|
|
|
119
145
|
if isinstance(vmax, (int, float)):
|
|
@@ -122,7 +148,17 @@ def plot_image_grid(
|
|
|
122
148
|
if vmax is None:
|
|
123
149
|
vmax = [None] * len(images)
|
|
124
150
|
assert len(vmax) == len(images), (
|
|
125
|
-
f"vmax must be a float or list of floats of length {len(images)}"
|
|
151
|
+
f"vmax must be a float or list of floats of length {len(images)}, but got {vmax}"
|
|
152
|
+
)
|
|
153
|
+
|
|
154
|
+
if isinstance(aspect, (int, float, str)):
|
|
155
|
+
aspect = [aspect] * len(images)
|
|
156
|
+
else:
|
|
157
|
+
if aspect is None:
|
|
158
|
+
aspect = [None] * len(images)
|
|
159
|
+
assert len(aspect) == len(images), (
|
|
160
|
+
"aspect must be a float, int, str, or list of these "
|
|
161
|
+
f"of length {len(images)}, but got {aspect}"
|
|
126
162
|
)
|
|
127
163
|
|
|
128
164
|
if fig_contents is None:
|
|
@@ -135,7 +171,7 @@ def plot_image_grid(
|
|
|
135
171
|
cmap=cmap[i],
|
|
136
172
|
vmin=vmin[i],
|
|
137
173
|
vmax=vmax[i],
|
|
138
|
-
aspect=aspect,
|
|
174
|
+
aspect=aspect[i],
|
|
139
175
|
interpolation=interpolation,
|
|
140
176
|
)
|
|
141
177
|
fig_contents[i] = im
|
|
@@ -164,7 +200,7 @@ def plot_image_grid(
|
|
|
164
200
|
if suptitle:
|
|
165
201
|
fig.suptitle(suptitle, color=text_color)
|
|
166
202
|
|
|
167
|
-
fig.
|
|
203
|
+
fig.set_layout_engine("none")
|
|
168
204
|
# use bbox_inches="tight" for proper tight layout when saving
|
|
169
205
|
return fig, fig_contents
|
|
170
206
|
|
|
@@ -382,10 +418,10 @@ def plot_frustum_vertices(
|
|
|
382
418
|
rho_plane=None,
|
|
383
419
|
fig=None,
|
|
384
420
|
ax=None,
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
421
|
+
frustum_style=None,
|
|
422
|
+
phi_style=None,
|
|
423
|
+
theta_style=None,
|
|
424
|
+
rho_style=None,
|
|
389
425
|
):
|
|
390
426
|
"""
|
|
391
427
|
Plots the vertices of a frustum in spherical coordinates and highlights specified planes.
|
|
@@ -406,6 +442,18 @@ def plot_frustum_vertices(
|
|
|
406
442
|
Defaults to None. Can be used to reuse the figure in a loop.
|
|
407
443
|
ax (matplotlib.axes.Axes3DSubplot, optional): Axes object to plot on.
|
|
408
444
|
Defaults to None. Can be used to reuse the axes in a loop.
|
|
445
|
+
frustum_style (dict, optional): Style dictionary for frustum edges. Can include
|
|
446
|
+
'color', 'linestyle', 'linewidth', 'alpha', etc.
|
|
447
|
+
Defaults to {'color': 'blue', 'linestyle': '-', 'linewidth': 2}.
|
|
448
|
+
phi_style (dict, optional): Style dictionary for phi plane(s). Can include
|
|
449
|
+
'color', 'linestyle', 'linewidth', 'alpha', etc.
|
|
450
|
+
Defaults to {'color': 'yellow', 'linestyle': '-'}.
|
|
451
|
+
theta_style (dict, optional): Style dictionary for theta plane(s). Can include
|
|
452
|
+
'color', 'linestyle', 'linewidth', 'alpha', etc.
|
|
453
|
+
Defaults to {'color': 'green', 'linestyle': '--'}.
|
|
454
|
+
rho_style (dict, optional): Style dictionary for rho plane(s). Can include
|
|
455
|
+
'color', 'linestyle', 'linewidth', 'alpha', etc.
|
|
456
|
+
Defaults to {'color': 'red', 'linestyle': '--'}.
|
|
409
457
|
|
|
410
458
|
Returns:
|
|
411
459
|
tuple: A tuple containing the figure and axes objects (fig, ax).
|
|
@@ -414,19 +462,22 @@ def plot_frustum_vertices(
|
|
|
414
462
|
ValueError: If no plane is specified (phi_plane, theta_plane, or rho_plane).
|
|
415
463
|
|
|
416
464
|
Example:
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
465
|
+
.. doctest::
|
|
466
|
+
|
|
467
|
+
>>> from zea.visualize import plot_frustum_vertices
|
|
468
|
+
>>> rho_range = [0.1, 10] # in mm
|
|
469
|
+
>>> theta_range = [-0.6, 0.6] # in rad
|
|
470
|
+
>>> phi_range = [-0.6, 0.6] # in rad
|
|
471
|
+
>>> fig, ax = plot_frustum_vertices(
|
|
472
|
+
... rho_range,
|
|
473
|
+
... theta_range=theta_range,
|
|
474
|
+
... phi_range=phi_range,
|
|
475
|
+
... phi_plane=0,
|
|
476
|
+
... phi_style={"color": "red", "linestyle": "--", "linewidth": 2},
|
|
477
|
+
... theta_plane=0.2,
|
|
478
|
+
... theta_style={"color": "green", "linestyle": ":", "alpha": 0.7},
|
|
479
|
+
... frustum_style={"color": "blue", "linewidth": 1.5},
|
|
480
|
+
... )
|
|
430
481
|
"""
|
|
431
482
|
# Convert single values to lists
|
|
432
483
|
phi_plane = [phi_plane] if isinstance(phi_plane, (int, float)) else phi_plane
|
|
@@ -437,6 +488,19 @@ def plot_frustum_vertices(
|
|
|
437
488
|
if all(p is None for p in [phi_plane, theta_plane, rho_plane]):
|
|
438
489
|
raise ValueError("At least one plane must be specified")
|
|
439
490
|
|
|
491
|
+
# Build style dictionaries with defaults
|
|
492
|
+
if frustum_style is None:
|
|
493
|
+
frustum_style = {"color": "blue", "linestyle": "-", "linewidth": 2}
|
|
494
|
+
|
|
495
|
+
if phi_style is None:
|
|
496
|
+
phi_style = {"color": "yellow", "linestyle": "-"}
|
|
497
|
+
|
|
498
|
+
if theta_style is None:
|
|
499
|
+
theta_style = {"color": "green", "linestyle": "--"}
|
|
500
|
+
|
|
501
|
+
if rho_style is None:
|
|
502
|
+
rho_style = {"color": "red", "linestyle": "--"}
|
|
503
|
+
|
|
440
504
|
# Define edges of the frustum
|
|
441
505
|
edges = []
|
|
442
506
|
|
|
@@ -479,14 +543,14 @@ def plot_frustum_vertices(
|
|
|
479
543
|
if ax is None:
|
|
480
544
|
ax = fig.add_subplot(111, projection="3d")
|
|
481
545
|
|
|
482
|
-
def _plot_edges(edges,
|
|
546
|
+
def _plot_edges(edges, **kwargs):
|
|
483
547
|
for edge in edges:
|
|
484
548
|
rho_pts, theta_pts, phi_pts = generate_edge_points(edge[0], edge[1], num_points)
|
|
485
549
|
x, y, z = frustum_convert_rtp2xyz(rho_pts, theta_pts, phi_pts)
|
|
486
|
-
ax.plot(x, y, -z,
|
|
550
|
+
ax.plot(x, y, -z, **kwargs)
|
|
487
551
|
|
|
488
552
|
# Plot frustum edges
|
|
489
|
-
_plot_edges(edges,
|
|
553
|
+
_plot_edges(edges, **frustum_style)
|
|
490
554
|
|
|
491
555
|
def get_plane_edges(plane_value, plane_type):
|
|
492
556
|
"""Generate edges for a specific plane type (phi, theta, or rho)"""
|
|
@@ -550,16 +614,16 @@ def plot_frustum_vertices(
|
|
|
550
614
|
|
|
551
615
|
# Plot plane edges
|
|
552
616
|
plane_configs = [
|
|
553
|
-
(phi_plane, "phi",
|
|
554
|
-
(theta_plane, "theta",
|
|
555
|
-
(rho_plane, "rho",
|
|
617
|
+
(phi_plane, "phi", phi_style),
|
|
618
|
+
(theta_plane, "theta", theta_style),
|
|
619
|
+
(rho_plane, "rho", rho_style),
|
|
556
620
|
]
|
|
557
621
|
|
|
558
|
-
for planes, plane_type,
|
|
622
|
+
for planes, plane_type, style_dict in plane_configs:
|
|
559
623
|
if planes is not None:
|
|
560
624
|
for plane_value in planes:
|
|
561
625
|
plane_edges = get_plane_edges(plane_value, plane_type)
|
|
562
|
-
_plot_edges(plane_edges,
|
|
626
|
+
_plot_edges(plane_edges, **style_dict)
|
|
563
627
|
|
|
564
628
|
# Set axes properties
|
|
565
629
|
ax.set_xlim([x_min, x_max])
|
|
@@ -640,3 +704,77 @@ def pad_or_crop_extent(image, extent, target_extent):
|
|
|
640
704
|
constant_values=0,
|
|
641
705
|
)
|
|
642
706
|
return image_padded
|
|
707
|
+
|
|
708
|
+
|
|
709
|
+
def plot_rectangle_from_mask(ax, mask, **kwargs):
|
|
710
|
+
"""Plots a rectangle box to axis from mask array.
|
|
711
|
+
|
|
712
|
+
Is a simplified version of plot_shape_from_mask for rectangles.
|
|
713
|
+
Useful for displaying bounding boxes on top of images.
|
|
714
|
+
|
|
715
|
+
Args:
|
|
716
|
+
ax (plt.ax): matplotlib axis
|
|
717
|
+
mask (ndarray): numpy array with rectangle non-zero
|
|
718
|
+
box defining the region of interest.
|
|
719
|
+
Kwargs:
|
|
720
|
+
edgecolor (str): color of the shape's edge
|
|
721
|
+
facecolor (str): color of the shape's face
|
|
722
|
+
linewidth (int): width of the shape's edge
|
|
723
|
+
|
|
724
|
+
Returns:
|
|
725
|
+
matplotlib.patches.Rectangle: the added rectangle patch, or None if mask is empty.
|
|
726
|
+
"""
|
|
727
|
+
ys, xs = np.where(mask)
|
|
728
|
+
if ys.size == 0 or xs.size == 0:
|
|
729
|
+
return None
|
|
730
|
+
y1, y2 = ys.min(), ys.max()
|
|
731
|
+
x1, x2 = xs.min(), xs.max()
|
|
732
|
+
rect = Rectangle((x1, y1), x2 - x1 + 1, y2 - y1 + 1, **kwargs)
|
|
733
|
+
return ax.add_patch(rect)
|
|
734
|
+
|
|
735
|
+
|
|
736
|
+
def plot_shape_from_mask(ax, mask, **kwargs):
|
|
737
|
+
"""Plots a shape to axis from mask array.
|
|
738
|
+
|
|
739
|
+
Is useful for displaying irregular shapes such as segmentations
|
|
740
|
+
on top of images.
|
|
741
|
+
|
|
742
|
+
Args:
|
|
743
|
+
ax (plt.ax): matplotlib axis
|
|
744
|
+
mask (ndarray): numpy array with non-zero
|
|
745
|
+
shape defining the region of interest.
|
|
746
|
+
Kwargs:
|
|
747
|
+
edgecolor (str): color of the shape's edge
|
|
748
|
+
facecolor (str): color of the shape's face
|
|
749
|
+
linewidth (int): width of the shape's edge
|
|
750
|
+
|
|
751
|
+
Returns:
|
|
752
|
+
list[matplotlib.patches.PathPatch]: list of matplotlib patch objects
|
|
753
|
+
added to the axis.
|
|
754
|
+
|
|
755
|
+
Example:
|
|
756
|
+
|
|
757
|
+
.. code-block:: python
|
|
758
|
+
|
|
759
|
+
import matplotlib.pyplot as plt
|
|
760
|
+
import numpy as np
|
|
761
|
+
|
|
762
|
+
from zea.visualize import plot_shape_from_mask
|
|
763
|
+
|
|
764
|
+
y, x = np.ogrid[-50:50, -50:50]
|
|
765
|
+
mask = x**2 + y**2 <= 30**2
|
|
766
|
+
fig, ax = plt.subplots()
|
|
767
|
+
ax.imshow(np.random.rand(100, 100), cmap="gray")
|
|
768
|
+
plot_shape_from_mask(ax, mask, edgecolor="red", alpha=0.5)
|
|
769
|
+
"""
|
|
770
|
+
# Pad mask to ensure edge contours are found
|
|
771
|
+
padded_mask = np.pad(mask, pad_width=1, mode="constant", constant_values=0)
|
|
772
|
+
contours = measure.find_contours(padded_mask, 0.5)
|
|
773
|
+
patches = []
|
|
774
|
+
for contour in contours:
|
|
775
|
+
# Remove padding offset
|
|
776
|
+
contour -= 1
|
|
777
|
+
path = pltPath(contour[:, ::-1])
|
|
778
|
+
patch = PathPatch(path, **kwargs)
|
|
779
|
+
patches.append(ax.add_patch(patch))
|
|
780
|
+
return patches
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: zea
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.8
|
|
4
4
|
Summary: A Toolbox for Cognitive Ultrasound Imaging. Provides a set of tools for processing of ultrasound data, all built in your favorite machine learning framework.
|
|
5
5
|
License-File: LICENSE
|
|
6
6
|
Keywords: ultrasound,machine learning,beamforming
|
|
@@ -42,7 +42,7 @@ Requires-Dist: ipywidgets ; extra == "dev"
|
|
|
42
42
|
Requires-Dist: ipywidgets ; extra == "tests"
|
|
43
43
|
Requires-Dist: jax ; extra == "backends"
|
|
44
44
|
Requires-Dist: jax[cuda12-pip] (>=0.4.26) ; extra == "jax"
|
|
45
|
-
Requires-Dist: keras (>=3.
|
|
45
|
+
Requires-Dist: keras (>=3.12)
|
|
46
46
|
Requires-Dist: matplotlib (>=3.8)
|
|
47
47
|
Requires-Dist: mock ; extra == "dev"
|
|
48
48
|
Requires-Dist: mock ; extra == "docs"
|
|
@@ -82,6 +82,8 @@ Requires-Dist: sphinx-autodoc-typehints ; extra == "dev"
|
|
|
82
82
|
Requires-Dist: sphinx-autodoc-typehints ; extra == "docs"
|
|
83
83
|
Requires-Dist: sphinx-copybutton ; extra == "dev"
|
|
84
84
|
Requires-Dist: sphinx-copybutton ; extra == "docs"
|
|
85
|
+
Requires-Dist: sphinx-reredirects ; extra == "dev"
|
|
86
|
+
Requires-Dist: sphinx-reredirects ; extra == "docs"
|
|
85
87
|
Requires-Dist: sphinx_design ; extra == "dev"
|
|
86
88
|
Requires-Dist: sphinx_design ; extra == "docs"
|
|
87
89
|
Requires-Dist: sphinxcontrib-bibtex ; extra == "dev"
|
|
@@ -104,6 +106,8 @@ Description-Content-Type: text/markdown
|
|
|
104
106
|
[](https://github.com/tue-bmd/zea/blob/main/LICENSE)
|
|
105
107
|
[](https://codecov.io/gh/tue-bmd/zea)
|
|
106
108
|
[](https://joss.theoj.org/papers/fa923917ca41761fe0623ca6c350017d)
|
|
109
|
+
[](https://arxiv.org/abs/2512.01433)
|
|
110
|
+
[](https://huggingface.co/zeahub)
|
|
107
111
|
[](https://github.com/tue-bmd/zea/stargazers)
|
|
108
112
|
|
|
109
113
|
Welcome to the `zea` package: *A Toolbox for Cognitive Ultrasound Imaging.*
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
zea/__init__.py,sha256=Q_ky8oIIbUeOQPmtJTXEIEsnt2kW-aHNct4lu2c3Sz8,4119
|
|
2
|
+
zea/__main__.py,sha256=4OCFujuZ5ooIDMF7xxE4Esin9dfFlgX9PdOi9uB64y8,1569
|
|
3
|
+
zea/agent/__init__.py,sha256=0wnGArcPvSo_lDHN9-jE8d7IBP-bk3fuceoRu2VEVEw,976
|
|
4
|
+
zea/agent/gumbel.py,sha256=WbvSrM8meXtZmDLkyXDGUyRzjB4dWZmNO_qzloRxB_s,3770
|
|
5
|
+
zea/agent/masks.py,sha256=_vUhlzzw_g8_RN-k0mMqa_h4hfGHViJdkA24o6AYqYk,6666
|
|
6
|
+
zea/agent/selection.py,sha256=ut8I_TcfcoDRQnBBsxiVjNqjFp_PLNNHxgoE1FTP4rw,27072
|
|
7
|
+
zea/backend/__init__.py,sha256=XiBtxpXMYgcSBXjJ-uEWh7a92XqWs-4uDUh6NeKeUE4,6922
|
|
8
|
+
zea/backend/autograd.py,sha256=buWy19ctDFsAoktZaLm5qyLN9nQRicI91-V3ND-t3f4,6868
|
|
9
|
+
zea/backend/jax/__init__.py,sha256=AvO6tUDTMiyrRuY_M2KKwUpzzzqWIRlSh3NhI_lcw9w,1056
|
|
10
|
+
zea/backend/tensorflow/__init__.py,sha256=FQAMCrUgvHm4LCVfnP9sXGACQSMFx3nIarPve_MgxYM,422
|
|
11
|
+
zea/backend/tensorflow/dataloader.py,sha256=WXIF0ivyZARj_K7dqzuAAQR_YiAQ_ydSWDMQ-mFD_FQ,14208
|
|
12
|
+
zea/backend/tensorflow/layers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
13
|
+
zea/backend/tensorflow/layers/apodization.py,sha256=Pi5GpkoMSwPq8_FL1fqkuGINmOD-sIHkHXEtF62VNSc,826
|
|
14
|
+
zea/backend/tensorflow/layers/utils.py,sha256=kiEH-6_Rq5dq0D7dkziUkhhqdOyf5O9POYZ-uXLHkNA,3446
|
|
15
|
+
zea/backend/tensorflow/losses.py,sha256=q_U1FbSNFU0T_FY9ojdSqGn-TOiSieB3U5YBuFSoVIU,2081
|
|
16
|
+
zea/backend/tensorflow/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
17
|
+
zea/backend/tensorflow/models/lista.py,sha256=S_UQcO8n3PVkVwSFYa_MOgJEnaF6iFQfEj4nvKvbpww,3088
|
|
18
|
+
zea/backend/tensorflow/scripts/convert-echonet-dynamic.py,sha256=qREJcTvJXMH0EJGvpcs-BqoroS-EE-F54UKnuXlpBSU,3878
|
|
19
|
+
zea/backend/tensorflow/scripts/convert-taesd.py,sha256=-i9XGi0ZPEKV88JQQxR0742qsrk3x7bNoW3myaht4S4,2396
|
|
20
|
+
zea/backend/tensorflow/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
21
|
+
zea/backend/tensorflow/utils/callbacks.py,sha256=4biWDzQiqgnmE8YWF9mlxLZGxrVMMs-cpgBZI7iD2oI,57
|
|
22
|
+
zea/backend/tensorflow/utils/utils.py,sha256=4uOLfbxko2xUsyVjw7bClTdLkif7-NYscIo7ljqON6U,1050
|
|
23
|
+
zea/backend/tf2jax.py,sha256=qld6VecFEVOpUI4wUqA8wj9xvpsIjH2o72TcQqOyxbY,384
|
|
24
|
+
zea/backend/torch/__init__.py,sha256=YMNTzqRqhPu7pjGPczupT3jo4SwjYpI8Ch97GI0OPDg,1119
|
|
25
|
+
zea/backend/torch/losses.py,sha256=7ITD_p630eyJzjgAT79XUNiff7XmW-naMGOUgKFnAAQ,2114
|
|
26
|
+
zea/beamform/__init__.py,sha256=rlRy-Og_KsbnU4Qm0NR8SP5ymePCwSr2aMW9jjOaeHI,1018
|
|
27
|
+
zea/beamform/beamformer.py,sha256=XKG8HDj0Arje3rVRBwd20cdD8s87BJNn3KGNJ4u0cP8,20653
|
|
28
|
+
zea/beamform/delays.py,sha256=ItD6_WavcWmXns4QJqo_oq674F5Q0s0mVVacfo_775U,5590
|
|
29
|
+
zea/beamform/lens_correction.py,sha256=eqsVaooyi_EFWd8F3LxdQX2bLxxF_L8eGVkROKl3rOA,7828
|
|
30
|
+
zea/beamform/pfield.py,sha256=2rJMV8EuGoDZk1ZVSjdkn7I_p3gQJWxlCGtM50qc1sA,14910
|
|
31
|
+
zea/beamform/phantoms.py,sha256=zow6j4mPXOJjSl31dLQbuDW8rH_qEV2dsfcy-TqkhkI,1108
|
|
32
|
+
zea/beamform/pixelgrid.py,sha256=MVGyYQvsZJeDgGixADEP1wgWPn5dtwjH66qAyG8B2YA,5441
|
|
33
|
+
zea/config.py,sha256=q0ADj83bpFt7kXq32tJFQT3Kpcvrf-O_RCzTxxk1yHw,19811
|
|
34
|
+
zea/data/__init__.py,sha256=Rw22Ny5OflnAdw4JgjSvOQSX3PDPkNwkgo2G_BLOUlo,1645
|
|
35
|
+
zea/data/__main__.py,sha256=xEXj3m3gJ6MoV1f9WbDl3QVPMbDXedTj1J9WeT83NrI,909
|
|
36
|
+
zea/data/augmentations.py,sha256=dv43xN8yw20rIz2fDD0G8lYRskE2P_--WGfWbHx7S40,21651
|
|
37
|
+
zea/data/convert/__init__.py,sha256=Aaw-AE7ZXDh0Rtz1NIrmQJeZo02qvUwEXcCdMPcrqJ4,62
|
|
38
|
+
zea/data/convert/__main__.py,sha256=ryZX4h_miAnhHYsOTE-TrhV_blRFQq4GS1L7lYKXOZM,4455
|
|
39
|
+
zea/data/convert/camus.py,sha256=jQaWpHxPzUydNfObuoKxvS0wi-DZqACbXXXHAt9oJuU,12358
|
|
40
|
+
zea/data/convert/echonet.py,sha256=PPdARPj7MdQeSQ9_Z15UKw1fGZ1Bi2fNs9D1-X_NLZE,19120
|
|
41
|
+
zea/data/convert/echonetlvh/README.md,sha256=NFCwez0KngQIrTwAa0pO-8VxRnfLWmGXRhafMfgzw80,602
|
|
42
|
+
zea/data/convert/echonetlvh/__init__.py,sha256=GdCO9t6IEmmowWIqxUEF17bemYrzci3m4TQ6MKyZUj4,21195
|
|
43
|
+
zea/data/convert/echonetlvh/manual_rejections.txt,sha256=xXxUQ68YLF6uybUWgjicGwzbqhAvON1QLxDcnquxf0s,1382
|
|
44
|
+
zea/data/convert/echonetlvh/precompute_crop.py,sha256=uqyBUu5CUr8GlCmm-X9yAavQ916t1gd2Xn-wVwZHEZI,8120
|
|
45
|
+
zea/data/convert/images.py,sha256=8a2oHqAA_fLhFuNnqBsNCjKTdX5pADX-ntZ6BHUoZdQ,5229
|
|
46
|
+
zea/data/convert/picmus.py,sha256=iZik4rHqyyfk-tsUYhnM8kzL3qgFmeuW6MG-u8ZWt68,6527
|
|
47
|
+
zea/data/convert/utils.py,sha256=B6yDAqqVrkmFV32uQ2PGpIonEJAXUf3jZSS6hMrRinQ,2932
|
|
48
|
+
zea/data/convert/verasonics.py,sha256=jcvvxmK3Qvu1420uM81mize9JjQ4mKoFVDxRJ_kSlss,41723
|
|
49
|
+
zea/data/data_format.py,sha256=wkqbx_GaudSd9SY41vx651f-jRtPjKNllrI_y34-U1I,29452
|
|
50
|
+
zea/data/dataloader.py,sha256=64p8FunD-5bWKYvMQQIW2vDdCrosDN8slWkUEwrIJSo,14993
|
|
51
|
+
zea/data/datasets.py,sha256=NcbNbG9Mb3HtP40yHuBfnqXMTDwt5Lct4_sufAERjJw,25887
|
|
52
|
+
zea/data/file.py,sha256=2_FFjhtGqBxeLfwmg8tZMLaYEWOZxbHCMBxU-ZWbTPw,31171
|
|
53
|
+
zea/data/file_operations.py,sha256=jIYneXVmRPGYJ1hS0CCQP-Z-LhO6QXCkKqPno-kXlGs,17093
|
|
54
|
+
zea/data/layers.py,sha256=W9GMkNTpb8BOzXJoa7w6xr4xD0bFb9rsJEcO8_vK3pk,6705
|
|
55
|
+
zea/data/preset_utils.py,sha256=auan71rc67eczu9Ddp9t7Ib9ckuC894eVdMkA7CBRAA,4411
|
|
56
|
+
zea/data/utils.py,sha256=Y8eO7DznJFiq89SUQmDdiYetQ3aHjf72sC8ih9ooht4,2687
|
|
57
|
+
zea/datapaths.py,sha256=TqqALvtQRbbQEaIH7QEUaH0BEF_0GUKubuLCn8t90lA,20529
|
|
58
|
+
zea/display.py,sha256=xqzpluv-thKdiSU4JiornnkOuB4DH_liaEhq3CZ7ilA,24530
|
|
59
|
+
zea/doppler.py,sha256=PG8-GhgTxo2eUjFQ2D6Ag74HD2SkJa6b5LUQjXCS8a8,2994
|
|
60
|
+
zea/interface.py,sha256=hd2mU7-WttfCCeGsri91WWrFjDoN1uVMCblbyG0bEuU,18097
|
|
61
|
+
zea/internal/_generate_keras_ops.py,sha256=7RwmavpsqOALr_Zsby9xtIbUcMacwU3mw7MLtrz4q9Y,3848
|
|
62
|
+
zea/internal/cache.py,sha256=EMKuy2WT7J84Bo-hi5DNKWLBXMAlfmTdgJQGadTqutc,8468
|
|
63
|
+
zea/internal/checks.py,sha256=4XcObKo-rOizlte75riP82hgNisE9ugLzMPFECF7Kco,10731
|
|
64
|
+
zea/internal/config/create.py,sha256=f8dy6YcAUZbROxwCvORI26ACMRO4Q7EL188KyTL8Bpk,5447
|
|
65
|
+
zea/internal/config/parameters.py,sha256=3YE8aBeiosxTuIT0RAEEMkJPmkykSyZZ7hbmmyGnsuc,6602
|
|
66
|
+
zea/internal/config/validation.py,sha256=uoDqE_Ev8hELGNaHF6vPQgisx5fwfjSvHUdss4IQ1-A,6479
|
|
67
|
+
zea/internal/core.py,sha256=c0GFwiPblzaXEe-uvKJlQTgeDaO84DYNRRHsMiMuPeI,11981
|
|
68
|
+
zea/internal/device.py,sha256=00Cjs28tXy_xx8fbCL8vNfeIVfwmPBFFd5dSPKGiJAE,16030
|
|
69
|
+
zea/internal/dummy_scan.py,sha256=QfSvHb44mQgQmh579wvD0lTn7NSBP-8jUwKPXk5Hf-I,10958
|
|
70
|
+
zea/internal/git_info.py,sha256=vEeN7cdppNIJPRkC69pUQqtAfTdwCN-tpfo702xpGzY,1040
|
|
71
|
+
zea/internal/notebooks.py,sha256=57qBEJMzLIfWndZslQ6NphJgU4Wlu_jL_XgDWft_xkY,1136
|
|
72
|
+
zea/internal/operators.py,sha256=SdlTFwf4yLvL829mc-55zc7Ya-ECOtamUt_4fUJpvz8,6083
|
|
73
|
+
zea/internal/parameters.py,sha256=VaDBUlAbXWbttXJEFmy_x544HiDenVfASvLKP0wCtSQ,21406
|
|
74
|
+
zea/internal/registry.py,sha256=DYwZsz5p4zheW1D3DEqKPS5unFbGF2YOvsm55ypTeaQ,7867
|
|
75
|
+
zea/internal/setup_zea.py,sha256=kQGyQ8lapi4P-soNZY2j3oRqNbfj8eFoyJEGLYndvbk,7805
|
|
76
|
+
zea/internal/utils.py,sha256=Sf9b7_qjNwvyKmdJi7IQ8LPdaF6sW3YhwWFHZwY9uS4,9445
|
|
77
|
+
zea/internal/viewer.py,sha256=nXTJwaWM9x8_R3X8YB9B5bNkZwwfVGKUu8pIr2HMweQ,15840
|
|
78
|
+
zea/io_lib.py,sha256=FpWf_XEwpaLXBRK5nQuRRiwKBTPVQYWQuO6Bqt9Lj14,18185
|
|
79
|
+
zea/keras_ops.py,sha256=wqrYKcX-KuekJUBMfQcuyL_RwJL4To4CJq3DamEKRZY,67874
|
|
80
|
+
zea/log.py,sha256=cpbkRQhHE0vDvHOvXS91RHjG22F9insgV48qVPNz66g,10593
|
|
81
|
+
zea/metrics.py,sha256=fp_Ducef_bc22SFSFWq-EPdBBj5txrD94WMuXgOH3HU,15579
|
|
82
|
+
zea/models/__init__.py,sha256=7OJVGSJ2rGOnRC8gNnH_oIsimpZj3gnmYUEXrshqOZY,4852
|
|
83
|
+
zea/models/base.py,sha256=OwV1VfcK0xLLOsfpOIxCEEwIoxJ1sUogZjljd1KolQY,8065
|
|
84
|
+
zea/models/carotid_segmenter.py,sha256=TfklE8UB_-Wl5VwjqmXc6fKle4PscGVB4IrgfOIvQfo,5799
|
|
85
|
+
zea/models/deeplabv3.py,sha256=Ew-JIaQgekumVZN--pIQ5XQR5xTj1qMbfLm_xQH9qYo,4967
|
|
86
|
+
zea/models/dense.py,sha256=EwrSawfSTi9oWE55Grr7jtwLXC9MNqEOO3su4oYHqfg,4067
|
|
87
|
+
zea/models/diffusion.py,sha256=OAEKZ7CBoc2yQI2zjrPB668jSBzi6Xp2kaBAvKSFeX8,39375
|
|
88
|
+
zea/models/echonet.py,sha256=7ZK0nKVz3dZh0aBn9LoGmaqkrFJ05SzLeNYYdOoO0_E,6690
|
|
89
|
+
zea/models/echonetlvh.py,sha256=WSR0MaZc2a2h0wzfyVdOwKGiA6C1CIHGo1Ok_lroHUE,11083
|
|
90
|
+
zea/models/generative.py,sha256=iujicyFDuCD7NEk_cZ8thlZ2Rl3Qa8LfkwPsZdWYpR0,2625
|
|
91
|
+
zea/models/gmm.py,sha256=6YYoiizsD7BtISOToEXkki6Cc8iXMkgmPH_rMFQKs3E,8324
|
|
92
|
+
zea/models/layers.py,sha256=hhtBLQgt6ZMKj60FXBNIpThI7gZZeEqkzBMsub_TNFM,1920
|
|
93
|
+
zea/models/lpips.py,sha256=TmzI0qU8BV22gpHD_ovCw6G33EF05JHemdReYq9FGCs,6590
|
|
94
|
+
zea/models/lv_segmentation.py,sha256=BaX9c5G3nlKqatVlgL9guIPA_n_Ea0lHMw6jos4lVs0,3447
|
|
95
|
+
zea/models/preset_utils.py,sha256=m9jY0Fwfcrg6VEMkfMqMcyJzTrM7Th-GKpUknSfZa3g,15425
|
|
96
|
+
zea/models/presets.py,sha256=cTQRoCBRRFUEFKKS1GGJGDNXRoydRYF9psifBEoO0Y0,4215
|
|
97
|
+
zea/models/regional_quality.py,sha256=ohlgGXCHwlluJgx2wBKMUDert71neXwJ1mzxdt0KyX4,4987
|
|
98
|
+
zea/models/taesd.py,sha256=lOej2B4pE8CHn8SMHVFO4gBkNdsYbB0QKmC18RxPiUg,8611
|
|
99
|
+
zea/models/unet.py,sha256=BiFgC2qfe75ZqzE-6IV7c2PXhXuj1IQXTRL0PiavEdo,6682
|
|
100
|
+
zea/models/utils.py,sha256=My6VY27S4udOn7xatIM22Qgn8jED1FmnA2yZw1mcuVw,2015
|
|
101
|
+
zea/ops.py,sha256=uPLTCETRtfP4Zb8jNBN7v7f3HE26TjHgDAfOyFBuR4o,125273
|
|
102
|
+
zea/probes.py,sha256=udA-YXwYhTAk7-PofS6chYQJ3Y4lmW-7f0O-Km5Bu5o,7767
|
|
103
|
+
zea/scan.py,sha256=Dng_2mRr_S8FuW4eFUcddBkwUPjYUAFWp665DYMJie8,29883
|
|
104
|
+
zea/simulator.py,sha256=Aqp76FMUd0hP-_W1GMgERshmi1HfNo2Uxrme1A4gNHg,11419
|
|
105
|
+
zea/tensor_ops.py,sha256=OYO_AuNKbrt1EiSArJfrC_fvCs9QWgB2gJhVVMEOA00,62272
|
|
106
|
+
zea/tools/__init__.py,sha256=QunH0W09HdOLYq2rNyNJCajfZgarLjX-ymiHVwjR9Kg,259
|
|
107
|
+
zea/tools/fit_scan_cone.py,sha256=_zFUV_q9c0i2bKMmvIUvtqPcR7xvcUbd9xWeaj_tAO0,21600
|
|
108
|
+
zea/tools/hf.py,sha256=Y_HCnAVpwf_MoKX8Ra8oodBGEoJfYXMhSTRXYCek_kw,5478
|
|
109
|
+
zea/tools/selection_tool.py,sha256=cnX7QtdR6mCQWe2kPqnjUiDmOmfkuCHyT8KZBWCvcrk,29333
|
|
110
|
+
zea/tools/wndb.py,sha256=8XY056arnDKpVV7k-B5PrMa-RANur3ldPSR4GW3jgS4,666
|
|
111
|
+
zea/tracking/__init__.py,sha256=WuOrbgapZl0eRKHe8d4kVW8M0PZ9_qpx-F_SdyrG0eo,494
|
|
112
|
+
zea/tracking/base.py,sha256=d6uItM6TlwdEGhRW9Xowlodjo5vKKPYUORoe4jYdzoE,2880
|
|
113
|
+
zea/tracking/lucas_kanade.py,sha256=1tFaEwESTR8zbvyidgray-UHkkN2gMnyFJ44Zom1YmU,16777
|
|
114
|
+
zea/tracking/segmentation.py,sha256=i2xAVAkzjmdT3lJn9VAQmUEn7MGZYRHetvYoc31CgQ8,3468
|
|
115
|
+
zea/utils.py,sha256=Y_fX4UW8v9NHZ4-Op-heHjbF1X2xMzDQIZB_wnklHTc,10760
|
|
116
|
+
zea/visualize.py,sha256=RzhWOBA1FzWD2yjKHwr03aODwIfjTuHOSA7GUeQtOUA,28973
|
|
117
|
+
zea/zea_darkmode.mplstyle,sha256=wHTXkgy00tLEbRmr8GZULb5zIzU0MTMn9xC0Z3WT7Bo,42141
|
|
118
|
+
zea-0.0.8.dist-info/METADATA,sha256=__B3VVOx2A7XyYN2NHb07xA9CZMjqiRAeNuJmWUqNkk,7143
|
|
119
|
+
zea-0.0.8.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
|
|
120
|
+
zea-0.0.8.dist-info/entry_points.txt,sha256=hQcQYCHdMu2LRM1PGZuaGU5EwAjTGErC-QakgwZKZeo,41
|
|
121
|
+
zea-0.0.8.dist-info/licenses/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
|
|
122
|
+
zea-0.0.8.dist-info/RECORD,,
|
zea-0.0.6.dist-info/RECORD
DELETED
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
zea/__init__.py,sha256=C93vEqaOeNObiK-tGmSFrpJ9pAsYEuOltmhGMaKpXuY,2345
|
|
2
|
-
zea/__main__.py,sha256=4OCFujuZ5ooIDMF7xxE4Esin9dfFlgX9PdOi9uB64y8,1569
|
|
3
|
-
zea/agent/__init__.py,sha256=uJjMiPvvCXmUxC2mkSkh1Q9Ege0Vf7WazKX1_Ul80GY,924
|
|
4
|
-
zea/agent/gumbel.py,sha256=WbvSrM8meXtZmDLkyXDGUyRzjB4dWZmNO_qzloRxB_s,3770
|
|
5
|
-
zea/agent/masks.py,sha256=qdSGbTs9449hUxcX6gAl_s47mrs1FKI6U_T2KjS-iz8,6581
|
|
6
|
-
zea/agent/selection.py,sha256=ut8I_TcfcoDRQnBBsxiVjNqjFp_PLNNHxgoE1FTP4rw,27072
|
|
7
|
-
zea/backend/__init__.py,sha256=XiBtxpXMYgcSBXjJ-uEWh7a92XqWs-4uDUh6NeKeUE4,6922
|
|
8
|
-
zea/backend/autograd.py,sha256=buWy19ctDFsAoktZaLm5qyLN9nQRicI91-V3ND-t3f4,6868
|
|
9
|
-
zea/backend/jax/__init__.py,sha256=AvO6tUDTMiyrRuY_M2KKwUpzzzqWIRlSh3NhI_lcw9w,1056
|
|
10
|
-
zea/backend/tensorflow/__init__.py,sha256=FQAMCrUgvHm4LCVfnP9sXGACQSMFx3nIarPve_MgxYM,422
|
|
11
|
-
zea/backend/tensorflow/dataloader.py,sha256=yM25UPhoRBm46ePkIQ-QQZ_9gZfCaqhdC_Gzf57eLNE,14394
|
|
12
|
-
zea/backend/tensorflow/layers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
13
|
-
zea/backend/tensorflow/layers/apodization.py,sha256=Pi5GpkoMSwPq8_FL1fqkuGINmOD-sIHkHXEtF62VNSc,826
|
|
14
|
-
zea/backend/tensorflow/layers/utils.py,sha256=kiEH-6_Rq5dq0D7dkziUkhhqdOyf5O9POYZ-uXLHkNA,3446
|
|
15
|
-
zea/backend/tensorflow/losses.py,sha256=q_U1FbSNFU0T_FY9ojdSqGn-TOiSieB3U5YBuFSoVIU,2081
|
|
16
|
-
zea/backend/tensorflow/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
17
|
-
zea/backend/tensorflow/models/lista.py,sha256=S_UQcO8n3PVkVwSFYa_MOgJEnaF6iFQfEj4nvKvbpww,3088
|
|
18
|
-
zea/backend/tensorflow/scripts/convert-echonet-dynamic.py,sha256=qREJcTvJXMH0EJGvpcs-BqoroS-EE-F54UKnuXlpBSU,3878
|
|
19
|
-
zea/backend/tensorflow/scripts/convert-taesd.py,sha256=-i9XGi0ZPEKV88JQQxR0742qsrk3x7bNoW3myaht4S4,2396
|
|
20
|
-
zea/backend/tensorflow/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
21
|
-
zea/backend/tensorflow/utils/callbacks.py,sha256=4biWDzQiqgnmE8YWF9mlxLZGxrVMMs-cpgBZI7iD2oI,57
|
|
22
|
-
zea/backend/tensorflow/utils/utils.py,sha256=4uOLfbxko2xUsyVjw7bClTdLkif7-NYscIo7ljqON6U,1050
|
|
23
|
-
zea/backend/tf2jax.py,sha256=qld6VecFEVOpUI4wUqA8wj9xvpsIjH2o72TcQqOyxbY,384
|
|
24
|
-
zea/backend/torch/__init__.py,sha256=YMNTzqRqhPu7pjGPczupT3jo4SwjYpI8Ch97GI0OPDg,1119
|
|
25
|
-
zea/backend/torch/losses.py,sha256=7ITD_p630eyJzjgAT79XUNiff7XmW-naMGOUgKFnAAQ,2114
|
|
26
|
-
zea/beamform/__init__.py,sha256=rlRy-Og_KsbnU4Qm0NR8SP5ymePCwSr2aMW9jjOaeHI,1018
|
|
27
|
-
zea/beamform/beamformer.py,sha256=KLVNkQ6Af3De2FB0z0VNpLftc8SDw5SpR0oNPmQReSM,18388
|
|
28
|
-
zea/beamform/delays.py,sha256=ItD6_WavcWmXns4QJqo_oq674F5Q0s0mVVacfo_775U,5590
|
|
29
|
-
zea/beamform/lens_correction.py,sha256=nE9FLDH_gpDzPb8hxnGXp-syI8hAP7y4WK8c3aNDgbQ,7378
|
|
30
|
-
zea/beamform/pfield.py,sha256=_W1j9xZwRzM4PtQi4HIUCDbLUUU7osGFT-Y4xqP9hNI,14615
|
|
31
|
-
zea/beamform/phantoms.py,sha256=zow6j4mPXOJjSl31dLQbuDW8rH_qEV2dsfcy-TqkhkI,1108
|
|
32
|
-
zea/beamform/pixelgrid.py,sha256=XONJqgWC9XUkEL7iaphy0YBr6xLAyXz-yaTdPQju1r0,5432
|
|
33
|
-
zea/config.py,sha256=mhmTxD1ylyc6zl7yq834-BUiBpcqJ-sNVnJd38yinCs,19509
|
|
34
|
-
zea/data/__init__.py,sha256=h2wKll096dKxTRrEKHnFmgURqp9lDHlqJM884HzmhSY,1757
|
|
35
|
-
zea/data/__main__.py,sha256=xEXj3m3gJ6MoV1f9WbDl3QVPMbDXedTj1J9WeT83NrI,909
|
|
36
|
-
zea/data/augmentations.py,sha256=R09_dVkhOFGHiiVFaTjP9pYcHCMtwri9Nz8wsM5mRPY,12686
|
|
37
|
-
zea/data/convert/__init__.py,sha256=xuPIB-Dd8voTTRoQr-Mb5KTbPpWzk46alCgKQ_EZqzY,244
|
|
38
|
-
zea/data/convert/camus.py,sha256=PgFN6b0AgHZRS0JjcsiOGOzoagG-sHvlmhDuNR6iNKo,9555
|
|
39
|
-
zea/data/convert/echonet.py,sha256=5QgXkTyBDwdqXyZ3bL1pstPTHSKJJ2qRoSBUCLeTmu8,13768
|
|
40
|
-
zea/data/convert/echonetlvh/README.md,sha256=7YSeM-CBsN2x4gF8vTflFE0UwmW8-597-HfOk17l8FA,729
|
|
41
|
-
zea/data/convert/echonetlvh/convert_raw_to_usbmd.py,sha256=MQXfFam9-UcsKXZ5CUNS8c1m_p_gP-de1cI-cNr2qn8,18046
|
|
42
|
-
zea/data/convert/echonetlvh/precompute_crop.py,sha256=A-dSbGngEvL5QfAid3d9OoZRnxXMVt-QF7ivyBMDK-k,8302
|
|
43
|
-
zea/data/convert/images.py,sha256=8a2oHqAA_fLhFuNnqBsNCjKTdX5pADX-ntZ6BHUoZdQ,5229
|
|
44
|
-
zea/data/convert/matlab.py,sha256=nep-n-CK7OoTQQytDZuMx3dTa7AngmYRodE55ZTCCvI,41992
|
|
45
|
-
zea/data/convert/picmus.py,sha256=1TK1vDWzfHmnFErtt0ad36TInIiy4fm3nMmfx83G5nw,6203
|
|
46
|
-
zea/data/data_format.py,sha256=n4OTQKl1newgvTamlPprAsRubAVt3bPeNYHJXNc89G0,25684
|
|
47
|
-
zea/data/dataloader.py,sha256=ZAlWbZB6F43EtLvRcUzfeHVtMhYViJTvyaRb9CmpEFc,14865
|
|
48
|
-
zea/data/datasets.py,sha256=XcNlJVmkfNo7TXp80y4Si_by75Ix2ULIU_iEiNEhl6Q,24492
|
|
49
|
-
zea/data/file.py,sha256=DJHqYlVDNZtQWj0VvytrdGeZEnpDJqc2zZPWz3rF_7k,27152
|
|
50
|
-
zea/data/layers.py,sha256=vAVBJJOd0cRp2vxjk01aP6PTWzJfBEO6Lx54Jj9gldg,6714
|
|
51
|
-
zea/data/preset_utils.py,sha256=mJ7YC7W9X91__V6Wk2xenORIqZ0reZQerbX3zgapBJM,4408
|
|
52
|
-
zea/data/utils.py,sha256=Y8eO7DznJFiq89SUQmDdiYetQ3aHjf72sC8ih9ooht4,2687
|
|
53
|
-
zea/datapaths.py,sha256=SzsgW4KuZ72aieUbKTUPBmErEPPNcthgI01ixrKX0RQ,20239
|
|
54
|
-
zea/display.py,sha256=tIrPY2wcQFhdsijgydeNkZviZHkVZDtpz4lFAyPzRv0,24250
|
|
55
|
-
zea/doppler.py,sha256=PG8-GhgTxo2eUjFQ2D6Ag74HD2SkJa6b5LUQjXCS8a8,2994
|
|
56
|
-
zea/interface.py,sha256=2xa3wSNwVlESBa3hWqsJIypjnemioPUGJxEgwl4mDXY,18176
|
|
57
|
-
zea/internal/_generate_keras_ops.py,sha256=0K64fBSDBirTGiwP_qPPT4gdrGwVvKLzPylbHzT-qus,3853
|
|
58
|
-
zea/internal/cache.py,sha256=JHbWJ2vXz_NnXWHXrfSKAhcvi1_JMMeQnBzQIrSlYBo,10559
|
|
59
|
-
zea/internal/checks.py,sha256=Dj8kMY0BY5M170V7NmM9TENyiI7tb6wT9tG6jdrxy-0,10809
|
|
60
|
-
zea/internal/config/create.py,sha256=f8dy6YcAUZbROxwCvORI26ACMRO4Q7EL188KyTL8Bpk,5447
|
|
61
|
-
zea/internal/config/parameters.py,sha256=3YE8aBeiosxTuIT0RAEEMkJPmkykSyZZ7hbmmyGnsuc,6602
|
|
62
|
-
zea/internal/config/validation.py,sha256=vPGFWC-UVtNh8jqfQ4V8HTUIjfnOtsJrqcG2R2ae5hg,6522
|
|
63
|
-
zea/internal/core.py,sha256=wJHqp3h_MCCkugTPpvmsxNIOOQ6_VAF7-skNUY-bvmc,9587
|
|
64
|
-
zea/internal/device.py,sha256=YM-yuB2wu8hmILP84LfIjxmcLq9mI6FMI_iS8Lr04i0,15841
|
|
65
|
-
zea/internal/git_info.py,sha256=vEeN7cdppNIJPRkC69pUQqtAfTdwCN-tpfo702xpGzY,1040
|
|
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
|
|
70
|
-
zea/internal/setup_zea.py,sha256=P8dmHk_0hwfukaf-DfPxeDofOH4Kj1s5YvUs8yeFqAQ,7800
|
|
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
|
|
74
|
-
zea/log.py,sha256=UJIL91lHUgWc-vrlJWOn1PX60fX3TFQ5slIs-b5EWEQ,10540
|
|
75
|
-
zea/metrics.py,sha256=88nsFP3pKeoMvNQaDKA6w-NFX8KRauhhc0CWzOtsiZ4,15241
|
|
76
|
-
zea/models/__init__.py,sha256=xeyo23kLfXCEy92eev4qLVVA2oSVWsN1XXEMsuwrlBU,4325
|
|
77
|
-
zea/models/base.py,sha256=_l1RlXIYS2V5py-en5llJpX1oU0IXK_hzLhfCYybzHg,7121
|
|
78
|
-
zea/models/carotid_segmenter.py,sha256=qxv4xSSbwLQ3AWeP8xoVCFhpPLOqsN-4dNq1ECkG3FM,5401
|
|
79
|
-
zea/models/deeplabv3.py,sha256=Ew-JIaQgekumVZN--pIQ5XQR5xTj1qMbfLm_xQH9qYo,4967
|
|
80
|
-
zea/models/dense.py,sha256=EwrSawfSTi9oWE55Grr7jtwLXC9MNqEOO3su4oYHqfg,4067
|
|
81
|
-
zea/models/diffusion.py,sha256=-SS0ZGmwpRFeUdQyFIpKDYgi-ImLolSrFNJosYFBuLM,31971
|
|
82
|
-
zea/models/echonet.py,sha256=toLw6QjpdROvGrm6VEuqHuxxKkiAWtX-__5YzrE-LJA,6346
|
|
83
|
-
zea/models/echonetlvh.py,sha256=8HBbm6jJFMkORzM_-IiBDARq4fGzaWyh0TLcCv8hlxw,10474
|
|
84
|
-
zea/models/generative.py,sha256=iujicyFDuCD7NEk_cZ8thlZ2Rl3Qa8LfkwPsZdWYpR0,2625
|
|
85
|
-
zea/models/gmm.py,sha256=6YYoiizsD7BtISOToEXkki6Cc8iXMkgmPH_rMFQKs3E,8324
|
|
86
|
-
zea/models/layers.py,sha256=hhtBLQgt6ZMKj60FXBNIpThI7gZZeEqkzBMsub_TNFM,1920
|
|
87
|
-
zea/models/lpips.py,sha256=ryJSg2_XIZyOyPP-fcEQKsz3JzlDl9ik4TZPipVbomw,6126
|
|
88
|
-
zea/models/lv_segmentation.py,sha256=UjWbG3WaOPdEvcVH-a_jSOe4Se2WbKaFCejwjFrWpUU,2952
|
|
89
|
-
zea/models/preset_utils.py,sha256=OEs13M92W3NH_lB5_dCvJSNqdW0-QQwKw87QMZg06O4,15396
|
|
90
|
-
zea/models/presets.py,sha256=cTQRoCBRRFUEFKKS1GGJGDNXRoydRYF9psifBEoO0Y0,4215
|
|
91
|
-
zea/models/regional_quality.py,sha256=2VznMVENi0r9BVfb0y10NeVOOyHSkv7cvjAYfXw0MAA,4280
|
|
92
|
-
zea/models/taesd.py,sha256=Vab5jywo4uxXPXMQ-8VdpOMhVwQsEc_PNztctDzFZfk,8403
|
|
93
|
-
zea/models/unet.py,sha256=B_600WLn3jj_BuhDdRrj5I1XQIHylaQQN8ISq-vt7zM,6392
|
|
94
|
-
zea/models/utils.py,sha256=My6VY27S4udOn7xatIM22Qgn8jED1FmnA2yZw1mcuVw,2015
|
|
95
|
-
zea/ops.py,sha256=1ZtqM5UVCjRrkF5ip8qS-Di48F3BpLZ7J_Z_aWZt4sE,109602
|
|
96
|
-
zea/probes.py,sha256=991X4ilpMablekNxAHwBU6DoBIZHrmzoJgs2C6zfU0U,7632
|
|
97
|
-
zea/scan.py,sha256=vtF60IgP6V2I5wfvT__ZngfFmhqtEGl5LlbCqSEATw0,27339
|
|
98
|
-
zea/simulator.py,sha256=KziYNRNAwIyKNE4nzVp2cbNyLATaaUkF-Ity6O1fx20,11279
|
|
99
|
-
zea/tensor_ops.py,sha256=_vK2vHs0bEZOzf8PVjYXBNm4qwaI86A67n4mBjpWnmY,56814
|
|
100
|
-
zea/tools/__init__.py,sha256=QunH0W09HdOLYq2rNyNJCajfZgarLjX-ymiHVwjR9Kg,259
|
|
101
|
-
zea/tools/fit_scan_cone.py,sha256=0T6PSmMVb8DmU9yLAc-nqZFd5lhTRMxYCvmDmF3Klx8,24672
|
|
102
|
-
zea/tools/hf.py,sha256=ibuTGaLitK1vOlQdZJuVmDBoUkYRrEfCctj3kiiOQGs,5477
|
|
103
|
-
zea/tools/selection_tool.py,sha256=nEALcrHGLb4NzRRcN_bxYCwzVyHKNN6Y21Q9jsuPFI8,30514
|
|
104
|
-
zea/tools/wndb.py,sha256=8XY056arnDKpVV7k-B5PrMa-RANur3ldPSR4GW3jgS4,666
|
|
105
|
-
zea/utils.py,sha256=8gxZaojsC0D2S63gs6lN0ulcSJ1jry3AzOMFvBdl4H4,23351
|
|
106
|
-
zea/visualize.py,sha256=4-bEHRYG3hUukmBkx7x4VBoa3oAJffO3HnnnzTfduDE,23905
|
|
107
|
-
zea/zea_darkmode.mplstyle,sha256=wHTXkgy00tLEbRmr8GZULb5zIzU0MTMn9xC0Z3WT7Bo,42141
|
|
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,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|