生境特征提取
本节介绍如何使用 HABIT 从生境图中提取特征。
概述
生境特征提取是生境分析的重要步骤,从生成的生境图中提取各种类型的特征,为后续的机器学习建模做准备。
HABIT 支持多种特征类型:
传统影像组学特征: 使用 pyradiomics 提取标准影像组学特征
非影像组学特征: 提取非标准的影像组学特征
整体生境特征: 提取整个生境图谱的特征
每个生境特征: 提取每个生境区域的特征
MSI 特征: 空间交互矩阵(Spatial Interaction Matrix)特征
ITH 特征: 肿瘤内异质性特征
CLI 使用方法
基本语法:
habit extract --config <config_file>
参数说明:
--config, -c: 配置文件路径(必需)
使用示例:
habit extract --config ./demo_data/config_extract_features.yaml
输出:
特征文件将保存在配置文件中指定的输出目录。
Python API 使用方法
基本用法:
from habit.core.common.service_configurator import ServiceConfigurator
from habit.core.habitat_analysis.config_schemas import FeatureExtractionConfig
# 加载配置
config = FeatureExtractionConfig.from_file('./config_extract_features.yaml')
# 创建配置器
configurator = ServiceConfigurator(config=config)
# 创建特征提取器
analyzer = configurator.create_feature_extractor()
# 运行特征提取
analyzer.run(
feature_types=config.feature_types,
n_habitats=config.n_habitats
)
详细示例:
import logging
from habit.core.common.service_configurator import ServiceConfigurator
from habit.core.habitat_analysis.config_schemas import FeatureExtractionConfig
from habit.utils.log_utils import setup_logger
from pathlib import Path
# 设置日志
output_dir = Path('./results/features')
output_dir.mkdir(parents=True, exist_ok=True)
logger = setup_logger(
name='feature_extraction',
output_dir=output_dir,
log_filename='feature_extraction.log',
level=logging.INFO
)
# 加载配置
config = FeatureExtractionConfig.from_file('./config_extract_features.yaml')
# 创建配置器
configurator = ServiceConfigurator(config=config, logger=logger, output_dir=str(output_dir))
# 创建特征提取器
analyzer = configurator.create_feature_extractor()
# 运行特征提取
logger.info("开始特征提取")
analyzer.run(
feature_types=config.feature_types,
n_habitats=config.n_habitats
)
logger.info("特征提取完成!")
YAML 配置详解
配置文件结构:
# 参数文件
params_file_of_non_habitat: ./parameter.yaml # 从原始图像提取特征的参数文件
params_file_of_habitat: ./parameter_habitat.yaml # 从生境图提取特征的参数文件
# 数据目录
raw_img_folder: ./preprocessed/processed_images # 原始图像根目录
habitats_map_folder: ./results/habitat # 生境图根目录
out_dir: ./results/features # 输出目录
# 特征提取参数
n_processes: 3 # 并行进程数
habitat_pattern: '*_habitats.nrrd' # 生境文件匹配模式
# 特征类型
feature_types:
- traditional # 传统影像组学特征
- non_radiomics # 非影像组学特征
- whole_habitat # 整体生境特征
- each_habitat # 每个生境特征
- msi # MSI(Spatial Interaction Matrix)特征
- ith_score # ITH 特征
n_habitats: # 生境数量(空表示自动检测)
# 调试参数
debug: false # 启用调试模式
字段说明:
params_file_of_non_habitat: 从原始图像提取特征的参数文件
使用 pyradiomics 提取传统影像组学特征
参考 pyradiomics 文档了解参数说明
params_file_of_habitat: 从生境图提取特征的参数文件
使用 pyradiomics 从生境图中提取特征
参考 pyradiomics 文档了解参数说明
raw_img_folder: 原始图像根目录
包含预处理后的图像
用于提取传统影像组学特征
habitats_map_folder: 生境图根目录
包含生成的生境图
用于提取生境相关特征
out_dir: 输出目录
特征文件将保存在此目录
n_processes: 并行进程数
用于并行处理多个受试者
根据您的硬件配置调整
habitat_pattern: 生境文件匹配模式
用于匹配生境图文件
支持通配符(*)
feature_types: 特征类型列表
traditional: 传统影像组学特征
non_radiomics: 非影像组学特征
whole_habitat: 整体生境特征
each_habitat: 每个生境特征
msi: MSI(Spatial Interaction Matrix)特征
ith_score: ITH 特征
n_habitats: 生境数量
空表示自动检测
可以手动指定生境数量
debug: 调试模式
启用详细日志
便于调试和问题排查
特征类型详解
传统影像组学特征 (traditional)
使用 pyradiomics 提取标准影像组学特征。
适用场景: - 与传统影像组学研究对比 - 需要标准的影像组学特征
特征类别: - 一阶统计特征(First Order Statistics) - 形状特征(Shape) - 灰度共生矩阵特征(GLCM) - 灰度游程矩阵特征(GLRLM) - 灰度区域矩阵特征(GLSZM) - 邻域灰度差分矩阵特征(NGTDM)
参数文件示例:
# parameter.yaml
imageType: original
resampledPixelSpacing: None
interpolator: sitkBSpline
force2D: false
force2Ddimension: 0
resampling: None
preCrop: false
binWidth: 25
binCount: 32
normalize: false
normalizeScale: 1
removeOutliers: false
voxelBased: true
# 特征类别
shape: enabled
firstorder: enabled
glcm: enabled
glrlm: enabled
glszm: enabled
ngtdm: enabled
非影像组学特征 (non_radiomics)
提取非标准的影像组学特征。
适用场景: - 探索新的特征类型 - 研究特定的生物学特征
特征类型: - 空间分布特征 - 强度分布特征 - 形态学特征 - 纹理特征
整体生境特征 (whole_habitat)
提取整个生境的特征。
适用场景: - 研究生境的整体特性 - 分析生境之间的关系
特征类型: - 生境数量 - 生境分布 - 生境大小 - 生境形状
每个生境特征 (each_habitat)
提取每个生境的特征。
适用场景: - 研究每个生境的独立特性 - 分析生境之间的差异
特征类型: - 每个生境的强度特征 - 每个生境的纹理特征 - 每个生境的形状特征
MSI 特征 (msi)
空间交互矩阵(Spatial Interaction Matrix)特征,描述不同生境区域之间的空间交互关系。
适用场景: - 研究生境之间的空间交互模式 - 量化肿瘤内空间异质性
特征类型: - 生境间空间邻接/共现相关指标 - 生境间相互作用矩阵派生统计量
参考: Intratumoral Spatial Heterogeneity at Perfusion MR Imaging Predicts Recurrence-free Survival in Locally Advanced Breast Cancer Treated with Neoadjuvant Chemotherapy
ITH 特征 (ith_score)
肿瘤内异质性特征。
适用场景: - 量化肿瘤内异质性 - 研究异质性与临床结果的关系
特征类型: - 异质性指数 - 多样性指数 - 复杂性指数
参数文件说明
HABIT 使用 pyradiomics 进行特征提取,需要提供参数文件。
parameter.yaml(原始图像特征提取):
# 图像设置
imageType: original
resampledPixelSpacing: None
interpolator: sitkBSpline
force2D: false
force2Ddimension: 0
resampling: None
preCrop: false
# 分箱设置
binWidth: 25
binCount: 32
normalize: false
normalizeScale: 1
removeOutliers: false
voxelBased: true
# 特征类别
shape: enabled
firstorder: enabled
glcm: enabled
glrlm: enabled
glszm: enabled
ngtdm: enabled
parameter_habitat.yaml(生境图特征提取):
# 图像设置
imageType: original
resampledPixelSpacing: None
interpolator: sitkBSpline
force2D: false
force2Ddimension: 0
resampling: None
preCrop: false
# 分箱设置
binWidth: 25
binCount: 32
normalize: false
normalizeScale: 1
removeOutliers: false
voxelBased: true
# 特征类别
shape: enabled
firstorder: enabled
glcm: enabled
glrlm: enabled
glszm: enabled
ngtdm: enabled
实际示例
示例 1: 基本特征提取
params_file_of_non_habitat: ./parameter.yaml
params_file_of_habitat: ./parameter_habitat.yaml
raw_img_folder: ./preprocessed/processed_images
habitats_map_folder: ./results/habitat/predict
out_dir: ./results/features
n_processes: 3
habitat_pattern: '*_habitats.nrrd'
feature_types:
- traditional
- non_radiomics
- whole_habitat
n_habitats:
debug: false
示例 2: 完整特征提取
params_file_of_non_habitat: ./parameter.yaml
params_file_of_habitat: ./parameter_habitat.yaml
raw_img_folder: ./preprocessed/processed_images
habitats_map_folder: ./results/habitat/predict
out_dir: ./results/features
n_processes: 4
habitat_pattern: '*_habitats.nrrd'
feature_types:
- traditional
- non_radiomics
- whole_habitat
- each_habitat
- msi
- ith_score
n_habitats:
debug: false
输出结构
特征提取的输出结构:
results/features/
├── traditional/ # 传统影像组学特征
│ ├── features.csv
│ └── ...
├── non_radiomics/ # 非影像组学特征
│ ├── features.csv
│ └── ...
├── whole_habitat/ # 整体生境特征
│ ├── features.csv
│ └── ...
├── each_habitat/ # 每个生境特征
│ ├── features.csv
│ └── ...
├── msi/ # MSI(Spatial Interaction Matrix)特征
│ ├── features.csv
│ └── ...
├── ith_score/ # ITH 特征
│ ├── features.csv
│ └── ...
└── feature_extraction.log # 日志文件
常见问题
Q1: 特征提取失败怎么办?
A: 检查以下几点:
配置文件路径是否正确。
参数文件是否存在。
生境图文件是否存在。
原始图像文件是否存在。
pyradiomics 是否正确安装。
查看日志文件了解详细错误信息。
Q2: 如何选择特征类型?
A: 根据您的研究需求选择: - 传统影像组学: 与传统研究对比 - 非影像组学: 探索新的特征 - 整体生境: 研究生境整体特性 - 每个生境: 研究每个生境独立特性 - MSI: 研究生境间空间交互特征 - ITH: 量化肿瘤内异质性
Q3: 如何调整特征提取参数?
A: 修改参数文件:
binWidth: 分箱宽度。
binCount: 分箱数量。
normalize: 是否标准化。
特征类别:启用或禁用特定特征类别。
Q4: 特征提取速度慢怎么办?
A: 可以尝试以下方法:
增加 n_processes 参数,使用更多并行进程。
减少特征类型,只提取必要的特征。
使用更快的硬件(如 SSD)。
对于大数据集,考虑分批处理。
Q5: 如何验证提取的特征?
A: 可以通过以下方法验证:
检查特征文件的完整性。
检查特征值的合理性。
可视化特征分布。
统计特征数量和质量。
下一步
特征提取完成后,您可以: