{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.12.13","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"none","dataSources":[],"dockerImageVersionId":28755,"isInternetEnabled":false,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import os, pandas as pd\n\n# ===== Gaussian filtered EyePACS (folder-structured) =====\neyepacs_root = '/kaggle/input/datasets/sovitrath/diabetic-retinopathy-224x224-gaussian-filtered/gaussian_filtered_images/gaussian_filtered_images'\nprint(\"=== EYEPACS SUBFOLDERS ===\")\nprint(os.listdir(eyepacs_root))\nfor folder in os.listdir(eyepacs_root):\n    fpath = os.path.join(eyepacs_root, folder)\n    if os.path.isdir(fpath):\n        files = os.listdir(fpath)\n        print(f\"  {folder}: {len(files)} files, sample: {files[:2]}\")\n\n# ===== APTOS 2019 data =====\naptos_csv = '/kaggle/input/datasets/sovitrath/diabetic-retinopathy-224x224-2019-data/train.csv'\naptos_img = '/kaggle/input/datasets/sovitrath/diabetic-retinopathy-224x224-2019-data/colored_images'\nprint(\"\\n=== APTOS CSV ===\")\ndf = pd.read_csv(aptos_csv)\nprint(\"Columns:\", list(df.columns))\nprint(\"Rows:\", len(df))\nprint(df.head(3).to_string())\nprint(\"Grade dist:\\n\", df.iloc[:,1].value_counts().sort_index())\nprint(\"\\nImage sample:\", os.listdir(aptos_img)[:3])\n\n# ===== Fundus combined (pre-split) =====\nfundus_root = '/kaggle/input/datasets/sehastrajits/fundus-aptosddridirdeyepacsmessidor/split_dataset'\nprint(\"\\n=== FUNDUS COMBINED STRUCTURE ===\")\nfor split in ['train','val','test']:\n    split_path = os.path.join(fundus_root, split)\n    if os.path.exists(split_path):\n        subfolders = os.listdir(split_path)\n        print(f\"  {split}: {subfolders}\")\n        for sf in subfolders[:3]:\n            sf_path = os.path.join(split_path, split, sf)\n            if os.path.isdir(sf_path):\n                print(f\"    {sf}: {len(os.listdir(sf_path))} files\")","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true,"execution":{"iopub.status.busy":"2026-06-22T18:41:13.894359Z","iopub.execute_input":"2026-06-22T18:41:13.894578Z","iopub.status.idle":"2026-06-22T18:41:15.176595Z","shell.execute_reply.started":"2026-06-22T18:41:13.894555Z","shell.execute_reply":"2026-06-22T18:41:15.175712Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"import os, pandas as pd\n\nfundus_root = '/kaggle/input/datasets/sehastrajits/fundus-aptosddridirdeyepacsmessidor/split_dataset'\n\n# Check what's actually inside the grade subfolders\n# Are images named with a source prefix? Or mixed anonymously?\nfor split in ['train']:                          # just train to keep output short\n    for grade in ['0','1','2','3','4']:\n        path = os.path.join(fundus_root, split, grade)\n        if os.path.exists(path):\n            files = os.listdir(path)\n            print(f\"{split}/grade{grade}: {len(files)} files | sample: {files[:4]}\")\n\n# Total counts across all splits per grade\nprint(\"\\n=== TOTAL PER GRADE ACROSS ALL SPLITS ===\")\nfor grade in ['0','1','2','3','4']:\n    total = 0\n    for split in ['train','val','test']:\n        path = os.path.join(fundus_root, split, grade)\n        if os.path.exists(path):\n            total += len(os.listdir(path))\n    print(f\"Grade {grade}: {total} images\")\n\nprint(\"\\n=== GRAND TOTAL ===\")\ngrand = 0\nfor split in ['train','val','test']:\n    for grade in ['0','1','2','3','4']:\n        path = os.path.join(fundus_root, split, grade)\n        if os.path.exists(path): grand += len(os.listdir(path))\nprint(f\"Total: {grand}\")","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2026-06-22T18:47:19.321610Z","iopub.execute_input":"2026-06-22T18:47:19.321907Z","iopub.status.idle":"2026-06-22T18:47:19.866063Z","shell.execute_reply.started":"2026-06-22T18:47:19.321858Z","shell.execute_reply":"2026-06-22T18:47:19.865076Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"os.listdir('/kaggle/input/')","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2026-06-22T19:02:30.044483Z","iopub.execute_input":"2026-06-22T19:02:30.044729Z","iopub.status.idle":"2026-06-22T19:02:30.052228Z","shell.execute_reply.started":"2026-06-22T19:02:30.044709Z","shell.execute_reply":"2026-06-22T19:02:30.051413Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"import os, pandas as pd\n\nlabels_path = '/kaggle/input/resized-2015-2019-blindness-detection-images/labels/trainLabels15.csv'\nimg_path    = '/kaggle/input/resized-2015-2019-blindness-detection-images/resized train 15/resized train 15'\n\ndf = pd.read_csv(labels_path)\nprint(\"Columns:\", list(df.columns))\nprint(\"Rows:\", len(df))\nprint(\"Grade dist:\\n\", df.iloc[:,1].value_counts().sort_index())\nprint(\"\\nFirst 3 rows:\\n\", df.head(3).to_string())\nprint(\"\\nImage sample:\", os.listdir(img_path)[:5])","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2026-06-22T19:10:54.465114Z","iopub.execute_input":"2026-06-22T19:10:54.465392Z","iopub.status.idle":"2026-06-22T19:10:54.482029Z","shell.execute_reply.started":"2026-06-22T19:10:54.465368Z","shell.execute_reply":"2026-06-22T19:10:54.480796Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"import os\n\n# Find the actual dataset root\nfor root, dirs, files in os.walk('/kaggle/input'):\n    for f in files:\n        if 'trainLabels15' in f or 'trainlabels15' in f.lower():\n            print(os.path.join(root, f))\n    for d in dirs:\n        if '2015' in d or '15' in d:\n            print(os.path.join(root, d))\n            ","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2026-06-22T19:17:59.995725Z","iopub.execute_input":"2026-06-22T19:17:59.996185Z","iopub.status.idle":"2026-06-22T19:19:27.913267Z","shell.execute_reply.started":"2026-06-22T19:17:59.996159Z","shell.execute_reply":"2026-06-22T19:19:27.912557Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"import os, pandas as pd\n\nlabels_path = '/kaggle/input/datasets/benjaminwarner/resized-2015-2019-blindness-detection-images/labels/trainLabels15.csv'\nimg_path    = '/kaggle/input/datasets/benjaminwarner/resized-2015-2019-blindness-detection-images/resized train 15'\n\ndf = pd.read_csv(labels_path)\nprint(\"Columns:\", list(df.columns))\nprint(\"Rows:\", len(df))\nprint(\"Grade dist:\\n\", df.iloc[:,1].value_counts().sort_index())\nprint(\"\\nFirst 3 rows:\\n\", df.head(3).to_string())\nprint(\"\\nImage sample:\", os.listdir(img_path)[:5])","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2026-06-22T19:19:27.914332Z","iopub.execute_input":"2026-06-22T19:19:27.914573Z","iopub.status.idle":"2026-06-22T19:19:27.952619Z","shell.execute_reply.started":"2026-06-22T19:19:27.914549Z","shell.execute_reply":"2026-06-22T19:19:27.951585Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"import os\n\nimg_path = '/kaggle/input/datasets/benjaminwarner/resized-2015-2019-blindness-detection-images/resized train 15'\n\n# Check actual extension\nsample = os.listdir(img_path)[:3]\nprint(\"Actual filenames:\", sample)\n\n# Check if CSV id + .jpg resolves correctly\ntest_id = '10_left'\nfor ext in ['.jpg', '.jpeg', '.png']:\n    full = os.path.join(img_path, test_id + ext)\n    print(f\"{test_id}{ext} exists: {os.path.exists(full)}\")","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2026-06-22T19:33:41.430433Z","iopub.execute_input":"2026-06-22T19:33:41.430670Z","iopub.status.idle":"2026-06-22T19:33:41.450473Z","shell.execute_reply.started":"2026-06-22T19:33:41.430651Z","shell.execute_reply":"2026-06-22T19:33:41.449752Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"import os, pandas as pd\n\nmessidor_csv = '/kaggle/input/messidor2preprocess/messidor_data.csv'\nmessidor_img = '/kaggle/input/messidor2preprocess/messidor-2/messidor-2/preprocess'\n\ndf = pd.read_csv(messidor_csv)\nprint(\"Columns:\", list(df.columns))\nprint(\"Rows:\", len(df))\nprint(\"\\nFirst 3 rows:\\n\", df.head(3).to_string())\nprint(\"\\nGrade distribution:\\n\", df.iloc[:,1].value_counts().sort_index())\nprint(\"\\nImage sample:\", os.listdir(messidor_img)[:5])","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2026-06-23T14:25:02.730484Z","iopub.execute_input":"2026-06-23T14:25:02.730930Z","iopub.status.idle":"2026-06-23T14:25:03.164445Z","shell.execute_reply.started":"2026-06-23T14:25:02.730893Z","shell.execute_reply":"2026-06-23T14:25:03.162709Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{"trusted":true},"outputs":[],"execution_count":null}]}