150 lines
4.9 KiB
Python
150 lines
4.9 KiB
Python
# 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() |