flowtracks 1.6.2.dev3__py3-none-any.whl → 1.6.2.dev6__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.
- flowtracks/_version.py +3 -3
- flowtracks/eulerian.py +6 -0
- flowtracks/graphics.py +26 -6
- flowtracks/io.py +10 -1
- flowtracks/writers.py +50 -4
- {flowtracks-1.6.2.dev3.dist-info → flowtracks-1.6.2.dev6.dist-info}/METADATA +1 -1
- {flowtracks-1.6.2.dev3.dist-info → flowtracks-1.6.2.dev6.dist-info}/RECORD +29 -29
- {flowtracks-1.6.2.dev3.data → flowtracks-1.6.2.dev6.data}/data/flowtracks-examples/batch_Lagrangian_to_Eulerian.py +0 -0
- {flowtracks-1.6.2.dev3.data → flowtracks-1.6.2.dev6.data}/data/flowtracks-examples/hdf5_scene_analysis.ipynb +0 -0
- {flowtracks-1.6.2.dev3.data → flowtracks-1.6.2.dev6.data}/data/flowtracks-examples/linking_trajectories.ipynb +0 -0
- {flowtracks-1.6.2.dev3.data → flowtracks-1.6.2.dev6.data}/data/flowtracks-examples/marimo_dual_rig_trajectories.py +0 -0
- {flowtracks-1.6.2.dev3.data → flowtracks-1.6.2.dev6.data}/data/flowtracks-examples/marimo_flowtracks.py +0 -0
- {flowtracks-1.6.2.dev3.data → flowtracks-1.6.2.dev6.data}/data/flowtracks-examples/marimo_hdf5_vs_zarr_scene_analysis.py +0 -0
- {flowtracks-1.6.2.dev3.data → flowtracks-1.6.2.dev6.data}/data/flowtracks-examples/marimo_linking_trajectories_zarr.py +0 -0
- {flowtracks-1.6.2.dev3.data → flowtracks-1.6.2.dev6.data}/data/flowtracks-examples/marimo_phase_averaging_demo.py +0 -0
- {flowtracks-1.6.2.dev3.data → flowtracks-1.6.2.dev6.data}/data/flowtracks-examples/marimo_phase_metrics.py +0 -0
- {flowtracks-1.6.2.dev3.data → flowtracks-1.6.2.dev6.data}/data/flowtracks-examples/marimo_vtk_writers_preview.py +0 -0
- {flowtracks-1.6.2.dev3.data → flowtracks-1.6.2.dev6.data}/data/flowtracks-examples/marimo_zarr_dashboard.py +0 -0
- {flowtracks-1.6.2.dev3.data → flowtracks-1.6.2.dev6.data}/data/flowtracks-examples/repeated_interpolation.ipynb +0 -0
- {flowtracks-1.6.2.dev3.data → flowtracks-1.6.2.dev6.data}/data/flowtracks-examples/run_pipeline.py +0 -0
- {flowtracks-1.6.2.dev3.data → flowtracks-1.6.2.dev6.data}/data/flowtracks-examples/visualize_marimo.py +0 -0
- {flowtracks-1.6.2.dev3.data → flowtracks-1.6.2.dev6.data}/data/flowtracks-examples/visualize_results.py +0 -0
- {flowtracks-1.6.2.dev3.data → flowtracks-1.6.2.dev6.data}/scripts/analyse_fhdf.py +0 -0
- {flowtracks-1.6.2.dev3.dist-info → flowtracks-1.6.2.dev6.dist-info}/WHEEL +0 -0
- {flowtracks-1.6.2.dev3.dist-info → flowtracks-1.6.2.dev6.dist-info}/entry_points.txt +0 -0
- {flowtracks-1.6.2.dev3.dist-info → flowtracks-1.6.2.dev6.dist-info}/licenses/LICENSE.txt +0 -0
- {flowtracks-1.6.2.dev3.dist-info → flowtracks-1.6.2.dev6.dist-info}/licenses/LICENSES/BSD-3-Clause.txt +0 -0
- {flowtracks-1.6.2.dev3.dist-info → flowtracks-1.6.2.dev6.dist-info}/licenses/LICENSES/GPL-3.0-only.txt +0 -0
- {flowtracks-1.6.2.dev3.dist-info → flowtracks-1.6.2.dev6.dist-info}/top_level.txt +0 -0
flowtracks/_version.py
CHANGED
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '1.6.2.
|
|
22
|
-
__version_tuple__ = version_tuple = (1, 6, 2, '
|
|
21
|
+
__version__ = version = '1.6.2.dev6'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 6, 2, 'dev6')
|
|
23
23
|
|
|
24
|
-
__commit_id__ = commit_id = '
|
|
24
|
+
__commit_id__ = commit_id = 'g519243be4'
|
flowtracks/eulerian.py
CHANGED
|
@@ -150,6 +150,12 @@ def eulerian_grid(scene, grid_params, first, last, cycletime=None,
|
|
|
150
150
|
caller-side frame selection (see :func:`flowtracks.phasing.bin_of_frame`);
|
|
151
151
|
this gridder always tiles contiguously.
|
|
152
152
|
|
|
153
|
+
Input contract (NOT validated — the caller states it): positions in
|
|
154
|
+
METRES, velocities in METRES PER SECOND. The output dataset is labelled
|
|
155
|
+
``m`` / ``m s-1`` (CF) on that basis. Per-frame velocities (no frame
|
|
156
|
+
rate known) average arithmetically fine, but the ``m s-1`` label is then
|
|
157
|
+
wrong — relabel to ``m frame-1`` downstream, or state the frame rate.
|
|
158
|
+
|
|
153
159
|
smoothing_sigma (in grid cells, scalar or per-axis (sx, sy, sz)) applies
|
|
154
160
|
Gaussian kernel smoothing to the velocity sums AND the counts before the
|
|
155
161
|
division (Shepard/kernel estimate); min_count then acts on smoothed counts.
|
flowtracks/graphics.py
CHANGED
|
@@ -20,6 +20,8 @@ PyVista (VTK, GPU-rendered polylines -- the ``vtk`` extra), from the same
|
|
|
20
20
|
PolyData the ``.vtp`` ParaView writer saves.
|
|
21
21
|
"""
|
|
22
22
|
|
|
23
|
+
from pathlib import Path
|
|
24
|
+
|
|
23
25
|
import matplotlib.pyplot as pl
|
|
24
26
|
import numpy as np
|
|
25
27
|
|
|
@@ -249,7 +251,8 @@ def select_trajectories(source, by="length", n=10, min_points=20, min_extent=0.0
|
|
|
249
251
|
|
|
250
252
|
def plot_trajectories_3d(source, trajids=None, scalars="speed", context=0,
|
|
251
253
|
plotter=None, cmap="plasma", clim=None, line_width=3,
|
|
252
|
-
point_size=6, title=None, bar_title=None, show=True
|
|
254
|
+
point_size=6, title=None, bar_title=None, show=True,
|
|
255
|
+
units=None):
|
|
253
256
|
"""Interactive 3D trajectory view (PyVista): polylines coloured by a point
|
|
254
257
|
array (``speed``, ``time``, ``trajid``), points drawn as spheres so short
|
|
255
258
|
tracks stay visible.
|
|
@@ -264,14 +267,30 @@ def plot_trajectories_3d(source, trajids=None, scalars="speed", context=0,
|
|
|
264
267
|
with the same title into one shared colour range, so give each
|
|
265
268
|
subplot its own title to keep its own range.
|
|
266
269
|
show - call ``plotter.show()``; pass False to compose or screenshot.
|
|
270
|
+
units - ``{"pos": "m", "vel": "m s-1", "time": "frame"}`` for axis and
|
|
271
|
+
colour-bar titles (``x [m]``, ``speed [m s-1]``). When omitted and
|
|
272
|
+
``source`` is a Zarr path, whatever the writer recorded is used;
|
|
273
|
+
otherwise titles stay bare rather than guessed.
|
|
267
274
|
|
|
268
275
|
Returns the plotter.
|
|
269
276
|
"""
|
|
270
277
|
import pyvista as pv
|
|
271
278
|
|
|
272
|
-
from flowtracks.writers import
|
|
273
|
-
|
|
274
|
-
|
|
279
|
+
from flowtracks.writers import (
|
|
280
|
+
_trajectory_arrays,
|
|
281
|
+
trajectory_polydata,
|
|
282
|
+
trajectory_units,
|
|
283
|
+
)
|
|
284
|
+
|
|
285
|
+
if units is None and isinstance(source, (str, Path)):
|
|
286
|
+
units = trajectory_units(source)
|
|
287
|
+
units = units or {}
|
|
288
|
+
pos_u = f" [{units['pos']}]" if units.get("pos") else ""
|
|
289
|
+
scalar_u = f" [{units['vel']}]" if scalars in ("speed", "velocity") and units.get("vel") else ""
|
|
290
|
+
if not scalar_u and scalars == "time" and units.get("time"):
|
|
291
|
+
scalar_u = f" [{units['time']}]"
|
|
292
|
+
|
|
293
|
+
poly = trajectory_polydata(source, trajids, units=units or None)
|
|
275
294
|
if plotter is None:
|
|
276
295
|
plotter = pv.Plotter()
|
|
277
296
|
if context:
|
|
@@ -280,14 +299,15 @@ def plot_trajectories_3d(source, trajids=None, scalars="speed", context=0,
|
|
|
280
299
|
plotter.add_points(pos[pick], color="grey", opacity=0.15, point_size=2,
|
|
281
300
|
name="context")
|
|
282
301
|
if poly.n_points:
|
|
283
|
-
bar = {"title": bar_title or scalars}
|
|
302
|
+
bar = {"title": (bar_title or scalars) + scalar_u}
|
|
284
303
|
plotter.add_mesh(poly, scalars=scalars, cmap=cmap, clim=clim, line_width=line_width,
|
|
285
304
|
render_lines_as_tubes=True, scalar_bar_args=bar, name="tracks")
|
|
286
305
|
plotter.add_mesh(poly.extract_points(np.arange(poly.n_points), adjacent_cells=False),
|
|
287
306
|
scalars=scalars, cmap=cmap, clim=clim, point_size=point_size,
|
|
288
307
|
render_points_as_spheres=True, style="points",
|
|
289
308
|
show_scalar_bar=False, name="points")
|
|
290
|
-
plotter.show_grid(xtitle="x", ytitle="y", ztitle="z",
|
|
309
|
+
plotter.show_grid(xtitle=f"x{pos_u}", ytitle=f"y{pos_u}", ztitle=f"z{pos_u}",
|
|
310
|
+
fmt="%.3g",
|
|
291
311
|
n_xlabels=3, n_ylabels=3, n_zlabels=3)
|
|
292
312
|
plotter.add_axes()
|
|
293
313
|
if title:
|
flowtracks/io.py
CHANGED
|
@@ -1226,7 +1226,8 @@ def read_zarr_trajectories(zarr_path, first=None, last=None, group="trajectories
|
|
|
1226
1226
|
return []
|
|
1227
1227
|
|
|
1228
1228
|
|
|
1229
|
-
def save_zarr_trajectories(trajects, zarr_path, group="trajectories", overwrite=True
|
|
1229
|
+
def save_zarr_trajectories(trajects, zarr_path, group="trajectories", overwrite=True,
|
|
1230
|
+
units=None):
|
|
1230
1231
|
"""
|
|
1231
1232
|
Save a list of Trajectory objects into a Zarr directory store.
|
|
1232
1233
|
|
|
@@ -1235,6 +1236,11 @@ def save_zarr_trajectories(trajects, zarr_path, group="trajectories", overwrite=
|
|
|
1235
1236
|
zarr_path - path to the target .zarr directory.
|
|
1236
1237
|
group - sub-group name inside the Zarr store.
|
|
1237
1238
|
overwrite - if True, overwrite existing arrays in the group.
|
|
1239
|
+
units - dict of per-array units recorded on the group, e.g.
|
|
1240
|
+
{"pos": "m", "vel": "m s-1", "accel": "m s-2", "time": "frame"}.
|
|
1241
|
+
The writer never guesses: omit it only when the caller truly does
|
|
1242
|
+
not know, in which case no unit claim is stored. Honest rule: no
|
|
1243
|
+
frame rate means per-frame velocity units ("m frame-1"), never "m s-1".
|
|
1238
1244
|
"""
|
|
1239
1245
|
import zarr
|
|
1240
1246
|
|
|
@@ -1275,4 +1281,7 @@ def save_zarr_trajectories(trajects, zarr_path, group="trajectories", overwrite=
|
|
|
1275
1281
|
accel_arr = np.concatenate(all_accel, axis=0)
|
|
1276
1282
|
target_group.create_array("accel", data=accel_arr, overwrite=overwrite)
|
|
1277
1283
|
|
|
1284
|
+
if units:
|
|
1285
|
+
target_group.attrs.update({f"{k}_units": v for k, v in units.items()})
|
|
1286
|
+
|
|
1278
1287
|
|
flowtracks/writers.py
CHANGED
|
@@ -69,17 +69,43 @@ def _trajectory_arrays(source):
|
|
|
69
69
|
raise TypeError(f"Unsupported trajectory source: {type(source)!r}")
|
|
70
70
|
|
|
71
71
|
|
|
72
|
-
def
|
|
72
|
+
def trajectory_units(source) -> dict:
|
|
73
|
+
"""Units recorded on a trajectories store ({pos, vel, time, ...} units).
|
|
74
|
+
|
|
75
|
+
Zarr paths report what the writer recorded; anything else reports {} --
|
|
76
|
+
the caller then labels without units rather than guessing.
|
|
77
|
+
"""
|
|
78
|
+
if isinstance(source, (str, Path)):
|
|
79
|
+
try:
|
|
80
|
+
import zarr
|
|
81
|
+
|
|
82
|
+
group = zarr.open_group(str(source), mode="r")
|
|
83
|
+
target = group["trajectories"] if "trajectories" in group else group
|
|
84
|
+
return {
|
|
85
|
+
k[:-6]: v
|
|
86
|
+
for k, v in dict(target.attrs).items()
|
|
87
|
+
if k.endswith("_units")
|
|
88
|
+
}
|
|
89
|
+
except Exception:
|
|
90
|
+
pass
|
|
91
|
+
return {}
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
def trajectory_polydata(source, trajids=None, units=None):
|
|
73
95
|
"""Lagrangian trajectories as VTK PolyData: points + one polyline per trajid.
|
|
74
96
|
|
|
75
97
|
``source`` as for :func:`write_trajectories_vtp`. ``trajids`` optionally
|
|
76
98
|
keeps only those trajectories. Point data: ``trajid``, ``time``,
|
|
77
|
-
``velocity``, ``speed``.
|
|
78
|
-
|
|
99
|
+
``velocity``, ``speed``. ``units`` (e.g. ``{"pos": "m"}``) is stored as
|
|
100
|
+
field data (``units:<name>``); when omitted and ``source`` is a Zarr path,
|
|
101
|
+
whatever the writer recorded is carried over. Shared by the ``.vtp``
|
|
102
|
+
writer and :func:`flowtracks.graphics.plot_trajectories_3d`.
|
|
79
103
|
"""
|
|
80
104
|
import pyvista as pv
|
|
81
105
|
|
|
82
106
|
pos, vel, time, trajid = _trajectory_arrays(source)
|
|
107
|
+
if units is None and isinstance(source, (str, Path)):
|
|
108
|
+
units = trajectory_units(source)
|
|
83
109
|
if trajids is not None:
|
|
84
110
|
keep = np.isin(trajid, np.asarray(trajids))
|
|
85
111
|
pos, vel, time, trajid = pos[keep], vel[keep], time[keep], trajid[keep]
|
|
@@ -104,6 +130,8 @@ def trajectory_polydata(source, trajids=None):
|
|
|
104
130
|
poly.point_data["time"] = time
|
|
105
131
|
poly.point_data["velocity"] = vel
|
|
106
132
|
poly.point_data["speed"] = np.linalg.norm(vel, axis=1)
|
|
133
|
+
for k, val in (units or {}).items():
|
|
134
|
+
poly.field_data[f"units:{k}"] = np.array([str(val)])
|
|
107
135
|
return poly
|
|
108
136
|
|
|
109
137
|
|
|
@@ -134,13 +162,20 @@ def _clean(values: np.ndarray) -> np.ndarray:
|
|
|
134
162
|
|
|
135
163
|
|
|
136
164
|
def write_eulerian_series(ds: xr.Dataset, out_dir: Path, prefix: str = "phase",
|
|
137
|
-
|
|
165
|
+
time_dim: str = "phase", dt: float = 1.0,
|
|
166
|
+
units: dict | None = None) -> Path:
|
|
138
167
|
"""Write one Eulerian grid file per ``time_dim`` step plus a ``.pvd`` series.
|
|
139
168
|
|
|
140
169
|
Grid type is chosen from axis spacing: ``vtkImageData`` (``.vti``) when x,
|
|
141
170
|
y and z are each uniformly spaced, ``vtkRectilinearGrid`` (``.vtr``)
|
|
142
171
|
otherwise. Vector fields named by ``VEL_VARS`` are combined into a single
|
|
143
172
|
"velocity" array; every other data variable is written as a scalar.
|
|
173
|
+
|
|
174
|
+
``units`` maps array name to unit string (e.g. ``{"velocity": "m s-1"}``)
|
|
175
|
+
and is stored as grid field data (``units:<name>``); when omitted, the
|
|
176
|
+
dataset's own ``units`` attrs are carried over where present. VTK has no
|
|
177
|
+
unit system, so this is annotation, not enforcement — but the reader no
|
|
178
|
+
longer has to guess.
|
|
144
179
|
"""
|
|
145
180
|
import pyvista as pv
|
|
146
181
|
|
|
@@ -179,6 +214,17 @@ def write_eulerian_series(ds: xr.Dataset, out_dir: Path, prefix: str = "phase",
|
|
|
179
214
|
# skip rather than silently reshape/truncate them.
|
|
180
215
|
continue
|
|
181
216
|
grid.point_data[name] = _clean(da.values).ravel(order="F")
|
|
217
|
+
fields = dict(units) if units else {}
|
|
218
|
+
for name, da in snap.data_vars.items():
|
|
219
|
+
if name not in fields and da.attrs.get("units"):
|
|
220
|
+
fields[name] = da.attrs["units"]
|
|
221
|
+
if "velocity" in grid.point_data:
|
|
222
|
+
for v in VEL_VARS:
|
|
223
|
+
if v in fields:
|
|
224
|
+
fields["velocity"] = fields.pop(v)
|
|
225
|
+
break
|
|
226
|
+
for k, val in fields.items():
|
|
227
|
+
grid.field_data[f"units:{k}"] = np.array([str(val)])
|
|
182
228
|
path = out_dir / f"{prefix}_{i:04d}.{ext}"
|
|
183
229
|
grid.save(str(path))
|
|
184
230
|
entries.append((i * dt, path))
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: flowtracks
|
|
3
|
-
Version: 1.6.2.
|
|
3
|
+
Version: 1.6.2.dev6
|
|
4
4
|
Summary: Library for handling 3D PTV trajectory databases and Lagrangian/Eulerian turbulence post-processing.
|
|
5
5
|
Author-email: Yosef Meller <yosefm@gmail.com>
|
|
6
6
|
License-Expression: GPL-3.0-only AND BSD-3-Clause
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
flowtracks/__init__.py,sha256=iCexskmRtpNJ0fNZWRFkQAqrku7csbKy5NtL2YQNYeo,1532
|
|
2
|
-
flowtracks/_version.py,sha256
|
|
2
|
+
flowtracks/_version.py,sha256=-2KICqAEdPWLo6oH9F7DHgtleuBtdR0ws16EQh2o6wM,541
|
|
3
3
|
flowtracks/an_scene.py,sha256=QV_gtzp-5h1CqAW1Y6ieGco9BxXQDE4f_7-fcy3fluI,7361
|
|
4
4
|
flowtracks/analysis.py,sha256=nob5-pKxjPzB34_oQsxmxYALz4Q_s1BTpC5_VgXX3ss,6320
|
|
5
5
|
flowtracks/combine.py,sha256=-UQtbTH4vjQS88_92h5UZlS60OfQofTWEV6SL1prXgI,4455
|
|
6
|
-
flowtracks/eulerian.py,sha256=
|
|
6
|
+
flowtracks/eulerian.py,sha256=PMt0_TtjrFwRPEvSEKm_wn8YZdClSux4yXEuxiB2EjM,41872
|
|
7
7
|
flowtracks/flux.py,sha256=w4K_jjDWTBIOj4BkoeNoKjIRcvg_6stCqNF8iivxF-A,15137
|
|
8
8
|
flowtracks/format_docstrings.py,sha256=iJVJmtTUYEDEcmF5XSRZ08zpvlVc9lU66CZeqSpEKic,1987
|
|
9
9
|
flowtracks/future_idea_xarray_dask_zarr.py,sha256=4ZS6QuZ2s_sUaiCW0XBo74GrP5fw_clVyhWNjT5gbds,6101
|
|
10
|
-
flowtracks/graphics.py,sha256=
|
|
10
|
+
flowtracks/graphics.py,sha256=ulMTpPRGzQanAjna480XLMMQJL92Q4Wdtky8inqnwtE,13909
|
|
11
11
|
flowtracks/interpolation.py,sha256=njuB-bvWK5M2tc2Ibm6ZWNg6Tm6H-PTn0a63IldlJaA,39414
|
|
12
|
-
flowtracks/io.py,sha256=
|
|
12
|
+
flowtracks/io.py,sha256=sujLgtY8WIymMZugDv2jlQeL9QR_hZn-MaZPPKsAPvA,48366
|
|
13
13
|
flowtracks/nhist.py,sha256=3xdrfSTSpTojXJcyhwBgagHBmKrm0U_AEsP3BjP9H1o,4089
|
|
14
14
|
flowtracks/pairs.py,sha256=ehYDDTmjeRuzkSAMpdlwnwwAZOPNLKGF_e5HmcKw-2g,4034
|
|
15
15
|
flowtracks/particle.py,sha256=sVng1X8Xp3V9_wgJK2EGsDEx1OFQjd3L63Fzn--MWkM,671
|
|
@@ -25,29 +25,29 @@ flowtracks/stitching.py,sha256=HFsIRdAfqyhmES1OwIFslyWTF9U7kPJ5OKtjBl4YWqA,16895
|
|
|
25
25
|
flowtracks/trajectory.py,sha256=uL4-byZ2tycdrAwGoET4AfLHuKaWRnc8VHLO5zv9MOg,11831
|
|
26
26
|
flowtracks/vortex.py,sha256=4lG3QkvvnWhAHy4tl1pJrBGFLdrlP4pxNdhCZI1VZ4Q,2529
|
|
27
27
|
flowtracks/wall_shear.py,sha256=k9Q5FEchIO9J_onXPOw4PNJQfmsrSyVVvX4RdW-rQlE,6788
|
|
28
|
-
flowtracks/writers.py,sha256=
|
|
28
|
+
flowtracks/writers.py,sha256=0LnRiuqmyhcw8Ju3v9vCOERymNmxHG7cXKy6r8uLOTo,10358
|
|
29
29
|
flowtracks/zarr_scene.py,sha256=PKCtiTT1t0Hj74Q572ra5DM3uM8lQK1A6DzzfUxvIzI,10468
|
|
30
|
-
flowtracks-1.6.2.
|
|
31
|
-
flowtracks-1.6.2.
|
|
32
|
-
flowtracks-1.6.2.
|
|
33
|
-
flowtracks-1.6.2.
|
|
34
|
-
flowtracks-1.6.2.
|
|
35
|
-
flowtracks-1.6.2.
|
|
36
|
-
flowtracks-1.6.2.
|
|
37
|
-
flowtracks-1.6.2.
|
|
38
|
-
flowtracks-1.6.2.
|
|
39
|
-
flowtracks-1.6.2.
|
|
40
|
-
flowtracks-1.6.2.
|
|
41
|
-
flowtracks-1.6.2.
|
|
42
|
-
flowtracks-1.6.2.
|
|
43
|
-
flowtracks-1.6.2.
|
|
44
|
-
flowtracks-1.6.2.
|
|
45
|
-
flowtracks-1.6.2.
|
|
46
|
-
flowtracks-1.6.2.
|
|
47
|
-
flowtracks-1.6.2.
|
|
48
|
-
flowtracks-1.6.2.
|
|
49
|
-
flowtracks-1.6.2.
|
|
50
|
-
flowtracks-1.6.2.
|
|
51
|
-
flowtracks-1.6.2.
|
|
52
|
-
flowtracks-1.6.2.
|
|
53
|
-
flowtracks-1.6.2.
|
|
30
|
+
flowtracks-1.6.2.dev6.data/data/flowtracks-examples/batch_Lagrangian_to_Eulerian.py,sha256=e7mQFqyqvCeAHRKiN1IaxdNJi0e2FU84c7QNrx0L-m0,2296
|
|
31
|
+
flowtracks-1.6.2.dev6.data/data/flowtracks-examples/hdf5_scene_analysis.ipynb,sha256=jn0Z_ZVL1-iXaiKXwyAeb74NbXsBpnocCxCSDh814eU,243097
|
|
32
|
+
flowtracks-1.6.2.dev6.data/data/flowtracks-examples/linking_trajectories.ipynb,sha256=udz0GLDiPv68BYySg4yO1HWzaB9Sdy3YA3IhnIHDeII,8820
|
|
33
|
+
flowtracks-1.6.2.dev6.data/data/flowtracks-examples/marimo_dual_rig_trajectories.py,sha256=dzeK0C-knwq1bPOwo0p1RhWrb0RPp-T31rBaGEptXcc,6737
|
|
34
|
+
flowtracks-1.6.2.dev6.data/data/flowtracks-examples/marimo_flowtracks.py,sha256=7FIJNwBx9aBRmaM5ofmYTXSWEjE0wZqDfs8J47Tmw6U,9440
|
|
35
|
+
flowtracks-1.6.2.dev6.data/data/flowtracks-examples/marimo_hdf5_vs_zarr_scene_analysis.py,sha256=bjXlMsLJTxJ0JkvGcVZbuDOFYZU4OvdabtDUgqb15So,4536
|
|
36
|
+
flowtracks-1.6.2.dev6.data/data/flowtracks-examples/marimo_linking_trajectories_zarr.py,sha256=Ny_WUbiZWo0aKw-u2KGFWrhMv-8BvNgBy0UHIqCobYg,8210
|
|
37
|
+
flowtracks-1.6.2.dev6.data/data/flowtracks-examples/marimo_phase_averaging_demo.py,sha256=vg6j2ayKGl-5uj08bdzzb6pujzJJQ_5bUsG7UuPP7dM,9270
|
|
38
|
+
flowtracks-1.6.2.dev6.data/data/flowtracks-examples/marimo_phase_metrics.py,sha256=kBc2e_b-orDrm3AnuUXCcxsvmfQWyCtE826pFeolMGE,9367
|
|
39
|
+
flowtracks-1.6.2.dev6.data/data/flowtracks-examples/marimo_vtk_writers_preview.py,sha256=Otrhhp-QFf6F94EOs6rWu5xOCpbS16EfWy_iMFp7e_I,14611
|
|
40
|
+
flowtracks-1.6.2.dev6.data/data/flowtracks-examples/marimo_zarr_dashboard.py,sha256=jVIum6hdEelH4ef7vRgsfLhrbmMsuErsJBzxrnEImnw,9268
|
|
41
|
+
flowtracks-1.6.2.dev6.data/data/flowtracks-examples/repeated_interpolation.ipynb,sha256=t9SfoIWRu5XP0SrphWbQy508uzyEibVz61FGjl51fjA,8861
|
|
42
|
+
flowtracks-1.6.2.dev6.data/data/flowtracks-examples/run_pipeline.py,sha256=5fGE2tIP6XjFZ1sEYmqBujuLaXFfRL-rNnbr2p2CDfM,7205
|
|
43
|
+
flowtracks-1.6.2.dev6.data/data/flowtracks-examples/visualize_marimo.py,sha256=jWrg5IWjY-bmSQwQjaO5qTr0t_G48CsqJYpevdQrxeY,13026
|
|
44
|
+
flowtracks-1.6.2.dev6.data/data/flowtracks-examples/visualize_results.py,sha256=SbPg3EoDcuIyo0rUz3E-AnT4sLWDVJFhgC6xVcracW4,7583
|
|
45
|
+
flowtracks-1.6.2.dev6.data/scripts/analyse_fhdf.py,sha256=QH08NdImGukTEGuZEKFxjStcSelXBv-8A-22G6KtXqM,1315
|
|
46
|
+
flowtracks-1.6.2.dev6.dist-info/licenses/LICENSE.txt,sha256=jOtLnuWt7d5Hsx6XXB2QxzrSe2sWWh3NgMfFRetluQM,35147
|
|
47
|
+
flowtracks-1.6.2.dev6.dist-info/licenses/LICENSES/BSD-3-Clause.txt,sha256=XiJR9O5snDB6sAz0bcncOU6msceZgjPRxejWEQGg40Q,1505
|
|
48
|
+
flowtracks-1.6.2.dev6.dist-info/licenses/LICENSES/GPL-3.0-only.txt,sha256=jOtLnuWt7d5Hsx6XXB2QxzrSe2sWWh3NgMfFRetluQM,35147
|
|
49
|
+
flowtracks-1.6.2.dev6.dist-info/METADATA,sha256=jdbbG4k4qcw6lRlEaa1CvQrpWv21S7wDBffoIcyH3Cs,4773
|
|
50
|
+
flowtracks-1.6.2.dev6.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
|
|
51
|
+
flowtracks-1.6.2.dev6.dist-info/entry_points.txt,sha256=U6028E7yQZQiZoXWMl7w4xgZUPwPxAGiAuuMB__c-yQ,60
|
|
52
|
+
flowtracks-1.6.2.dev6.dist-info/top_level.txt,sha256=cR54RNb9y2Wfr_BfuOezmNJOMB4GfIHh1-luXTREnQA,11
|
|
53
|
+
flowtracks-1.6.2.dev6.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flowtracks-1.6.2.dev3.data → flowtracks-1.6.2.dev6.data}/data/flowtracks-examples/run_pipeline.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|