"""Verify all lesion groups are within a single patient.""" import json from datasets import load_from_disk from collections import defaultdict dd = load_from_disk('sandbox/datasets/F_hf_dataset_lesion') ALL = [] for split in ['train', 'validation', 'test']: ds = dd[split] for idx, r in enumerate(ds): ALL.append({ 'split': split, 'idx': idx, 'lesion_id_auto': r['lesion_id'], 'patient_id': r['patient_id'], 'source_dataset': r['source_dataset'], 'track_id': r['track_id'], 'filename': r['original_filename'], }) with open('sandbox/tools/lesion_editor/edits.json') as f: EDITS = json.load(f) def edit_key(split, idx): return f'{split}:{idx}' def eff_lesion(rec): k = edit_key(rec['split'], rec['idx']) if k in EDITS: return EDITS[k]['lesion_id'] return rec['lesion_id_auto'] lesion_patients = defaultdict(set) lesion_sources = defaultdict(set) lesion_count = defaultdict(int) for rec in ALL: lid = eff_lesion(rec) lesion_patients[lid].add(rec['patient_id']) lesion_sources[lid].add(rec['source_dataset']) lesion_count[lid] += 1 multi_patient = {lid: pts for lid, pts in lesion_patients.items() if len(pts) > 1} multi_source = {lid: srcs for lid, srcs in lesion_sources.items() if len(srcs) > 1} print(f'Total lesion groups: {len(lesion_patients)}') print(f'Total images: {sum(lesion_count.values())}') print(f'Edits applied: {len(EDITS)}') print() print(f'=== Lesion groups spanning MULTIPLE patients: {len(multi_patient)} ===') if multi_patient: for lid, pts in sorted(multi_patient.items()): n = lesion_count[lid] srcs = lesion_sources[lid] print(f' {lid}: {n} imgs, patients={sorted(pts)}, sources={sorted(srcs)}') else: print(' NONE - all lesion groups are within a single patient.') print() print(f'=== Lesion groups spanning MULTIPLE sources: {len(multi_source)} ===') if multi_source: for lid, srcs in sorted(multi_source.items()): pts = lesion_patients[lid] n = lesion_count[lid] print(f' {lid}: {n} imgs, sources={sorted(srcs)}, patients={sorted(pts)}') else: print(' NONE - all lesion groups are within a single source.')