cardiac-geometriesx 0.4.4__tar.gz → 0.4.5__tar.gz
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.
Potentially problematic release.
This version of cardiac-geometriesx might be problematic. Click here for more details.
- {cardiac_geometriesx-0.4.4/src/cardiac_geometriesx.egg-info → cardiac_geometriesx-0.4.5}/PKG-INFO +2 -1
- {cardiac_geometriesx-0.4.4 → cardiac_geometriesx-0.4.5}/pyproject.toml +3 -2
- {cardiac_geometriesx-0.4.4 → cardiac_geometriesx-0.4.5}/src/cardiac_geometries/fibers/utils.py +9 -1
- {cardiac_geometriesx-0.4.4 → cardiac_geometriesx-0.4.5}/src/cardiac_geometries/utils.py +53 -21
- {cardiac_geometriesx-0.4.4 → cardiac_geometriesx-0.4.5/src/cardiac_geometriesx.egg-info}/PKG-INFO +2 -1
- {cardiac_geometriesx-0.4.4 → cardiac_geometriesx-0.4.5}/src/cardiac_geometriesx.egg-info/requires.txt +1 -0
- {cardiac_geometriesx-0.4.4 → cardiac_geometriesx-0.4.5}/LICENSE +0 -0
- {cardiac_geometriesx-0.4.4 → cardiac_geometriesx-0.4.5}/README.md +0 -0
- {cardiac_geometriesx-0.4.4 → cardiac_geometriesx-0.4.5}/setup.cfg +0 -0
- {cardiac_geometriesx-0.4.4 → cardiac_geometriesx-0.4.5}/src/cardiac_geometries/__init__.py +0 -0
- {cardiac_geometriesx-0.4.4 → cardiac_geometriesx-0.4.5}/src/cardiac_geometries/cli.py +0 -0
- {cardiac_geometriesx-0.4.4 → cardiac_geometriesx-0.4.5}/src/cardiac_geometries/fibers/__init__.py +0 -0
- {cardiac_geometriesx-0.4.4 → cardiac_geometriesx-0.4.5}/src/cardiac_geometries/fibers/lv_ellipsoid.py +0 -0
- {cardiac_geometriesx-0.4.4 → cardiac_geometriesx-0.4.5}/src/cardiac_geometries/fibers/slab.py +0 -0
- {cardiac_geometriesx-0.4.4 → cardiac_geometriesx-0.4.5}/src/cardiac_geometries/geometry.py +0 -0
- {cardiac_geometriesx-0.4.4 → cardiac_geometriesx-0.4.5}/src/cardiac_geometries/gui.py +0 -0
- {cardiac_geometriesx-0.4.4 → cardiac_geometriesx-0.4.5}/src/cardiac_geometries/mesh.py +0 -0
- {cardiac_geometriesx-0.4.4 → cardiac_geometriesx-0.4.5}/src/cardiac_geometriesx.egg-info/SOURCES.txt +0 -0
- {cardiac_geometriesx-0.4.4 → cardiac_geometriesx-0.4.5}/src/cardiac_geometriesx.egg-info/dependency_links.txt +0 -0
- {cardiac_geometriesx-0.4.4 → cardiac_geometriesx-0.4.5}/src/cardiac_geometriesx.egg-info/entry_points.txt +0 -0
- {cardiac_geometriesx-0.4.4 → cardiac_geometriesx-0.4.5}/src/cardiac_geometriesx.egg-info/not-zip-safe +0 -0
- {cardiac_geometriesx-0.4.4 → cardiac_geometriesx-0.4.5}/src/cardiac_geometriesx.egg-info/top_level.txt +0 -0
- {cardiac_geometriesx-0.4.4 → cardiac_geometriesx-0.4.5}/tests/test_cli.py +0 -0
- {cardiac_geometriesx-0.4.4 → cardiac_geometriesx-0.4.5}/tests/test_save_load.py +0 -0
{cardiac_geometriesx-0.4.4/src/cardiac_geometriesx.egg-info → cardiac_geometriesx-0.4.5}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: cardiac-geometriesx
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.5
|
|
4
4
|
Summary: A python library for cardiac geometries
|
|
5
5
|
Author-email: Henrik Finsberg <henriknf@simula.no>
|
|
6
6
|
License: MIT
|
|
@@ -33,6 +33,7 @@ Requires-Dist: pyvista[all]>=0.43.0; extra == "docs"
|
|
|
33
33
|
Requires-Dist: trame-vuetify; extra == "docs"
|
|
34
34
|
Requires-Dist: ipywidgets; extra == "docs"
|
|
35
35
|
Requires-Dist: fenicsx-ldrb; extra == "docs"
|
|
36
|
+
Requires-Dist: ukb-atlas; extra == "docs"
|
|
36
37
|
Provides-Extra: test
|
|
37
38
|
Requires-Dist: pre-commit; extra == "test"
|
|
38
39
|
Requires-Dist: pytest; extra == "test"
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "cardiac-geometriesx"
|
|
7
|
-
version = "0.4.
|
|
7
|
+
version = "0.4.5"
|
|
8
8
|
description = "A python library for cardiac geometries"
|
|
9
9
|
authors = [{name = "Henrik Finsberg", email = "henriknf@simula.no"}]
|
|
10
10
|
license = {text = "MIT"}
|
|
@@ -46,6 +46,7 @@ docs = [
|
|
|
46
46
|
"trame-vuetify",
|
|
47
47
|
"ipywidgets",
|
|
48
48
|
"fenicsx-ldrb",
|
|
49
|
+
"ukb-atlas",
|
|
49
50
|
]
|
|
50
51
|
test = [
|
|
51
52
|
"pre-commit",
|
|
@@ -174,7 +175,7 @@ tag = true
|
|
|
174
175
|
sign_tags = false
|
|
175
176
|
tag_name = "v{new_version}"
|
|
176
177
|
tag_message = "Bump version: {current_version} → {new_version}"
|
|
177
|
-
current_version = "0.4.
|
|
178
|
+
current_version = "0.4.5"
|
|
178
179
|
|
|
179
180
|
|
|
180
181
|
[[tool.bumpversion.files]]
|
{cardiac_geometriesx-0.4.4 → cardiac_geometriesx-0.4.5}/src/cardiac_geometries/fibers/utils.py
RENAMED
|
@@ -7,9 +7,12 @@ import dolfinx
|
|
|
7
7
|
import numpy as np
|
|
8
8
|
import ufl
|
|
9
9
|
from dolfinx.fem.petsc import LinearProblem
|
|
10
|
+
from packaging.version import Version
|
|
10
11
|
|
|
11
12
|
from ..utils import space_from_string
|
|
12
13
|
|
|
14
|
+
_dolfinx_version = Version(dolfinx.__version__)
|
|
15
|
+
|
|
13
16
|
|
|
14
17
|
class Microstructure(NamedTuple):
|
|
15
18
|
f0: dolfinx.fem.Function
|
|
@@ -101,7 +104,12 @@ def laplace(
|
|
|
101
104
|
if function_space != "P_1":
|
|
102
105
|
W = space_from_string(function_space, mesh, dim=1)
|
|
103
106
|
t = dolfinx.fem.Function(W)
|
|
104
|
-
|
|
107
|
+
if _dolfinx_version >= Version("0.10"):
|
|
108
|
+
points = W.element.interpolation_points
|
|
109
|
+
else:
|
|
110
|
+
points = W.element.interpolation_points()
|
|
111
|
+
|
|
112
|
+
expr = dolfinx.fem.Expression(uh, points)
|
|
105
113
|
t.interpolate(expr)
|
|
106
114
|
else:
|
|
107
115
|
t = uh
|
|
@@ -10,6 +10,7 @@ from mpi4py import MPI
|
|
|
10
10
|
import basix
|
|
11
11
|
import dolfinx
|
|
12
12
|
import numpy as np
|
|
13
|
+
from dolfinx.graph import adjacencylist
|
|
13
14
|
from packaging.version import Version
|
|
14
15
|
from structlog import get_logger
|
|
15
16
|
|
|
@@ -184,7 +185,8 @@ def model_to_mesh(
|
|
|
184
185
|
)
|
|
185
186
|
|
|
186
187
|
mesh.topology.create_connectivity(mesh.topology.dim, 0)
|
|
187
|
-
adj = dolfinx.cpp.graph.AdjacencyList_int32(local_entities)
|
|
188
|
+
# adj = dolfinx.cpp.graph.AdjacencyList_int32(local_entities)
|
|
189
|
+
adj = adjacencylist(local_entities)
|
|
188
190
|
ct = dolfinx.mesh.meshtags_from_entities(
|
|
189
191
|
mesh, mesh.topology.dim, adj, local_values.astype(np.int32, copy=False)
|
|
190
192
|
)
|
|
@@ -213,7 +215,7 @@ def model_to_mesh(
|
|
|
213
215
|
)
|
|
214
216
|
|
|
215
217
|
mesh.topology.create_connectivity(topology.dim - 1, tdim)
|
|
216
|
-
adj =
|
|
218
|
+
adj = adjacencylist(local_entities)
|
|
217
219
|
|
|
218
220
|
ft = dolfinx.io.gmshio.meshtags_from_entities(
|
|
219
221
|
mesh, tdim - 1, adj, local_values.astype(np.int32, copy=False)
|
|
@@ -236,7 +238,7 @@ def model_to_mesh(
|
|
|
236
238
|
mesh, tdim - 2, marked_edges, edge_values
|
|
237
239
|
)
|
|
238
240
|
mesh.topology.create_connectivity(topology.dim - 2, tdim)
|
|
239
|
-
adj =
|
|
241
|
+
adj = adjacencylist(local_entities)
|
|
240
242
|
et = dolfinx.io.gmshio.meshtags_from_entities(
|
|
241
243
|
mesh, tdim - 2, adj, local_values.astype(np.int32, copy=False)
|
|
242
244
|
)
|
|
@@ -258,7 +260,7 @@ def model_to_mesh(
|
|
|
258
260
|
mesh, tdim - 3, marked_vertices, vertex_values
|
|
259
261
|
)
|
|
260
262
|
mesh.topology.create_connectivity(topology.dim - 3, tdim)
|
|
261
|
-
adj =
|
|
263
|
+
adj = adjacencylist(local_entities)
|
|
262
264
|
vt = dolfinx.io.gmshio.meshtags_from_entities(
|
|
263
265
|
mesh, tdim - 3, adj, local_values.astype(np.int32, copy=False)
|
|
264
266
|
)
|
|
@@ -421,31 +423,61 @@ def gmsh2dolfin(comm: MPI.Intracomm, msh_file, rank: int = 0) -> GMshGeometry:
|
|
|
421
423
|
logger.debug(f"Convert file {msh_file} to dolfin")
|
|
422
424
|
outdir = Path(msh_file).parent
|
|
423
425
|
|
|
424
|
-
|
|
426
|
+
if Version(dolfinx.__version__) >= Version("0.10.0"):
|
|
427
|
+
mesh_data = dolfinx.io.gmshio.read_from_msh(comm=comm, filename=msh_file)
|
|
428
|
+
mesh = mesh_data.mesh
|
|
429
|
+
markers_ = mesh_data.physical_groups
|
|
430
|
+
ct = mesh_data.cell_tags
|
|
431
|
+
tdim = mesh.topology.dim
|
|
432
|
+
if ct is None:
|
|
433
|
+
ct = dolfinx.mesh.meshtags(
|
|
434
|
+
mesh, tdim, np.empty(0, dtype=np.int32), np.empty(0, dtype=np.int32)
|
|
435
|
+
)
|
|
436
|
+
|
|
437
|
+
ft = mesh_data.facet_tags
|
|
438
|
+
if ft is None:
|
|
439
|
+
ft = dolfinx.mesh.meshtags(
|
|
440
|
+
mesh, tdim - 1, np.empty(0, dtype=np.int32), np.empty(0, dtype=np.int32)
|
|
441
|
+
)
|
|
442
|
+
et = mesh_data.edge_tags
|
|
443
|
+
if et is None:
|
|
444
|
+
et = dolfinx.mesh.meshtags(
|
|
445
|
+
mesh, tdim - 2, np.empty(0, dtype=np.int32), np.empty(0, dtype=np.int32)
|
|
446
|
+
)
|
|
447
|
+
vt = mesh_data.vertex_tags
|
|
448
|
+
if vt is None:
|
|
449
|
+
vt = dolfinx.mesh.meshtags(
|
|
450
|
+
mesh, tdim - 3, np.empty(0, dtype=np.int32), np.empty(0, dtype=np.int32)
|
|
451
|
+
)
|
|
452
|
+
|
|
453
|
+
markers = {k: tuple(reversed(v)) for k, v in markers_.items()}
|
|
425
454
|
|
|
426
|
-
# We could make this work in parallel in the future
|
|
427
|
-
|
|
428
|
-
if comm.rank == rank:
|
|
429
|
-
gmsh.initialize()
|
|
430
|
-
gmsh.model.add("Mesh from file")
|
|
431
|
-
gmsh.merge(str(msh_file))
|
|
432
|
-
mesh, ct, ft, et, vt = model_to_mesh(gmsh.model, comm, 0)
|
|
433
|
-
markers = {
|
|
434
|
-
gmsh.model.getPhysicalName(*v): tuple(reversed(v))
|
|
435
|
-
for v in gmsh.model.getPhysicalGroups()
|
|
436
|
-
}
|
|
437
|
-
gmsh.finalize()
|
|
438
455
|
else:
|
|
439
|
-
|
|
440
|
-
|
|
456
|
+
import gmsh
|
|
457
|
+
# We could make this work in parallel in the future
|
|
458
|
+
|
|
459
|
+
if comm.rank == rank:
|
|
460
|
+
gmsh.initialize()
|
|
461
|
+
gmsh.model.add("Mesh from file")
|
|
462
|
+
gmsh.merge(str(msh_file))
|
|
463
|
+
mesh, ct, ft, et, vt = model_to_mesh(gmsh.model, comm, 0)
|
|
464
|
+
markers = {
|
|
465
|
+
gmsh.model.getPhysicalName(*v): tuple(reversed(v))
|
|
466
|
+
for v in gmsh.model.getPhysicalGroups()
|
|
467
|
+
}
|
|
468
|
+
gmsh.finalize()
|
|
469
|
+
else:
|
|
470
|
+
mesh, ct, ft, et, vt = model_to_mesh(gmsh.model, comm, 0)
|
|
471
|
+
markers = {}
|
|
472
|
+
|
|
473
|
+
markers = comm.bcast(markers, root=rank)
|
|
474
|
+
|
|
441
475
|
mesh.name = "Mesh"
|
|
442
476
|
ct.name = "Cell tags"
|
|
443
477
|
ft.name = "Facet tags"
|
|
444
478
|
et.name = "Edge tags"
|
|
445
479
|
vt.name = "Vertex tags"
|
|
446
480
|
|
|
447
|
-
markers = comm.bcast(markers, root=rank)
|
|
448
|
-
|
|
449
481
|
# Save tags to xdmf
|
|
450
482
|
with dolfinx.io.XDMFFile(comm, outdir / "mesh.xdmf", "w") as xdmf:
|
|
451
483
|
xdmf.write_mesh(mesh)
|
{cardiac_geometriesx-0.4.4 → cardiac_geometriesx-0.4.5/src/cardiac_geometriesx.egg-info}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: cardiac-geometriesx
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.5
|
|
4
4
|
Summary: A python library for cardiac geometries
|
|
5
5
|
Author-email: Henrik Finsberg <henriknf@simula.no>
|
|
6
6
|
License: MIT
|
|
@@ -33,6 +33,7 @@ Requires-Dist: pyvista[all]>=0.43.0; extra == "docs"
|
|
|
33
33
|
Requires-Dist: trame-vuetify; extra == "docs"
|
|
34
34
|
Requires-Dist: ipywidgets; extra == "docs"
|
|
35
35
|
Requires-Dist: fenicsx-ldrb; extra == "docs"
|
|
36
|
+
Requires-Dist: ukb-atlas; extra == "docs"
|
|
36
37
|
Provides-Extra: test
|
|
37
38
|
Requires-Dist: pre-commit; extra == "test"
|
|
38
39
|
Requires-Dist: pytest; extra == "test"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cardiac_geometriesx-0.4.4 → cardiac_geometriesx-0.4.5}/src/cardiac_geometries/fibers/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{cardiac_geometriesx-0.4.4 → cardiac_geometriesx-0.4.5}/src/cardiac_geometries/fibers/slab.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cardiac_geometriesx-0.4.4 → cardiac_geometriesx-0.4.5}/src/cardiac_geometriesx.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|