Skip to content

Commit 15b8d1c

Browse files
committed
Update README.md and pip project urls
1 parent a4f13b9 commit 15b8d1c

2 files changed

Lines changed: 41 additions & 26 deletions

File tree

README.md

Lines changed: 38 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# svMorph
22

3-
**Real-time interactive virtual stenting and vascular morphing with SDF-contact sculpting and regularized Kelvinlets**
3+
**Real-time interactive vascular morphing with SDFStent virtual stenting and regularized Kelvinlets**
44

55
[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](#license)
66
[![Python 3.9+](https://img.shields.io/badge/python-3.9%2B-3776AB.svg)](https://www.python.org)
@@ -11,28 +11,32 @@
1111
---
1212

1313
svMorph is a research tool for *in-silico* morphological editing of patient-specific
14-
vascular geometries. It enables interactive and scriptable creation of synthetic
15-
vascular pathologies — aneurysms, stenoses, and synthetic interventions — stenting,
16-
on triangulated surface meshes with associated centerlines.
17-
18-
The deformation engine includes a **signed-distance-field (SDF) contact** formulation
19-
that naturally mimics the stent–wall interface during simulated stent deployment, and
20-
**regularized Kelvinlet** displacement kernels (de Goes & James, 2017, Pham et al., 2024)
21-
that model synthetic aneurysm and stenosis shapes.
14+
vascular geometries. It enables interactive and scriptable editing on triangulated
15+
surface meshes with associated centerlines through three core workflows: **SDFStent**
16+
for virtual stenting, **regularized Kelvinlet** virtual aneurysm creation, and
17+
geometry-based synthetic stenosis creation.
18+
19+
The deformation engine includes **SDFStent**, a signed-distance-field (SDF)-based
20+
virtual stenting method that mimics stent-wall interaction during deployment, and
21+
**regularized Kelvinlet** displacement kernels (de Goes & James, 2017, Pham et al., 2024)
22+
for virtual aneurysm and synthetic stenosis modeling.
2223
All heavy numerics are JIT-compiled with [JAX](https://github.com/jax-ml/jax) for
2324
real-time feedback on commodity hardware.
2425

25-
> **Paper**   If you use svMorph in published work, please cite the companion
26-
> paper (reference forthcoming).
26+
> **Citation guidance**
27+
> - If you use **SDFStent** (virtual stenting), please cite the **SDFStent paper** (reference forthcoming).
28+
> - If you use **virtual aneurysm** or **virtual stenosis** creation, please cite:
29+
> *svMorph: Interactive Geometry-Editing Tools for Virtual Patient-Specific Vascular Anatomies*,
30+
> DOI: [10.1115/1.4056055](https://doi.org/10.1115/1.4056055).
2731
2832
---
2933

3034
## Key capabilities
3135

3236
| Mode | Description |
3337
|---|---|
34-
| **Stent deployment** | SDF-contact expansion of a crimped capsule-chain stent against the vessel wall, with bounding-box culling, KD-tree influence blending, and smooth-min C¹-continuous distance fields. |
35-
| **Stent deployment with straightening** | Identical to above, with concurrent projection of the stent axis toward a straight line at each step. |
38+
| **SDFStent deployment** | Signed-distance-field virtual stenting with expansion of a crimped capsule-chain stent against the vessel wall, with bounding-box culling, KD-tree influence blending, and smooth-min C¹-continuous distance fields. |
39+
| **SDFStent + straightening** | Same SDFStent deployment, with concurrent projection of the stent axis toward a straight line at each step. |
3640
| **Aneurysm creation** | Outward inflation at a centerline point via the scaling regularized Kelvinlet (F = s·I). |
3741
| **Stenosis creation** | Inward contraction using a truncated-sphere quartic bump profile. |
3842

@@ -46,7 +50,7 @@ All four modes are available through both the **interactive GUI** (PyQt6 + VTK)
4650
```
4751
svmorph/
4852
├── core/ # Pure computation — no VTK, no Qt
49-
│ ├── deformation.py # Kelvinlet kernels, SDF-contact, displacement assembly
53+
│ ├── deformation.py # Kelvinlet kernels, SDFStent (SDF-contact), displacement assembly
5054
│ ├── geometry.py # Arc-length centerline resampling (branch-aware)
5155
│ ├── mesh_data.py # Material constants, displacement application
5256
│ ├── defaults.py # Spatial default constants (cm)
@@ -119,7 +123,9 @@ pip install "svmorph[gui]"
119123
pip install svmorph
120124
```
121125

122-
### Option B — Manual installation for development purposes
126+
### Option B — Manual installation from source (development)
127+
Clone the repository first, then install dependencies.
128+
123129
svMorph with the optional full GUI:
124130
```bash
125131
pip install -r requirements-gui.txt
@@ -184,6 +190,15 @@ This uses `vtkmodules.vtkCommonCore.vtkVersion` instead of `import vtk` so the c
184190

185191
### Interactive GUI
186192

193+
If you installed `svmorph` directly from pip (Option A), launch with the installed console entry point:
194+
```bash
195+
svmorph-gui # default: units in cm, INFO logging on
196+
svmorph-gui --units mm # for editing millimeter geometry, units in mm
197+
svmorph-gui --verbose # show per-step timing
198+
svmorph-gui --debug # full diagnostic output
199+
```
200+
201+
If you cloned this repository and are running from source (Option B, developer workflow), launch with:
187202
```bash
188203
python main.py # default: units in cm, INFO logging on
189204
python main.py --units mm # for editing millimeter geometry, units in mm
@@ -220,7 +235,7 @@ horizontal rows. Each row groups related controls for a specific workflow.
220235
├──── Row 1 ── Stent geometry ─────────────────────────────────────────────┤
221236
│ Stent Length (cm): ◄══════════╪══════════► [1.7000] │
222237
│ Stent Diameter (cm): ◄══════════╪══════════► [0.8000] │
223-
├──── Row 2 ── Stent deployment ───────────────────────────────────────────┤
238+
├──── Row 2 ── SDFStent deployment ────────────────────────────────────────┤
224239
│ Force Scale: ◄══════════╪══════════► [1.000] │
225240
│ [Select Point] [Straighten Stent] [Expand Stent (One Step)] [Expand …] │
226241
├──── Row 3 ── Stenosis ──────────────────────────────────────────────────┤
@@ -241,20 +256,20 @@ horizontal rows. Each row groups related controls for a specific workflow.
241256
| Control | Type | Description |
242257
|---|---|---|
243258
| **Stent Length** | slider + text | Length of the capsule-chain stent along the centerline (1.0–8.0 cm). Adjusting this recomputes and redraws the stent axis vertices in real time. |
244-
| **Stent Diameter** | slider + text | Target deployed diameter of the stent (0.1–2.0 cm). This sets the radius goal for the SDF-contact expansion loop. |
259+
| **Stent Diameter** | slider + text | Target deployed diameter of the stent (0.1–2.0 cm). This sets the radius goal for the SDFStent expansion loop. |
245260

246261
Both controls are bidirectional: dragging the slider updates the text field, and
247262
typing a value snaps the slider to match.
248263

249-
#### Row 2 — Stent deployment
264+
#### Row 2 — SDFStent deployment
250265

251266
| Control | Type | Description |
252267
|---|---|---|
253268
| **Force Scale** | slider + text | Scales the magnitude of each displacement step (−1.0 to 1.0). Higher values produce larger per-step deformations; negative values reverse the direction. |
254269
| **Select Point** | button | Enters point-selection mode: the mesh becomes translucent and cyan glyphs appear at every centerline vertex. Click a vertex to select the stent's distal starting point. |
255-
| **Straighten Stent** | button | Runs one combined step of SDF-contact stent expansion **and** axis straightening — the stent is projected toward the line connecting its endpoints. |
256-
| **Expand Stent (One Step)** | button | Executes a single SDF-contact displacement iteration: the stent radius increments by one step and the vessel wall deforms outward at contact points. |
257-
| **Expand Stent** | hold button | Hold to run continuous SDF-contact expansion (fires every 50 ms). Release to stop. The title bar shows live FPS, current stent radius, and diameter. |
270+
| **Straighten Stent** | button | Runs one combined step of SDFStent expansion **and** axis straightening — the stent is projected toward the line connecting its endpoints. |
271+
| **Expand Stent (One Step)** | button | Executes a single SDFStent displacement iteration: the stent radius increments by one step and the vessel wall deforms outward at contact points. |
272+
| **Expand Stent** | hold button | Hold to run continuous SDFStent expansion (fires every 50 ms). Release to stop. The title bar shows live FPS, current stent radius, and diameter. |
258273

259274
#### Row 3 — Stenosis creation
260275

@@ -289,7 +304,7 @@ typing a value snaps the slider to match.
289304

290305
All scripts accept `--help` for full argument documentation.
291306

292-
**Deploy a stent** — expands a crimped stent (initial radius 0.05 cm) to a
307+
**Deploy a stent (SDFStent)** — expands a crimped stent (initial radius 0.05 cm) to a
293308
deployed radius of 0.4 cm (diameter 0.8 cm), with a total stent length of
294309
1.7 cm. The distal tip is placed at centerline point ID 123. Intermediate
295310
snapshots are saved every 0.1 cm of radius change.
@@ -306,7 +321,7 @@ python -m svmorph.scripts.deploy_stent \
306321
--out-mesh deployed_surface.vtp --out-cl deployed_centerline.vtp
307322
```
308323

309-
**Deploy with concurrent axis straightening** — same stent geometry as above,
324+
**Deploy with concurrent axis straightening (SDFStent)** — same stent geometry as above,
310325
but after each expansion step the stent axis is projected toward the straight
311326
line connecting its endpoints (strength 0.075), gradually removing curvature
312327
from the deployed configuration.

pyproject.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,9 @@ svmorph-create-aneurysm = "svmorph.scripts.create_aneurysm:main"
5555
svmorph-create-stenosis = "svmorph.scripts.create_stenosis:main"
5656

5757
[project.urls]
58-
Homepage = "https://github.com/jeffbli/svMorph"
59-
Repository = "https://github.com/jeffbli/svMorph"
60-
Issues = "https://github.com/jeffbli/svMorph/issues"
58+
Homepage = "https://github.com/SimVascular/svMorph/"
59+
Repository = "https://github.com/SimVascular/svMorph/"
60+
Issues = "https://github.com/SimVascular/svMorph/issues"
6161

6262
[tool.setuptools.packages.find]
6363
where = ["."]

0 commit comments

Comments
 (0)