Skip to content

Commit 89d8070

Browse files
tkapurclaude
andcommitted
Add image overrides and local image support to projects list
- Add IMAGE_OVERRIDES dict for manual image selection (projects 5, 9, 17, 32) - Support local repo images via raw GitHub URLs - Regenerate with latest project page updates Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent a9db53f commit 89d8070

2 files changed

Lines changed: 31 additions & 11 deletions

File tree

PW45_2026_Boston/gen_projects_list.py

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,19 @@
44
PROJECTS_DIR = "/Users/tkapur/repos/ProjectWeek/PW45_2026_Boston/Projects"
55
OUT_PATH = "/Users/tkapur/repos/ProjectWeek/PW45_2026_Boston/projects_list.md"
66
BASE_URL = "https://projectweek.na-mic.org/PW45_2026_Boston/Projects"
7+
RAW_BASE = "https://raw.githubusercontent.com/NA-MIC/ProjectWeek/master/PW45_2026_Boston/Projects"
8+
9+
# Manual image overrides: folder name → image URL to use instead of auto-selected
10+
IMAGE_OVERRIDES = {
11+
"CastInterfaceModuleFor3DSlicerServiceProvidersImageDisplayClientAndHub":
12+
"https://github.com/user-attachments/assets/7c8aefc0-d697-4813-9193-53fe08944c99",
13+
"FanMaskAndOcrBoundBoxEditingForOhifBasedDicomDeIdentificationVerificationMode":
14+
"https://github.com/user-attachments/assets/f4a099f4-5f71-40a3-a22f-f84ace253d0e",
15+
"Mr2CbctRestoringAndExtendingAutomatedCbctMriRegistrationForTmjAnalysis":
16+
"https://github.com/user-attachments/assets/f8aa1b2d-785f-422d-9fc3-d4350c1f5b37",
17+
"Vox2SeglamProtocolGuidedSubcorticalSegmentationIn3DSlicer":
18+
"https://github.com/user-attachments/assets/51fcdf47-e1a7-4318-ac84-38637db7b6bc",
19+
}
720

821

922
def extract_section(text, start_pattern, stop_patterns):
@@ -50,28 +63,33 @@ def get_images_from_section(text, start_pattern, stop_patterns):
5063
return results
5164

5265

53-
def pick_best_image(text):
66+
def resolve_img_url(url, folder):
67+
"""Convert a relative image path to a raw GitHub URL."""
68+
if url.startswith('http'):
69+
return url
70+
return f"{RAW_BASE}/{folder}/{url}"
71+
72+
73+
def pick_best_image(text, folder):
5474
"""Pick the best image: prefer Illustrations section, then largest width."""
5575
stop = [r'^# ', r'^## ']
5676

5777
# Try Illustrations section first
5878
illus = get_images_from_section(text, r'^# Illustrations', stop)
5979
if illus:
60-
# Pick the one with the largest declared width; fall back to first
6180
best = max(illus, key=lambda x: x[0])
62-
return best[1]
81+
return resolve_img_url(best[1], folder)
6382

6483
# Fall back to any image in the file
6584
all_imgs = get_images_from_section(text, r'^---\s*$', [r'^\Z'])
6685
if not all_imgs:
67-
# Try whole file
6886
results = []
6987
for tag in re.finditer(r'<img\b[^>]+>', text):
7088
url_m = re.search(r'src="(https://[^"]+)"', tag.group())
7189
if url_m and not re.search(r'youtube|youtu\.be', url_m.group(1), re.I):
7290
w_m = re.search(r'width="([0-9]+)"', tag.group())
7391
results.append((int(w_m.group(1)) if w_m else 0, url_m.group(1)))
74-
for m2 in re.finditer(r'!\[[^\]]*\]\((https://[^)]+)\)', text):
92+
for m2 in re.finditer(r'!\[[^\]]*\]\(([^)]+)\)', text):
7593
url = m2.group(1)
7694
if not re.search(r'youtube|youtu\.be', url, re.I):
7795
results.append((0, url))
@@ -80,7 +98,7 @@ def pick_best_image(text):
8098
if not all_imgs:
8199
return None
82100
best = max(all_imgs, key=lambda x: x[0])
83-
return best[1]
101+
return resolve_img_url(best[1], folder)
84102

85103

86104
projects = []
@@ -126,7 +144,7 @@ def pick_best_image(text):
126144
break
127145

128146
proj_url = f"{BASE_URL}/{name}/"
129-
img_url = pick_best_image(text)
147+
img_url = IMAGE_OVERRIDES.get(name) or pick_best_image(text, name)
130148

131149
desc = extract_section(text, r'^# Project Description', [r'^## ', r'^# '])
132150
# Convert any numbered list items in description to bullets so they

PW45_2026_Boston/projects_list.md

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ The goal of this project is to further increase availability of anatomic segment
3636

3737
5. **[Cast interface extension for Slim and 3D Slicer: Hub, Resource Servers and Image Display client.](https://projectweek.na-mic.org/PW45_2026_Boston/Projects/CastInterfaceModuleFor3DSlicerServiceProvidersImageDisplayClientAndHub/)** (Martin Bellehumeur @ Radical Imaging, +) ([mbellehumeur/SlicerCastInterface](https://github.com/mbellehumeur/SlicerCastInterface))
3838

39-
<a href="https://projectweek.na-mic.org/PW45_2026_Boston/Projects/CastInterfaceModuleFor3DSlicerServiceProvidersImageDisplayClientAndHub/"><img src="https://github.com/user-attachments/assets/76dbe891-9ef5-49c9-839c-827d4a13cc88" style="max-width:480px;width:100%"></a>
39+
<a href="https://projectweek.na-mic.org/PW45_2026_Boston/Projects/CastInterfaceModuleFor3DSlicerServiceProvidersImageDisplayClientAndHub/"><img src="https://github.com/user-attachments/assets/7c8aefc0-d697-4813-9193-53fe08944c99" style="max-width:480px;width:100%"></a>
4040

4141
Try the new “Cast Interface” 3D slicer extension to integrate different AI engines with VolView and OHIF without a DICOM server.
4242

@@ -74,7 +74,7 @@ This project focuses on using existing foundational deep learning models in 3D S
7474

7575
9. **[Fan mask and OCR bound box editing for OHIF-based DICOM De-Identification verification](https://projectweek.na-mic.org/PW45_2026_Boston/Projects/FanMaskAndOcrBoundBoxEditingForOhifBasedDicomDeIdentificationVerificationMode/)** (Dave Dinh @ BWH, +) (no github repo yet)
7676

77-
<a href="https://projectweek.na-mic.org/PW45_2026_Boston/Projects/FanMaskAndOcrBoundBoxEditingForOhifBasedDicomDeIdentificationVerificationMode/"><img src="https://github.com/user-attachments/assets/b95e956f-f422-494c-8c52-91b3d1fbd174" style="max-width:480px;width:100%"></a>
77+
<a href="https://projectweek.na-mic.org/PW45_2026_Boston/Projects/FanMaskAndOcrBoundBoxEditingForOhifBasedDicomDeIdentificationVerificationMode/"><img src="https://github.com/user-attachments/assets/f4a099f4-5f71-40a3-a22f-f84ace253d0e" style="max-width:480px;width:100%"></a>
7878

7979
Optimal DICOM de-identification for downstream research requires balancing removal and retention. We must scrub embedded PHI in both tags and pixels while preserving valuable non-PHI metadata (e.g., scan settings like depth). Even with both addressed, human review is still needed to catch misses.
8080

@@ -144,7 +144,7 @@ During Project Week, we aim to develop and evaluate a more reliable and integrat
144144

145145
17. **[MR2CBCT: Restoring and Extending Automated CBCT-MRI Registration for TMJ Analysis](https://projectweek.na-mic.org/PW45_2026_Boston/Projects/Mr2CbctRestoringAndExtendingAutomatedCbctMriRegistrationForTmjAnalysis/)** (Eduardo Duarte Caleme @ University of North Carolina, +) (no github repo yet)
146146

147-
<a href="https://projectweek.na-mic.org/PW45_2026_Boston/Projects/Mr2CbctRestoringAndExtendingAutomatedCbctMriRegistrationForTmjAnalysis/"><img src="https://github.com/user-attachments/assets/6ff6b1e8-a796-4fd8-8bec-5be64b6bd389" style="max-width:480px;width:100%"></a>
147+
<a href="https://projectweek.na-mic.org/PW45_2026_Boston/Projects/Mr2CbctRestoringAndExtendingAutomatedCbctMriRegistrationForTmjAnalysis/"><img src="https://github.com/user-attachments/assets/f8aa1b2d-785f-422d-9fc3-d4350c1f5b37" style="max-width:480px;width:100%"></a>
148148

149149
MRI-to-CBCT registration remains a pressing challenge in medical imaging. Simultaneous visualization of hard and soft tissue structures benefits both clinicians and patients in the diagnosis of temporomandibular degenerative joint disease. Challenges remain in accurately registering these two modalities due to differences in intensity distributions that complicate mutual information optimization, as well as the necessity for initial manual alignment, which can prove unintuitive and challenging for clinicians using current 3D Slicer tools.
150150

@@ -214,6 +214,8 @@ IDC already offers a customized agent skill in [https://github.com/ImagingDataCo
214214

215215
25. **[Robust Segmentation Experience in OHIF Viewer](https://projectweek.na-mic.org/PW45_2026_Boston/Projects/RobustSegmentationExperienceInOHIFViewer/)** (Jaeyoung Cho @ University Hospital Bonn, +) ([CCI-Bonn/OHIF-AI](https://github.com/CCI-Bonn/OHIF-AI))
216216

217+
<a href="https://projectweek.na-mic.org/PW45_2026_Boston/Projects/RobustSegmentationExperienceInOHIFViewer/"><img src="https://raw.githubusercontent.com/NA-MIC/ProjectWeek/master/PW45_2026_Boston/Projects/RobustSegmentationExperienceInOHIFViewer/ohif-segmentation-stats-mpr.png" style="max-width:480px;width:100%"></a>
218+
217219
OHIF Viewer is a widely used web-based medical image viewer built on Cornerstone3D. Segmentation is central to many clinical and research workflows, yet reliability and robustness in OHIF/Cornerstone still lag behind user expectations — with recurring errors and edge cases in everyday use ([OHIF/Viewers#5453](https://github.com/OHIF/Viewers/issues/5453)).
218220

219221
During Project Week 45, I would like to focus on improving the stability and user experience of segmentation in OHIF/Cornerstone. This builds on ongoing work in [OHIF-AI](https://github.com/CCI-Bonn/OHIF-AI) — an OHIF-based viewer with server-side AI integration (SAM2, nnInteractive, MedSAM2, and related tools) at University Hospital Bonn — where segmentation workflows are central to day-to-day use. I am looking forward to collaborating with others interested in segmentation, digital pathology, and web-based imaging viewers.
@@ -307,7 +309,7 @@ The work in progress in [SlicerWGPU](https://github.com/pieper/SlicerWGPU), whic
307309

308310
32. **[Vox2SegLAM: Protocol-Guided Subcortical Segmentation in 3D Slicer](https://projectweek.na-mic.org/PW45_2026_Boston/Projects/Vox2SeglamProtocolGuidedSubcorticalSegmentationIn3DSlicer/)** (Ahmed Rekik @ École de technologie supérieure, +) (no github repo yet)
309311

310-
<a href="https://projectweek.na-mic.org/PW45_2026_Boston/Projects/Vox2SeglamProtocolGuidedSubcorticalSegmentationIn3DSlicer/"><img src="https://github.com/user-attachments/assets/d4ad19a7-6048-4d48-aa48-f893331e8d80" style="max-width:480px;width:100%"></a>
312+
<a href="https://projectweek.na-mic.org/PW45_2026_Boston/Projects/Vox2SeglamProtocolGuidedSubcorticalSegmentationIn3DSlicer/"><img src="https://github.com/user-attachments/assets/51fcdf47-e1a7-4318-ac84-38637db7b6bc" style="max-width:480px;width:100%"></a>
311313

312314
3D SlicerVox2SegLAM is an extension that brings an AI-assisted, protocol-guided workflow to subcortical brain segmentation and landmarking. A joint CNN+GNN model predicts 26 subcortical structures and 20 anatomical landmarks directly from a T1 MRI, following the Harvard-Oxford Atlas (HOA 2.0) neuroanatomical protocol.
313315

0 commit comments

Comments
 (0)