Skip to content

Commit 9e067fc

Browse files
committed
ENH/DEP: use more a more robust, external implementation of the Line Integral Convolution (LIC) algorithm
1 parent 71a8921 commit 9e067fc

File tree

6 files changed

+9
-120
lines changed

6 files changed

+9
-120
lines changed

.gitignore

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@ yt/utilities/lib/image_utilities.c
5454
yt/utilities/lib/interpolators.c
5555
yt/utilities/lib/kdtree.c
5656
yt/utilities/lib/lenses.c
57-
yt/utilities/lib/line_integral_convolution.c
5857
yt/utilities/lib/embree_mesh/mesh_construction.cpp
5958
yt/utilities/lib/embree_mesh/mesh_intersection.cpp
6059
yt/utilities/lib/embree_mesh/mesh_samplers.cpp

minimal_requirements.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ pyparsing==3.1.4
4747
# packaging
4848
python-dateutil==2.9.0.post0
4949
# via matplotlib
50+
rlic==0.3.2
51+
# via yt (pyproject.toml)
5052
six==1.16.0
5153
# via python-dateutil
5254
sympy==1.13.2

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ dependencies = [
5151
"numpy!=2.0.1 ; platform_machine=='arm64' and platform_system=='Darwin'",
5252
"packaging>=20.9",
5353
"pillow>=8.3.2",
54+
"rlic>=0.3.2",
5455
"tomli-w>=0.4.0",
5556
"tqdm>=3.4.0",
5657
"unyt>=2.9.2",
@@ -432,7 +433,6 @@ ignore = [
432433
"yt/utilities/lib/image_utilities.c",
433434
"yt/utilities/lib/interpolators.c",
434435
"yt/utilities/lib/lenses.c",
435-
"yt/utilities/lib/line_integral_convolution.c",
436436
"yt/utilities/lib/marching_cubes.cpp",
437437
"yt/utilities/lib/mesh_triangulation.c",
438438
"yt/utilities/lib/mesh_utilities.c",

yt/utilities/lib/api.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
from .grid_traversal import *
66
from .image_utilities import *
77
from .interpolators import *
8-
from .line_integral_convolution import *
98
from .marching_cubes import *
109
from .mesh_utilities import *
1110
from .misc_utilities import *

yt/utilities/lib/line_integral_convolution.pyx

Lines changed: 0 additions & 100 deletions
This file was deleted.

yt/visualization/plot_modifications.py

Lines changed: 6 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
import matplotlib
1111
import numpy as np
12+
import rlic
1213
from unyt import unyt_quantity
1314

1415
from yt._maintenance.deprecation import issue_deprecation_warning
@@ -30,7 +31,6 @@
3031
YTUnsupportedPlotCallback,
3132
)
3233
from yt.utilities.lib.geometry_utils import triangle_plane_intersect
33-
from yt.utilities.lib.line_integral_convolution import line_integral_convolution_2d
3434
from yt.utilities.lib.mesh_triangulation import triangulate_indices
3535
from yt.utilities.lib.pixelization_routines import (
3636
pixelize_cartesian,
@@ -3238,10 +3238,10 @@ def __init__(
32383238
field_x,
32393239
field_y,
32403240
texture=None,
3241-
kernellen=50.0,
3241+
kernellen=50,
32423242
lim=(0.5, 0.6),
32433243
cmap="binary",
3244-
alpha=0.8,
3244+
alpha=0.5,
32453245
const_alpha=False,
32463246
):
32473247
self.field_x = field_x
@@ -3270,29 +3270,18 @@ def __call__(self, plot):
32703270
plot.data.axis, plot.data, self.field_y, bounds, (nx, ny)
32713271
)
32723272

3273-
vectors = np.concatenate((pixX[..., np.newaxis], pixY[..., np.newaxis]), axis=2)
3274-
32753273
if self.texture is None:
3276-
prng = np.random.RandomState(0x4D3D3D3)
3277-
self.texture = prng.random_sample((nx, ny))
3278-
elif self.texture.shape != (nx, ny):
3279-
raise ValueError(
3280-
"'texture' must have the same shape "
3281-
f"with that of output image ({nx}, {ny})"
3282-
)
3274+
prng = np.random.default_rng(0x4D3D3D3)
3275+
self.texture = prng.random((nx, ny))
32833276

32843277
kernel = np.sin(
32853278
np.arange(self.kernellen, dtype="float64") * np.pi / self.kernellen
32863279
)
32873280

3288-
lic_data = line_integral_convolution_2d(vectors, self.texture, kernel)
3281+
lic_data = rlic.convolve(self.texture, pixX, pixY, kernel=kernel)
32893282
lic_data = lic_data / lic_data.max()
32903283
lic_data_clip = np.clip(lic_data, self.lim[0], self.lim[1])
32913284

3292-
mask = ~(np.isfinite(pixX) & np.isfinite(pixY))
3293-
lic_data[mask] = np.nan
3294-
lic_data_clip[mask] = np.nan
3295-
32963285
if plot._swap_axes:
32973286
lic_data_clip = lic_data_clip.transpose()
32983287
extent = (extent[2], extent[3], extent[0], extent[1])

0 commit comments

Comments
 (0)