# config_3d.py # ============================================================================= # Конфигурация для 3D обработки данных Brain Tumour # АДАПТИРОВАНА ПОД ВАШ ПУТЬ # ============================================================================= import os from pathlib import Path # ============================================================================= # ПУТИ — ИСПРАВЛЕНО! # ============================================================================= # Корень проекта (где лежит этот файл) PROJECT_ROOT = Path(__file__).parent.resolve() # !!! ВАЖНО: ВАШ ТОЧНЫЙ ПУТЬ К ДАННЫМ !!! DATA_ROOT = Path(r"D:\Radiomics_Data\Experiments\experiment-17-06-2026\Task01_BrainTumour\Task01_BrainTumour") # Папки с данными PATH_IMAGES_TRAIN = DATA_ROOT / "imagesTr" PATH_IMAGES_TEST = DATA_ROOT / "imagesTs" PATH_LABELS_TRAIN = DATA_ROOT / "labelsTr" # Папка для результатов OUTPUT_ROOT = PROJECT_ROOT / "data_3d_output" PATH_FEATURES = OUTPUT_ROOT / "features" PATH_LOGS = OUTPUT_ROOT / "logs" PATH_MODELS = OUTPUT_ROOT / "models" # ============================================================================= # НАСТРОЙКИ ФАЙЛОВ # ============================================================================= # Формат файлов FILE_EXTENSION = ".nii.gz" # ============================================================================= # НАСТРОЙКИ ОБРАБОТКИ # ============================================================================= # Максимальное количество пациентов (None = все) MAX_PATIENTS = None # Использовать параллельную обработку USE_PARALLEL = False # Для отладки лучше False # Количество ядер для параллельной обработки N_JOBS = -1 # -1 = все ядра # ============================================================================= # НАСТРОЙКИ RADIOMICS # ============================================================================= RADIOMICS_SETTINGS = { 'minimumROIDimensions': 2, 'minimumROISize': None, 'normalize': True, 'normalizeScale': 100, 'removeOutliers': None, 'resampledPixelSpacing': None, 'interpolator': 'sitkBSpline', 'preCrop': True, 'padDistance': 5, 'distances': [1], 'force2D': False, 'force2Ddimension': 0, 'resegmentRange': None, 'label': 1 } ENABLED_FEATURES = { 'firstorder': True, 'shape': True, 'glcm': True, 'glrlm': True, 'glszm': True, 'gldm': True, 'ngtdm': False, } ENABLED_IMAGE_TYPES = { 'Original': {}, 'Wavelet': {}, 'LoG': {'sigma': [1.0, 2.0, 3.0]}, 'Square': {}, 'SquareRoot': {}, 'Logarithm': {}, 'Exponential': {}, 'Gradient': {} } # ============================================================================= # ВСПОМОГАТЕЛЬНЫЕ ФУНКЦИИ # ============================================================================= def ensure_directories(): """Создаёт все необходимые директории""" print("\n📁 СОЗДАНИЕ ПАПОК:") for path in [PATH_FEATURES, PATH_LOGS, PATH_MODELS]: path.mkdir(parents=True, exist_ok=True) print(f" ✅ {path}") print() def print_structure(): """Выводит структуру проекта""" print("\n" + "=" * 70) print("🧠 3D РАДИОМИКА — BRAIN TUMOUR") print("=" * 70) print(f" 📂 Проект: {PROJECT_ROOT}") print(f" 📂 Данные: {DATA_ROOT}") print(f" 📂 Обучающие: {PATH_IMAGES_TRAIN}") print(f" 📂 Тестовые: {PATH_IMAGES_TEST}") print(f" 📂 Маски: {PATH_LABELS_TRAIN}") print(f" 📂 Результаты: {PATH_FEATURES}") print(f" 📂 Логи: {PATH_LOGS}") print("=" * 70 + "\n") def check_data(): """Проверяет наличие данных""" print("🔍 ПРОВЕРКА ДАННЫХ:") print("-" * 50) for name, path in [ ("Обучающие изображения", PATH_IMAGES_TRAIN), ("Тестовые изображения", PATH_IMAGES_TEST), ("Маски", PATH_LABELS_TRAIN) ]: if path.exists(): files = list(path.glob(f'*{FILE_EXTENSION}')) print(f" ✅ {name}: {len(files)} файлов") else: print(f" ❌ {name}: папка не найдена ({path})") json_path = DATA_ROOT / "dataset.json" if json_path.exists(): print(f" ✅ dataset.json: {json_path}") else: print(f" ❌ dataset.json: не найден") print("-" * 50 + "\n") if __name__ == "__main__": print_structure() ensure_directories() check_data()