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
1 change: 1 addition & 0 deletions docker/Dockerfile.core
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \

RUN python3 -m pip install --no-cache-dir --default-timeout=120 --retries=10 \
"conan>=2.0,<3" \
numpy \
pandas \
pytest

Expand Down
8 changes: 7 additions & 1 deletion localizer/src/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# CMakeList.txt: DCCCcore Refactored Version
cmake_minimum_required(VERSION 3.21)

project(DCCCcore VERSION 4.2.6)
project(DCCCcore VERSION 4.3.0)
set(DCCCCORE_VERSION_SUFFIX "")
set(DCCCCORE_SOFTWARE_VERSION "${PROJECT_VERSION}${DCCCCORE_VERSION_SUFFIX}")

Expand All @@ -20,6 +20,7 @@ find_package(onnxruntime CONFIG REQUIRED)
find_package(tomlplusplus CONFIG REQUIRED)
find_package(Eigen3 CONFIG REQUIRED)
find_package(rapidcsv CONFIG REQUIRED)
find_package(ZLIB REQUIRED)

# Include directories
# include_directories(${CMAKE_CURRENT_SOURCE_DIR})
Expand Down Expand Up @@ -67,6 +68,8 @@ target_sources(DCCCcore PRIVATE
target_sources(DCCCcore PRIVATE
core/preprocessing/ImagePreprocessor.h
core/preprocessing/ImagePreprocessor.cpp
core/preprocessing/PetMotionCorrector.h
core/preprocessing/PetMotionCorrector.cpp
)

# Add utility sources
Expand Down Expand Up @@ -186,6 +189,8 @@ target_sources(DCCCcore PRIVATE
spatialNormalizations/adni/AdniPetCoreCLI.cpp
spatialNormalizations/rigid/RigidCLI.h
spatialNormalizations/rigid/RigidCLI.cpp
spatialNormalizations/pet/PetMotionCorrectionCLI.h
spatialNormalizations/pet/PetMotionCorrectionCLI.cpp
)

# Link libraries
Expand All @@ -196,6 +201,7 @@ target_link_libraries(DCCCcore PRIVATE
tomlplusplus::tomlplusplus
Eigen3::Eigen
rapidcsv::rapidcsv
ZLIB::ZLIB
)

# Compile options
Expand Down
15 changes: 15 additions & 0 deletions localizer/src/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -110,12 +110,27 @@ Perform spatial standardization without metric calculation:
# ADNI-style processing
./DCCCcore adni-pet-core --input pet.nii --output normalized.nii

# Multi-frame PET motion correction and arithmetic mean
./DCCCcore pet-motion-correct --input dynamic_pet.nii.gz --output averaged_pet.nii.gz

# Optionally retain corrected frames and per-frame rigid motion parameters
./DCCCcore pet-motion-correct --input dynamic_pet.nii.gz --output averaged_pet.nii.gz \
--save-corrected-dynamic corrected.nii.gz --motion-output motion.tsv

# Iterative rigid registration
./DCCCcore normalize --input pet.nii --output normalized.nii --iterative
./DCCCcore adni-pet-core --input pet.nii --output normalized.nii --iterative
./DCCCcore rigid --input pet.nii --output rigid.nii --iterative
```

`pet-motion-correct` accepts general 4D `X × Y × Z × N` PET data. It uses frame 0
as the fixed reference, independently registers every later frame to it with a
six-degree-of-freedom rigid transform, and writes the arithmetic mean as a 3D
float NIfTI. A 4D input passed to `adni-pet-core` is automatically motion-corrected
and averaged before the existing ADNI PET Core pipeline; 3D input follows the
existing pipeline unchanged. Motion TSV translations are in millimetres and
Euler rotations are in radians.

#### ADAD Analysis
Run the ADAD decoupling-based metric:

Expand Down
3 changes: 2 additions & 1 deletion localizer/src/conanfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

class AppConan(ConanFile):
name = "DCCCcore"
version = "4.2.6"
version = "4.3.0"
settings = "os", "arch", "compiler", "build_type"
generators = "CMakeDeps", "CMakeToolchain"

Expand All @@ -15,6 +15,7 @@ def requirements(self):
self.requires("onnxruntime/1.18.1")
self.requires("tomlplusplus/3.4.0")
self.requires("rapidcsv/8.84")
self.requires("zlib/1.3.2")
# ---- conflict resolution: choose one Eigen for the whole graph ----
# If the graph shows ORT wants 3.4.0, prefer:
self.requires("eigen/3.4.0")
Expand Down
2 changes: 1 addition & 1 deletion localizer/src/core/config/Version.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#pragma once
#include <string>

const std::string SOFTWARE_VERSION = "4.2.6";
const std::string SOFTWARE_VERSION = "4.3.0";
Loading
Loading