Pyradiomics: [BUG] ๊ธฐ๋Šฅ ์ถ”์ถœ๊ธฐ๊ฐ€ ์ž‘๋™ ์ค‘์ง€๋จ (์ธ๋ฑ์Šค๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋ฐฐ์—ด์€ ์ •์ˆ˜ (๋˜๋Š” ๋ถ€์šธ) ์œ ํ˜•์ด์–ด์•ผ ํ•จ)

์— ๋งŒ๋“  2020๋…„ 06์›” 30์ผ  ยท  4์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: AIM-Harvard/pyradiomics

๋ฒ„๊ทธ ์„ค๋ช…
๊ฐ‘์ž๊ธฐ ๊ธฐ๋Šฅ ์ถ”์ถœ๊ธฐ๋ฅผ ๋” ์ด์ƒ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค (๋ช‡ ์ฃผ ์ „๊นŒ์ง€ ์ž‘์—…). ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€ :

Traceback (most recent call last):

  File "<ipython-input-58-89ccd738bd53>", line 1, in <module>
    features = extractor.execute(img, mask, label=255)

  File "C:\Anaconda3\envs\pp\lib\site-packages\radiomics\featureextractor.py", line 327, in execute
    featureVector.update(self.computeFeatures(inputImage, inputMask, imageTypeName, **inputKwargs))

  File "C:\Anaconda3\envs\pp\lib\site-packages\radiomics\featureextractor.py", line 514, in computeFeatures
    for (featureName, featureValue) in six.iteritems(featureClass.execute()):

  File "C:\Anaconda3\envs\pp\lib\site-packages\radiomics\base.py", line 185, in execute
    self._calculateSegment()

  File "C:\Anaconda3\envs\pp\lib\site-packages\radiomics\base.py", line 222, in _calculateSegment
    for success, featureName, featureValue in self._calculateFeatures():

  File "C:\Anaconda3\envs\pp\lib\site-packages\radiomics\base.py", line 229, in _calculateFeatures
    self._initCalculation(voxelCoordinates)

  File "C:\Anaconda3\envs\pp\lib\site-packages\radiomics\glcm.py", line 111, in _initCalculation
    self.P_glcm = self._calculateMatrix(voxelCoordinates)

  File "C:\Anaconda3\envs\pp\lib\site-packages\radiomics\glcm.py", line 148, in _calculateMatrix
    P_glcm = numpy.delete(P_glcm, emptyGrayLevels - 1, 1)

  File "<__array_function__ internals>", line 6, in delete

  File "C:\Anaconda3\envs\pp\lib\site-packages\numpy\lib\function_base.py", line 4406, in delete
    keep[obj,] = False

IndexError: arrays used as indices must be of integer (or boolean) type

PyRadiomics ๊ตฌ์„ฑ
ํ™˜๊ฒฝ:
binWidth : 1
padDistance : 0
force2D : ์ฐธ

์žฌํ˜„ํ•˜๋ ค๋ฉด

from radiomics import featureextractor
import SimpleITK as sitk
import six
import numpy as np

data=np.array([[ 0,  2,  1,  4,  4,  5,  6,  8,  8,  9, 10,  8,  8,  7,  5,  5,  3,  1,  0,  1],
       [ 1,  2,  1,  4,  5,  8, 10, 14, 14, 15, 15, 15, 12, 11,  9,  8,  2,  2,  1,  2],
       [ 0,  2,  4,  8, 11, 15, 16, 21, 24, 29, 30, 27, 25, 18, 15, 11,  6,  6,  3,  1],
       [ 1,  4,  7, 11, 16, 24, 33, 43, 46, 50, 50, 46, 42, 34, 24, 17, 11,  8,  3,  1],
       [ 4,  7, 13, 20, 29, 41, 53, 61, 65, 67, 68, 64, 55, 48, 34, 24, 17, 10,  5,  3],
       [ 4, 10, 18, 30, 42, 57, 70, 72, 75, 75, 78, 72, 66, 55, 48, 33, 21, 14,  7,  3],
       [ 7, 16, 26, 43, 55, 62, 74, 76, 79, 84, 78, 76, 70, 66, 55, 40, 28, 16, 10,  5],
       [ 7, 19, 34, 45, 60, 70, 77, 75, 85, 81, 83, 81, 77, 68, 58, 46, 28, 18, 10,  5],
       [12, 20, 35, 51, 65, 69, 74, 78, 77, 85, 86, 77, 77, 72, 59, 48, 34, 21, 11,  6],
       [11, 22, 33, 46, 59, 71, 76, 80, 85, 87, 86, 84, 76, 76, 68, 54, 36, 23, 11,  6],
       [12, 21, 31, 47, 52, 64, 79, 77, 86, 88, 89, 83, 78, 72, 68, 50, 37, 19, 10,  7],
       [10, 18, 24, 39, 49, 59, 71, 81, 86, 89, 87, 86, 76, 67, 56, 46, 30, 15,  9,  4],
       [ 6, 11, 20, 30, 45, 52, 65, 72, 78, 84, 82, 80, 69, 57, 46, 35, 23, 13,  6,  4],
       [ 5,  8, 12, 18, 29, 45, 53, 60, 65, 71, 72, 67, 56, 48, 35, 25, 15,  9,  6,  3],
       [ 5,  7,  9, 13, 19, 28, 37, 44, 52, 52, 56, 50, 43, 31, 23, 15, 10,  6,  4,  2],
       [ 1,  3,  6,  8, 13, 14, 22, 27, 31, 33, 34, 30, 23, 18, 13,  8,  5,  4,  1,  2],
       [ 2,  1,  4,  5,  7,  9, 10, 15, 16, 17, 16, 15, 12, 10,  6,  6,  3,  3,  2,  0],
       [ 0,  2,  1,  3,  4,  4,  7,  6,  8,  7,  7,  7,  5,  5,  3,  4,  1,  1,  0,  1]], dtype=np.uint8)

data_mask=np.array([[255, 255, 255, 255, 255, 255,   0,   0,   0,   0,   0,   0,   0,   0, 255, 255, 255, 255, 255, 255],
       [255, 255, 255, 255, 255,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 255, 255, 255, 255],
       [255, 255, 255,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 255, 255],
       [255, 255,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 255, 255],
       [255,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 255, 255],
       [255,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 255],
       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 255],
       [255,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 255],
       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0],
       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0],
       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0],
       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 255],
       [255,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 255, 255],
       [255,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 255, 255],
       [255, 255,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 255, 255, 255],
       [255, 255, 255,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 255, 255, 255, 255],
       [255, 255, 255, 255, 255,   0,   0,   0,   0,   0,   0,   0,   0,   0, 255, 255, 255, 255, 255, 255],
       [255, 255, 255, 255, 255, 255, 255, 255,   0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]], dtype=np.uint8)

img = sitk.GetImageFromArray(data)
mask = sitk.GetImageFromArray(data_mask)

params = "params.yml"

extractor = featureextractor.RadiomicsFeatureExtractor(params)
features = extractor.execute(img, mask, label=255)

์˜ˆ์ƒ๋˜๋Š” ํ–‰๋™
์˜ˆ์ƒํ–ˆ๋˜ ์ผ์— ๋Œ€ํ•œ ๋ช…ํ™•ํ•˜๊ณ  ๊ฐ„๊ฒฐํ•œ ์„ค๋ช….

๋ฒ„์ „ (๋‹ค์Œ ์ •๋ณด๋ฅผ ์ž‘์„ฑํ•˜์‹ญ์‹œ์˜ค) :

  • ์šด์˜์ฒด์ œ : Windows 10
  • Python ๋ฒ„์ „ : 3.7.7
  • PyRadiomics ๋ฒ„์ „ 3.0

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

numpy 1.19.0์ด ์ค‘๋‹จ๋˜๊ณ  1.18.5 ๋ฏธ๋งŒ์ด ์—ฌ์ „ํžˆ ์ž‘๋™ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  4 ๋Œ“๊ธ€

numpy 1.19.0์ด ์ค‘๋‹จ๋˜๊ณ  1.18.5 ๋ฏธ๋งŒ์ด ์—ฌ์ „ํžˆ ์ž‘๋™ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค.

# 592์™€ ์ค‘๋ณต

# 592์™€ ์ค‘๋ณต

# 592์— ์–ธ๊ธ‰ ๋œ ์ˆ˜์ •์„ ์‹œ๋„ํ–ˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์–ธ๊ธ‰ํ•˜๋Š” ๊ฒƒ์„ ์žŠ์—ˆ์Šต๋‹ˆ๋‹ค.

# 592์— ์–ธ๊ธ‰ ๋œ ์ˆ˜์ •์„ ์‹œ๋„ํ–ˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์–ธ๊ธ‰ํ•˜๋Š” ๊ฒƒ์„ ์žŠ์—ˆ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ ์ˆ˜์ • ์‚ฌํ•ญ์„ ํ™•์žฅํ•˜๋Š” ์ค‘์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ # 592์—์„œ ์ฒ˜๋ฆฌ๋˜๋ฏ€๋กœ ์ƒˆ ๋ฌธ์ œ๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ํ•ด๋‹น ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ์—ฌ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰