
Pyradiomics(⼆)。。
本⽂介绍Pyradiomics的使⽤⽅法,和安装时遇到的坑。上⼀篇⽂章(医学影像组学特征值(Radiomics Features)提取之Pyradiomics(⼀)理论篇)介绍了Pyradiomics⽀持的图像类型和组学特征类型,将医学图像和Mask⽤作PyRadiomics的输⼊,对原图和经过滤波的派⽣图像进⾏影像组学特征提取,之后可以对组学特征进⾏进⼀步分析。
1 安装过程
安装Radiomics有两种⽅法,第⼀种是直接pip install radiomics,会⽣成⼀个radiomics包,在上⼀篇⽂章介绍的;
第⼆种是采⽤官⽅链接安装Pyradiomics,下⾯详细给⼀下安装步骤,为了避开之前采⽤第⼀种⽅法安装但实际想⽤第⼆个radiomics包导致的坑,我们重新建⼀个conda环境,pyradiomic是python编写的程序,运⾏需要环境⽀持。所以在这之前需要安装anaconda。
⾸先查看conda存在的环境:
conda env list
创建我们需要的新环境:
conda create -n Radiomics python=3.7
进⼊Radiomics环境:
source activate Radiomics
下载Pyradiomics安装包
git clone git://github.com/Radiomics/pyradiomics
进⼊Pyradiomics路径下
cd pyradiomics
安装Pyradiomics的依赖包
python -m pip install -r requirements.txt
安装Pyradiomics
python setup.py install
安装完之后,在命令⾏进⼊python环境中进⾏测试
发现有问题,我们就按照报错提⽰的进⾏处理,可以发现这样就没问题了,可以正常import和使⽤了。
我们可以查看⼀下这个radiomics包所在的位置
这⾥补充⼀下两种⽅法使⽤时的区别,如果之前已经⽤第⼀种⽅法安装了radiomics包,那在⽤第⼆种⽅法再安装之后,python环境默认⾸先使⽤第⼀种⽅法,这⾥有⼀些不兼容的地⽅,如:
from radiomics import featureextractor
featureextractor.RadiomicsFeatureExtractor
会出现下⾯的报错
我们发现在第⼀个包的安装⽬录下radiomics的featureextractor下⾯确实没有RadiomicsFeatureExtractor,⽽是存在RadiomicsFeaturesExtractor,但是在第⼆个包的安装⽬录下是存在RadiomicsFeatureExtractor的,两者有些函数命名是不太⼀样的。
2 使⽤⽅法
⾸先导⼊必要的包
import SimpleITK as sitk
import radiomics
from radiomics import featureextractor
导⼊输⼊的CT数据imageName, maskName = path_to_img, path_to_mask
print('imageName, maskName', imageName, maskName)
if imageName is None or maskName is None: # Something went wrong, in this case PyRadiomics will also log an error
print('Error getting testcase!')
exit()
⼀些设置⽂件
# Define settings for signature calculation
# These are currently set equal to the respective default values
settings = {}
settings['binWidth'] = 25
settings['resampledPixelSpacing'] = None # [3,3,3] is an example for defining resampling (voxels with size 3x3x3mm)
settings['interpolator'] = sitk.sitkBSpline
初始化feature extractor
# Initialize feature extractor
extractor = featureextractor.RadiomicsFeatureExtractor(**settings)
设置图像类型,如原始图像,LoG、Wavelet等派⽣图像,默认情况下只使⽤原始图像
# By default, only original is enabled. Optionally enable some image types:
# extractor.enableImageTypes(Original={}, LoG={}, Wavelet={})
设置特征类型,⾸先屏蔽所有类型
# Disable all classes
extractor.disableAllFeatures()
输出Pyradiomics包的信息和图像的基本信息
print("Calculating features")
featureVector = extractor.execute(imageName, maskName)
for featureName in featureVector.keys():
print("Computed %s: %s" % (featureName, featureVector[featureName]))
从输出可以看到Pyradiomics包的依赖环境Numpy、SimpleITK、PyWavelet、Python等版本, Configuration_Settings设置⽂件,和图像的基本信息,如Dimension、Spacing、Size、Mean、Minimun、Maximun,图像Mask的基本信息,如Spacing、Size、BoundingBox等。
设置特征类型,选择firstorder类型
# Enable all features in firstorder
extractor.enableFeatureClassByName('firstorder')
设置firstorder特征的内部特征类型,选择mean和skewness,我们这⾥不设置,直接输出全部特征
# Only enable mean and skewness in firstorder
# extractor.enableFeaturesByName(firstorder=['Mean', 'Skewness'])
设置提取的特征类型后就可以输出影像组学特征了
可以看到我们提取了firstordr的18个特征,其他的特征提取⽅法类似,也可以设置⼀些派⽣图像。
