From 8e8d63327d02e226d9c83ebeafb98565eec8583f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 10 Jun 2026 00:17:38 +0000 Subject: [PATCH 1/8] Initial plan From a11518f8bf3e53f26308b3ac7ecdc762adcc7001 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 10 Jun 2026 00:21:12 +0000 Subject: [PATCH 2/8] Add DCEASY home site (index.html + styles.css) --- index.html | 211 ++++++++++++++++++++++++++++++++++ styles.css | 328 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 539 insertions(+) create mode 100644 index.html create mode 100644 styles.css diff --git a/index.html b/index.html new file mode 100644 index 0000000..289db64 --- /dev/null +++ b/index.html @@ -0,0 +1,211 @@ + + + + + + DCEASY — DCE-MRI Software Suite + + + + +
+
+

DCEASY

+

Open-source tools for Dynamic Contrast-Enhanced MRI processing & analysis

+
+
+ +
+ +
+

+ DCEASY is a collection of open-source software maintained by the + PET/MRI Lab + for end-to-end Dynamic Contrast-Enhanced (DCE) MRI workflows — + from parametric mapping and pharmacokinetic modelling to arterial input function (AIF) curation. + Choose the tool that fits your step in the pipeline below. +

+
+ +
+

Processing pipeline overview

+
    +
  1. 1 Acquire DCE-MRI data
  2. +
  3. 2 Generate T1 / T2 / ADC maps → parametric_scripts
  4. +
  5. 3 Annotate or fit the arterial input function → AIFArtist / ROCKETSHIP
  6. +
  7. 4 Fit pharmacokinetic models (Ktrans, ve, vp …) → ROCKETSHIP
  8. +
  9. 5 Analyse & compare parametric maps → ROCKETSHIP
  10. +
+
+ +
+

Tools

+ +
+ + +
+
+

ROCKETSHIP

+ MATLAB +
+

+ A flexible, GUI-driven suite for full DCE-MRI analysis. Covers pre-contrast + T1 mapping, AIF selection and fitting, multi-model pharmacokinetic curve + fitting (Tofts, Extended Tofts, Patlak, Two-Compartment Exchange, FXR, …), + and results visualisation. Supports NIFTI and DICOM inputs and optional + GPU acceleration. +

+
    +
  • Tofts, Extended Tofts, Patlak, 2CXM, FXR, tissue-uptake models
  • +
  • GUI-based workflow — no scripting required
  • +
  • Batch processing via parallel computing toolbox
  • +
  • Optional GPU acceleration (Gpufit)
  • +
  • 52 ★ on GitHub · cited in BMC Medical Imaging
  • +
+ +
+ + +
+
+

AIFArtist

+ Python +
+

+ A napari desktop application for manual arterial input function (AIF) + annotation on 4D MRI NIfTI data. Designed for high-volume multi-rater + review sessions: draw a 3D ROI, inspect the mean signal-intensity + curve over time, save a BIDS-style derivative, and jump straight to + the next case. +

+
    +
  • Loads BIDS-compliant 4D desc-hmc_DCE.nii[.gz] files, directories, or manifest lists
  • +
  • Live ROI curve preview with per-label and normalised views
  • +
  • BIDS-style derivative outputs with rater ID embedded in filenames
  • +
  • Auto-resumes at first unreviewed case; prefetches next image
  • +
  • Flag-and-skip for poor AIFs or missing baselines
  • +
+ +
+ + +
+
+

parametric_scripts

+ MATLAB +
+

+ The ROCKETSHIP parametric mapping module, also usable as a + stand-alone tool. Generates T1, T2, T2*, and ADC maps from + multi-echo or inversion-recovery NIFTI series — a required + pre-processing step for accurate DCE pharmacokinetic modelling. +

+
    +
  • T1 (inversion recovery), T2, T2*, and ADC map generation
  • +
  • GUI-based interface (fitting_gui)
  • +
  • Batch processing and parallel fitting support
  • +
  • NIFTI and DICOM input support
  • +
+ +
+ +
+
+ +
+

Which tool do I need?

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TaskTool
Generate pre-contrast T1, T2, or ADC mapsparametric_scripts
Manually draw and save an AIF ROI (multi-rater, BIDS)AIFArtist
Fit an AIF to a bi-exponential modelROCKETSHIP (Module B)
Pharmacokinetic model fitting (Ktrans, ve, vp)ROCKETSHIP (Module D)
End-to-end DCE pipeline with GUIROCKETSHIP
Visualise and compare parametric mapsROCKETSHIP (Module E)
+
+
+ +
+

Quick start

+
+
+

ROCKETSHIP

+
# Clone (includes submodules)
+git clone --recursive \
+  https://github.com/petmri/ROCKETSHIP.git
+
+# In MATLAB, add ROCKETSHIP to the path, then:
+run_parametric   % Step 1 — T1 maps
+run_dce          % Step 2 — DCE fitting
+
+
+

AIFArtist

+
# Install dependencies
+pip install -r requirements.txt
+
+# Launch the annotation app
+python aif_artist.py /path/to/bids_dataset \
+  --rater AB
+
+
+
+ +
+

Contact & contributing

+

+ Questions? Open an issue on the relevant repository or contact the lab + maintainer at sabarnes@llu.edu. + Contributions via pull request are welcome on all repositories. +

+

+ View all repositories → +

+
+ +
+ + + + + diff --git a/styles.css b/styles.css new file mode 100644 index 0000000..906b2ef --- /dev/null +++ b/styles.css @@ -0,0 +1,328 @@ +/* ===== Reset & base ===== */ +*, *::before, *::after { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +html { + font-size: 16px; + scroll-behavior: smooth; +} + +body { + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; + color: #1a1a2e; + background: #f7f8fc; + line-height: 1.65; +} + +a { + color: #2563eb; + text-decoration: none; +} + +a:hover { + text-decoration: underline; +} + +/* ===== Header ===== */ +header { + background: linear-gradient(135deg, #0f2a5c 0%, #1e4d9b 60%, #2563eb 100%); + color: #fff; + padding: 3rem 1.5rem 2.5rem; + text-align: center; +} + +.header-inner { + max-width: 860px; + margin: 0 auto; +} + +header h1 { + font-size: clamp(2.4rem, 5vw, 4rem); + font-weight: 800; + letter-spacing: -0.02em; + margin-bottom: 0.5rem; +} + +.tagline { + font-size: clamp(1rem, 2.5vw, 1.25rem); + opacity: 0.88; + max-width: 600px; + margin: 0 auto; +} + +/* ===== Main layout ===== */ +main { + max-width: 960px; + margin: 0 auto; + padding: 0 1.5rem 4rem; +} + +section { + margin-top: 3rem; +} + +section h2 { + font-size: 1.5rem; + font-weight: 700; + margin-bottom: 1rem; + padding-bottom: 0.4rem; + border-bottom: 3px solid #2563eb; + display: inline-block; +} + +/* ===== Intro ===== */ +.intro p { + font-size: 1.05rem; + max-width: 780px; +} + +/* ===== Pipeline steps ===== */ +.steps { + list-style: none; + display: flex; + flex-direction: column; + gap: 0.6rem; + padding-left: 0; +} + +.steps li { + display: flex; + align-items: center; + gap: 0.75rem; + font-size: 1rem; +} + +.step-num { + display: inline-flex; + align-items: center; + justify-content: center; + width: 2rem; + height: 2rem; + border-radius: 50%; + background: #2563eb; + color: #fff; + font-weight: 700; + font-size: 0.9rem; + flex-shrink: 0; +} + +/* ===== Tool cards ===== */ +.cards { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); + gap: 1.5rem; +} + +.card { + background: #fff; + border-radius: 12px; + box-shadow: 0 2px 12px rgba(0,0,0,0.07); + display: flex; + flex-direction: column; + overflow: hidden; + transition: box-shadow 0.2s; +} + +.card:hover { + box-shadow: 0 6px 24px rgba(0,0,0,0.13); +} + +.card-header { + padding: 1.1rem 1.25rem 0.9rem; + display: flex; + align-items: center; + justify-content: space-between; + color: #fff; +} + +.card-header h3 { + font-size: 1.2rem; + font-weight: 700; +} + +.card-header.rocketship { background: #0f2a5c; } +.card-header.aifartist { background: #1a5276; } +.card-header.parametric { background: #154360; } + +.badge { + font-size: 0.7rem; + font-weight: 600; + padding: 0.2rem 0.55rem; + border-radius: 999px; + text-transform: uppercase; + letter-spacing: 0.05em; +} + +.badge.matlab { background: #e74c3c; color: #fff; } +.badge.python { background: #f39c12; color: #fff; } + +.card-desc { + padding: 1rem 1.25rem 0.5rem; + font-size: 0.92rem; + flex: 1; +} + +.card-highlights { + padding: 0.25rem 1.25rem 0.75rem 2.5rem; + font-size: 0.85rem; + color: #4a5568; + display: flex; + flex-direction: column; + gap: 0.3rem; +} + +.card-highlights code { + font-size: 0.8rem; + background: #eef2f7; + border-radius: 4px; + padding: 0.05em 0.3em; +} + +.card-links { + padding: 0.75rem 1.25rem 1.1rem; + display: flex; + flex-wrap: wrap; + gap: 0.5rem; + border-top: 1px solid #eef2f7; +} + +/* ===== Buttons ===== */ +.btn { + display: inline-block; + padding: 0.4rem 0.9rem; + border-radius: 6px; + font-size: 0.85rem; + font-weight: 600; + transition: background 0.15s, color 0.15s; + text-decoration: none; +} + +.btn.primary { + background: #2563eb; + color: #fff; +} + +.btn.primary:hover { + background: #1d4ed8; + text-decoration: none; +} + +.btn.secondary { + background: #eef2f7; + color: #1a1a2e; +} + +.btn.secondary:hover { + background: #dbe4f0; + text-decoration: none; +} + +/* ===== Comparison table ===== */ +.table-wrap { + overflow-x: auto; +} + +table { + width: 100%; + border-collapse: collapse; + font-size: 0.95rem; + background: #fff; + border-radius: 10px; + overflow: hidden; + box-shadow: 0 2px 10px rgba(0,0,0,0.06); +} + +thead { + background: #0f2a5c; + color: #fff; +} + +th, td { + padding: 0.75rem 1.1rem; + text-align: left; +} + +tbody tr:nth-child(even) { + background: #f3f6fb; +} + +tbody tr:hover { + background: #e8eef8; +} + +/* ===== Quick start ===== */ +.qs-grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); + gap: 1.25rem; +} + +.qs-block { + background: #fff; + border-radius: 10px; + overflow: hidden; + box-shadow: 0 2px 10px rgba(0,0,0,0.06); +} + +.qs-block h3 { + background: #0f2a5c; + color: #fff; + padding: 0.65rem 1rem; + font-size: 1rem; +} + +.qs-block pre { + margin: 0; + padding: 1rem; + overflow-x: auto; + font-size: 0.82rem; + background: #1e1e2e; + color: #cdd6f4; + line-height: 1.6; +} + +.qs-block code { + font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace; +} + +/* ===== Contact ===== */ +.contact p { + margin-bottom: 0.75rem; + font-size: 1rem; +} + +/* ===== Footer ===== */ +footer { + text-align: center; + padding: 1.5rem; + font-size: 0.85rem; + color: #6b7280; + border-top: 1px solid #e5e7eb; + margin-top: 2rem; +} + +footer a { + color: #6b7280; +} + +footer a:hover { + color: #2563eb; +} + +/* ===== Responsive ===== */ +@media (max-width: 600px) { + .cards { + grid-template-columns: 1fr; + } + + .qs-grid { + grid-template-columns: 1fr; + } + + .steps li { + font-size: 0.95rem; + } +} From c2ffd3dfb6bf46ee4eee2510dc8b9798946f9359 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 10 Jun 2026 16:43:56 +0000 Subject: [PATCH 3/8] Add GitHub Actions workflow for PR preview deployments --- .github/workflows/pr-preview.yml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 .github/workflows/pr-preview.yml diff --git a/.github/workflows/pr-preview.yml b/.github/workflows/pr-preview.yml new file mode 100644 index 0000000..9cbfcd7 --- /dev/null +++ b/.github/workflows/pr-preview.yml @@ -0,0 +1,22 @@ +name: PR Preview + +on: + pull_request: + types: [opened, synchronize, reopened, closed] + +permissions: + contents: write + pull-requests: write + +jobs: + preview: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: rossjrw/pr-preview-action@v1.8.1 + with: + source-dir: . + preview-branch: gh-pages + umbrella-dir: pr-preview + action: auto From bcb190052fd959716c103dbdaec00242c5343dec Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 10 Jun 2026 23:35:41 +0000 Subject: [PATCH 4/8] Add AutoAIF and gpufit; expand DCEASY acronym --- index.html | 87 +++++++++++++++++++++++++++++++++++++++++++++++++----- styles.css | 3 ++ 2 files changed, 83 insertions(+), 7 deletions(-) diff --git a/index.html b/index.html index 289db64..fe4c527 100644 --- a/index.html +++ b/index.html @@ -3,7 +3,7 @@ - DCEASY — DCE-MRI Software Suite + DCEASY — Dynamic Contrast-Enhanced Analysis SYstem @@ -11,7 +11,7 @@

DCEASY

-

Open-source tools for Dynamic Contrast-Enhanced MRI processing & analysis

+

Dynamic Contrast-Enhanced Analysis SYstem — open-source tools for DCE-MRI processing & analysis

@@ -19,10 +19,10 @@

DCEASY

- DCEASY is a collection of open-source software maintained by the + DCEASY (Dynamic Contrast-Enhanced Analysis SYstem) is a collection of open-source software maintained by the PET/MRI Lab for end-to-end Dynamic Contrast-Enhanced (DCE) MRI workflows — - from parametric mapping and pharmacokinetic modelling to arterial input function (AIF) curation. + from parametric mapping and pharmacokinetic modelling to arterial input function (AIF) detection. Choose the tool that fits your step in the pipeline below.

@@ -32,8 +32,8 @@

Processing pipeline overview

  1. 1 Acquire DCE-MRI data
  2. 2 Generate T1 / T2 / ADC maps → parametric_scripts
  3. -
  4. 3 Annotate or fit the arterial input function → AIFArtist / ROCKETSHIP
  5. -
  6. 4 Fit pharmacokinetic models (Ktrans, ve, vp …) → ROCKETSHIP
  7. +
  8. 3 Automatically detect or manually annotate the AIF → AutoAIF (preferred) / AIFArtist / ROCKETSHIP
  9. +
  10. 4 Fit pharmacokinetic models (Ktrans, ve, vp …) → ROCKETSHIP + gpufit
  11. 5 Analyse & compare parametric maps → ROCKETSHIP
@@ -70,6 +70,32 @@

ROCKETSHIP

+ +
+
+

AutoAIF

+ Python +
+

+ Preferred for AIF detection. A 3D U-Net deep-learning model (Keras/TensorFlow) + that automatically detects the arterial input function in brain DCE-MRI. + Pretrained weights are provided; the model handles multi-site data by + resampling inputs to a canonical resolution and outputs a vascular + function curve together with a 3D vascular mask. +

+ + +
+
@@ -118,6 +144,31 @@

parametric_scripts

+ +
+
+

gpufit

+ CUDA / C++ +
+

+ A GPU-accelerated Levenberg–Marquardt curve-fitting library with + Python and MATLAB wrappers. This PET/MRI Lab fork adds MRI-specific + pharmacokinetic models and updated compiler/CUDA support. Used by + ROCKETSHIP for fast voxel-wise model fitting. +

+ + +
+ @@ -136,6 +187,10 @@

Which tool do I need?

Generate pre-contrast T1, T2, or ADC maps parametric_scripts + + Automatically detect the AIF (deep learning, preferred) + AutoAIF + Manually draw and save an AIF ROI (multi-rater, BIDS) AIFArtist @@ -144,6 +199,10 @@

Which tool do I need?

Fit an AIF to a bi-exponential model ROCKETSHIP (Module B) + + GPU-accelerated pharmacokinetic model fitting + gpufit + Pharmacokinetic model fitting (Ktrans, ve, vp) ROCKETSHIP (Module D) @@ -173,6 +232,20 @@

ROCKETSHIP

# In MATLAB, add ROCKETSHIP to the path, then: run_parametric % Step 1 — T1 maps run_dce % Step 2 — DCE fitting + +
+

AutoAIF

+
# Clone and set up environment
+git clone https://github.com/petmri/vascular_function.git
+cd vascular_function
+python3 -m venv tf && source tf/bin/activate
+pip install -r requirements.txt
+
+# Run inference with pretrained weights
+python main_vif.py --mode inference \
+  --input_path /path/to/dce.nii.gz \
+  --model_weight_path /path/to/weight.h5 \
+  --save_output_path /path/to/output/

AIFArtist

@@ -202,7 +275,7 @@

Contact & contributing

diff --git a/styles.css b/styles.css index 906b2ef..3bcf6ed 100644 --- a/styles.css +++ b/styles.css @@ -145,7 +145,9 @@ section h2 { .card-header.rocketship { background: #0f2a5c; } .card-header.aifartist { background: #1a5276; } +.card-header.autoaif { background: #0e6655; } .card-header.parametric { background: #154360; } +.card-header.gpufit { background: #4a235a; } .badge { font-size: 0.7rem; @@ -158,6 +160,7 @@ section h2 { .badge.matlab { background: #e74c3c; color: #fff; } .badge.python { background: #f39c12; color: #fff; } +.badge.cuda { background: #76b900; color: #fff; } .card-desc { padding: 1rem 1.25rem 0.5rem; From dccc55b4328d34313b7e3c7b485b1cedea41e025 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 10 Jun 2026 23:57:31 +0000 Subject: [PATCH 5/8] Apply dark Midnight-inspired theme to styles.css --- styles.css | 98 +++++++++++++++++++++++++++++++----------------------- 1 file changed, 56 insertions(+), 42 deletions(-) diff --git a/styles.css b/styles.css index 3bcf6ed..0e9a824 100644 --- a/styles.css +++ b/styles.css @@ -12,13 +12,13 @@ html { body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; - color: #1a1a2e; - background: #f7f8fc; + color: #c0c0c0; + background: #151515; line-height: 1.65; } a { - color: #2563eb; + color: #63c0f5; text-decoration: none; } @@ -28,10 +28,11 @@ a:hover { /* ===== Header ===== */ header { - background: linear-gradient(135deg, #0f2a5c 0%, #1e4d9b 60%, #2563eb 100%); + background: linear-gradient(135deg, #090d14 0%, #0d1f3c 60%, #162d55 100%); color: #fff; padding: 3rem 1.5rem 2.5rem; text-align: center; + border-bottom: 2px solid #252525; } .header-inner { @@ -44,11 +45,12 @@ header h1 { font-weight: 800; letter-spacing: -0.02em; margin-bottom: 0.5rem; + color: #fff; } .tagline { font-size: clamp(1rem, 2.5vw, 1.25rem); - opacity: 0.88; + opacity: 0.80; max-width: 600px; margin: 0 auto; } @@ -67,9 +69,10 @@ section { section h2 { font-size: 1.5rem; font-weight: 700; + color: #e8e8e8; margin-bottom: 1rem; padding-bottom: 0.4rem; - border-bottom: 3px solid #2563eb; + border-bottom: 3px solid #63c0f5; display: inline-block; } @@ -102,8 +105,8 @@ section h2 { width: 2rem; height: 2rem; border-radius: 50%; - background: #2563eb; - color: #fff; + background: #63c0f5; + color: #151515; font-weight: 700; font-size: 0.9rem; flex-shrink: 0; @@ -117,17 +120,19 @@ section h2 { } .card { - background: #fff; + background: #1e1e1e; border-radius: 12px; - box-shadow: 0 2px 12px rgba(0,0,0,0.07); + border: 1px solid #2a2a2a; + box-shadow: 0 2px 12px rgba(0,0,0,0.4); display: flex; flex-direction: column; overflow: hidden; - transition: box-shadow 0.2s; + transition: box-shadow 0.2s, border-color 0.2s; } .card:hover { - box-shadow: 0 6px 24px rgba(0,0,0,0.13); + box-shadow: 0 6px 24px rgba(0,0,0,0.6); + border-color: #63c0f5; } .card-header { @@ -143,11 +148,11 @@ section h2 { font-weight: 700; } -.card-header.rocketship { background: #0f2a5c; } -.card-header.aifartist { background: #1a5276; } -.card-header.autoaif { background: #0e6655; } -.card-header.parametric { background: #154360; } -.card-header.gpufit { background: #4a235a; } +.card-header.rocketship { background: #0d1f3c; } +.card-header.aifartist { background: #0d2233; } +.card-header.autoaif { background: #0a2318; } +.card-header.parametric { background: #0e1b2e; } +.card-header.gpufit { background: #1c0d2e; } .badge { font-size: 0.7rem; @@ -158,20 +163,21 @@ section h2 { letter-spacing: 0.05em; } -.badge.matlab { background: #e74c3c; color: #fff; } -.badge.python { background: #f39c12; color: #fff; } -.badge.cuda { background: #76b900; color: #fff; } +.badge.matlab { background: #c0392b; color: #fff; } +.badge.python { background: #b7770d; color: #fff; } +.badge.cuda { background: #4a7c00; color: #fff; } .card-desc { padding: 1rem 1.25rem 0.5rem; font-size: 0.92rem; flex: 1; + color: #b8b8b8; } .card-highlights { padding: 0.25rem 1.25rem 0.75rem 2.5rem; font-size: 0.85rem; - color: #4a5568; + color: #888; display: flex; flex-direction: column; gap: 0.3rem; @@ -179,9 +185,10 @@ section h2 { .card-highlights code { font-size: 0.8rem; - background: #eef2f7; + background: #2a2a2a; border-radius: 4px; padding: 0.05em 0.3em; + color: #63c0f5; } .card-links { @@ -189,7 +196,7 @@ section h2 { display: flex; flex-wrap: wrap; gap: 0.5rem; - border-top: 1px solid #eef2f7; + border-top: 1px solid #2a2a2a; } /* ===== Buttons ===== */ @@ -204,22 +211,22 @@ section h2 { } .btn.primary { - background: #2563eb; - color: #fff; + background: #63c0f5; + color: #111; } .btn.primary:hover { - background: #1d4ed8; + background: #89d0f8; text-decoration: none; } .btn.secondary { - background: #eef2f7; - color: #1a1a2e; + background: #2a2a2a; + color: #c0c0c0; } .btn.secondary:hover { - background: #dbe4f0; + background: #363636; text-decoration: none; } @@ -232,14 +239,14 @@ table { width: 100%; border-collapse: collapse; font-size: 0.95rem; - background: #fff; + background: #1e1e1e; border-radius: 10px; overflow: hidden; - box-shadow: 0 2px 10px rgba(0,0,0,0.06); + box-shadow: 0 2px 10px rgba(0,0,0,0.4); } thead { - background: #0f2a5c; + background: #0d1f3c; color: #fff; } @@ -248,12 +255,17 @@ th, td { text-align: left; } +td { + color: #b8b8b8; + border-bottom: 1px solid #2a2a2a; +} + tbody tr:nth-child(even) { - background: #f3f6fb; + background: #242424; } tbody tr:hover { - background: #e8eef8; + background: #2c2c2c; } /* ===== Quick start ===== */ @@ -264,14 +276,15 @@ tbody tr:hover { } .qs-block { - background: #fff; + background: #1e1e1e; border-radius: 10px; overflow: hidden; - box-shadow: 0 2px 10px rgba(0,0,0,0.06); + border: 1px solid #2a2a2a; + box-shadow: 0 2px 10px rgba(0,0,0,0.4); } .qs-block h3 { - background: #0f2a5c; + background: #0d1f3c; color: #fff; padding: 0.65rem 1rem; font-size: 1rem; @@ -282,7 +295,7 @@ tbody tr:hover { padding: 1rem; overflow-x: auto; font-size: 0.82rem; - background: #1e1e2e; + background: #111111; color: #cdd6f4; line-height: 1.6; } @@ -302,17 +315,17 @@ footer { text-align: center; padding: 1.5rem; font-size: 0.85rem; - color: #6b7280; - border-top: 1px solid #e5e7eb; + color: #555; + border-top: 1px solid #252525; margin-top: 2rem; } footer a { - color: #6b7280; + color: #555; } footer a:hover { - color: #2563eb; + color: #63c0f5; } /* ===== Responsive ===== */ @@ -329,3 +342,4 @@ footer a:hover { font-size: 0.95rem; } } + From 4461f5a939eb73eba2600785c84edc50048f033a Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 15 Jun 2026 19:55:19 +0000 Subject: [PATCH 6/8] Add DCEPrep to DCEASY site --- index.html | 37 ++++++++++++++++++++++++++++++++++++- styles.css | 2 ++ 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/index.html b/index.html index fe4c527..70ea77e 100644 --- a/index.html +++ b/index.html @@ -31,7 +31,7 @@

DCEASY

Processing pipeline overview

  1. 1 Acquire DCE-MRI data
  2. -
  3. 2 Generate T1 / T2 / ADC maps → parametric_scripts
  4. +
  5. 2 Preprocess & generate T1 / T2 / ADC maps → DCEPrep (end-to-end) / parametric_scripts (standalone)
  6. 3 Automatically detect or manually annotate the AIF → AutoAIF (preferred) / AIFArtist / ROCKETSHIP
  7. 4 Fit pharmacokinetic models (Ktrans, ve, vp …) → ROCKETSHIP + gpufit
  8. 5 Analyse & compare parametric maps → ROCKETSHIP
  9. @@ -169,6 +169,33 @@

    gpufit

+ +
+
+

DCEPrep

+ Shell / Python +
+

+ An end-to-end preprocessing and analysis pipeline for brain DCE-MRI. + Wraps FSL, ANTs, FreeSurfer, ROCKETSHIP, and AutoAIF into a single + configurable shell script. Handles VFA-based T1 mapping, bias field + correction, z-axis normalisation, head motion correction, AIF + selection, Ktrans fitting, and automated QC reporting. A Docker + image is provided for a consistent, reproducible environment. +

+ + +
+ @@ -187,6 +214,10 @@

Which tool do I need?

Generate pre-contrast T1, T2, or ADC maps parametric_scripts + + Full preprocessing pipeline (T1 map, motion correction, AIF, Ktrans) + DCEPrep + Automatically detect the AIF (deep learning, preferred) AutoAIF @@ -211,6 +242,10 @@

Which tool do I need?

End-to-end DCE pipeline with GUI ROCKETSHIP + + Dockerized end-to-end DCE-MRI preprocessing & analysis + DCEPrep + Visualise and compare parametric maps ROCKETSHIP (Module E) diff --git a/styles.css b/styles.css index 0e9a824..2790ef7 100644 --- a/styles.css +++ b/styles.css @@ -153,6 +153,7 @@ section h2 { .card-header.autoaif { background: #0a2318; } .card-header.parametric { background: #0e1b2e; } .card-header.gpufit { background: #1c0d2e; } +.card-header.dceprep { background: #0e2b2b; } .badge { font-size: 0.7rem; @@ -166,6 +167,7 @@ section h2 { .badge.matlab { background: #c0392b; color: #fff; } .badge.python { background: #b7770d; color: #fff; } .badge.cuda { background: #4a7c00; color: #fff; } +.badge.shell { background: #2c6e49; color: #fff; } .card-desc { padding: 1rem 1.25rem 0.5rem; From 5c240a395021df86545410de39d8e33cd8bb235f Mon Sep 17 00:00:00 2001 From: Sam Barnes Date: Fri, 26 Jun 2026 12:31:00 -0700 Subject: [PATCH 7/8] Fix stale repo links and refine pipeline overview - Update vascular_function references to AutoAIF (repo renamed) - Match gpufit URLs to the Gpufit repo name - DCEPrep/parametric_scripts step wording (user edit) Co-Authored-By: Claude Opus 4.8 (1M context) --- index.html | 48 ++++++++++++++++++++---------------------------- 1 file changed, 20 insertions(+), 28 deletions(-) diff --git a/index.html b/index.html index 70ea77e..7fd5703 100644 --- a/index.html +++ b/index.html @@ -28,12 +28,12 @@

DCEASY

-

Processing pipeline overview

+

DCE Processing pipeline overview

  1. 1 Acquire DCE-MRI data
  2. -
  3. 2 Preprocess & generate T1 / T2 / ADC maps → DCEPrep (end-to-end) / parametric_scripts (standalone)
  4. -
  5. 3 Automatically detect or manually annotate the AIF → AutoAIF (preferred) / AIFArtist / ROCKETSHIP
  6. -
  7. 4 Fit pharmacokinetic models (Ktrans, ve, vp …) → ROCKETSHIP + gpufit
  8. +
  9. 2 Preprocess & generate T1 maps → DCEPrep (end-to-end) / parametric_scripts (T1 maps only)
  10. +
  11. 3 Extract an AIF → AutoAIF (automatic) / AIFArtist (manual)
  12. +
  13. 4 Fit pharmacokinetic models (Ktrans, ve, vp …) → DCEPrep (end-to-end) / ROCKETSHIP + gpufit (standalone)
  14. 5 Analyse & compare parametric maps → ROCKETSHIP
@@ -91,7 +91,7 @@

AutoAIF

  • Published in Magnetic Resonance in Medicine (2025)
  • @@ -164,7 +164,7 @@

    gpufit

  • Based on Przybylski et al., Scientific Reports (2017)
  • @@ -211,43 +211,35 @@

    Which tool do I need?

    - Generate pre-contrast T1, T2, or ADC maps - parametric_scripts - - - Full preprocessing pipeline (T1 map, motion correction, AIF, Ktrans) + Full automated processing pipeline of BIDS DCE data (motion correction, alignment, artifact correction, create T1 maps, AIF detection, Ktrans generation) DCEPrep - Automatically detect the AIF (deep learning, preferred) - AutoAIF - - - Manually draw and save an AIF ROI (multi-rater, BIDS) - AIFArtist + Generate T1, T2, or ADC maps + parametric_scripts - Fit an AIF to a bi-exponential model - ROCKETSHIP (Module B) + AIF identification, automatically with deep learning (preferred) + AutoAIF - GPU-accelerated pharmacokinetic model fitting - gpufit + AIF identification, manually draw and save an AIF ROI (multi-rater) + AIFArtist - Pharmacokinetic model fitting (Ktrans, ve, vp) - ROCKETSHIP (Module D) + Scripted low level fast pharmacokinetic model fitting (useful to accelerate other DCE processing pipelines) + gpufit - End-to-end DCE pipeline with GUI + DCE processing with GUI ROCKETSHIP - Dockerized end-to-end DCE-MRI preprocessing & analysis + DCE-MRI preprocessing of BIDS DCE data (motion correction, alignment, artifact correction) DCEPrep - Visualise and compare parametric maps + Visualise and compare fit quality and parametric maps ROCKETSHIP (Module E) @@ -271,8 +263,8 @@

    ROCKETSHIP

    AutoAIF

    # Clone and set up environment
    -git clone https://github.com/petmri/vascular_function.git
    -cd vascular_function
    +git clone https://github.com/petmri/AutoAIF.git
    +cd AutoAIF
     python3 -m venv tf && source tf/bin/activate
     pip install -r requirements.txt
     
    
    From 525f05785430b61002af331c69750c5333de1025 Mon Sep 17 00:00:00 2001
    From: Sam Barnes 
    Date: Fri, 26 Jun 2026 12:58:03 -0700
    Subject: [PATCH 8/8] Polish site content and wording
    
    - US spelling throughout (modeling, normalization, analyze, visualize)
    - Add meta description for SEO/social previews
    - Trim repeated DCEASY acronym in intro
    - Drop stale GitHub star count from ROCKETSHIP card
    - Unify Gpufit casing across page
    - Add git clone step to AIFArtist quick start
    
    Co-Authored-By: Claude Opus 4.8 (1M context) 
    ---
     index.html | 65 +++++++++++++++++++++++++++++++++---------------------
     styles.css | 41 ++++++++++++++++++++++++++++++++++
     2 files changed, 81 insertions(+), 25 deletions(-)
    
    diff --git a/index.html b/index.html
    index 7fd5703..1f0a180 100644
    --- a/index.html
    +++ b/index.html
    @@ -3,6 +3,7 @@
     
       
       
    +  
       DCEASY — Dynamic Contrast-Enhanced Analysis SYstem
       
     
    @@ -10,8 +11,10 @@
     
       
    -

    DCEASY

    -

    Dynamic Contrast-Enhanced Analysis SYstem — open-source tools for DCE-MRI processing & analysis

    +

    DCE Processing Tools

    +

    DCEASY

    +

    (Dynamic Contrast-Enhanced + Analysis SYstem)

    @@ -19,22 +22,32 @@

    DCEASY

    - DCEASY (Dynamic Contrast-Enhanced Analysis SYstem) is a collection of open-source software maintained by the + DCEASY is a collection of open-source software maintained by the PET/MRI Lab for end-to-end Dynamic Contrast-Enhanced (DCE) MRI workflows — - from parametric mapping and pharmacokinetic modelling to arterial input function (AIF) detection. + from parametric mapping and pharmacokinetic modeling to arterial input function (AIF) detection. Choose the tool that fits your step in the pipeline below.

    -

    DCE Processing pipeline overview

    +

    DCE Processing Overview

    + +

    Run the whole pipeline at once

    +
    +
    + DCEPrep + Automated & Dockerized — preprocessing through quality control and analysis (steps 1–5) +
    +
    + +

    …or run it step by step

      -
    1. 1 Acquire DCE-MRI data
    2. -
    3. 2 Preprocess & generate T1 maps → DCEPrep (end-to-end) / parametric_scripts (T1 maps only)
    4. -
    5. 3 Extract an AIF → AutoAIF (automatic) / AIFArtist (manual)
    6. -
    7. 4 Fit pharmacokinetic models (Ktrans, ve, vp …) → DCEPrep (end-to-end) / ROCKETSHIP + gpufit (standalone)
    8. -
    9. 5 Analyse & compare parametric maps → ROCKETSHIP
    10. +
    11. 1 Preprocessing → standard MRI tools (FSL, ANTs, etc.)
    12. +
    13. 2 Generate T1 maps → parametric_scripts
    14. +
    15. 3 Extract an AIF → AutoAIF (automatic) / AIFArtist (manual)
    16. +
    17. 4 Signal intensity to concentration, fit pharmacokinetic models (Ktrans, ve, vp …) → ROCKETSHIP + Gpufit
    18. +
    19. 5 Analyze & compare parametric maps → ROCKETSHIP
    @@ -53,7 +66,7 @@

    ROCKETSHIP

    A flexible, GUI-driven suite for full DCE-MRI analysis. Covers pre-contrast T1 mapping, AIF selection and fitting, multi-model pharmacokinetic curve fitting (Tofts, Extended Tofts, Patlak, Two-Compartment Exchange, FXR, …), - and results visualisation. Supports NIFTI and DICOM inputs and optional + and results visualization. Supports NIFTI and DICOM inputs and optional GPU acceleration.

      @@ -61,7 +74,7 @@

      ROCKETSHIP

    • GUI-based workflow — no scripting required
    • Batch processing via parallel computing toolbox
    • Optional GPU acceleration (Gpufit)
    • -
    • 52 ★ on GitHub · cited in BMC Medical Imaging
    • +
    • Cited in BMC Medical Imaging

    AIFArtist

    -
    # Install dependencies
    +          
    # Clone and install dependencies
    +git clone https://github.com/petmri/AIFArtist.git
    +cd AIFArtist
     pip install -r requirements.txt
     
     # Launch the annotation app
    diff --git a/styles.css b/styles.css
    index 2790ef7..e210362 100644
    --- a/styles.css
    +++ b/styles.css
    @@ -82,6 +82,47 @@ section h2 {
       max-width: 780px;
     }
     
    +/* ===== Pipeline: two paths ===== */
    +.path-label {
    +  font-size: 0.8rem;
    +  font-weight: 600;
    +  text-transform: uppercase;
    +  letter-spacing: 0.07em;
    +  color: #63c0f5;
    +  margin: 1.75rem 0 0.85rem;
    +}
    +
    +.path-label:first-of-type {
    +  margin-top: 0.5rem;
    +}
    +
    +.end-to-end {
    +  display: grid;
    +  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    +  gap: 1rem;
    +}
    +
    +.e2e-tool {
    +  background: #1e1e1e;
    +  border: 1px solid #2a2a2a;
    +  border-left: 3px solid #63c0f5;
    +  border-radius: 8px;
    +  padding: 0.85rem 1.1rem;
    +  display: flex;
    +  flex-direction: column;
    +  gap: 0.3rem;
    +}
    +
    +.e2e-tool strong {
    +  color: #e8e8e8;
    +  font-size: 1.05rem;
    +}
    +
    +.e2e-tool span {
    +  font-size: 0.88rem;
    +  color: #999;
    +}
    +
     /* ===== Pipeline steps ===== */
     .steps {
       list-style: none;