cardiac-geometriesx 0.4.3__py3-none-any.whl → 0.4.5__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.
Potentially problematic release.
This version of cardiac-geometriesx might be problematic. Click here for more details.
- cardiac_geometries/fibers/utils.py +13 -3
- cardiac_geometries/utils.py +53 -21
- {cardiac_geometriesx-0.4.3.dist-info → cardiac_geometriesx-0.4.5.dist-info}/METADATA +26 -25
- {cardiac_geometriesx-0.4.3.dist-info → cardiac_geometriesx-0.4.5.dist-info}/RECORD +8 -8
- {cardiac_geometriesx-0.4.3.dist-info → cardiac_geometriesx-0.4.5.dist-info}/WHEEL +1 -1
- {cardiac_geometriesx-0.4.3.dist-info → cardiac_geometriesx-0.4.5.dist-info}/LICENSE +0 -0
- {cardiac_geometriesx-0.4.3.dist-info → cardiac_geometriesx-0.4.5.dist-info}/entry_points.txt +0 -0
- {cardiac_geometriesx-0.4.3.dist-info → cardiac_geometriesx-0.4.5.dist-info}/top_level.txt +0 -0
|
@@ -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
|
|
@@ -27,9 +30,11 @@ def save_microstructure(
|
|
|
27
30
|
# Save for paraview visualization
|
|
28
31
|
|
|
29
32
|
if functions[0].function_space.ufl_element().family_name == "quadrature":
|
|
30
|
-
from scifem.xdmf import
|
|
33
|
+
from scifem.xdmf import XDMFFile
|
|
34
|
+
|
|
35
|
+
with XDMFFile(Path(outdir) / "microstructure-viz.xdmf", functions) as xdmf:
|
|
36
|
+
xdmf.write(0.0)
|
|
31
37
|
|
|
32
|
-
create_pointcloud(functions=functions, filename=Path(outdir) / "microstructure-viz.xdmf")
|
|
33
38
|
else:
|
|
34
39
|
try:
|
|
35
40
|
with dolfinx.io.VTXWriter(
|
|
@@ -99,7 +104,12 @@ def laplace(
|
|
|
99
104
|
if function_space != "P_1":
|
|
100
105
|
W = space_from_string(function_space, mesh, dim=1)
|
|
101
106
|
t = dolfinx.fem.Function(W)
|
|
102
|
-
|
|
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)
|
|
103
113
|
t.interpolate(expr)
|
|
104
114
|
else:
|
|
105
115
|
t = uh
|
cardiac_geometries/utils.py
CHANGED
|
@@ -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)
|
|
@@ -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
|
|
@@ -12,38 +12,39 @@ Classifier: Programming Language :: Python :: 3 :: Only
|
|
|
12
12
|
Requires-Python: >=3.8
|
|
13
13
|
Description-Content-Type: text/markdown
|
|
14
14
|
License-File: LICENSE
|
|
15
|
-
Requires-Dist: fenics-dolfinx
|
|
15
|
+
Requires-Dist: fenics-dolfinx>=0.8.0
|
|
16
16
|
Requires-Dist: structlog
|
|
17
17
|
Requires-Dist: cardiac-geometries-core
|
|
18
18
|
Requires-Dist: rich-click
|
|
19
19
|
Requires-Dist: adios4dolfinx
|
|
20
20
|
Requires-Dist: scifem
|
|
21
21
|
Provides-Extra: dev
|
|
22
|
-
Requires-Dist: bump-my-version
|
|
23
|
-
Requires-Dist: ipython
|
|
24
|
-
Requires-Dist: pdbpp
|
|
25
|
-
Requires-Dist: pre-commit
|
|
26
|
-
Requires-Dist: twine
|
|
27
|
-
Requires-Dist: wheel
|
|
22
|
+
Requires-Dist: bump-my-version; extra == "dev"
|
|
23
|
+
Requires-Dist: ipython; extra == "dev"
|
|
24
|
+
Requires-Dist: pdbpp; extra == "dev"
|
|
25
|
+
Requires-Dist: pre-commit; extra == "dev"
|
|
26
|
+
Requires-Dist: twine; extra == "dev"
|
|
27
|
+
Requires-Dist: wheel; extra == "dev"
|
|
28
28
|
Provides-Extra: docs
|
|
29
|
-
Requires-Dist: jupyter-book
|
|
30
|
-
Requires-Dist: jupytext
|
|
31
|
-
Requires-Dist: jupyter
|
|
32
|
-
Requires-Dist: pyvista[all]
|
|
33
|
-
Requires-Dist: trame-vuetify
|
|
34
|
-
Requires-Dist: ipywidgets
|
|
35
|
-
Requires-Dist: fenicsx-ldrb
|
|
36
|
-
|
|
37
|
-
Requires-Dist: streamlit ; extra == 'gui'
|
|
38
|
-
Requires-Dist: stpyvista ; extra == 'gui'
|
|
39
|
-
Requires-Dist: pyvista[all] >=0.43.0 ; extra == 'gui'
|
|
40
|
-
Requires-Dist: trame-vuetify ; extra == 'gui'
|
|
41
|
-
Requires-Dist: ipywidgets ; extra == 'gui'
|
|
42
|
-
Requires-Dist: fenicsx-ldrb ; extra == 'gui'
|
|
29
|
+
Requires-Dist: jupyter-book; extra == "docs"
|
|
30
|
+
Requires-Dist: jupytext; extra == "docs"
|
|
31
|
+
Requires-Dist: jupyter; extra == "docs"
|
|
32
|
+
Requires-Dist: pyvista[all]>=0.43.0; extra == "docs"
|
|
33
|
+
Requires-Dist: trame-vuetify; extra == "docs"
|
|
34
|
+
Requires-Dist: ipywidgets; extra == "docs"
|
|
35
|
+
Requires-Dist: fenicsx-ldrb; extra == "docs"
|
|
36
|
+
Requires-Dist: ukb-atlas; extra == "docs"
|
|
43
37
|
Provides-Extra: test
|
|
44
|
-
Requires-Dist: pre-commit
|
|
45
|
-
Requires-Dist: pytest
|
|
46
|
-
Requires-Dist: pytest-cov
|
|
38
|
+
Requires-Dist: pre-commit; extra == "test"
|
|
39
|
+
Requires-Dist: pytest; extra == "test"
|
|
40
|
+
Requires-Dist: pytest-cov; extra == "test"
|
|
41
|
+
Provides-Extra: gui
|
|
42
|
+
Requires-Dist: streamlit; extra == "gui"
|
|
43
|
+
Requires-Dist: stpyvista; extra == "gui"
|
|
44
|
+
Requires-Dist: pyvista[all]>=0.43.0; extra == "gui"
|
|
45
|
+
Requires-Dist: trame-vuetify; extra == "gui"
|
|
46
|
+
Requires-Dist: ipywidgets; extra == "gui"
|
|
47
|
+
Requires-Dist: fenicsx-ldrb; extra == "gui"
|
|
47
48
|
|
|
48
49
|

|
|
49
50
|
|
|
@@ -3,14 +3,14 @@ cardiac_geometries/cli.py,sha256=GKcsMNhVFoxWDr-o3jiDCXmTvPgCSEB9Kws8AvYIK4Q,196
|
|
|
3
3
|
cardiac_geometries/geometry.py,sha256=JSsLKfXej4DSgzRbivC-_jvyjiY6zkXcRCRL93IIys8,6504
|
|
4
4
|
cardiac_geometries/gui.py,sha256=9WYR850wLrqsUrVUC37E2SaO0OWA_oagSe-YNrsxz3k,8376
|
|
5
5
|
cardiac_geometries/mesh.py,sha256=_vNNMpQWyLEZ3TmsHAUh0l3Z2TYuQBy6Os-6nB9_Z9A,26908
|
|
6
|
-
cardiac_geometries/utils.py,sha256=
|
|
6
|
+
cardiac_geometries/utils.py,sha256=tMn_XQRYbP1__c0QPHZeiCRJun3TZiH80OwJDESTPzY,21817
|
|
7
7
|
cardiac_geometries/fibers/__init__.py,sha256=WpRrn9Iakl-3m8IGtFkqP0LXGjw5EZHZ8Eg9JCnCdrg,137
|
|
8
8
|
cardiac_geometries/fibers/lv_ellipsoid.py,sha256=LZNhxzTsn-h88xXGP5bNfnWKhdvBROUjWjt8yrQFW48,6010
|
|
9
9
|
cardiac_geometries/fibers/slab.py,sha256=TYQhckJ8mwXz_08Cx3QsPQMtemkaxZ955SnSMrDfBPE,3898
|
|
10
|
-
cardiac_geometries/fibers/utils.py,sha256=
|
|
11
|
-
cardiac_geometriesx-0.4.
|
|
12
|
-
cardiac_geometriesx-0.4.
|
|
13
|
-
cardiac_geometriesx-0.4.
|
|
14
|
-
cardiac_geometriesx-0.4.
|
|
15
|
-
cardiac_geometriesx-0.4.
|
|
16
|
-
cardiac_geometriesx-0.4.
|
|
10
|
+
cardiac_geometries/fibers/utils.py,sha256=pCoXkaUbidLGPY0Ty8uWCU1siDkHcv2qP8rZtdxMf0k,3475
|
|
11
|
+
cardiac_geometriesx-0.4.5.dist-info/LICENSE,sha256=lo5K2rJPZOSv6luutGHbzzi3IpXNaB9E2UWq60qvNx0,1111
|
|
12
|
+
cardiac_geometriesx-0.4.5.dist-info/METADATA,sha256=VcogZHS3ECHMoAQ-ei54PSdGCOi6-bviY8KjEYbPgaw,4202
|
|
13
|
+
cardiac_geometriesx-0.4.5.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
|
14
|
+
cardiac_geometriesx-0.4.5.dist-info/entry_points.txt,sha256=xOBnlc6W-H9oCDYLNz3kpki26OmpfYSoFSrmi_4V-Ec,52
|
|
15
|
+
cardiac_geometriesx-0.4.5.dist-info/top_level.txt,sha256=J0gQxkWR2my5Vf7Qt8buDY8ZOjYdVfIweVunCGXWKNE,19
|
|
16
|
+
cardiac_geometriesx-0.4.5.dist-info/RECORD,,
|
|
File without changes
|
{cardiac_geometriesx-0.4.3.dist-info → cardiac_geometriesx-0.4.5.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
|
File without changes
|