Running log of what was built, found and decided. The plan and status live in PLAN.md.
The previous CNN pipeline's log is in git history (commit eb3b89b).
Pivot: from per-organ 3D CNNs to heart radiomics + DeepSurv, with lung-cancer incidence as the outcome (user decision: exploratory, novel, a null result is acceptable).
Facts established while checking feasibility:
- Manifest (
experiments/lcrisk_discovery/data/manifest.csv): 26,254 baseline scans, 1,061 lung-cancer events.timeis in days (median 2,424, max 2,983, so about 8 years of follow-up). - Enriched cohort ∩ manifest: 6,373 pids with all 1,061 events. Split event counts: train 742/2,226, val 159/2,067, test 160/2,080. The heavy imbalance between train and val/test is by construction (mentor's enrichment), so calibration on this cohort is biased.
- Kernels are heterogeneous: STANDARD 13,738, B30f 7,219, C 2,184, FC51 1,118, B50f 822, FC10 419, B 320, BONE 319 (full manifest). This is a major radiomics confounder and has to be handled in R3.
ct_1x1x2mmandtotalseg_fullresseg share the same grid (checked for pid 132386: 320×320×133, 1×1×2 mm). Heart = TotalSegmentator label 51 (organs.NAME_TO_LABEL).- The venv is Python 3.9.25 (CLAUDE.md says 3.11, which is out of date). pyradiomics 3.1.0 has a cp39 manylinux wheel, and scikit-survival 0.23.1 is available.
- IDC-780 clinical data has no mortality, cause of death, pack-years,
BMI or comorbidities. Per the data dictionary,
prsnonly has age, gender, race, cigsmok, screening results and lung-cancer fields.ctabhas code 60 "Significant cardiovascular abnormality" (a possible cardiac sanity label). - Blocker:
meta/nlst_780/*.csvarerw-rw---- mer:mer, so they are unreadable for us (groupaura_thymus). Mentor access is needed for clinical covariates. The world-readable.zipcopies were deliberately not used, since the restriction on the CSVs looks intentional. Confirm with the mentor.
Housekeeping: committed Stage 6 + final CNN PLAN/PROGRESS (eb3b89b).
Added data/saliency/ (254 MB of regenerable NIfTI) to .gitignore. Then
removed the old PLAN.md/PROGRESS.md.
Follow-up search for clinical data (user asked):
nlst.csv(203,087 series / 26,254 patients) is IDC DICOM series metadata.PatientAge,PatientSex,SeriesDate,AnalysisResultare 100% empty (de-identified). Useful part:SeriesDescriptionis a comma-coded acquisition string, e.g.1,OPA,GE,LSULT,STANDARD,380,1.2,120,60,44.4,1.4(study yr, ?, vendor, model, kernel, ?, ?, kVp, mA, ?, ?). The exact field meanings still need to be confirmed in R0 before use.derived/holds only images/masks/embeddings/saliency, no tables.discovery_pipeline/nlst_root/meta/nlst_780/nlst_780_prsn_idc_20210527.csvis another copy of prsn, alsorw-r----- mer:mer, so it is unreadable too.discovery_pipeline/NLST_thymic_health_scores_published.csv(25,030 pids: continuous + categorical thymic health) is readable. It isn't needed now, but could be a later covariate/comparison.- Conclusion: the only missing inputs are age, sex, cigsmok (prsn) and the ctab code-60 flag. Both need the mentor to grant access.
- CLAUDE.md updated for the radiomics project (Python 3.9, new deps, access rule, new source-of-truth cohort file).
Next: R0 cohort build + R1 visual QC (both local, light). Then write the R2 extraction script and sbatch array for the user to submit.