{"cells":[{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":"from pathlib import Path\n\nJPEG_BASE = Path('/kaggle/input/datasets/alenic/rsna-knee-abnormality-detection-jpeg-224x224')\nTRAIN = JPEG_BASE / 'train_series'\n\n# Get first study\nstudy = next(d for d in TRAIN.iterdir() if d.is_dir())\nprint(f'Study: {study.name}')\n\n# List ALL files recursively\nprint('\\n=== Full recursive listing ===')\nfor p in study.rglob('*'):\n    if p.is_file():\n        print(f'  {p.relative_to(study)}  ({p.stat().st_size} bytes)')"},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":"# Check what extensions exist in the entire dataset\nfrom collections import Counter\n\next_counter = Counter()\nn_files = 0\nfor p in TRAIN.rglob('*'):\n    if p.is_file():\n        ext_counter[p.suffix] += 1\n        n_files += 1\n        if n_files >= 5000:\n            break\n\nprint(f'Extensions found (first {n_files} files):')\nfor ext, count in ext_counter.most_common():\n    print(f'  {ext or \"(no ext)\"}: {count}')"},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":"# Also check if the directory tree is deeper than expected\n# Maybe: train_series/{StudyUID}/{SeriesUID}/{SubDir}/*.jpg\nseries_dirs = [d for d in study.iterdir() if d.is_dir()][:2]\nfor sd in series_dirs:\n    print(f'\\nSeries: {sd.name}')\n    for p in sd.rglob('*'):\n        depth = len(p.relative_to(sd).parts)\n        if p.is_dir():\n            print(f'  dir: {p.relative_to(sd)}')\n        elif depth <= 3:\n            print(f'  file: {p.relative_to(sd)} ({p.stat().st_size} bytes)')"}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.10.0"}},"nbformat":4,"nbformat_minor":4}