pyradiomics
官方文档里有几个示例文件,里面涉及了包括yaml文件设置、feature extraction、可视化等一系列影像组学常规操作,是非常好的学习资料。源文件链接:https://github.com/AIM-Harvard/pyradiomics
今天学习标题名为"Example of using the PyRadiomics toolbox in Python"的这份文档。
0 导入模块(import modules)
from __future__ import print_function
import six
import os # needed navigate the system to get the input data
import radiomics
from radiomics import featureextractor # This module is used for interaction with pyradiomics
- 导入数据(Setting up data)
# Get the testCase
imagePath, maskPath = radiomics.getTestCase('brain1')
if imagePath is None or maskPath is None: # Something went wrong, in this case PyRadiomics will also log an error
raise Exception('Error getting testcase!') # Raise exception to prevent cells below from running in case of "run all"
# Additonally, store the location of the example parameter file, stored in \pyradiomics\examples/exampleSettings
paramPath = os.path.join('..', 'examples', 'exampleSettings', 'Params.yaml')
print('Parameter file, absolute path:', os.path.abspath(paramPath))
- 设置提取器(Instantiating the extractor)
Now that we have our input, we need to define the parameters and instantiate the extractor. For this there are three possibilities:
a. Use defaults, don't define custom settings
b. Define parameters in a dictionary, control filters and features after initialisation
c. Use a parameter file
Method 1, use defaults
# Instantiate the extractor
extractor = featureextractor.RadiomicsFeatureExtractor()
print('Extraction parameters:\n\t', extractor.settings)
print('Enabled filters:\n\t', extractor.enabledImagetypes)
print('Enabled features:\n\t', extractor.enabledFeatures)
image.png
Method 2, hard-coded settings
# First define the settings
settings = {}
settings['binWidth'] = 20
settings['sigma'] = [1, 2, 3]
# Instantiate the extractor
extractor = featureextractor.RadiomicsFeatureExtractor(**settings) # ** 'unpacks' the dictionary in the function call
print('Extraction parameters:\n\t', extractor.settings)
print('Enabled filters:\n\t', extractor.enabledImagetypes) # Still the default parameters
print('Enabled features:\n\t', extractor.enabledFeatures) # Still the default parameters
image.png
# This cell is equivalent to the previous cell
extractor = featureextractor.RadiomicsFeatureExtractor(binWidth=20, sigma=[1, 2, 3]) # Equivalent of code above
print('Extraction parameters:\n\t', extractor.settings)
print('Enabled filters:\n\t', extractor.enabledImagetypes) # Still the default parameters
print('Enabled features:\n\t', extractor.enabledFeatures) # Still the default parameters
image.png
# Enable a filter (in addition to the 'Original' filter already enabled)
extractor.enableImageTypeByName('LoG')
print('')
print('Enabled filters:\n\t', extractor.enabledImagetypes)
# Disable all feature classes, save firstorder
extractor.disableAllFeatures()
extractor.enableFeatureClassByName('firstorder')
print('')
print('Enabled features:\n\t', extractor.enabledFeatures)
# Specify some additional features in the GLCM feature class
extractor.enableFeaturesByName(glcm=['Autocorrelation', 'Homogeneity1', 'SumSquares'])
print('')
print('Enabled features:\n\t', extractor.enabledFeatures)
image.png
Method 3, using a parameter file
# Instantiate the extractor
extractor = featureextractor.RadiomicsFeatureExtractor(paramPath)
print('Extraction parameters:\n\t', extractor.settings)
print('Enabled filters:\n\t', extractor.enabledImagetypes)
print('Enabled features:\n\t', extractor.enabledFeatures)
image.png
- 提取特征值(Extract features)
result = extractor.execute(imagePath, maskPath)
print('Result type:', type(result)) # result is returned in a Python ordered dictionary)
print('')
print('Calculated features')
for key, value in six.iteritems(result):
print('\t', key, ':', value)
image(part).png