dcccpy 0.3.0a2__tar.gz → 0.3.0a3__tar.gz

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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dcccpy
3
- Version: 0.3.0a2
3
+ Version: 0.3.0a3
4
4
  Summary: Python wrapper for the DCCCcore PET biomarker command-line tool
5
5
  Author: DCCCSlicer contributors
6
6
  License-Expression: CC-BY-NC-ND-4.0
@@ -17,17 +17,17 @@ Requires-Python: >=3.9
17
17
  Description-Content-Type: text/markdown
18
18
  Requires-Dist: nibabel>=5
19
19
  Provides-Extra: linux-runtime
20
- Requires-Dist: dcccpy-linux-runtime==0.2.0a1; (sys_platform == "linux" and platform_machine == "x86_64") and extra == "linux-runtime"
21
- Requires-Dist: dcccpy-linux-arm64-runtime==0.2.0a1; (sys_platform == "linux" and platform_machine == "aarch64") and extra == "linux-runtime"
20
+ Requires-Dist: dcccpy-linux-runtime==0.2.0a2; (sys_platform == "linux" and platform_machine == "x86_64") and extra == "linux-runtime"
21
+ Requires-Dist: dcccpy-linux-arm64-runtime==0.2.0a2; (sys_platform == "linux" and platform_machine == "aarch64") and extra == "linux-runtime"
22
22
  Provides-Extra: windows-runtime
23
- Requires-Dist: dcccpy-windows-runtime==0.2.0a1; (sys_platform == "win32" and platform_machine == "AMD64") and extra == "windows-runtime"
23
+ Requires-Dist: dcccpy-windows-runtime==0.2.0a2; (sys_platform == "win32" and platform_machine == "AMD64") and extra == "windows-runtime"
24
24
  Provides-Extra: macos-runtime
25
- Requires-Dist: dcccpy-macos-runtime==0.2.0a1; (sys_platform == "darwin" and platform_machine == "arm64") and extra == "macos-runtime"
25
+ Requires-Dist: dcccpy-macos-runtime==0.2.0a2; (sys_platform == "darwin" and platform_machine == "arm64") and extra == "macos-runtime"
26
26
  Provides-Extra: runtime
27
- Requires-Dist: dcccpy-linux-runtime==0.2.0a1; (sys_platform == "linux" and platform_machine == "x86_64") and extra == "runtime"
28
- Requires-Dist: dcccpy-linux-arm64-runtime==0.2.0a1; (sys_platform == "linux" and platform_machine == "aarch64") and extra == "runtime"
29
- Requires-Dist: dcccpy-windows-runtime==0.2.0a1; (sys_platform == "win32" and platform_machine == "AMD64") and extra == "runtime"
30
- Requires-Dist: dcccpy-macos-runtime==0.2.0a1; (sys_platform == "darwin" and platform_machine == "arm64") and extra == "runtime"
27
+ Requires-Dist: dcccpy-linux-runtime==0.2.0a2; (sys_platform == "linux" and platform_machine == "x86_64") and extra == "runtime"
28
+ Requires-Dist: dcccpy-linux-arm64-runtime==0.2.0a2; (sys_platform == "linux" and platform_machine == "aarch64") and extra == "runtime"
29
+ Requires-Dist: dcccpy-windows-runtime==0.2.0a2; (sys_platform == "win32" and platform_machine == "AMD64") and extra == "runtime"
30
+ Requires-Dist: dcccpy-macos-runtime==0.2.0a2; (sys_platform == "darwin" and platform_machine == "arm64") and extra == "runtime"
31
31
 
32
32
  # dcccpy
33
33
 
@@ -147,6 +147,7 @@ dcccpy.adni_pet_core(
147
147
  "standardized.nii.gz",
148
148
  tracer="fdg",
149
149
  level=(1, 3),
150
+ deface=True,
150
151
  )
151
152
  ```
152
153
 
@@ -155,9 +156,14 @@ Level 3 is the standardized ADNI-style image. The output argument names the
155
156
  highest selected level, while selected lower levels receive `_Coreg` or
156
157
  `_Coreg_Avg` suffixes.
157
158
 
158
- `adni_pet_core` deliberately has no default tracer. Use `abeta`, `tau`, or
159
- `fdg`; FDG selects ADNI's iterative masked global-mean normalization, while
160
- Aβ and tau retain cerebellar gray normalization.
159
+ Set `deface=True` to zero facial voxels in every selected output. Motion and
160
+ spatial transforms are estimated from the original PET before the privacy mask
161
+ is applied, so the flag does not change the estimated alignment.
162
+
163
+ `adni_pet_core` deliberately has no default tracer. Use `abeta`, `tau`, `fdg`,
164
+ or `dat`; FDG selects ADNI's iterative masked global-mean normalization,
165
+ DAT selects PPMI-style occipital-reference normalization, and Aβ/tau retain
166
+ cerebellar gray normalization.
161
167
 
162
168
  Downloaded ADNI preprocessed FDG DICOMs can differ slightly from the exact
163
169
  published iteration. See the repository's
@@ -206,7 +212,7 @@ the calculation again.
206
212
  Release wheels should vendor the matching `DCCCcore` runtime tree before build:
207
213
 
208
214
  ```bash
209
- python scripts/vendor_dccccore.py --version 4.5.0-alpha --release-platform ubuntu-latest-x64
215
+ python scripts/vendor_dccccore.py --version 4.5.1-alpha --release-platform ubuntu-latest-x64
210
216
  python -m build --wheel
211
217
  ```
212
218
 
@@ -214,7 +220,7 @@ The Linux ARM64 runtime package uses the corresponding release asset:
214
220
 
215
221
  ```bash
216
222
  cd python/dcccpy-linux-arm64-runtime
217
- python scripts/vendor_dccccore.py --version 4.5.0-alpha --release-platform ubuntu-latest-arm64
223
+ python scripts/vendor_dccccore.py --version 4.5.1-alpha --release-platform ubuntu-latest-arm64
218
224
  python -m build --wheel
219
225
  ```
220
226
 
@@ -232,7 +238,7 @@ The preferred distribution layout is:
232
238
 
233
239
  ## Packaging note
234
240
 
235
- The current optional runtime wheels use a PyPI-size profile for DCCCcore version 4.5.0-alpha. They omit the
241
+ The current optional runtime wheels use a PyPI-size profile for DCCCcore version 4.5.1-alpha. They omit the
236
242
  `fast_and_acc` registration model/config and the ADAD decoupler ONNX ensemble,
237
243
  while keeping the default spatial normalization model and assets needed by
238
244
  common Centiloid/CenTauR/CenTauRz workflows.
@@ -116,6 +116,7 @@ dcccpy.adni_pet_core(
116
116
  "standardized.nii.gz",
117
117
  tracer="fdg",
118
118
  level=(1, 3),
119
+ deface=True,
119
120
  )
120
121
  ```
121
122
 
@@ -124,9 +125,14 @@ Level 3 is the standardized ADNI-style image. The output argument names the
124
125
  highest selected level, while selected lower levels receive `_Coreg` or
125
126
  `_Coreg_Avg` suffixes.
126
127
 
127
- `adni_pet_core` deliberately has no default tracer. Use `abeta`, `tau`, or
128
- `fdg`; FDG selects ADNI's iterative masked global-mean normalization, while
129
- Aβ and tau retain cerebellar gray normalization.
128
+ Set `deface=True` to zero facial voxels in every selected output. Motion and
129
+ spatial transforms are estimated from the original PET before the privacy mask
130
+ is applied, so the flag does not change the estimated alignment.
131
+
132
+ `adni_pet_core` deliberately has no default tracer. Use `abeta`, `tau`, `fdg`,
133
+ or `dat`; FDG selects ADNI's iterative masked global-mean normalization,
134
+ DAT selects PPMI-style occipital-reference normalization, and Aβ/tau retain
135
+ cerebellar gray normalization.
130
136
 
131
137
  Downloaded ADNI preprocessed FDG DICOMs can differ slightly from the exact
132
138
  published iteration. See the repository's
@@ -175,7 +181,7 @@ the calculation again.
175
181
  Release wheels should vendor the matching `DCCCcore` runtime tree before build:
176
182
 
177
183
  ```bash
178
- python scripts/vendor_dccccore.py --version 4.5.0-alpha --release-platform ubuntu-latest-x64
184
+ python scripts/vendor_dccccore.py --version 4.5.1-alpha --release-platform ubuntu-latest-x64
179
185
  python -m build --wheel
180
186
  ```
181
187
 
@@ -183,7 +189,7 @@ The Linux ARM64 runtime package uses the corresponding release asset:
183
189
 
184
190
  ```bash
185
191
  cd python/dcccpy-linux-arm64-runtime
186
- python scripts/vendor_dccccore.py --version 4.5.0-alpha --release-platform ubuntu-latest-arm64
192
+ python scripts/vendor_dccccore.py --version 4.5.1-alpha --release-platform ubuntu-latest-arm64
187
193
  python -m build --wheel
188
194
  ```
189
195
 
@@ -201,7 +207,7 @@ The preferred distribution layout is:
201
207
 
202
208
  ## Packaging note
203
209
 
204
- The current optional runtime wheels use a PyPI-size profile for DCCCcore version 4.5.0-alpha. They omit the
210
+ The current optional runtime wheels use a PyPI-size profile for DCCCcore version 4.5.1-alpha. They omit the
205
211
  `fast_and_acc` registration model/config and the ADAD decoupler ONNX ensemble,
206
212
  while keeping the default spatial normalization model and assets needed by
207
213
  common Centiloid/CenTauR/CenTauRz workflows.
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "dcccpy"
7
- version = "0.3.0a2"
7
+ version = "0.3.0a3"
8
8
  description = "Python wrapper for the DCCCcore PET biomarker command-line tool"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
@@ -31,16 +31,16 @@ Issues = "https://github.com/tctco/DCCCSlicer/issues"
31
31
 
32
32
  [project.optional-dependencies]
33
33
  linux-runtime = [
34
- "dcccpy-linux-runtime==0.2.0a1; sys_platform == 'linux' and platform_machine == 'x86_64'",
35
- "dcccpy-linux-arm64-runtime==0.2.0a1; sys_platform == 'linux' and platform_machine == 'aarch64'",
34
+ "dcccpy-linux-runtime==0.2.0a2; sys_platform == 'linux' and platform_machine == 'x86_64'",
35
+ "dcccpy-linux-arm64-runtime==0.2.0a2; sys_platform == 'linux' and platform_machine == 'aarch64'",
36
36
  ]
37
- windows-runtime = ["dcccpy-windows-runtime==0.2.0a1; sys_platform == 'win32' and platform_machine == 'AMD64'"]
38
- macos-runtime = ["dcccpy-macos-runtime==0.2.0a1; sys_platform == 'darwin' and platform_machine == 'arm64'"]
37
+ windows-runtime = ["dcccpy-windows-runtime==0.2.0a2; sys_platform == 'win32' and platform_machine == 'AMD64'"]
38
+ macos-runtime = ["dcccpy-macos-runtime==0.2.0a2; sys_platform == 'darwin' and platform_machine == 'arm64'"]
39
39
  runtime = [
40
- "dcccpy-linux-runtime==0.2.0a1; sys_platform == 'linux' and platform_machine == 'x86_64'",
41
- "dcccpy-linux-arm64-runtime==0.2.0a1; sys_platform == 'linux' and platform_machine == 'aarch64'",
42
- "dcccpy-windows-runtime==0.2.0a1; sys_platform == 'win32' and platform_machine == 'AMD64'",
43
- "dcccpy-macos-runtime==0.2.0a1; sys_platform == 'darwin' and platform_machine == 'arm64'",
40
+ "dcccpy-linux-runtime==0.2.0a2; sys_platform == 'linux' and platform_machine == 'x86_64'",
41
+ "dcccpy-linux-arm64-runtime==0.2.0a2; sys_platform == 'linux' and platform_machine == 'aarch64'",
42
+ "dcccpy-windows-runtime==0.2.0a2; sys_platform == 'win32' and platform_machine == 'AMD64'",
43
+ "dcccpy-macos-runtime==0.2.0a2; sys_platform == 'darwin' and platform_machine == 'arm64'",
44
44
  ]
45
45
 
46
46
  [project.scripts]
@@ -412,6 +412,7 @@ def adni_pet_core(
412
412
  *,
413
413
  tracer: str,
414
414
  level: int | Sequence[int] = 3,
415
+ deface: bool = False,
415
416
  **kwargs: object,
416
417
  ) -> DCCCResult:
417
418
  """Run tracer-specific ADNI PET Core preprocessing.
@@ -419,6 +420,7 @@ def adni_pet_core(
419
420
  ``level`` accepts one level or a sequence: 1 exports Coreg, 2 exports
420
421
  Coreg/Avg, and 3 exports the standardized image. Multiple levels produce
421
422
  multiple files while ``output`` identifies the deepest requested level.
423
+ Set ``deface=True`` to zero facial voxels after transform estimation.
422
424
  """
423
425
 
424
426
  extra_args = list(kwargs.pop("extra_args", ()))
@@ -428,6 +430,8 @@ def adni_pet_core(
428
430
  raise ValueError("level must contain one or more of: 1, 2, 3")
429
431
  if levels != (3,):
430
432
  extra_args.extend(["--level", *(str(value) for value in levels)])
433
+ if deface:
434
+ extra_args.append("--deface")
431
435
  return _spatial_command("adni-pet-core", input, output, extra_args=extra_args, **kwargs)
432
436
 
433
437
 
@@ -12,7 +12,7 @@ from pathlib import Path
12
12
  from typing import Iterable
13
13
 
14
14
 
15
- DCCCCORE_VERSION = "4.5.0-alpha"
15
+ DCCCCORE_VERSION = "4.5.1-alpha"
16
16
  RELEASE_REPO = "tctco/DCCCSlicer"
17
17
 
18
18
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dcccpy
3
- Version: 0.3.0a2
3
+ Version: 0.3.0a3
4
4
  Summary: Python wrapper for the DCCCcore PET biomarker command-line tool
5
5
  Author: DCCCSlicer contributors
6
6
  License-Expression: CC-BY-NC-ND-4.0
@@ -17,17 +17,17 @@ Requires-Python: >=3.9
17
17
  Description-Content-Type: text/markdown
18
18
  Requires-Dist: nibabel>=5
19
19
  Provides-Extra: linux-runtime
20
- Requires-Dist: dcccpy-linux-runtime==0.2.0a1; (sys_platform == "linux" and platform_machine == "x86_64") and extra == "linux-runtime"
21
- Requires-Dist: dcccpy-linux-arm64-runtime==0.2.0a1; (sys_platform == "linux" and platform_machine == "aarch64") and extra == "linux-runtime"
20
+ Requires-Dist: dcccpy-linux-runtime==0.2.0a2; (sys_platform == "linux" and platform_machine == "x86_64") and extra == "linux-runtime"
21
+ Requires-Dist: dcccpy-linux-arm64-runtime==0.2.0a2; (sys_platform == "linux" and platform_machine == "aarch64") and extra == "linux-runtime"
22
22
  Provides-Extra: windows-runtime
23
- Requires-Dist: dcccpy-windows-runtime==0.2.0a1; (sys_platform == "win32" and platform_machine == "AMD64") and extra == "windows-runtime"
23
+ Requires-Dist: dcccpy-windows-runtime==0.2.0a2; (sys_platform == "win32" and platform_machine == "AMD64") and extra == "windows-runtime"
24
24
  Provides-Extra: macos-runtime
25
- Requires-Dist: dcccpy-macos-runtime==0.2.0a1; (sys_platform == "darwin" and platform_machine == "arm64") and extra == "macos-runtime"
25
+ Requires-Dist: dcccpy-macos-runtime==0.2.0a2; (sys_platform == "darwin" and platform_machine == "arm64") and extra == "macos-runtime"
26
26
  Provides-Extra: runtime
27
- Requires-Dist: dcccpy-linux-runtime==0.2.0a1; (sys_platform == "linux" and platform_machine == "x86_64") and extra == "runtime"
28
- Requires-Dist: dcccpy-linux-arm64-runtime==0.2.0a1; (sys_platform == "linux" and platform_machine == "aarch64") and extra == "runtime"
29
- Requires-Dist: dcccpy-windows-runtime==0.2.0a1; (sys_platform == "win32" and platform_machine == "AMD64") and extra == "runtime"
30
- Requires-Dist: dcccpy-macos-runtime==0.2.0a1; (sys_platform == "darwin" and platform_machine == "arm64") and extra == "runtime"
27
+ Requires-Dist: dcccpy-linux-runtime==0.2.0a2; (sys_platform == "linux" and platform_machine == "x86_64") and extra == "runtime"
28
+ Requires-Dist: dcccpy-linux-arm64-runtime==0.2.0a2; (sys_platform == "linux" and platform_machine == "aarch64") and extra == "runtime"
29
+ Requires-Dist: dcccpy-windows-runtime==0.2.0a2; (sys_platform == "win32" and platform_machine == "AMD64") and extra == "runtime"
30
+ Requires-Dist: dcccpy-macos-runtime==0.2.0a2; (sys_platform == "darwin" and platform_machine == "arm64") and extra == "runtime"
31
31
 
32
32
  # dcccpy
33
33
 
@@ -147,6 +147,7 @@ dcccpy.adni_pet_core(
147
147
  "standardized.nii.gz",
148
148
  tracer="fdg",
149
149
  level=(1, 3),
150
+ deface=True,
150
151
  )
151
152
  ```
152
153
 
@@ -155,9 +156,14 @@ Level 3 is the standardized ADNI-style image. The output argument names the
155
156
  highest selected level, while selected lower levels receive `_Coreg` or
156
157
  `_Coreg_Avg` suffixes.
157
158
 
158
- `adni_pet_core` deliberately has no default tracer. Use `abeta`, `tau`, or
159
- `fdg`; FDG selects ADNI's iterative masked global-mean normalization, while
160
- Aβ and tau retain cerebellar gray normalization.
159
+ Set `deface=True` to zero facial voxels in every selected output. Motion and
160
+ spatial transforms are estimated from the original PET before the privacy mask
161
+ is applied, so the flag does not change the estimated alignment.
162
+
163
+ `adni_pet_core` deliberately has no default tracer. Use `abeta`, `tau`, `fdg`,
164
+ or `dat`; FDG selects ADNI's iterative masked global-mean normalization,
165
+ DAT selects PPMI-style occipital-reference normalization, and Aβ/tau retain
166
+ cerebellar gray normalization.
161
167
 
162
168
  Downloaded ADNI preprocessed FDG DICOMs can differ slightly from the exact
163
169
  published iteration. See the repository's
@@ -206,7 +212,7 @@ the calculation again.
206
212
  Release wheels should vendor the matching `DCCCcore` runtime tree before build:
207
213
 
208
214
  ```bash
209
- python scripts/vendor_dccccore.py --version 4.5.0-alpha --release-platform ubuntu-latest-x64
215
+ python scripts/vendor_dccccore.py --version 4.5.1-alpha --release-platform ubuntu-latest-x64
210
216
  python -m build --wheel
211
217
  ```
212
218
 
@@ -214,7 +220,7 @@ The Linux ARM64 runtime package uses the corresponding release asset:
214
220
 
215
221
  ```bash
216
222
  cd python/dcccpy-linux-arm64-runtime
217
- python scripts/vendor_dccccore.py --version 4.5.0-alpha --release-platform ubuntu-latest-arm64
223
+ python scripts/vendor_dccccore.py --version 4.5.1-alpha --release-platform ubuntu-latest-arm64
218
224
  python -m build --wheel
219
225
  ```
220
226
 
@@ -232,7 +238,7 @@ The preferred distribution layout is:
232
238
 
233
239
  ## Packaging note
234
240
 
235
- The current optional runtime wheels use a PyPI-size profile for DCCCcore version 4.5.0-alpha. They omit the
241
+ The current optional runtime wheels use a PyPI-size profile for DCCCcore version 4.5.1-alpha. They omit the
236
242
  `fast_and_acc` registration model/config and the ADAD decoupler ONNX ensemble,
237
243
  while keeping the default spatial normalization model and assets needed by
238
244
  common Centiloid/CenTauR/CenTauRz workflows.
@@ -3,31 +3,31 @@ nibabel>=5
3
3
  [linux-runtime]
4
4
 
5
5
  [linux-runtime:sys_platform == "linux" and platform_machine == "aarch64"]
6
- dcccpy-linux-arm64-runtime==0.2.0a1
6
+ dcccpy-linux-arm64-runtime==0.2.0a2
7
7
 
8
8
  [linux-runtime:sys_platform == "linux" and platform_machine == "x86_64"]
9
- dcccpy-linux-runtime==0.2.0a1
9
+ dcccpy-linux-runtime==0.2.0a2
10
10
 
11
11
  [macos-runtime]
12
12
 
13
13
  [macos-runtime:sys_platform == "darwin" and platform_machine == "arm64"]
14
- dcccpy-macos-runtime==0.2.0a1
14
+ dcccpy-macos-runtime==0.2.0a2
15
15
 
16
16
  [runtime]
17
17
 
18
18
  [runtime:sys_platform == "darwin" and platform_machine == "arm64"]
19
- dcccpy-macos-runtime==0.2.0a1
19
+ dcccpy-macos-runtime==0.2.0a2
20
20
 
21
21
  [runtime:sys_platform == "linux" and platform_machine == "aarch64"]
22
- dcccpy-linux-arm64-runtime==0.2.0a1
22
+ dcccpy-linux-arm64-runtime==0.2.0a2
23
23
 
24
24
  [runtime:sys_platform == "linux" and platform_machine == "x86_64"]
25
- dcccpy-linux-runtime==0.2.0a1
25
+ dcccpy-linux-runtime==0.2.0a2
26
26
 
27
27
  [runtime:sys_platform == "win32" and platform_machine == "AMD64"]
28
- dcccpy-windows-runtime==0.2.0a1
28
+ dcccpy-windows-runtime==0.2.0a2
29
29
 
30
30
  [windows-runtime]
31
31
 
32
32
  [windows-runtime:sys_platform == "win32" and platform_machine == "AMD64"]
33
- dcccpy-windows-runtime==0.2.0a1
33
+ dcccpy-windows-runtime==0.2.0a2
@@ -142,7 +142,7 @@ def test_dccccore_path_can_disable_auto_download(tmp_path: Path, monkeypatch: py
142
142
 
143
143
 
144
144
  def test_dccccore_path_auto_downloads_to_cache(tmp_path: Path, monkeypatch: pytest.MonkeyPatch) -> None:
145
- asset_root = tmp_path / "asset" / "DCCCcore-4.5.0-alpha-ubuntu-latest-x64"
145
+ asset_root = tmp_path / "asset" / "DCCCcore-4.5.1-alpha-ubuntu-latest-x64"
146
146
  asset_root.mkdir(parents=True)
147
147
  exe = asset_root / "DCCCcore"
148
148
  exe.write_text("#!/usr/bin/env sh\nprintf 'fake dccccore\\n'\n")
@@ -150,7 +150,7 @@ def test_dccccore_path_auto_downloads_to_cache(tmp_path: Path, monkeypatch: pyte
150
150
 
151
151
  archive = tmp_path / "DCCCcore.zip"
152
152
  with zipfile.ZipFile(archive, "w") as zf:
153
- zf.write(exe, "DCCCcore-4.5.0-alpha-ubuntu-latest-x64/DCCCcore")
153
+ zf.write(exe, "DCCCcore-4.5.1-alpha-ubuntu-latest-x64/DCCCcore")
154
154
 
155
155
  monkeypatch.delenv("DCCCPY_DCCCCORE", raising=False)
156
156
  monkeypatch.setenv("DCCCPY_AUTO_DOWNLOAD", "1")
@@ -175,7 +175,7 @@ def test_find_existing_dccccore_checks_macos_runtime_package(
175
175
  exe.write_text("#!/usr/bin/env sh\n")
176
176
  exe.chmod(0o755)
177
177
 
178
- module = types.SimpleNamespace(DCCCCORE_VERSION="4.5.0-alpha", dccccore_root=lambda: root)
178
+ module = types.SimpleNamespace(DCCCCORE_VERSION="4.5.1-alpha", dccccore_root=lambda: root)
179
179
  monkeypatch.setitem(sys.modules, "dcccpy_macos_runtime", module)
180
180
  monkeypatch.setenv("PATH", str(tmp_path / "empty-path"))
181
181
 
@@ -187,9 +187,9 @@ def test_linux_arm64_release_platform() -> None:
187
187
 
188
188
 
189
189
  def test_default_release_targets_dccccore_450_alpha() -> None:
190
- assert DCCCCORE_VERSION == "4.5.0-alpha"
190
+ assert DCCCCORE_VERSION == "4.5.1-alpha"
191
191
  assert release_url(platform_name="ubuntu-latest-x64").endswith(
192
- "/releases/download/v4.5.0-alpha/DCCCcore-4.5.0-alpha-ubuntu-latest-x64.zip"
192
+ "/releases/download/v4.5.1-alpha/DCCCcore-4.5.1-alpha-ubuntu-latest-x64.zip"
193
193
  )
194
194
 
195
195
 
@@ -220,7 +220,7 @@ def test_find_existing_dccccore_checks_linux_arm64_runtime_package(
220
220
  exe.write_text("#!/usr/bin/env sh\n")
221
221
  exe.chmod(0o755)
222
222
 
223
- module = types.SimpleNamespace(DCCCCORE_VERSION="4.5.0-alpha", dccccore_root=lambda: root)
223
+ module = types.SimpleNamespace(DCCCCORE_VERSION="4.5.1-alpha", dccccore_root=lambda: root)
224
224
  monkeypatch.setitem(sys.modules, "dcccpy_linux_arm64_runtime", module)
225
225
  monkeypatch.setenv("PATH", str(tmp_path / "empty-path"))
226
226
 
@@ -347,6 +347,38 @@ def test_adni_pet_core_rejects_invalid_export_levels(level: object) -> None:
347
347
  dcccpy.adni_pet_core("pet.nii", tracer="fdg", level=level) # type: ignore[arg-type]
348
348
 
349
349
 
350
+ def test_adni_pet_core_forwards_deface(
351
+ tmp_path: Path,
352
+ monkeypatch: pytest.MonkeyPatch,
353
+ ) -> None:
354
+ fake_args = tmp_path / "args.txt"
355
+ fake_exe = make_fake_dccccore(tmp_path)
356
+ input_path = tmp_path / "pet.nii"
357
+ output_path = tmp_path / "adni.nii"
358
+ input_path.write_text("fake PET")
359
+ monkeypatch.setenv("DCCCPY_DCCCCORE", str(fake_exe))
360
+ monkeypatch.setenv("DCCCPY_FAKE_ARGS", str(fake_args))
361
+
362
+ result = dcccpy.adni_pet_core(
363
+ input_path, output_path, tracer="fdg", level=(1, 3), deface=True
364
+ )
365
+
366
+ assert result.returncode == 0
367
+ assert fake_args.read_text().splitlines() == [
368
+ "adni-pet-core",
369
+ "--input",
370
+ str(input_path),
371
+ "--output",
372
+ str(output_path),
373
+ "--tracer",
374
+ "fdg",
375
+ "--level",
376
+ "1",
377
+ "3",
378
+ "--deface",
379
+ ]
380
+
381
+
350
382
  def test_run_adds_macos_security_hint_for_blocked_runtime(
351
383
  tmp_path: Path,
352
384
  monkeypatch: pytest.MonkeyPatch,
File without changes
File without changes
File without changes
File without changes
File without changes