基本概念
本节介绍 HABIT 的核心概念和术语,帮助您更好地理解和使用这个工具包。
生境(Habitat)
生境是指肿瘤内部具有相似生物学特征的区域。通过将肿瘤分割为多个生境,可以更好地理解肿瘤的异质性,这对于诊断、预后评估和治疗反应预测具有重要意义。
生境分析的核心思想:
肿瘤异质性: 肿瘤不是均匀的组织,而是由多个具有不同特征的亚区域组成
功能分区: 不同的生境可能对应不同的生物学过程(如血管生成、坏死、炎症等)
临床意义: 生境特征可以提供比整体肿瘤特征更丰富的诊断信息
生境分析流程:
聚类策略
HABIT 提供三种聚类策略用于生境分割:
1. One-Step 策略
描述: 对每个肿瘤独立进行体素到生境的聚类
适用场景: 样本量较小,或者希望保留每个肿瘤的独特特征
优点: 简单直接,每个肿瘤独立分析
缺点: 可能难以发现跨患者的共同模式
2. Two-Step 策略(推荐)
描述: 两步聚类 - 第一步:体素到超像素(个体级别) - 第二步:超像素到生境(群体级别)
适用场景: 样本量较大,希望发现跨患者的共同生境模式
优点: 可以发现跨患者的共同生境模式,提高泛化能力
缺点: 计算复杂度较高
3. Direct Pooling 策略
描述: 将所有体素池化后一次性聚类
适用场景: 数据量较小,或者希望快速获得结果
优点: 计算速度快,实现简单
缺点: 可能忽略个体差异,数据泄露风险较高
策略选择建议:
研究型项目: 推荐使用 Two-Step 策略
快速原型: 可以使用 Direct Pooling 策略
小样本研究: 可以考虑 One-Step 策略
Pipeline 机制
HABIT 继承了 scikit-learn 的 Pipeline 机制,这是避免数据泄露的关键设计。
什么是数据泄露?
数据泄露是指在模型训练过程中,测试集的信息意外地泄露到训练集中,导致模型性能被高估。
Pipeline 如何避免数据泄露?
训练阶段: 在训练集上训练 Pipeline,包括特征选择、聚类、模型训练等步骤
预测阶段: 加载训练好的 Pipeline,应用于测试集,确保使用相同的处理流程
严格分离: 训练集和测试集完全分离,避免测试集信息泄露
生境分析中的 Pipeline:
from habit.core.common.service_configurator import ServiceConfigurator
from habit.core.habitat_analysis.config_schemas import HabitatAnalysisConfig
# 加载配置
config = HabitatAnalysisConfig.from_file('./config_habitat.yaml')
# 创建配置器
configurator = ServiceConfigurator(config=config)
# 创建生境分析对象
habitat_analysis = configurator.create_habitat_analysis()
# 运行生境分析
habitat_analysis.run()
机器学习中的 Pipeline:
from sklearn.pipeline import Pipeline
from habit.core.machine_learning import ModelFactory
pipeline = Pipeline([
('feature_selection', feature_selector),
('model', ModelFactory.create_model('RandomForest', config))
])
# 训练阶段
pipeline.fit(X_train, y_train)
# 预测阶段
y_pred = pipeline.predict(X_test)
关键要点:
训练和测试必须使用相同的 Pipeline
不要在整个数据集上进行聚类或特征选择
使用交叉验证时,每个 fold 的训练和测试必须严格分离
特征提取
HABIT 支持多种特征提取方法:
1. 体素级特征
描述: 对每个体素提取特征
适用场景: 需要精细的空间分析
示例: 原始图像强度、纹理特征、局部熵等
2. 超像素级特征
描述: 对超像素区域提取特征
适用场景: 需要区域级别的分析
示例: 平均强度、方差、形态学特征等
3. 生境级特征
描述: 对每个生境提取特征
适用场景: 研究生境的生物学特性
示例: 生境大小、形状、强度分布等
4. 传统影像组学特征
描述: 使用 pyradiomics 提取标准影像组学特征
适用场景: 与传统影像组学研究对比
示例: GLCM、GLRLM、GLSZM 等纹理特征
5. 非影像组学特征
描述: 提取非标准的影像组学特征
适用场景: 探索新的特征类型
示例: MSI(Spatial Interaction Matrix,空间交互矩阵)、ITH(肿瘤内异质性)等
参考: Intratumoral Spatial Heterogeneity at Perfusion MR Imaging Predicts Recurrence-free Survival in Locally Advanced Breast Cancer Treated with Neoadjuvant Chemotherapy
6. 整体生境特征
描述: 提取整个生境的特征
适用场景: 研究生境的整体特性
示例: 生境数量、生境分布、生境间关系等
配置驱动
HABIT 使用 YAML 配置文件来控制所有参数,这是系统的核心设计理念。
配置文件的优势:
无需修改代码: 通过修改配置文件即可调整功能
版本控制: 配置文件可以纳入版本控制,便于追踪变更
可重复性: 相同的配置文件产生相同的结果
易于分享: 配置文件可以轻松分享给其他研究者
配置文件结构:
# 数据路径
data_dir: ./data.yaml
out_dir: ./results
# 核心配置
FeatureConstruction:
voxel_level:
method: concat(raw(T1), raw(T2), raw(FLAIR))
HabitatsSegmention:
clustering_mode: two_step
supervoxel:
algorithm: kmeans
n_clusters: 50
# 通用设置
processes: 2
random_state: 42
配置文件类型:
HABIT 有两种类型的配置文件:
数据配置文件: 指定图像和掩码的路径
功能配置文件: 指定处理流程的参数
参考 数据结构说明 了解更多关于数据配置文件的信息。
双重接口
HABIT 提供两种使用方式:CLI 和 Python API。
CLI 接口:
适用场景: 批处理、自动化任务、快速原型
优点: 简单易用,无需编写代码
示例:
habit preprocess --config config_preprocessing.yaml
habitat get-habitat --config config_habitat.yaml --mode predict
habit extract --config config_extract_features.yaml
habitat model --config config_machine_learning.yaml --mode train
Python API 接口:
适用场景: 集成到其他项目、定制化开发、复杂工作流
优点: 灵活强大,可以深度定制
示例:
from habit.core.preprocessing.image_processor_pipeline import BatchProcessor
from habit.core.common.service_configurator import ServiceConfigurator
from habit.core.habitat_analysis.config_schemas import HabitatAnalysisConfig
from habit.core.machine_learning import MLWorkflow
# 预处理
processor = BatchProcessor(config_path='config_preprocessing.yaml')
processor.process_batch()
# 生境分析
config = HabitatAnalysisConfig.from_file('config_habitat.yaml')
configurator = ServiceConfigurator(config=config)
habitat_analysis = configurator.create_habitat_analysis()
habitat_analysis.run()
# 机器学习
workflow = MLWorkflow(config)
workflow.run_pipeline()
选择建议:
初学者: 从 CLI 开始,快速上手
研究者: 根据需求选择,CLI 用于快速实验,API 用于定制开发
开发者: 使用 Python API,集成到自己的项目中