cardiac-geometriesx 0.4.6__py3-none-any.whl → 0.4.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.

Potentially problematic release.


This version of cardiac-geometriesx might be problematic. Click here for more details.

cardiac_geometries/cli.py CHANGED
@@ -92,6 +92,14 @@ def app():
92
92
  help="Function space for fibers of the form family_degree",
93
93
  show_default=True,
94
94
  )
95
+ @click.option(
96
+ "--clipped/--no-clipped",
97
+ default=False,
98
+ is_flag=True,
99
+ type=bool,
100
+ help="If True create clip away the outflow tracts",
101
+ show_default=True,
102
+ )
95
103
  def ukb(
96
104
  outdir: Path | str,
97
105
  mode: int = -1,
@@ -102,6 +110,7 @@ def ukb(
102
110
  fiber_angle_endo: float = 60,
103
111
  fiber_angle_epi: float = -60,
104
112
  fiber_space: str = "P_1",
113
+ clipped: bool = False,
105
114
  ):
106
115
  outdir = Path(outdir)
107
116
  outdir.mkdir(exist_ok=True)
@@ -116,6 +125,7 @@ def ukb(
116
125
  fiber_angle_endo=fiber_angle_endo,
117
126
  fiber_angle_epi=fiber_angle_epi,
118
127
  fiber_space=fiber_space,
128
+ clipped=clipped,
119
129
  )
120
130
  geo.save(outdir / "ukb.bp")
121
131
 
@@ -199,7 +209,6 @@ def ukb(
199
209
  "--create-fibers",
200
210
  default=False,
201
211
  is_flag=True,
202
- type=bool,
203
212
  help="If True create analytic fibers",
204
213
  show_default=True,
205
214
  )
@@ -421,7 +430,6 @@ def lv_ellipsoid(
421
430
  "--create-fibers",
422
431
  default=False,
423
432
  is_flag=True,
424
- type=bool,
425
433
  help="If True create analytic fibers",
426
434
  show_default=True,
427
435
  )
@@ -689,7 +697,6 @@ def biv_ellipsoid(
689
697
  "--create-fibers",
690
698
  default=False,
691
699
  is_flag=True,
692
- type=bool,
693
700
  help="If True create analytic fibers",
694
701
  show_default=True,
695
702
  )
@@ -827,7 +834,6 @@ def biv_ellipsoid_torso(
827
834
  "--create-fibers",
828
835
  default=False,
829
836
  is_flag=True,
830
- type=bool,
831
837
  help="If True create analytic fibers",
832
838
  show_default=True,
833
839
  )
@@ -98,7 +98,12 @@ class Geometry:
98
98
  self.mesh.comm.barrier()
99
99
 
100
100
  @classmethod
101
- def from_file(cls, comm: MPI.Intracomm, path: str | Path) -> "Geometry":
101
+ def from_file(
102
+ cls,
103
+ comm: MPI.Intracomm,
104
+ path: str | Path,
105
+ function_space_data: dict[str, np.ndarray] | None = None,
106
+ ) -> "Geometry":
102
107
  path = Path(path)
103
108
 
104
109
  mesh = adios4dolfinx.read_mesh(comm=comm, filename=path)
@@ -118,10 +123,12 @@ class Geometry:
118
123
  tags[name] = None
119
124
 
120
125
  functions = {}
121
- function_space = adios4dolfinx.read_attributes(
122
- comm=comm, filename=path, name="function_space"
123
- )
124
- for name, el in function_space.items():
126
+ if function_space_data is None:
127
+ function_space_data = adios4dolfinx.read_attributes(
128
+ comm=comm, filename=path, name="function_space"
129
+ )
130
+ assert isinstance(function_space_data, dict), "function_space_data must be a dictionary"
131
+ for name, el in function_space_data.items():
125
132
  element = utils.array2element(el)
126
133
  V = dolfinx.fem.functionspace(mesh, element)
127
134
  f = dolfinx.fem.Function(V, name=name)
@@ -32,6 +32,7 @@ def ukb(
32
32
  fiber_angle_endo: float = 60,
33
33
  fiber_angle_epi: float = -60,
34
34
  fiber_space: str = "P_1",
35
+ clipped: bool = False,
35
36
  comm: MPI.Comm = MPI.COMM_WORLD,
36
37
  ) -> Geometry:
37
38
  try:
@@ -44,26 +45,29 @@ def ukb(
44
45
  raise ImportError(msg) from e
45
46
 
46
47
  if comm.rank == 0:
48
+ ukb.cli.main(["surf", str(outdir), "--mode", str(mode), "--std", str(std), "--case", case])
49
+ mesh_args = [
50
+ "mesh",
51
+ str(outdir),
52
+ "--case",
53
+ case,
54
+ "--char_length_max",
55
+ str(char_length_max),
56
+ "--char_length_min",
57
+ str(char_length_min),
58
+ ]
59
+ if clipped:
60
+ ukb.cli.main(["clip", str(outdir), "--case", case, "--smooth"])
61
+ mesh_args.append("--clipped")
47
62
  print(comm.rank)
48
- ukb.cli.main(
49
- [
50
- str(outdir),
51
- "--mode",
52
- str(mode),
53
- "--std",
54
- str(std),
55
- "--case",
56
- case,
57
- "--mesh",
58
- "--char_length_max",
59
- str(char_length_max),
60
- "--char_length_min",
61
- str(char_length_min),
62
- ]
63
- )
63
+
64
+ ukb.cli.main(mesh_args)
64
65
  comm.barrier()
65
66
  outdir = Path(outdir)
66
- mesh_name = outdir / f"{case}.msh"
67
+ if clipped:
68
+ mesh_name = outdir / f"{case}_clipped.msh"
69
+ else:
70
+ mesh_name = outdir / f"{case}.msh"
67
71
 
68
72
  geometry = utils.gmsh2dolfin(comm=comm, msh_file=mesh_name)
69
73
 
@@ -98,24 +102,25 @@ def ukb(
98
102
  )
99
103
  raise ImportError(msg)
100
104
 
101
- # base_marker = 3
102
- # indices = []
103
- # for k in ["PV", "TV", "AV", "MV"]:
104
- # indices.append(geometry.ffun.find(geometry.markers[k][0]))
105
- # indices = np.hstack(comm.allreduce(indices, op=MPI.SUM))
106
- # values = np.full(len(indices), base_marker, dtype=np.int32)
107
-
108
- markers = {
109
- "lv": [geometry.markers["LV"][0]],
110
- "rv": [geometry.markers["RV"][0]],
111
- "epi": [geometry.markers["EPI"][0]],
112
- "base": [
113
- geometry.markers["PV"][0],
114
- geometry.markers["TV"][0],
115
- geometry.markers["AV"][0],
116
- geometry.markers["MV"][0],
117
- ],
118
- }
105
+ if clipped:
106
+ markers = {
107
+ "lv": [geometry.markers["LV"][0]],
108
+ "rv": [geometry.markers["RV"][0]],
109
+ "epi": [geometry.markers["EPI"][0]],
110
+ "base": [geometry.markers["BASE"][0]],
111
+ }
112
+ else:
113
+ markers = {
114
+ "lv": [geometry.markers["LV"][0]],
115
+ "rv": [geometry.markers["RV"][0]],
116
+ "epi": [geometry.markers["EPI"][0]],
117
+ "base": [
118
+ geometry.markers["PV"][0],
119
+ geometry.markers["TV"][0],
120
+ geometry.markers["AV"][0],
121
+ geometry.markers["MV"][0],
122
+ ],
123
+ }
119
124
  system = ldrb.dolfinx_ldrb(
120
125
  mesh=geometry.mesh,
121
126
  ffun=geometry.ffun,
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: cardiac-geometriesx
3
- Version: 0.4.6
3
+ Version: 0.4.8
4
4
  Summary: A python library for cardiac geometries
5
5
  Author-email: Henrik Finsberg <henriknf@simula.no>
6
6
  License: MIT
@@ -38,7 +38,7 @@ Provides-Extra: test
38
38
  Requires-Dist: pre-commit; extra == "test"
39
39
  Requires-Dist: pytest; extra == "test"
40
40
  Requires-Dist: pytest-cov; extra == "test"
41
- Requires-Dist: ukb-atlas; extra == "test"
41
+ Requires-Dist: ukb-atlas[pyvista]; extra == "test"
42
42
  Requires-Dist: fenicsx-ldrb; extra == "test"
43
43
  Provides-Extra: gui
44
44
  Requires-Dist: streamlit; extra == "gui"
@@ -47,6 +47,7 @@ Requires-Dist: pyvista[all]>=0.43.0; extra == "gui"
47
47
  Requires-Dist: trame-vuetify; extra == "gui"
48
48
  Requires-Dist: ipywidgets; extra == "gui"
49
49
  Requires-Dist: fenicsx-ldrb; extra == "gui"
50
+ Dynamic: license-file
50
51
 
51
52
  ![_](docs/_static/logo.png)
52
53
 
@@ -0,0 +1,16 @@
1
+ cardiac_geometries/__init__.py,sha256=2W_ywAeLjyRk5MqSPAodHa4UN2lOnW1h8tmGLQ3gaJ0,150
2
+ cardiac_geometries/cli.py,sha256=SBg2qFC1jgLoWUK5eke6grNyrYOklwi2QwLUgFW7VJs,21947
3
+ cardiac_geometries/geometry.py,sha256=Qdbd2npBe3QrwknV4XWts9HprElGufasX0IhZWEDCx0,7051
4
+ cardiac_geometries/gui.py,sha256=9WYR850wLrqsUrVUC37E2SaO0OWA_oagSe-YNrsxz3k,8376
5
+ cardiac_geometries/mesh.py,sha256=jLHTujz_38SQ5loN94nuN6pMG8IVPmlCdwOJhzuMxy4,30922
6
+ cardiac_geometries/utils.py,sha256=nJE-gyV7NIAmgl5JGlG5Vl7XsIcYS8Y20bVjYcd4R6c,21964
7
+ cardiac_geometries/fibers/__init__.py,sha256=WpRrn9Iakl-3m8IGtFkqP0LXGjw5EZHZ8Eg9JCnCdrg,137
8
+ cardiac_geometries/fibers/lv_ellipsoid.py,sha256=LZNhxzTsn-h88xXGP5bNfnWKhdvBROUjWjt8yrQFW48,6010
9
+ cardiac_geometries/fibers/slab.py,sha256=TYQhckJ8mwXz_08Cx3QsPQMtemkaxZ955SnSMrDfBPE,3898
10
+ cardiac_geometries/fibers/utils.py,sha256=pCoXkaUbidLGPY0Ty8uWCU1siDkHcv2qP8rZtdxMf0k,3475
11
+ cardiac_geometriesx-0.4.8.dist-info/licenses/LICENSE,sha256=lo5K2rJPZOSv6luutGHbzzi3IpXNaB9E2UWq60qvNx0,1111
12
+ cardiac_geometriesx-0.4.8.dist-info/METADATA,sha256=pw7N1Amzyn_xrXkt1o3I1ftA_fwIhazcpm7xy3mKNWA,4320
13
+ cardiac_geometriesx-0.4.8.dist-info/WHEEL,sha256=DnLRTWE75wApRYVsjgc6wsVswC54sMSJhAEd4xhDpBk,91
14
+ cardiac_geometriesx-0.4.8.dist-info/entry_points.txt,sha256=xOBnlc6W-H9oCDYLNz3kpki26OmpfYSoFSrmi_4V-Ec,52
15
+ cardiac_geometriesx-0.4.8.dist-info/top_level.txt,sha256=J0gQxkWR2my5Vf7Qt8buDY8ZOjYdVfIweVunCGXWKNE,19
16
+ cardiac_geometriesx-0.4.8.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.8.2)
2
+ Generator: setuptools (80.4.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,16 +0,0 @@
1
- cardiac_geometries/__init__.py,sha256=2W_ywAeLjyRk5MqSPAodHa4UN2lOnW1h8tmGLQ3gaJ0,150
2
- cardiac_geometries/cli.py,sha256=DvUxq3sXcrFrqJs9gKpNRosgtalASTRS-YAM_71MaxM,21777
3
- cardiac_geometries/geometry.py,sha256=y-V4DyksNCqPwK7-NQIjcS6ldlvh1ub2p7lj9FZJHWw,6795
4
- cardiac_geometries/gui.py,sha256=9WYR850wLrqsUrVUC37E2SaO0OWA_oagSe-YNrsxz3k,8376
5
- cardiac_geometries/mesh.py,sha256=3Uk2U_zSWQ6Ae45w6bEMsvaRM77js37er1QSMa3pLlY,30696
6
- cardiac_geometries/utils.py,sha256=nJE-gyV7NIAmgl5JGlG5Vl7XsIcYS8Y20bVjYcd4R6c,21964
7
- cardiac_geometries/fibers/__init__.py,sha256=WpRrn9Iakl-3m8IGtFkqP0LXGjw5EZHZ8Eg9JCnCdrg,137
8
- cardiac_geometries/fibers/lv_ellipsoid.py,sha256=LZNhxzTsn-h88xXGP5bNfnWKhdvBROUjWjt8yrQFW48,6010
9
- cardiac_geometries/fibers/slab.py,sha256=TYQhckJ8mwXz_08Cx3QsPQMtemkaxZ955SnSMrDfBPE,3898
10
- cardiac_geometries/fibers/utils.py,sha256=pCoXkaUbidLGPY0Ty8uWCU1siDkHcv2qP8rZtdxMf0k,3475
11
- cardiac_geometriesx-0.4.6.dist-info/LICENSE,sha256=lo5K2rJPZOSv6luutGHbzzi3IpXNaB9E2UWq60qvNx0,1111
12
- cardiac_geometriesx-0.4.6.dist-info/METADATA,sha256=Z3JiJw3b5EfAhIvZBWhYm0XP9lcrNgodWH0y3vWvdMs,4289
13
- cardiac_geometriesx-0.4.6.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
14
- cardiac_geometriesx-0.4.6.dist-info/entry_points.txt,sha256=xOBnlc6W-H9oCDYLNz3kpki26OmpfYSoFSrmi_4V-Ec,52
15
- cardiac_geometriesx-0.4.6.dist-info/top_level.txt,sha256=J0gQxkWR2my5Vf7Qt8buDY8ZOjYdVfIweVunCGXWKNE,19
16
- cardiac_geometriesx-0.4.6.dist-info/RECORD,,