{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "51aedfee",
   "metadata": {},
   "outputs": [],
   "source": [
    "import os, shutil\n",
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "original_dataset_dir = 'The IQ-OTHNCCD lung cancer dataset'\n",
    "base_dir = 'dataset'\n",
    "train_dir = os.path.join(base_dir, 'train')\n",
    "validation_dir = os.path.join(base_dir, 'validation')\n",
    "test_dir = os.path.join(base_dir, 'test')\n",
    "\n",
    "for dir in [train_dir, validation_dir, test_dir]:\n",
    "    os.makedirs(dir, exist_ok=True)\n",
    "\n",
    "train_ratio, validation_ratio, test_ratio = 0.7, 0.1, 0.2\n",
    "\n",
    "def split_and_copy_files(class_dir, dest_base_dir):\n",
    "    all_images = [os.path.join(class_dir, f) for f in os.listdir(class_dir) if os.path.isfile(os.path.join(class_dir, f))]\n",
    "    train_images, temp_images = train_test_split(all_images, test_size=(1 - train_ratio), random_state=42)\n",
    "    validation_images, test_images = train_test_split(temp_images, test_size=test_ratio/(validation_ratio + test_ratio), random_state=42)\n",
    "\n",
    "    for images, folder_name in zip([train_images, validation_images, test_images], ['train', 'validation', 'test']):\n",
    "        dest_dir = os.path.join(dest_base_dir, folder_name, os.path.basename(class_dir))\n",
    "        os.makedirs(dest_dir, exist_ok=True)\n",
    "        for file in images:\n",
    "            shutil.copy(file, dest_dir)\n",
    "\n",
    "# Apply to all class subfolders\n",
    "for class_dir in os.listdir(original_dataset_dir):\n",
    "    full_class_dir = os.path.join(original_dataset_dir, class_dir)\n",
    "    if os.path.isdir(full_class_dir):\n",
    "        split_and_copy_files(full_class_dir, base_dir)\n"
   ]
  }
 ],
 "metadata": {
  "language_info": {
   "name": "python"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
