Skip to content

Commit 63be3eb

Browse files
authored
Merge pull request #5 from scientificcomputing/add-scale-idealized
Add scale factor to idealized mesh
2 parents 1767adc + 46d473d commit 63be3eb

File tree

2 files changed

+20
-3
lines changed

2 files changed

+20
-3
lines changed

src/mri2mesh/mesh/idealized_brain.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,12 @@ def add_arguments(parser):
144144
action="store_true",
145145
help="Manifold surface",
146146
)
147+
parser.add_argument(
148+
"--scale-factor",
149+
type=float,
150+
default=1.0,
151+
help="Scale factor",
152+
)
147153

148154

149155
def main(
@@ -171,6 +177,7 @@ def main(
171177
use_floodfill: bool = False,
172178
smooth_open_boundary: bool = False,
173179
manifold_surface: bool = False,
180+
scale_factor: float = 1.0,
174181
) -> None:
175182
logger.info("Generating idealized brain surface")
176183
from ..surface.idealized_brain import main as main_surface
@@ -189,6 +196,7 @@ def main(
189196
skull_y1=skull_y1,
190197
skull_z0=skull_z0,
191198
skull_z1=skull_z1,
199+
scale_factor=scale_factor,
192200
)
193201
from .basic import create_mesh, CSGTree, convert_mesh_dolfinx
194202

src/mri2mesh/surface/idealized_brain.py

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,12 @@ def add_arguments(parser: argparse.ArgumentParser) -> None:
8888
default=0.154949,
8989
help="Skull z1",
9090
)
91+
parser.add_argument(
92+
"--scale-factor",
93+
type=float,
94+
default=1.0,
95+
help="Scale factor",
96+
)
9197

9298

9399
def main(
@@ -104,6 +110,7 @@ def main(
104110
skull_y1: float = 0.173221,
105111
skull_z0: float = 0.001,
106112
skull_z1: float = 0.154949,
113+
scale_factor: float = 1.0,
107114
) -> None:
108115
import pyvista as pv
109116

@@ -113,10 +120,10 @@ def main(
113120
z = np.array([0, 0, 1])
114121
skull = pv.Box((skull_x0, skull_x1, skull_y0, skull_y1, skull_z0, skull_z1))
115122
c = skull.center_of_mass()
116-
par = pv.Sphere(r * parenchyma_factor, center=c)
117-
LV = pv.Sphere(r * lv_factor, center=c)
123+
par = pv.Sphere(radius=r * parenchyma_factor, center=c)
124+
LV = pv.Sphere(radius=r * lv_factor, center=c)
118125
V34 = pv.Cylinder(
119-
c - v34_center_factor * r * z,
126+
center=c - v34_center_factor * r * z,
120127
direction=z,
121128
height=r * v34_height_factor,
122129
radius=v34_radius_factor * r,
@@ -127,6 +134,7 @@ def main(
127134
[V34, LV, par, skull, ventricles],
128135
["V34", "LV", "parenchyma_incl_ventr", "skull", "ventricles"],
129136
):
137+
s.scale(scale_factor, inplace=True)
130138
pv.save_meshio(outdir / f"{n}.ply", s)
131139

132140
from .. import __version__
@@ -148,6 +156,7 @@ def main(
148156
"skull_z1": skull_z1,
149157
"version": __version__,
150158
"timestamp": datetime.datetime.now().isoformat(),
159+
"scale_factor": scale_factor,
151160
},
152161
indent=2,
153162
)

0 commit comments

Comments
 (0)