-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathFeature.py
185 lines (135 loc) · 4.11 KB
/
Feature.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
from abc import ABC, abstractmethod
from features.Utils import *
"""
Radiomic feature base class
"""
class Feature(ABC):
"""
Initialization
@param name: short name of the feature
@param params: parameter list for the feature instance
"""
def __init__(self, name, params):
self.name = name
self.params = params
"""
Return short name of this feature
@return string without spaces
"""
def get_name(self):
return self.name
"""
Executes the feature
@param intensity_images: intensity values images
@param foreground_mask_images: foreground mask images
@param background_mask_images: background mask images
@param resolution: image resolution mm x mm x mm
@return number of return values matching get_return_value_descriptions
"""
@abstractmethod
def fun(self, intensity_images, foreground_mask_images, background_mask_images, resolution, **kwargs):
pass
"""
Returns list of output value short names
@return list of return value short names, without spaces
"""
@abstractmethod
def get_return_value_short_names(self):
pass
"""
Returns list of input value descriptions
@return list of stings, or None
"""
@abstractmethod
def get_input_descriptions(self):
pass
"""
Returns list of strings decsribing boilerplate information about feature, including citations, if nay
"""
@staticmethod
@abstractmethod
def get_boilerplate():
pass
"""
Returns true if background region is needed for this feature to be executed
"""
@abstractmethod
def need_background(self):
pass
"""
Returns true if foreground region is needed for this feature to be executed
"""
@abstractmethod
def need_foreground(self):
pass
"""
Returns number of required intensity images
"""
@abstractmethod
def number_of_intensity_images_required(self):
pass
"""
Returns number of required foreground mask images
"""
@abstractmethod
def number_of_foreground_mask_images_required(self):
pass
"""
Returns number of required background mask images
"""
@abstractmethod
def number_of_background_mask_images_required(self):
pass
"""
Radiomic feature base class for methods using one index lesion and background mask
"""
class FeatureIndexandBackground(Feature):
"""
Initialization
@param name: name of the feature class, without spaces
"""
def __init__(self, name, params):
super(FeatureIndexandBackground, self).__init__(name, params)
"""
Executes the feature
@param intensity_images: intensity values images
@param foreground_mask_images: foreground mask images
@param background_mask_images: background mask images
@param resolution: image resolution mm x mm x mm
@return number of return values matching get_return_value_descriptions
"""
@abstractmethod
def fun(self, intensity_images, foreground_mask_images, background_mask_images, resolution, **kwargs):
pass
"""
Returns list of output value short names
@return list of return value short names, without spaces
"""
@abstractmethod
def get_return_value_short_names(self):
pass
"""
Returns true if background region is needed for this feature to be executed
"""
def need_background(self):
return self.number_of_background_mask_images_required() > 0
"""
Returns true if foreground region is needed for this feature to be executed
"""
def need_foreground(self):
return self.number_of_foreground_mask_images_required() > 0
"""
Returns number of required intensity images
"""
def number_of_intensity_images_required(self):
return 1
"""
Returns number of required foreground mask images
"""
def number_of_foreground_mask_images_required(self):
return 1
"""
Returns number of required background mask images
"""
def number_of_background_mask_images_required(self):
return 1