Initial commit: project structure, scripts and documentation
This commit is contained in:
@@ -0,0 +1,150 @@
|
||||
# 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()
|
||||
Reference in New Issue
Block a user