Initial commit: project structure, scripts and documentation

This commit is contained in:
2026-08-22 13:17:29 +03:00
commit 5042305df0
54 changed files with 14166 additions and 0 deletions
+150
View File
@@ -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()