Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .cursor/rules/project-standards.mdc
Original file line number Diff line number Diff line change
Expand Up @@ -100,3 +100,7 @@ The user prefers to review and stage changes manually.
- Make atomic commits with clear messages
- Don't commit large binary files (add to `.gitignore`)
- Use `git status` to verify changes before committing

**Code and documentation versions:**
- Refer to code and documentation in the folder reference_code to get examples and documentation of the APIs and best practices for the advanced libraries used in this project:
- ITK, VTK, PyVista, Omniverse, PhysicsNeMo, Simpleware, MONAI, and OpenUSD
2 changes: 2 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
*.hdf filter=lfs diff=lfs merge=lfs -text
*.mha filter=lfs diff=lfs merge=lfs -text
8 changes: 8 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
lfs: true

- name: Free up disk space on Ubuntu
if: matrix.os == 'ubuntu-latest'
Expand Down Expand Up @@ -134,6 +136,8 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
lfs: true

- name: Free up disk space
run: |
Expand Down Expand Up @@ -264,6 +268,8 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
lfs: true

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
Expand Down Expand Up @@ -341,6 +347,8 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
lfs: true

- name: Set up Python 3.10
uses: actions/setup-python@v5
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/test-slow.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
lfs: true

- name: Set up Python 3.10
uses: actions/setup-python@v5
Expand Down
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ network_weights
# Data files
*.gz
*.mat
*.mha
*.mhd
*.zip
*.nii
Expand Down
5 changes: 4 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ PhysioMotion4D is a comprehensive medical imaging package that converts 4D CT sc
- NVIDIA GPU with CUDA 12.6+ (for AI models and registration)
- 16GB+ RAM (32GB+ recommended for large datasets)
- NVIDIA Omniverse (for USD visualization)
- **Git LFS** (required for running tests: baseline files in `tests/baselines/` are stored with Git LFS; install from [git-lfs.github.com](https://git-lfs.github.com), then run `git lfs install` and `git lfs pull` after cloning)

### Installation from PyPI

Expand All @@ -43,10 +44,12 @@ pip install physiomotion4d[nim]

### Installation from Source

1. **Clone the repository**:
1. **Clone the repository** (Git LFS is required for tests; install it first from [git-lfs.github.com](https://git-lfs.github.com)):
```bash
git clone <repository-url>
cd PhysioMotion4D
git lfs install # if not already done
git lfs pull # fetch .hdf and .mha baselines in tests/baselines/
```

2. **Create virtual environment**:
Expand Down
1 change: 1 addition & 0 deletions data/KCL-Heart-Model/.gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
training_cases*
pca*
surfaces*
labelmap*
1 change: 1 addition & 0 deletions data/Slicer-Heart-CT/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
*.mha
80 changes: 40 additions & 40 deletions experiments/Colormap-VTK_To_USD/colormap_vtk_to_usd.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,10 @@
"execution_count": null,
"metadata": {
"execution": {
"iopub.execute_input": "2026-02-04T01:32:18.383455Z",
"iopub.status.busy": "2026-02-04T01:32:18.382880Z",
"iopub.status.idle": "2026-02-04T01:32:33.026051Z",
"shell.execute_reply": "2026-02-04T01:32:33.025056Z"
"iopub.execute_input": "2026-02-09T03:48:28.123883Z",
"iopub.status.busy": "2026-02-09T03:48:28.123883Z",
"iopub.status.idle": "2026-02-09T03:48:43.826000Z",
"shell.execute_reply": "2026-02-09T03:48:43.825409Z"
}
},
"outputs": [],
Expand Down Expand Up @@ -72,10 +72,10 @@
"execution_count": null,
"metadata": {
"execution": {
"iopub.execute_input": "2026-02-04T01:32:33.041069Z",
"iopub.status.busy": "2026-02-04T01:32:33.041069Z",
"iopub.status.idle": "2026-02-04T01:32:33.056057Z",
"shell.execute_reply": "2026-02-04T01:32:33.055050Z"
"iopub.execute_input": "2026-02-09T03:48:43.846529Z",
"iopub.status.busy": "2026-02-09T03:48:43.846034Z",
"iopub.status.idle": "2026-02-09T03:48:43.857215Z",
"shell.execute_reply": "2026-02-09T03:48:43.856121Z"
}
},
"outputs": [],
Expand Down Expand Up @@ -130,10 +130,10 @@
"execution_count": null,
"metadata": {
"execution": {
"iopub.execute_input": "2026-02-04T01:32:33.057059Z",
"iopub.status.busy": "2026-02-04T01:32:33.057059Z",
"iopub.status.idle": "2026-02-04T01:32:33.220731Z",
"shell.execute_reply": "2026-02-04T01:32:33.219708Z"
"iopub.execute_input": "2026-02-09T03:48:43.858745Z",
"iopub.status.busy": "2026-02-09T03:48:43.858745Z",
"iopub.status.idle": "2026-02-09T03:48:44.022573Z",
"shell.execute_reply": "2026-02-09T03:48:44.021580Z"
}
},
"outputs": [],
Expand Down Expand Up @@ -182,10 +182,10 @@
"execution_count": null,
"metadata": {
"execution": {
"iopub.execute_input": "2026-02-04T01:32:33.222706Z",
"iopub.status.busy": "2026-02-04T01:32:33.221699Z",
"iopub.status.idle": "2026-02-04T01:32:33.355566Z",
"shell.execute_reply": "2026-02-04T01:32:33.354562Z"
"iopub.execute_input": "2026-02-09T03:48:44.024575Z",
"iopub.status.busy": "2026-02-09T03:48:44.024575Z",
"iopub.status.idle": "2026-02-09T03:48:44.158618Z",
"shell.execute_reply": "2026-02-09T03:48:44.157624Z"
}
},
"outputs": [],
Expand Down Expand Up @@ -224,10 +224,10 @@
"execution_count": null,
"metadata": {
"execution": {
"iopub.execute_input": "2026-02-04T01:32:33.356562Z",
"iopub.status.busy": "2026-02-04T01:32:33.356562Z",
"iopub.status.idle": "2026-02-04T01:32:33.492011Z",
"shell.execute_reply": "2026-02-04T01:32:33.490997Z"
"iopub.execute_input": "2026-02-09T03:48:44.159626Z",
"iopub.status.busy": "2026-02-09T03:48:44.159626Z",
"iopub.status.idle": "2026-02-09T03:48:44.293616Z",
"shell.execute_reply": "2026-02-09T03:48:44.292622Z"
}
},
"outputs": [],
Expand Down Expand Up @@ -266,10 +266,10 @@
"execution_count": null,
"metadata": {
"execution": {
"iopub.execute_input": "2026-02-04T01:32:33.494019Z",
"iopub.status.busy": "2026-02-04T01:32:33.494019Z",
"iopub.status.idle": "2026-02-04T01:32:33.627873Z",
"shell.execute_reply": "2026-02-04T01:32:33.626854Z"
"iopub.execute_input": "2026-02-09T03:48:44.295616Z",
"iopub.status.busy": "2026-02-09T03:48:44.295616Z",
"iopub.status.idle": "2026-02-09T03:48:44.428154Z",
"shell.execute_reply": "2026-02-09T03:48:44.428154Z"
}
},
"outputs": [],
Expand Down Expand Up @@ -308,10 +308,10 @@
"execution_count": null,
"metadata": {
"execution": {
"iopub.execute_input": "2026-02-04T01:32:33.629849Z",
"iopub.status.busy": "2026-02-04T01:32:33.629849Z",
"iopub.status.idle": "2026-02-04T01:32:33.764342Z",
"shell.execute_reply": "2026-02-04T01:32:33.763320Z"
"iopub.execute_input": "2026-02-09T03:48:44.430154Z",
"iopub.status.busy": "2026-02-09T03:48:44.430154Z",
"iopub.status.idle": "2026-02-09T03:48:44.563163Z",
"shell.execute_reply": "2026-02-09T03:48:44.563163Z"
}
},
"outputs": [],
Expand Down Expand Up @@ -348,10 +348,10 @@
"execution_count": null,
"metadata": {
"execution": {
"iopub.execute_input": "2026-02-04T01:32:33.766328Z",
"iopub.status.busy": "2026-02-04T01:32:33.766328Z",
"iopub.status.idle": "2026-02-04T01:32:33.900294Z",
"shell.execute_reply": "2026-02-04T01:32:33.899437Z"
"iopub.execute_input": "2026-02-09T03:48:44.565157Z",
"iopub.status.busy": "2026-02-09T03:48:44.565157Z",
"iopub.status.idle": "2026-02-09T03:48:44.699684Z",
"shell.execute_reply": "2026-02-09T03:48:44.698691Z"
}
},
"outputs": [],
Expand Down Expand Up @@ -394,10 +394,10 @@
"execution_count": null,
"metadata": {
"execution": {
"iopub.execute_input": "2026-02-04T01:32:33.903321Z",
"iopub.status.busy": "2026-02-04T01:32:33.902378Z",
"iopub.status.idle": "2026-02-04T01:32:34.035124Z",
"shell.execute_reply": "2026-02-04T01:32:34.034169Z"
"iopub.execute_input": "2026-02-09T03:48:44.701683Z",
"iopub.status.busy": "2026-02-09T03:48:44.701683Z",
"iopub.status.idle": "2026-02-09T03:48:44.834684Z",
"shell.execute_reply": "2026-02-09T03:48:44.833694Z"
}
},
"outputs": [],
Expand Down Expand Up @@ -458,10 +458,10 @@
"execution_count": null,
"metadata": {
"execution": {
"iopub.execute_input": "2026-02-04T01:32:34.037115Z",
"iopub.status.busy": "2026-02-04T01:32:34.037115Z",
"iopub.status.idle": "2026-02-04T01:32:34.050245Z",
"shell.execute_reply": "2026-02-04T01:32:34.049224Z"
"iopub.execute_input": "2026-02-09T03:48:44.836684Z",
"iopub.status.busy": "2026-02-09T03:48:44.835685Z",
"iopub.status.idle": "2026-02-09T03:48:44.849686Z",
"shell.execute_reply": "2026-02-09T03:48:44.848691Z"
}
},
"outputs": [],
Expand Down
Loading
Loading