diff --git a/CHANGELOG b/CHANGELOG index f400a65b..bc2a3531 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -6,7 +6,7 @@ All notable changes to this project will be documented in this file. The format is based on `Keep a Changelog `_ and this project adheres to `Semantic Versioning `_ -3.6.0 - 2022-03-31 +3.6.0 - 2022-04-05 ------------------ Added diff --git a/README.rst b/README.rst index e80b8a70..a7e5a9d4 100644 --- a/README.rst +++ b/README.rst @@ -1,4 +1,4 @@ -WORC v3.5.0 +WORC v3.6.0 =========== Workflow for Optimal Radiomics Classification diff --git a/WORC/doc/_build/doctrees/autogen/WORC.classification.doctree b/WORC/doc/_build/doctrees/autogen/WORC.classification.doctree index 09d10e6b..d2f87b8d 100644 Binary files a/WORC/doc/_build/doctrees/autogen/WORC.classification.doctree and b/WORC/doc/_build/doctrees/autogen/WORC.classification.doctree differ diff --git a/WORC/doc/_build/doctrees/autogen/WORC.config.doctree b/WORC/doc/_build/doctrees/autogen/WORC.config.doctree index 9a89809b..f4c0b516 100644 Binary files a/WORC/doc/_build/doctrees/autogen/WORC.config.doctree and b/WORC/doc/_build/doctrees/autogen/WORC.config.doctree differ diff --git a/WORC/doc/_build/doctrees/autogen/WORC.detectors.doctree b/WORC/doc/_build/doctrees/autogen/WORC.detectors.doctree index b9d0aed1..1123c4e6 100644 Binary files a/WORC/doc/_build/doctrees/autogen/WORC.detectors.doctree and b/WORC/doc/_build/doctrees/autogen/WORC.detectors.doctree differ diff --git a/WORC/doc/_build/doctrees/autogen/WORC.doctree b/WORC/doc/_build/doctrees/autogen/WORC.doctree index 3d1ffb47..d9eec74f 100644 Binary files a/WORC/doc/_build/doctrees/autogen/WORC.doctree and b/WORC/doc/_build/doctrees/autogen/WORC.doctree differ diff --git a/WORC/doc/_build/doctrees/autogen/WORC.facade.doctree b/WORC/doc/_build/doctrees/autogen/WORC.facade.doctree index 0f5863f6..bab24cad 100644 Binary files a/WORC/doc/_build/doctrees/autogen/WORC.facade.doctree and b/WORC/doc/_build/doctrees/autogen/WORC.facade.doctree differ diff --git a/WORC/doc/_build/doctrees/autogen/WORC.plotting.doctree b/WORC/doc/_build/doctrees/autogen/WORC.plotting.doctree index fb3ad1e6..067f481f 100644 Binary files a/WORC/doc/_build/doctrees/autogen/WORC.plotting.doctree and b/WORC/doc/_build/doctrees/autogen/WORC.plotting.doctree differ diff --git a/WORC/doc/_build/doctrees/autogen/WORC.tools.doctree b/WORC/doc/_build/doctrees/autogen/WORC.tools.doctree index bab52d65..6ba82923 100644 Binary files a/WORC/doc/_build/doctrees/autogen/WORC.tools.doctree and b/WORC/doc/_build/doctrees/autogen/WORC.tools.doctree differ diff --git a/WORC/doc/_build/doctrees/environment.pickle b/WORC/doc/_build/doctrees/environment.pickle index 8462c3c8..b4825bb7 100644 Binary files a/WORC/doc/_build/doctrees/environment.pickle and b/WORC/doc/_build/doctrees/environment.pickle differ diff --git a/WORC/doc/_build/doctrees/static/changelog.doctree b/WORC/doc/_build/doctrees/static/changelog.doctree index 3bdac01c..0f04fd3e 100644 Binary files a/WORC/doc/_build/doctrees/static/changelog.doctree and b/WORC/doc/_build/doctrees/static/changelog.doctree differ diff --git a/WORC/doc/_build/doctrees/static/configuration.doctree b/WORC/doc/_build/doctrees/static/configuration.doctree index 7b188c4c..0cf60ac0 100644 Binary files a/WORC/doc/_build/doctrees/static/configuration.doctree and b/WORC/doc/_build/doctrees/static/configuration.doctree differ diff --git a/WORC/doc/_build/doctrees/static/quick_start.doctree b/WORC/doc/_build/doctrees/static/quick_start.doctree index a520ad0a..625afb0f 100644 Binary files a/WORC/doc/_build/doctrees/static/quick_start.doctree and b/WORC/doc/_build/doctrees/static/quick_start.doctree differ diff --git a/WORC/doc/_build/html/.buildinfo b/WORC/doc/_build/html/.buildinfo index f95da29d..30198e6e 100644 --- a/WORC/doc/_build/html/.buildinfo +++ b/WORC/doc/_build/html/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: 200f1b705b4d367101e0261a187b00d0 +config: 471bd1391db5c3e45eba5232589e54ea tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/WORC/doc/_build/html/_modules/WORC/IOparser/config_WORC.html b/WORC/doc/_build/html/_modules/WORC/IOparser/config_WORC.html index bc889476..01787f0f 100644 --- a/WORC/doc/_build/html/_modules/WORC/IOparser/config_WORC.html +++ b/WORC/doc/_build/html/_modules/WORC/IOparser/config_WORC.html @@ -8,7 +8,7 @@ - WORC.IOparser.config_WORC — WORC 3.5.0 documentation + WORC.IOparser.config_WORC — WORC 3.6.0 documentation @@ -62,7 +62,7 @@
- 3.5.0 + 3.6.0
@@ -187,7 +187,7 @@

Source code for WORC.IOparser.config_WORC

 
 
 
[docs]def load_config(config_file_path): - """ Parse a WORC configuration file. + """Parse a WORC configuration file. Arguments: config_file_path: path to the configuration file to be parsed. diff --git a/WORC/doc/_build/html/_modules/WORC/IOparser/config_io_classifier.html b/WORC/doc/_build/html/_modules/WORC/IOparser/config_io_classifier.html index 104a52ce..baeae203 100644 --- a/WORC/doc/_build/html/_modules/WORC/IOparser/config_io_classifier.html +++ b/WORC/doc/_build/html/_modules/WORC/IOparser/config_io_classifier.html @@ -8,7 +8,7 @@ - WORC.IOparser.config_io_classifier — WORC 3.5.0 documentation + WORC.IOparser.config_io_classifier — WORC 3.6.0 documentation @@ -62,7 +62,7 @@
- 3.5.0 + 3.6.0
@@ -165,7 +165,7 @@

Source code for WORC.IOparser.config_io_classifier

 #!/usr/bin/env python
 
-# Copyright 2016-2021 Biomedical Imaging Group Rotterdam, Departments of
+# Copyright 2016-2022 Biomedical Imaging Group Rotterdam, Departments of
 # Medical Informatics and Radiology, Erasmus MC, Rotterdam, The Netherlands
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
@@ -210,7 +210,7 @@ 

Source code for WORC.IOparser.config_io_classifier

'Resampling': dict(), 'Imputation': dict(), 'Ensemble': dict(), 'Bootstrap': dict(), 'FeatPreProcess': dict(), 'Evaluation': dict(), - 'OneHotEncoding': dict()} + 'OneHotEncoding': dict(), 'SMAC': dict()} settings_dict['General']['cross_validation'] =\ settings['General'].getboolean('cross_validation') @@ -496,6 +496,31 @@

Source code for WORC.IOparser.config_io_classifier

[float(str(item).strip()) for item in settings['Classification']['XGB_colsample_bytree'].split(',')] + # Light GBM + settings_dict['Classification']['LightGBM_num_leaves'] =\ + [int(str(item).strip()) for item in + settings['Classification']['LightGBM_num_leaves'].split(',')] + + settings_dict['Classification']['LightGBM_max_depth'] =\ + [int(str(item).strip()) for item in + settings['Classification']['LightGBM_max_depth'].split(',')] + + settings_dict['Classification']['LightGBM_min_child_samples'] =\ + [int(str(item).strip()) for item in + settings['Classification']['LightGBM_min_child_samples'].split(',')] + + settings_dict['Classification']['LightGBM_reg_alpha'] =\ + [float(str(item).strip()) for item in + settings['Classification']['LightGBM_reg_alpha'].split(',')] + + settings_dict['Classification']['LightGBM_reg_lambda'] =\ + [float(str(item).strip()) for item in + settings['Classification']['LightGBM_reg_lambda'].split(',')] + + settings_dict['Classification']['LightGBM_min_child_weight'] =\ + [int(str(item).strip()) for item in + settings['Classification']['LightGBM_min_child_weight'].split(',')] + # Cross validation settings settings_dict['CrossValidation']['Type'] =\ str(settings['CrossValidation']['Type']) @@ -537,9 +562,26 @@

Source code for WORC.IOparser.config_io_classifier

settings_dict['HyperOptimization']['memory'] = \ str(settings['HyperOptimization']['memory']) + # Settings for SMAC + settings_dict['SMAC']['use'] =\ + settings['SMAC'].getboolean('use') + settings_dict['SMAC']['n_smac_cores'] =\ + int(settings['SMAC']['n_smac_cores']) + settings_dict['SMAC']['budget_type'] =\ + str(settings['SMAC']['budget_type']) + settings_dict['SMAC']['budget'] =\ + int(settings['SMAC']['budget']) + settings_dict['SMAC']['init_method'] =\ + str(settings['SMAC']['init_method']) + settings_dict['SMAC']['init_budget'] =\ + int(settings['SMAC']['init_budget']) + # Settings for ensembling - settings_dict['Ensemble']['Use'] =\ - settings['Ensemble'].getint('Use') + settings_dict['Ensemble']['Method'] =\ + str(settings['Ensemble']['Method']) + settings_dict['Ensemble']['Size'] =\ + int(settings['Ensemble']['Size']) + #settings['Ensemble'].getint('Use') settings_dict['Ensemble']['Metric'] =\ settings['Ensemble']['Metric'] diff --git a/WORC/doc/_build/html/_modules/WORC/IOparser/config_preprocessing.html b/WORC/doc/_build/html/_modules/WORC/IOparser/config_preprocessing.html index 28521e7b..7699458f 100644 --- a/WORC/doc/_build/html/_modules/WORC/IOparser/config_preprocessing.html +++ b/WORC/doc/_build/html/_modules/WORC/IOparser/config_preprocessing.html @@ -8,7 +8,7 @@ - WORC.IOparser.config_preprocessing — WORC 3.5.0 documentation + WORC.IOparser.config_preprocessing — WORC 3.6.0 documentation @@ -62,7 +62,7 @@
- 3.5.0 + 3.6.0
diff --git a/WORC/doc/_build/html/_modules/WORC/IOparser/config_segmentix.html b/WORC/doc/_build/html/_modules/WORC/IOparser/config_segmentix.html index ea6a5109..a99098e7 100644 --- a/WORC/doc/_build/html/_modules/WORC/IOparser/config_segmentix.html +++ b/WORC/doc/_build/html/_modules/WORC/IOparser/config_segmentix.html @@ -8,7 +8,7 @@ - WORC.IOparser.config_segmentix — WORC 3.5.0 documentation + WORC.IOparser.config_segmentix — WORC 3.6.0 documentation @@ -62,7 +62,7 @@
- 3.5.0 + 3.6.0
diff --git a/WORC/doc/_build/html/_modules/WORC/IOparser/file_io.html b/WORC/doc/_build/html/_modules/WORC/IOparser/file_io.html index 400d5530..f3fab5bc 100644 --- a/WORC/doc/_build/html/_modules/WORC/IOparser/file_io.html +++ b/WORC/doc/_build/html/_modules/WORC/IOparser/file_io.html @@ -8,7 +8,7 @@ - WORC.IOparser.file_io — WORC 3.5.0 documentation + WORC.IOparser.file_io — WORC 3.6.0 documentation @@ -62,7 +62,7 @@
- 3.5.0 + 3.6.0
diff --git a/WORC/doc/_build/html/_modules/WORC/WORC.html b/WORC/doc/_build/html/_modules/WORC/WORC.html index 3b413dec..526064a5 100644 --- a/WORC/doc/_build/html/_modules/WORC/WORC.html +++ b/WORC/doc/_build/html/_modules/WORC/WORC.html @@ -8,7 +8,7 @@ - WORC.WORC — WORC 3.5.0 documentation + WORC.WORC — WORC 3.6.0 documentation @@ -62,7 +62,7 @@
- 3.5.0 + 3.6.0
@@ -165,7 +165,7 @@

Source code for WORC.WORC

 #!/usr/bin/env python
 
-# Copyright 2016-2021 Biomedical Imaging Group Rotterdam, Departments of
+# Copyright 2016-2022 Biomedical Imaging Group Rotterdam, Departments of
 # Medical Informatics and Radiology, Erasmus MC, Rotterdam, The Netherlands
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
@@ -198,6 +198,7 @@ 

Source code for WORC.WORC

 from WORC.export.hyper_params_exporter import export_hyper_params_to_latex
 from urllib.parse import urlparse
 from urllib.request import url2pathname
+from WORC.tools.fingerprinting import quantitative_modalities, qualitative_modalities, all_modalities
 
 
 
[docs]class WORC(object): @@ -335,6 +336,7 @@

Source code for WORC.WORC

         self.fastr_memory_parameters['Segmentix'] = '6G'
         self.fastr_memory_parameters['ComBat'] = '12G'
         self.fastr_memory_parameters['PlotEstimator'] = '12G'
+        self.fastr_memory_parameters['Fingerprinter'] = '12G'
 
         if DebugDetector().do_detection():
             print(fastr.config)
@@ -359,9 +361,14 @@

Source code for WORC.WORC

         config['General']['TransformationNode'] = "elastix4.8/Transformix:4.8"
         config['General']['Joblib_ncores'] = '1'
         config['General']['Joblib_backend'] = 'threading'
-        config['General']['tempsave'] = 'False'
+        config['General']['tempsave'] = 'True'
         config['General']['AssumeSameImageAndMaskMetadata'] = 'False'
         config['General']['ComBat'] = 'False'
+        config['General']['Fingerprint'] = 'True'
+
+        # Fingerprinting
+        config['Fingerprinting'] = dict()
+        config['Fingerprinting']['max_num_image'] = '100'
 
         # Options for the object/patient labels that are used
         config['Labels'] = dict()
@@ -390,7 +397,7 @@ 

Source code for WORC.WORC

 
         # Segmentix
         config['Segmentix'] = dict()
-        config['Segmentix']['mask'] = 'subtract'
+        config['Segmentix']['mask'] = 'None'
         config['Segmentix']['segtype'] = 'None'
         config['Segmentix']['segradius'] = '5'
         config['Segmentix']['N_blobs'] = '1'
@@ -418,7 +425,10 @@ 

Source code for WORC.WORC

 
         # Parameter settings for PREDICT feature calculation
         # Defines only naming of modalities
-        config['ImageFeatures']['image_type'] = 'CT'
+        config['ImageFeatures']['image_type'] = ''
+
+        # How to extract the features in different dimension
+        config['ImageFeatures']['extraction_mode'] = '2.5D'
 
         # Define frequencies for gabor filter in pixels
         config['ImageFeatures']['gabor_frequencies'] = '0.05, 0.2, 0.5'
@@ -626,6 +636,14 @@ 

Source code for WORC.WORC

         config['Classification']['XGB_min_child_weight'] = '1, 6'
         config['Classification']['XGB_colsample_bytree'] = '0.3, 0.7'
 
+        # https://lightgbm.readthedocs.io/en/latest/Parameters-Tuning.html. Mainly prevent overfitting
+        config['Classification']['LightGBM_num_leaves'] = '5, 95'  # Default 31 so search around that
+        config['Classification']['LightGBM_max_depth'] = config['Classification']['XGB_max_depth'] # Good to limit explicitly to decrease compuytation time and limit overfitting
+        config['Classification']['LightGBM_min_child_samples'] = '5, 45'  # = min_data_in_leaf. Default 20
+        config['Classification']['LightGBM_reg_alpha'] = config['Classification']['LRC']
+        config['Classification']['LightGBM_reg_lambda'] = config['Classification']['LRC']
+        config['Classification']['LightGBM_min_child_weight'] = '-7, 4' # Default 1e-3
+
         # CrossValidation
         config['CrossValidation'] = dict()
         config['CrossValidation']['Type'] = 'random_split'
@@ -638,16 +656,26 @@ 

Source code for WORC.WORC

         config['HyperOptimization']['scoring_method'] = 'f1_weighted'
         config['HyperOptimization']['test_size'] = '0.2'
         config['HyperOptimization']['n_splits'] = '5'
-        config['HyperOptimization']['N_iterations'] = '1000'
+        config['HyperOptimization']['N_iterations'] = '1000' # represents either wallclock time limit or nr of evaluations when using SMAC
         config['HyperOptimization']['n_jobspercore'] = '200'  # only relevant when using fastr in classification
         config['HyperOptimization']['maxlen'] = '100'
         config['HyperOptimization']['ranking_score'] = 'test_score'
         config['HyperOptimization']['memory'] = '3G'
         config['HyperOptimization']['refit_workflows'] = 'False'
 
+        # SMAC options
+        config['SMAC'] = dict()
+        config['SMAC']['use'] = 'False'
+        config['SMAC']['n_smac_cores'] = '1'
+        config['SMAC']['budget_type'] = 'evals' # ['evals', 'time']
+        config['SMAC']['budget'] = '100' # Nr of evals or time in seconds
+        config['SMAC']['init_method'] = 'random' # ['sobol', 'random']
+        config['SMAC']['init_budget'] = '20' # Nr of evals
+
         # Ensemble options
         config['Ensemble'] = dict()
-        config['Ensemble']['Use'] = '100'
+        config['Ensemble']['Method'] = 'top_N' # ['Single', 'top_N', 'FitNumber', 'ForwardSelection', 'Caruana', 'Bagging']
+        config['Ensemble']['Size'] = '100' # Size of ensemble in top_N, or number of bags in Bagging
         config['Ensemble']['Metric'] = 'Default'
 
         # Evaluation options
@@ -657,7 +685,7 @@ 

Source code for WORC.WORC

         # Bootstrap options
         config['Bootstrap'] = dict()
         config['Bootstrap']['Use'] = 'False'
-        config['Bootstrap']['N_iterations'] = '1000'
+        config['Bootstrap']['N_iterations'] = '10000'
 
         return config
@@ -699,9 +727,10 @@

Source code for WORC.WORC

                         self.configs = [self.defaultconfig()] * len(self.images_train)
                     else:
                         self.configs = [self.defaultconfig()] * len(self.features_train)
+
                 self.network = fastr.create_network(self.name)
 
-                # BUG: We currently use the first configuration as general config
+                # NOTE: We currently use the first configuration as general config
                 image_types = list()
                 for c in range(len(self.configs)):
                     if type(self.configs[c]) == str:
@@ -709,6 +738,10 @@ 

Source code for WORC.WORC

                         self.configs[c] = config_io.load_config(self.configs[c])
                     image_types.append(self.configs[c]['ImageFeatures']['image_type'])
 
+                if self.configs[0]['General']['Fingerprint'] == 'True' and any(imt not in all_modalities for imt in image_types):
+                    m = f'One of your image types {image_types} is not one of the valid image types {quantitative_modalities + qualitative_modalities}. This is mandatory to set when performing fingerprinting, see the WORC Documentation (https://worc.readthedocs.io/en/latest/static/configuration.html#imagefeatures).'
+                    raise WORCexceptions.WORCValueError(m)
+
                 # Create config source
                 self.source_class_config = self.network.create_source('ParameterFile', id='config_classification_source', node_group='conf', step_id='general_sources')
 
@@ -717,6 +750,7 @@ 

Source code for WORC.WORC

                 if self.labels_test:
                     self.source_patientclass_test = self.network.create_source('PatientInfoFile', id='patientclass_test', node_group='pctest', step_id='test_sources')
 
+                # Add classification node
                 memory = self.fastr_memory_parameters['Classification']
                 self.classify = self.network.create_node('worc/TrainClassifier:1.0',
                                                          tool_version='1.0',
@@ -724,14 +758,35 @@ 

Source code for WORC.WORC

                                                          resources=ResourceLimit(memory=memory),
                                                          step_id='WorkflowOptimization')
 
+                # Add fingerprinting
+                if self.configs[0]['General']['Fingerprint'] == 'True':
+                    self.node_fingerprinters = dict()
+                    self.links_fingerprinting = dict()
+
+                    self.add_fingerprinter(id='classification', type='classification', config_source=self.source_class_config.output)
+
+                    # Link output of fingerprinter to classification node
+                    self.link_class_1 = self.network.create_link(self.node_fingerprinters['classification'].outputs['config'], self.classify.inputs['config'])
+                    # self.link_class_1.collapse = 'conf'
+                else:
+                    # Directly parse config to classify node
+                    self.link_class_1 = self.network.create_link(self.source_class_config.output, self.classify.inputs['config'])
+                    self.link_class_1.collapse = 'conf'
+
                 if self.fixedsplits:
                     self.fixedsplits_node = self.network.create_source('CSVFile', id='fixedsplits_source', node_group='conf', step_id='general_sources')
                     self.classify.inputs['fixedsplits'] = self.fixedsplits_node.output
 
-                self.source_Ensemble =\
-                    self.network.create_constant('String', [self.configs[0]['Ensemble']['Use']],
-                                                 id='Ensemble',
+                self.source_ensemble_method =\
+                    self.network.create_constant('String', [self.configs[0]['Ensemble']['Method']],
+                                                 id='ensemble_method',
+                                                 step_id='Evaluation')
+
+                self.source_ensemble_size =\
+                    self.network.create_constant('String', [self.configs[0]['Ensemble']['Size']],
+                                                 id='ensemble_size',
                                                  step_id='Evaluation')
+
                 self.source_LabelType =\
                     self.network.create_constant('String', [self.configs[0]['Labels']['label_names']],
                                                  id='LabelType',
@@ -750,13 +805,16 @@ 

Source code for WORC.WORC

                 self.sink_class_config = self.network.create_sink('ParameterFile', id='config_classification_sink', node_group='conf', step_id='general_sinks')
 
                 # Links
-                self.sink_class_config.input = self.source_class_config.output
-                self.link_class_1 = self.network.create_link(self.source_class_config.output, self.classify.inputs['config'])
+                if self.configs[0]['General']['Fingerprint'] == 'True':
+                    self.sink_class_config.input = self.node_fingerprinters['classification'].outputs['config']
+                else:
+                    self.sink_class_config.input = self.source_class_config.output
+
                 self.link_class_2 = self.network.create_link(self.source_patientclass_train.output, self.classify.inputs['patientclass_train'])
-                self.link_class_1.collapse = 'conf'
                 self.link_class_2.collapse = 'pctrain'
 
-                self.plot_estimator.inputs['ensemble'] = self.source_Ensemble.output
+                self.plot_estimator.inputs['ensemble_method'] = self.source_ensemble_method.output
+                self.plot_estimator.inputs['ensemble_size'] = self.source_ensemble_size.output
                 self.plot_estimator.inputs['label_type'] = self.source_LabelType.output
 
                 if self.labels_test:
@@ -767,6 +825,12 @@ 

Source code for WORC.WORC

                 self.plot_estimator.inputs['prediction'] = self.classify.outputs['classification']
                 self.plot_estimator.inputs['pinfo'] = pinfo
 
+                # Optional SMAC output
+                if self.configs[0]['SMAC']['use'] == 'True':
+                   self.sink_smac_results = self.network.create_sink('JsonFile', id='smac_results',
+                                                                     step_id='general_sinks')
+                   self.sink_smac_results.input = self.classify.outputs['smac_results']
+
                 if self.TrainTest:
                     # FIXME: the naming here is ugly
                     self.link_class_3 = self.network.create_link(self.source_patientclass_test.output, self.classify.inputs['patientclass_test'])
@@ -800,6 +864,7 @@ 

Source code for WORC.WORC

                     self.preprocessing_train = dict()
                     self.sources_images_train = dict()
                     self.sinks_features_train = dict()
+                    self.sinks_configs = dict()
                     self.converters_im_train = dict()
                     self.converters_seg_train = dict()
                     self.links_C1_train = dict()
@@ -887,7 +952,9 @@ 

Source code for WORC.WORC

                         self.modlabels.append(label)
 
                         # Create required sources and sinks
-                        self.sources_parameters[label] = self.network.create_source('ParameterFile', id='config_' + label, step_id='general_sources')
+                        self.sources_parameters[label] = self.network.create_source('ParameterFile', id=f'config_{label}', step_id='general_sources')
+                        self.sinks_configs[label] = self.network.create_sink('ParameterFile', id=f'config_{label}_sink', node_group='conf', step_id='general_sinks')
+
                         self.sources_images_train[label] = self.network.create_source('ITKImageFile', id='images_train_' + label, node_group='train', step_id='train_sources')
                         if self.TrainTest:
                             self.sources_images_test[label] = self.network.create_source('ITKImageFile', id='images_test_' + label, node_group='test', step_id='test_sources')
@@ -927,7 +994,7 @@ 

Source code for WORC.WORC

                             self.converters_masks_test[label].inputs['image'] = self.sources_masks_test[label].output
 
                         # First convert the images
-                        if any(modality in mod for modality in ['MR', 'CT', 'MG', 'PET']):
+                        if any(modality in mod for modality in all_modalities):
                             # Use WORC PXCastConvet for converting image formats
                             memory = self.fastr_memory_parameters['WORCCastConvert']
                             self.converters_im_train[label] =\
@@ -952,6 +1019,23 @@ 

Source code for WORC.WORC

                         if self.TrainTest:
                             self.converters_im_test[label].inputs['image'] = self.sources_images_test[label].output
 
+                        # -----------------------------------------------------
+                        # Add fingerprinting
+                        if self.configs[0]['General']['Fingerprint'] == 'True':
+                            self.add_fingerprinter(id=label, type='images', config_source=self.sources_parameters[label].output)
+                            self.links_fingerprinting[f'{label}_images'] = self.network.create_link(self.converters_im_train[label].outputs['image'], self.node_fingerprinters[label].inputs['images_train'])
+                            self.links_fingerprinting[f'{label}_images'].collapse = 'train'
+
+                            self.sinks_configs[label].input = self.node_fingerprinters[label].outputs['config']
+
+                            if nmod == 0:
+                                # Also add images from first modality for classification fingerprinter
+                                self.links_fingerprinting['classification'] = self.network.create_link(self.converters_im_train[label].outputs['image'], self.node_fingerprinters['classification'].inputs['images_train'])
+                                self.links_fingerprinting['classification'].collapse = 'train'
+
+                        else:
+                            self.sinks_configs[label].input = self.sources_parameters[label].output
+
                         # -----------------------------------------------------
                         # Preprocessing
                         preprocess_node = str(self.configs[nmod]['General']['Preprocessing'])
@@ -1015,6 +1099,11 @@ 

Source code for WORC.WORC

                                 self.converters_seg_test[label].inputs['image'] =\
                                     self.sources_segmentations_test[label].output
 
+                            # Add to fingerprinting if required
+                            if self.configs[0]['General']['Fingerprint'] == 'True':
+                                self.links_fingerprinting[f'{label}_segmentations'] = self.network.create_link(self.converters_seg_train[label].outputs['image'], self.node_fingerprinters[label].inputs['segmentations_train'])
+                                self.links_fingerprinting[f'{label}_segmentations'].collapse = 'train'
+
                         elif self.segmode == 'Register':
                             # ---------------------------------------------
                             # Registration nodes: Align segmentation of first
@@ -1146,12 +1235,49 @@ 

Source code for WORC.WORC

                             self.links_C1_test[label] = self.classify.inputs['features_test'][str(label)] << self.sources_features_test[label].output
                             self.links_C1_test[label].collapse = 'test'
 
+                        # Add input to fingerprinting for classification
+                        if self.configs[0]['General']['Fingerprint'] == 'True':
+                            if num == 0:
+                                self.links_fingerprinting['classification'] = self.network.create_link(self.sources_features_train[label].output, self.node_fingerprinters['classification'].inputs['features_train'])
+                                self.links_fingerprinting['classification'].collapse = 'train'
 
             else:
                 raise WORCexceptions.WORCIOError("Please provide labels.")
         else:
             raise WORCexceptions.WORCIOError("Please provide either images or features.")
+
[docs] def add_fingerprinter(self, id, type, config_source): + """Add WORC Fingerprinter to the network. + + Note: applied per imaging sequence, or per feature file if no + images are present. + """ + # Add fingerprinting tool + memory = self.fastr_memory_parameters['Fingerprinter'] + fingerprinter_node = self.network.create_node('worc/Fingerprinter:1.0', + tool_version='1.0', + id=f'fingerprinter_{id}', + resources=ResourceLimit(memory=memory), + step_id='FingerPrinting') + + # Add general sources to fingerprinting node + fingerprinter_node.inputs['config'] = config_source + fingerprinter_node.inputs['patientclass_train'] = self.source_patientclass_train.output + + # Add type input + valid_types = ['classification', 'images'] + if type not in valid_types: + raise WORCexceptions.WORCValueError(f'Type {type} is not valid for fingeprinting. Should be one of {valid_types}.') + + type_node = self.network.create_constant('String', type, + id=f'type_fingerprint_{id}', + node_group='train', + step_id='FingerPrinting') + fingerprinter_node.inputs['type'] = type_node.output + + # Add to list of fingerprinting nodes + self.node_fingerprinters[id] = fingerprinter_node
+
[docs] def add_ComBat(self): """Add ComBat harmonization to the network. @@ -1169,7 +1295,11 @@

Source code for WORC.WORC

         self.sinks_features_train_ComBat = self.network.create_sink('HDF5', id='features_train_ComBat', step_id='ComBat')
 
         # Create links for inputs
-        self.link_combat_1 = self.network.create_link(self.source_class_config.output, self.ComBat.inputs['config'])
+        if self.configs[0]['General']['Fingerprint'] == 'True':
+            self.link_combat_1 = self.network.create_link(self.node_fingerprinters['classification'].outputs['config'], self.ComBat.inputs['config'])
+        else:
+            self.link_combat_1 = self.network.create_link(self.source_class_config.output, self.ComBat.inputs['config'])
+
         self.link_combat_2 = self.network.create_link(self.source_patientclass_train.output, self.ComBat.inputs['patientclass_train'])
         self.link_combat_1.collapse = 'conf'
         self.link_combat_2.collapse = 'pctrain'
@@ -1202,11 +1332,19 @@ 

Source code for WORC.WORC

             self.preprocessing_test[label] = self.network.create_node(preprocess_node, tool_version='1.0', id='preprocessing_test_' + label, resources=ResourceLimit(memory=memory), step_id='Preprocessing')
 
         # Create required links
-        self.preprocessing_train[label].inputs['parameters'] = self.sources_parameters[label].output
+        if self.configs[0]['General']['Fingerprint'] == 'True':
+            self.preprocessing_train[label].inputs['parameters'] = self.node_fingerprinters[label].outputs['config']
+        else:
+            self.preprocessing_train[label].inputs['parameters'] = self.sources_parameters[label].output
+
         self.preprocessing_train[label].inputs['image'] = self.converters_im_train[label].outputs['image']
 
         if self.TrainTest:
-            self.preprocessing_test[label].inputs['parameters'] = self.sources_parameters[label].output
+            if self.configs[0]['General']['Fingerprint'] == 'True':
+                self.preprocessing_test[label].inputs['parameters'] = self.node_fingerprinters[label].outputs['config']
+            else:
+                self.preprocessing_test[label].inputs['parameters'] = self.sources_parameters[label].output
+
             self.preprocessing_test[label].inputs['image'] = self.converters_im_test[label].outputs['image']
 
         if self.metadata_train and len(self.metadata_train) >= nmod + 1:
@@ -1249,12 +1387,13 @@ 

Source code for WORC.WORC

 
         # Check if we need to add pyradiomics specific sources
         if 'pyradiomics' in calcfeat_node.lower():
-            # Add a config source
-            self.source_config_pyradiomics[label] =\
-                self.network.create_source('YamlFile',
-                                           id='config_pyradiomics_' + label,
-                                           node_group='train',
-                                           step_id='Feature_Extraction')
+            if self.configs[0]['General']['Fingerprint'] != 'True':
+                # Add a config source
+                self.source_config_pyradiomics[label] =\
+                    self.network.create_source('YamlFile',
+                                               id='config_pyradiomics_' + label,
+                                               node_group='train',
+                                               step_id='Feature_Extraction')
 
             # Add a format source, which we are going to set to a constant
             # And attach to the tool node
@@ -1273,22 +1412,38 @@ 

Source code for WORC.WORC

         # Create required links
         # We can have a different config for different tools
         if 'pyradiomics' in calcfeat_node.lower():
-            node_train.inputs['parameters'] =\
-                self.source_config_pyradiomics[label].output
+            if self.configs[0]['General']['Fingerprint'] != 'True':
+                node_train.inputs['parameters'] =\
+                    self.source_config_pyradiomics[label].output
+            else:
+                node_train.inputs['parameters'] =\
+                    self.node_fingerprinters[label].outputs['config_pyradiomics']
         else:
-            node_train.inputs['parameters'] =\
-                self.sources_parameters[label].output
+            if self.configs[0]['General']['Fingerprint'] == 'True':
+                node_train.inputs['parameters'] =\
+                    self.node_fingerprinters[label].outputs['config']
+            else:
+                node_train.inputs['parameters'] =\
+                    self.sources_parameters[label].output
 
         node_train.inputs['image'] =\
             self.preprocessing_train[label].outputs['image']
 
         if self.TrainTest:
             if 'pyradiomics' in calcfeat_node.lower():
-                node_test.inputs['parameters'] =\
-                    self.source_config_pyradiomics[label].output
+                if self.configs[0]['General']['Fingerprint'] != 'True':
+                    node_test.inputs['parameters'] =\
+                        self.source_config_pyradiomics[label].output
+                else:
+                    node_test.inputs['parameters'] =\
+                        self.node_fingerprinters[label].outputs['config_pyradiomics']
             else:
-                node_test.inputs['parameters'] =\
-                    self.sources_parameters[label].output
+                if self.configs[0]['General']['Fingerprint'] == 'True':
+                    node_test.inputs['parameters'] =\
+                        self.node_fingerprinters[label].outputs['config']
+                else:
+                    node_test.inputs['parameters'] =\
+                        self.sources_parameters[label].output
 
             node_test.inputs['image'] =\
                 self.preprocessing_test[label].outputs['image']
@@ -1346,7 +1501,11 @@ 

Source code for WORC.WORC

                                          step_id='Feature_Extraction')
 
         conv_train.inputs['toolbox'] = self.source_toolbox_name[label].output
-        conv_train.inputs['config'] = self.sources_parameters[label].output
+        if self.configs[0]['General']['Fingerprint'] == 'True':
+            conv_train.inputs['config'] =\
+                self.node_fingerprinters[label].outputs['config']
+        else:
+            conv_train.inputs['config'] = self.sources_parameters[label].output
 
         if self.TrainTest:
             conv_test =\
@@ -1358,7 +1517,12 @@ 

Source code for WORC.WORC

 
             conv_test.inputs['feat_in'] = node_test.outputs['features']
             conv_test.inputs['toolbox'] = self.source_toolbox_name[label].output
-            conv_test.inputs['config'] = self.sources_parameters[label].output
+            if self.configs[0]['General']['Fingerprint'] == 'True':
+                conv_test.inputs['config'] =\
+                    self.node_fingerprinters[label].outputs['config']
+            else:
+                conv_test.inputs['config'] =\
+                    self.sources_parameters[label].output
 
         # Append to nodes to list
         self.calcfeatures_train[label].append(node_train)
@@ -1642,6 +1806,11 @@ 

Source code for WORC.WORC

                         self.calcfeatures_test[label][i_node].inputs['segmentation'] =\
                             self.transformix_seg_nodes_test[label].outputs['image']
 
+                # Add to fingerprinting if required
+                if self.configs[0]['General']['Fingerprint'] == 'True':
+                    self.links_fingerprinting[f'{label}_segmentations'] = self.network.create_link(self.transformix_seg_nodes_train[label].outputs['image'], self.node_fingerprinters[label].inputs['segmentations_train'])
+                    self.links_fingerprinting[f'{label}_segmentations'].collapse = 'train'
+
             # Save outputfor the training set
             self.sinks_transformations_train[label] =\
                 self.network.create_sink('ElastixTransformFile',
@@ -1732,8 +1901,13 @@ 

Source code for WORC.WORC

                 self.converters_seg_train[label].outputs['image']
 
         # Input the parameters
-        self.nodes_segmentix_train[label].inputs['parameters'] =\
-            self.sources_parameters[label].output
+        if self.configs[0]['General']['Fingerprint'] == 'True':
+            self.nodes_segmentix_train[label].inputs['parameters'] =\
+                self.node_fingerprinters[label].outputs['config']
+        else:
+            self.nodes_segmentix_train[label].inputs['parameters'] =\
+                self.sources_parameters[label].output
+
         self.sinks_segmentations_segmentix_train[label].input =\
             self.nodes_segmentix_train[label].outputs['segmentation_out']
 
@@ -1772,8 +1946,13 @@ 

Source code for WORC.WORC

                 self.nodes_segmentix_test[label].inputs['segmentation_in'] =\
                     self.converters_seg_test[label].outputs['image']
 
-            self.nodes_segmentix_test[label].inputs['parameters'] =\
-                self.sources_parameters[label].output
+            if self.configs[0]['General']['Fingerprint'] == 'True':
+                self.nodes_segmentix_test[label].inputs['parameters'] =\
+                    self.node_fingerprinters[label].outputs['config']
+            else:
+                self.nodes_segmentix_test[label].inputs['parameters'] =\
+                    self.sources_parameters[label].output
+
             self.sinks_segmentations_segmentix_test[label].input =\
                 self.nodes_segmentix_test[label].outputs['segmentation_out']
 
@@ -1785,7 +1964,6 @@ 

Source code for WORC.WORC

                 self.calcfeatures_test[label][i_node].inputs['segmentation'] =\
                     self.nodes_segmentix_test[label].outputs['segmentation_out']
 
-
         if self.masks_train and len(self.masks_train) >= nmod + 1:
             # Use masks
             self.nodes_segmentix_train[label].inputs['mask'] =\
@@ -1807,10 +1985,7 @@ 

Source code for WORC.WORC

 
         # fixed splits
         if self.fixedsplits:
-          self.source_data['fixedsplits_source'] = self.fixedsplits
-
-        # Generate gridsearch parameter files if required
-        self.source_data['config_classification_source'] = self.fastrconfigs[0]
+            self.source_data['fixedsplits_source'] = self.fixedsplits
 
         # Set source and sink data
         self.source_data['patientclass_train'] = self.labels_train
@@ -1818,16 +1993,17 @@ 

Source code for WORC.WORC

 
         self.sink_data['classification'] = ("vfs://output/{}/estimator_{{sample_id}}_{{cardinality}}{{ext}}").format(self.name)
         self.sink_data['performance'] = ("vfs://output/{}/performance_{{sample_id}}_{{cardinality}}{{ext}}").format(self.name)
+        self.sink_data['smac_results'] = ("vfs://output/{}/smac_results_{{sample_id}}_{{cardinality}}{{ext}}").format(self.name)
         self.sink_data['config_classification_sink'] = ("vfs://output/{}/config_{{sample_id}}_{{cardinality}}{{ext}}").format(self.name)
         self.sink_data['features_train_ComBat'] = ("vfs://output/{}/ComBat/features_ComBat_{{sample_id}}_{{cardinality}}{{ext}}").format(self.name)
         self.sink_data['features_test_ComBat'] = ("vfs://output/{}/ComBat/features_ComBat_{{sample_id}}_{{cardinality}}{{ext}}").format(self.name)
 
-
-
         # Set the source data from the WORC objects you created
         for num, label in enumerate(self.modlabels):
             self.source_data['config_' + label] = self.fastrconfigs[num]
-            if self.pyradiomics_configs:
+            self.sink_data[f'config_{label}_sink'] = f"vfs://output/{self.name}/config_{label}_{{sample_id}}_{{cardinality}}{{ext}}"
+
+            if 'pyradiomics' in self.configs[0]['General']['FeatureCalculators'] and self.configs[0]['General']['Fingerprint'] != 'True':
                 self.source_data['config_pyradiomics_' + label] = self.pyradiomics_configs[num]
 
             # Add train data sources
@@ -1908,7 +2084,14 @@ 

Source code for WORC.WORC

                         self.sink_data['transformations_test_' + label] = ("vfs://output/{}/Elastix/transformation_{}_{{sample_id}}_{{cardinality}}{{ext}}").format(self.name, label)
 
         if self._add_evaluation:
-            self.Evaluate.set()
+ self.Evaluate.set() + + # Generate gridsearch parameter files if required + self.source_data['config_classification_source'] = self.fastrconfigs[0] + + # Give configuration sources to WORC + for num, label in enumerate(self.modlabels): + self.source_data['config_' + label] = self.fastrconfigs[num]
[docs] def execute(self): """Execute the network through the fastr.network.execute command.""" @@ -1970,14 +2153,16 @@

Source code for WORC.WORC

                 config = configparser.ConfigParser()
                 config.read(c)
                 c = config
+
             cfile = os.path.join(self.fastr_tmpdir, f"config_{self.name}_{num}.ini")
             if not os.path.exists(os.path.dirname(cfile)):
                 os.makedirs(os.path.dirname(cfile))
+
             with open(cfile, 'w') as configfile:
                 c.write(configfile)
 
-            # If PyRadiomics is used, also write a config for PyRadiomics
-            if 'pyradiomics' in c['General']['FeatureCalculators']:
+            # If PyRadiomics is used and there is no finterprinting, also write a config for PyRadiomics
+            if 'pyradiomics' in c['General']['FeatureCalculators'] and self.configs[0]['General']['Fingerprint'] != 'True':
                 cfile_pyradiomics = os.path.join(self.fastr_tmpdir, f"config_pyradiomics_{self.name}_{num}.yaml")
                 config_pyradiomics = io.convert_config_pyradiomics(c)
                 with open(cfile_pyradiomics, 'w') as file:
diff --git a/WORC/doc/_build/html/_modules/WORC/addexceptions.html b/WORC/doc/_build/html/_modules/WORC/addexceptions.html
index b751c379..dbd4270e 100644
--- a/WORC/doc/_build/html/_modules/WORC/addexceptions.html
+++ b/WORC/doc/_build/html/_modules/WORC/addexceptions.html
@@ -8,7 +8,7 @@
   
   
   
-  WORC.addexceptions — WORC 3.5.0 documentation
+  WORC.addexceptions — WORC 3.6.0 documentation
   
 
   
@@ -62,7 +62,7 @@
             
             
               
- 3.5.0 + 3.6.0
diff --git a/WORC/doc/_build/html/_modules/WORC/classification/AdvancedSampler.html b/WORC/doc/_build/html/_modules/WORC/classification/AdvancedSampler.html index 7422e845..0e554819 100644 --- a/WORC/doc/_build/html/_modules/WORC/classification/AdvancedSampler.html +++ b/WORC/doc/_build/html/_modules/WORC/classification/AdvancedSampler.html @@ -8,7 +8,7 @@ - WORC.classification.AdvancedSampler — WORC 3.5.0 documentation + WORC.classification.AdvancedSampler — WORC 3.6.0 documentation @@ -62,7 +62,7 @@
- 3.5.0 + 3.6.0
diff --git a/WORC/doc/_build/html/_modules/WORC/classification/ObjectSampler.html b/WORC/doc/_build/html/_modules/WORC/classification/ObjectSampler.html index 0ba21179..6c8bf1fa 100644 --- a/WORC/doc/_build/html/_modules/WORC/classification/ObjectSampler.html +++ b/WORC/doc/_build/html/_modules/WORC/classification/ObjectSampler.html @@ -8,7 +8,7 @@ - WORC.classification.ObjectSampler — WORC 3.5.0 documentation + WORC.classification.ObjectSampler — WORC 3.6.0 documentation @@ -62,7 +62,7 @@
- 3.5.0 + 3.6.0
diff --git a/WORC/doc/_build/html/_modules/WORC/classification/RankedSVM.html b/WORC/doc/_build/html/_modules/WORC/classification/RankedSVM.html index d6cacddb..8485a0fd 100644 --- a/WORC/doc/_build/html/_modules/WORC/classification/RankedSVM.html +++ b/WORC/doc/_build/html/_modules/WORC/classification/RankedSVM.html @@ -8,7 +8,7 @@ - WORC.classification.RankedSVM — WORC 3.5.0 documentation + WORC.classification.RankedSVM — WORC 3.6.0 documentation @@ -62,7 +62,7 @@
- 3.5.0 + 3.6.0
diff --git a/WORC/doc/_build/html/_modules/WORC/classification/SearchCV.html b/WORC/doc/_build/html/_modules/WORC/classification/SearchCV.html index 6702946e..237308ee 100644 --- a/WORC/doc/_build/html/_modules/WORC/classification/SearchCV.html +++ b/WORC/doc/_build/html/_modules/WORC/classification/SearchCV.html @@ -8,7 +8,7 @@ - WORC.classification.SearchCV — WORC 3.5.0 documentation + WORC.classification.SearchCV — WORC 3.6.0 documentation @@ -62,7 +62,7 @@
- 3.5.0 + 3.6.0
@@ -221,6 +221,11 @@

Source code for WORC.classification.SearchCV

from WORC.detectors.detectors import DebugDetector
 import WORC.addexceptions as WORCexceptions
 
+# Imports used in the Bayesian optimization
+from WORC.classification.smac import build_smac_config
+from datetime import datetime
+import copy
+
 
 
[docs]def rms_score(truth, prediction): """Root-mean-square-error metric.""" @@ -522,10 +527,10 @@

Source code for WORC.classification.SearchCV

def __init__(self, param_distributions={}, n_iter=10, scoring=None,
                  fit_params=None, n_jobs=1, iid=True,
                  refit=True, cv=None, verbose=0, pre_dispatch='2*n_jobs',
-                 random_state=None, error_score='raise',
-                 return_train_score=True,
+                 random_state=None, error_score='raise', return_train_score=True,
                  n_jobspercore=100, maxlen=100, fastr_plugin=None, memory='2G',
-                 ranking_score='test_score', refit_workflows=False):
+                 ranking_score='test_score', refit_workflows=False,
+                 ensemble_validation_score=None):
         """Initialize SearchCV Object."""
         # Added for fastr and joblib executions
         self.param_distributions = param_distributions
@@ -535,6 +540,7 @@ 

Source code for WORC.classification.SearchCV

self.ensemble = list()
         self.fastr_plugin = fastr_plugin
         self.memory = memory
+        self.ensemble_validation_score = ensemble_validation_score
 
         # Below are the defaults from sklearn
         self.scoring = scoring
@@ -798,7 +804,7 @@ 

Source code for WORC.classification.SearchCV

[docs]    def process_fit(self, n_splits, parameters_all,
                     test_sample_counts, test_score_dicts,
                     train_score_dicts, fit_time, score_time, cv_iter,
-                    X, y, fitted_workflows=None):
+                    X, y, fitted_workflows=None, use_smac=False):
         """Process a fit.
 
         Process the outcomes of a SearchCV fit and find the best settings
@@ -817,7 +823,11 @@ 

Source code for WORC.classification.SearchCV

# We take only one result per split, default by sklearn
         pipelines_per_split = int(len(parameters_all) / n_splits)
-        candidate_params_all = list(parameters_all[:pipelines_per_split])
+        # Change the list of parameters based on the shape of the input
+        if use_smac:
+            candidate_params_all = list(parameters_all[::n_splits])
+        else:
+            candidate_params_all = list(parameters_all[:pipelines_per_split])
         n_candidates = len(candidate_params_all)
 
         # Store some of the resulting scores
@@ -825,9 +835,13 @@ 

Source code for WORC.classification.SearchCV

# Computed the (weighted) mean and std for test scores alone
         def _store(key_name, array, weights=None, splits=False, rank=False):
-            """A small helper to store the scores/times to the cv_results_."""
-            array = np.transpose(np.array(array, dtype=np.float64).reshape(n_splits,
-                                                                           n_candidates))
+            """A small helper to store the scores/times to the cv_results_"""
+            # Change processing based on the shape of the input
+            if use_smac:
+                array = np.array(array, dtype=np.float64).reshape(n_candidates, n_splits)
+            else:
+                array = np.transpose(np.array(array, dtype=np.float64).reshape(n_splits,
+                                                                               n_candidates))
 
             if splits:
                 for split_i in range(n_splits):
@@ -972,6 +986,9 @@ 

Source code for WORC.classification.SearchCV

n_candidates = len(candidate_params_all)
         results['params'] = candidate_params_all
 
+        # Calculate and store the total_fit_time of this train/test CV
+        results['total_fit_time'] = np.sum(fit_time)
+
         # Store the atributes of the best performing estimator
         best_index = np.flatnonzero(results["rank_" + self.ranking_score] == 1)[0]
         best_parameters_all = candidate_params_all[best_index]
@@ -1087,34 +1104,41 @@ 

Source code for WORC.classification.SearchCV

return self
-
[docs] def create_ensemble(self, X_train, Y_train, verbose=None, initialize=True, - scoring=None, method=50, overfit_scaler=False): - """Create ensemble of multiple workflows. +
[docs] def create_ensemble(self, X_train, Y_train, verbose=None, initialize=False, + scoring=None, method='top_N', size=50, overfit_scaler=False): + """ Create an (optimal) ensemble of a combination of hyperparameter settings and the associated groupsels, PCAs, estimators etc. - Based on Caruana et al. 2004, but a little different: - - 1. Recreate the training/validation splits for a n-fold cross validation. - 2. For each fold: - a. Start with an empty ensemble - b. Create starting ensemble by adding N individually best performing - models on the validation set. N is tuned on the validation set. - c. Add model that improves ensemble performance on validation set the most, with replacement. - d. Repeat (c) untill performance does not increase - - The performance metric is the same as for the original hyperparameter - search, i.e. probably the F1-score for classification and r2-score - for regression. However, we recommend using the SAR score, as this is - more universal. - - Method: top50 or Caruana + # The following ensemble methods are supported: + # Single: + # only use the single best classifier. Performance is computed + # using the same predict function as during the optimization + # top_N: + # make an ensemble of the best N individual classifiers, where N is + # given as an input. If N==1, then only the single best classifier is + # used, but it is evaluated using predict_proba. + # FitNumber: + # make an ensemble of the best N individual classifiers, choosing N + # that gives the highest performance + # ForwardSelection: + # add the model that optimizes the total ensemble performance, + # then repeat with replacement until there is no more improvement + # in performance + # Caruana: + # for a fixed number of iterations, add the model that optimizes + # the total ensemble performance, then choose the ensemble size + # which gave the best performance + # Bagging: + # same as Caruana method, but the final ensemble is a weighted average + # of a number of ensembles that each use only a subset of the available + # models """ # Define a function for scoring the performance of a classifier def compute_performance(scoring, Y_valid_truth, Y_valid_score): - if scoring == 'f1_weighted': + if scoring == 'f1_weighted' or scoring == 'f1': # Convert score to binaries first for num in range(0, len(Y_valid_score)): if Y_valid_score[num] >= 0.5: @@ -1157,109 +1181,134 @@

Source code for WORC.classification.SearchCV

base_estimator = RandomizedSearchCVfastr()
         elif type(self) == RandomizedSearchCVJoblib:
             base_estimator = RandomizedSearchCVJoblib()
-
-        if type(method) is int:
-            # Simply take the top50 best hyperparameters
-            if verbose:
-                print(f'Creating ensemble using top {str(method)} individual classifiers.')
-            if method == 1:
-                # Next functions expect list
-                ensemble = [0]
-            else:
-                ensemble = range(0, method)
-
-        elif method == 'FitNumber':
-            # Use optimum number of models
-
-            # In order to speed up the process, we precompute all scores of the possible
-            # classifiers in all cross validation estimatons
-
-            # Create the training and validation set scores
+        elif type(self) == GuidedSearchCVSMAC:
+            base_estimator = GuidedSearchCVSMAC()
+
+        if method == 'Single':
+            # Do not refit all the classifiers if we only need the best one
+            ensemble = [0]
+        elif method == 'top_N':
+            # Do not refit all the classifiers if we only need the best N
+            ensemble = range(0, size)
+        else:
+            # Refit the models and compute the predictions on the validation sets
             if verbose:
-                print('Precomputing scores on training and validation set.')
-            Y_valid_score = list()
+                print('Precomputing scores on training and validation set for ensembling.')
             Y_valid_truth = list()
-            performances = np.zeros((n_iter, n_classifiers))
-            for it, (train, valid) in enumerate(self.cv_iter):
-                if verbose:
-                    print(f' - iteration {it + 1} / {n_iter}.')
-                Y_valid_score_it = np.zeros((n_classifiers, len(valid)))
-
-                # Loop over the 100 best estimators
-                for num, p_all in enumerate(parameters_all):
-                    # NOTE: Explicitly exclude validation set, elso refit and score
-                    # somehow still seems to use it.
-                    X_train_temp = [X_train[i] for i in train]
-                    Y_train_temp = [Y_train[i] for i in train]
-                    train_temp = np.arange(0, len(train))
-
-                    # Refit a SearchCV object with the provided parameters
-                    base_estimator.refit_and_score(X_train_temp, Y_train_temp, p_all,
-                                                   train_temp, train_temp,
-                                                   verbose=False)
-
-                    # Predict and save scores
-                    X_train_values = [x[0] for x in X_train] # Throw away labels
-                    X_train_values_valid = [X_train_values[i] for i in valid]
-                    Y_valid_score_temp = base_estimator.predict_proba(X_train_values_valid)
-
-                    # Only take the probabilities for the second class
-                    Y_valid_score_temp = Y_valid_score_temp[:, 1]
-
-                    # Append to array for all classifiers on this validation set
-                    Y_valid_score_it[num, :] = Y_valid_score_temp
-
+            performances = list()
+            all_predictions = list()
+            ensemble_configurations = list()
+            prediction_length = len(self.cv_iter[0][1])
+            for num, p_all in enumerate(parameters_all):
+                performances_iter = list()
+                predictions_iter = np.zeros((n_iter, prediction_length))
+
+                for it, (train, valid) in enumerate(self.cv_iter):
+                    predictions = list()
+                    # Start with storing the ground truth
                     if num == 0:
-                        # Also store the validation ground truths
                         Y_valid_truth.append(Y_train[valid])
 
-                    performances[it, num] = compute_performance(scoring,
-                                                                Y_train[valid],
-                                                                Y_valid_score_temp)
-
-                Y_valid_score.append(Y_valid_score_it)
-
-            # Sorted Ensemble Initialization -------------------------------------
-            # Go on adding to the ensemble untill we find the optimal performance
-            # Initialize variables
-
-            # Note: doing this in a greedy way doesnt work. We compute the
-            # performances for the ensembles of lengt [1, n_classifiers] and
-            # select the optimum
+                    new_estimator = clone(base_estimator)
+
+                    # Fit the preprocessors of the pipeline
+                    out = fit_and_score(X_train, Y_train, scoring,
+                                        train, valid, p_all,
+                                        return_all=True)
+                    (save_data, GroupSel, VarSel, SelectModel, feature_labels, scalers,
+                     encoders, Imputers, PCAs, StatisticalSel, ReliefSel, Sampler) = out
+                    new_estimator.best_groupsel = GroupSel
+                    new_estimator.best_scaler = scalers
+                    new_estimator.best_varsel = VarSel
+                    new_estimator.best_modelsel = SelectModel
+                    new_estimator.best_preprocessor = None
+                    new_estimator.best_imputer = Imputers
+                    new_estimator.best_encoder = encoders
+                    new_estimator.best_pca = PCAs
+                    new_estimator.best_featlab = feature_labels
+                    new_estimator.best_statisticalsel = StatisticalSel
+                    new_estimator.best_reliefsel = ReliefSel
+                    new_estimator.best_Sampler = Sampler
+
+                    # Use the fitted preprocessors to preprocess the features
+                    X_train_values = np.asarray([x[0] for x in X_train])
+                    processed_X, processed_y = new_estimator.preprocess(X_train_values[train],
+                                                                         Y_train[train],
+                                                                         training=True)
+                    # Check if there are features left
+                    (patients, features_left) = np.shape(processed_X)
+                    if features_left == 0:
+                        print('no features left' + '\n')
+                        # No features are left; do not consider this pipeline for the ensemble
+                        break
+                    else:
+                        # Construct and fit the classifier
+                        best_estimator = cc.construct_classifier(p_all)
+                        best_estimator.fit(processed_X, processed_y)
+                        new_estimator.best_estimator_ = best_estimator
+                        predictions = new_estimator.predict_proba(X_train_values[valid])
+
+                        # Only take the probabilities for the second class
+                        predictions = predictions[:, 1]
+
+                        # Store the predictions on this split
+                        #predictions_iter.append(predictions)
+                        predictions_iter[it, :] = predictions
+
+                        # Compute and store the performance on this split
+                        performances_iter.append(compute_performance(scoring,
+                                                                     Y_train[valid],
+                                                                     predictions))
+
+                        # print('fitandscore: ' + str(out[0][1]) + ' and computed: ' +
+                        #       str(compute_performance(scoring, Y_train[valid], predictions)) + '\n')
+
+                        # At the end of the last iteration, store the results of this pipeline
+                        if it == (n_iter - 1):
+                            # Add the pipeline to the list
+                            ensemble_configurations.append(p_all)
+                            # Store the predictions
+                            all_predictions.append(predictions_iter)
+                            # Store the performance
+                            performances.append(np.mean(performances_iter))
+
+            # Update the parameters
+            parameters_all = ensemble_configurations
+            n_classifiers = len(ensemble_configurations)
+            # Construct the array of final predictions
+            base_Y_valid_score = np.zeros((n_iter, n_classifiers, prediction_length))
+            for iter in range(n_iter):
+                for num in range(n_classifiers):
+                    base_Y_valid_score[iter][num] = all_predictions[num][iter]
+
+            # Create the ensemble using the precomputed scores:
+
+            # Initialize the ensemble
+            ensemble = list()
+            # Initialize the stacked list of predictions that we keep for the ensemble
+            y_score = [None] * n_iter
             best_performance = 0
             new_performance = 0.001
+            single_estimator_performance = max(performances)
             iteration = 0
-            ensemble = list()
-            y_score = [None]*n_iter
-            best_index = 0
-            single_estimator_performance = new_performance
 
-            if initialize:
-                # Rank the models based on scoring on the validation set
-                performances = np.mean(performances, axis=0)
+            if method == 'FitNumber':
                 sortedindices = np.argsort(performances)[::-1]
                 performances_n_class = list()
 
                 if verbose:
                     print("\n")
-                    print('Sorted Ensemble Initialization.')
-                # while new_performance > best_performance:
-                for dummy in range(0, n_classifiers):
-                    # Score is better, so expand ensemble and replace new best score
-                    best_performance = new_performance
+                    print('Creating ensemble with FitNumber method.')
+
+                for iteration in range(0, n_classifiers):
+                    Y_valid_score = copy.deepcopy(base_Y_valid_score)
 
                     if iteration > 1:
-                        # Stack scores: not needed for first iteration
-                        ensemble.append(best_index)
-                        # N_models += 1
                         for num in range(0, n_iter):
                             y_score[num] = np.vstack((y_score[num], Y_valid_score[num][ensemble[-1], :]))
 
                     elif iteration == 1:
                         # Create y_score object for second iteration
-                        single_estimator_performance = new_performance
-                        ensemble.append(best_index)
-                        # N_models += 1
                         for num in range(0, n_iter):
                             y_score[num] = Y_valid_score[num][ensemble[-1], :]
 
@@ -1281,7 +1330,7 @@ 

Source code for WORC.classification.SearchCV

new_performance = np.mean(performances_temp)
                     performances_n_class.append(new_performance)
                     best_index = sortedindices[iteration]
-                    iteration += 1
+                    ensemble.append(best_index)
 
                 # Select N_models for initialization
                 new_performance = max(performances_n_class)
@@ -1289,203 +1338,224 @@ 

Source code for WORC.classification.SearchCV

ensemble = ensemble[0:N_models]
                 best_performance = new_performance
 
-                # Print the performance gain
                 print(f"Ensembling best {scoring}: {best_performance}.")
                 print(f"Single estimator best {scoring}: {single_estimator_performance}.")
                 print(f'Ensemble consists of {len(ensemble)} estimators {ensemble}.')
 
-        elif method == 'Caruana':
-            # Use the method from Caruana
-            if verbose:
-                print('Creating ensemble with Caruana method.')
-
-            # In order to speed up the process, we precompute all scores of the possible
-            # classifiers in all cross validation estimatons
+            elif method == 'ForwardSelection':
 
-            # Create the training and validation set scores
-            if verbose:
-                print('Precomputing scores on training and validation set.')
-            Y_valid_score = list()
-            Y_valid_truth = list()
-            performances = np.zeros((n_iter, n_classifiers))
-            for it, (train, valid) in enumerate(self.cv_iter):
                 if verbose:
-                    print(f' - iteration {it + 1} / {n_iter}.')
-                Y_valid_score_it = np.zeros((n_classifiers, len(valid)))
-
-                # Loop over the 100 best estimators
-                for num, p_all in enumerate(parameters_all):
-                    # NOTE: Explicitly exclude validation set, elso refit and score
-                    # somehow still seems to use it.
-                    X_train_temp = [X_train[i] for i in train]
-                    Y_train_temp = [Y_train[i] for i in train]
-                    train_temp = np.arange(0, len(train))
-
-                    # Refit a SearchCV object with the provided parameters
-                    base_estimator.refit_and_score(X_train_temp, Y_train_temp, p_all,
-                                                   train_temp, train_temp,
-                                                   verbose=False)
-
-                    # Predict and save scores
-                    X_train_values = [x[0] for x in X_train] # Throw away labels
-                    X_train_values_valid = [X_train_values[i] for i in valid]
-                    Y_valid_score_temp = base_estimator.predict_proba(X_train_values_valid)
+                    print('Creating ensemble with ForwardSelection method.')
 
-                    # Only take the probabilities for the second class
-                    Y_valid_score_temp = Y_valid_score_temp[:, 1]
+                while new_performance > best_performance:
+                    Y_valid_score = copy.deepcopy(base_Y_valid_score)
+                    if verbose:
+                        print(f"Iteration: {iteration}, best {scoring}: {new_performance}.")
+                    best_performance = new_performance
 
-                    # Append to array for all classifiers on this validation set
-                    Y_valid_score_it[num, :] = Y_valid_score_temp
+                    if iteration > 1:
+                        ensemble.append(best_index)
+                        for num in range(0, n_iter):
+                            y_score[num] = np.vstack((y_score[num], Y_valid_score[num][ensemble[-1], :]))
 
-                    if num == 0:
-                        # Also store the validation ground truths
-                        Y_valid_truth.append(Y_train[valid])
+                    elif iteration == 1:
+                        # Create y_score object for second iteration
+                        ensemble.append(best_index)
+                        for num in range(0, n_iter):
+                            y_score[num] = Y_valid_score[num][ensemble[-1], :]
 
-                    performances[it, num] = compute_performance(scoring,
-                                                                Y_train[valid],
-                                                                Y_valid_score_temp)
+                    # Perform n-fold cross validation to estimate performance of each possible addition to ensemble
+                    performances_temp = np.zeros((n_iter, n_classifiers))
+                    for n_crossval in range(0, n_iter):
+                        # For each estimator, add the score to the ensemble and new ensemble performance
+                        for n_estimator in range(0, n_classifiers):
+                            if iteration == 0:
+                                # No y_score yet, so we need to build it instead of stacking
+                                y_valid_score_new = Y_valid_score[n_crossval][n_estimator, :]
+                            else:
+                                # Stack scores of added model on top of previous scores and average
+                                y_valid_score_new = np.mean(np.vstack((y_score[n_crossval], Y_valid_score[n_crossval][n_estimator, :])), axis=0)
 
-                Y_valid_score.append(Y_valid_score_it)
+                            perf = compute_performance(scoring, Y_valid_truth[n_crossval], y_valid_score_new)
+                            performances_temp[n_crossval, n_estimator] = perf
 
-            # Sorted Ensemble Initialization -------------------------------------
-            # Go on adding to the ensemble untill we find the optimal performance
-            # Initialize variables
+                    # Average performances over crossval
+                    performances_temp = list(np.mean(performances_temp, axis=0))
 
-            # Note: doing this in a greedy way doesnt work. We compute the
-            # performances for the ensembles of lengt [1, n_classifiers] and
-            # select the optimum
-            best_performance = 0
-            new_performance = 0.001
-            iteration = 0
-            ensemble = list()
-            y_score = [None]*n_iter
-            best_index = 0
-            single_estimator_performance = new_performance
+                    # Check which ensemble should be in the ensemble to maximally improve
+                    new_performance = max(performances_temp)
+                    best_index = performances_temp.index(new_performance)
+                    iteration += 1
 
-            if initialize:
-                # Rank the models based on scoring on the validation set
-                performances = np.mean(performances, axis=0)
-                sortedindices = np.argsort(performances)[::-1]
-                performances_n_class = list()
+                # Print the performance gain
+                print(f"Ensembling best {scoring}: {best_performance}.")
+                print(f"Single estimator best {scoring}: {single_estimator_performance}.")
+                print(f'Ensemble consists of {len(ensemble)} estimators {ensemble}.')
 
+            elif method == 'Caruana':
                 if verbose:
-                    print("\n")
-                    print('Sorted Ensemble Initialization.')
-                # while new_performance > best_performance:
-                for dummy in range(0, n_classifiers):
-                    # Score is better, so expand ensemble and replace new best score
-                    best_performance = new_performance
+                    print('Creating ensemble with Caruana method.')
+
+                best_ensemble_scores = list()
+
+                while iteration < 20:
+                    Y_valid_score = copy.deepcopy(base_Y_valid_score)
+                    if verbose:
+                        print(f"Iteration: {iteration}, best {scoring}: {new_performance}.")
 
                     if iteration > 1:
                         # Stack scores: not needed for first iteration
-                        ensemble.append(best_index)
-                        # N_models += 1
                         for num in range(0, n_iter):
                             y_score[num] = np.vstack((y_score[num], Y_valid_score[num][ensemble[-1], :]))
 
                     elif iteration == 1:
                         # Create y_score object for second iteration
-                        single_estimator_performance = new_performance
-                        ensemble.append(best_index)
-                        # N_models += 1
                         for num in range(0, n_iter):
                             y_score[num] = Y_valid_score[num][ensemble[-1], :]
 
-                    # Perform n-fold cross validation to estimate performance of next best classifier
-                    performances_temp = np.zeros((n_iter))
+                    # Perform n-fold cross validation to estimate performance of each possible addition to ensemble
+                    performances_temp = np.zeros((n_iter, n_classifiers))
                     for n_crossval in range(0, n_iter):
                         # For each estimator, add the score to the ensemble and new ensemble performance
-                        if iteration == 0:
-                            # No y_score yet, so we need to build it instead of stacking
-                            y_valid_score_new = Y_valid_score[n_crossval][sortedindices[iteration], :]
-                        else:
-                            # Stack scores of added model on top of previous scores and average
-                            y_valid_score_new = np.mean(np.vstack((y_score[n_crossval], Y_valid_score[n_crossval][sortedindices[iteration], :])), axis=0)
+                        for n_estimator in range(0, n_classifiers):
+                            if iteration == 0:
+                                # No y_score yet, so we need to build it instead of stacking
+                                y_valid_score_new = Y_valid_score[n_crossval][n_estimator, :]
+                            else:
+                                # Stack scores of added model on top of previous scores and average
+                                y_valid_score_new = np.mean(np.vstack((y_score[n_crossval], Y_valid_score[n_crossval][n_estimator, :])), axis=0)
 
-                        perf = compute_performance(scoring, Y_valid_truth[n_crossval], y_valid_score_new)
-                        performances_temp[n_crossval] = perf
+                            perf = compute_performance(scoring, Y_valid_truth[n_crossval], y_valid_score_new)
+                            performances_temp[n_crossval, n_estimator] = perf
+
+                    # Average performances over crossval
+                    performances_temp = list(np.mean(performances_temp, axis=0))
 
                     # Check which ensemble should be in the ensemble to maximally improve
-                    new_performance = np.mean(performances_temp)
-                    performances_n_class.append(new_performance)
-                    best_index = sortedindices[iteration]
+                    new_performance = max(performances_temp)
+                    best_ensemble_scores.append(new_performance)
+                    best_index = performances_temp.index(new_performance)
+                    ensemble.append(best_index)
                     iteration += 1
 
-                # Select N_models for initialization
-                new_performance = max(performances_n_class)
-                N_models = performances_n_class.index(new_performance) + 1  # +1 due to python indexing
-                ensemble = ensemble[0:N_models]
-                best_performance = new_performance
+                # Select the optimal ensemble size
+                optimal_ensemble_performance = max(best_ensemble_scores)
+                optimal_N_models = best_ensemble_scores.index(optimal_ensemble_performance) + 1
+                ensemble = ensemble[0:optimal_N_models]
+                best_performance = optimal_ensemble_performance
 
                 # Print the performance gain
                 print(f"Ensembling best {scoring}: {best_performance}.")
                 print(f"Single estimator best {scoring}: {single_estimator_performance}.")
                 print(f'Ensemble consists of {len(ensemble)} estimators {ensemble}.')
 
-            # Greedy selection  -----------------------------------------------
-            # Initialize variables
-            best_performance -= 1e-10
-            iteration = 0
-
-            # Go on adding to the ensemble untill we find the optimal performance
-            if verbose:
-                print("\n")
-                print('Greedy selection.')
-            while new_performance > best_performance:
-                # Score is better, so expand ensemble and replace new best score
+            elif method == 'Bagging':
                 if verbose:
-                    print(f"Iteration: {iteration}, best {scoring}: {new_performance}.")
-                best_performance = new_performance
+                    print('Creating ensemble using Caruana with Bagging method.')
+
+                nr_of_bagging_iterations = size
+                for bag in range(nr_of_bagging_iterations):
+                    bag_ensemble = list()
+                    subset_size = int(np.floor(n_classifiers / 2))
+                    model_subset = random.sample(range(n_classifiers), subset_size)
+
+                    best_ensemble_scores = list()
+                    iteration = 0
+
+                    while iteration < 20:
+                        Y_valid_score = copy.deepcopy(base_Y_valid_score)
+                        if verbose:
+                            print(f"Iteration: {iteration}, best {scoring}: {new_performance}.")
+
+                        if iteration > 1:
+                            for num in range(0, n_iter):
+                                y_score[num] = np.vstack((y_score[num], Y_valid_score[num][bag_ensemble[-1], :]))
+
+                        elif iteration == 1:
+                            # Create y_score object for second iteration
+                            for num in range(0, n_iter):
+                                y_score[num] = Y_valid_score[num][bag_ensemble[-1], :]
+
+                        # Perform n-fold cross validation to estimate performance of each possible addition to ensemble
+                        performances_temp = np.zeros((n_iter, subset_size))
+                        for n_crossval in range(0, n_iter):
+                            # For each estimator, add the score to the ensemble and new ensemble performance
+                            estimator_counter = 0
+                            for n_estimator in model_subset:
+                                if iteration == 0:
+                                    # No y_score yet, so we need to build it instead of stacking
+                                    y_valid_score_new = Y_valid_score[n_crossval][n_estimator, :]
+                                else:
+                                    # Stack scores of added model on top of previous scores and average
+                                    y_valid_score_new = np.mean(np.vstack((y_score[n_crossval], Y_valid_score[n_crossval][n_estimator, :])), axis=0)
+
+                                perf = compute_performance(scoring, Y_valid_truth[n_crossval], y_valid_score_new)
+                                performances_temp[n_crossval, estimator_counter] = perf
+                                estimator_counter += 1
+
+                        # Average performances over crossval
+                        performances_temp = list(np.mean(performances_temp, axis=0))
+
+                        # Check which ensemble should be in the ensemble to maximally improve
+                        new_performance = max(performances_temp)
+                        best_ensemble_scores.append(new_performance)
+                        best_index = performances_temp.index(new_performance)
+                        bag_ensemble.append(best_index)
+                        iteration += 1
+
+                    # Select the optimal ensemble size
+                    optimal_ensemble_performance = max(best_ensemble_scores)
+                    optimal_N_models = best_ensemble_scores.index(optimal_ensemble_performance) + 1
+                    # Add the best ensemble of this bagging iteration to the final ensemble
+                    bag_ensemble = bag_ensemble[0:optimal_N_models]
+                    for model in bag_ensemble:
+                        ensemble.append(model)
+                    best_performance = optimal_ensemble_performance
 
-                if iteration > 1:
-                    # Stack scores: not needed for first iteration
-                    ensemble.append(best_index)
-                    for num in range(0, n_iter):
-                        y_score[num] = np.vstack((y_score[num], Y_valid_score[num][ensemble[-1], :]))
+                # Print the performance gain
+                print(f'Ensemble consists of {len(ensemble)} estimators {ensemble}.')
 
-                elif iteration == 1:
-                    if not initialize:
-                        # Create y_score object for second iteration
-                        single_estimator_performance = new_performance
-                        ensemble.append(best_index)
-                        for num in range(0, n_iter):
-                            y_score[num] = Y_valid_score[num][ensemble[-1], :]
-                    else:
-                        # Stack scores: not needed when ensemble initialization is already used
-                        ensemble.append(best_index)
-                        for num in range(0, n_iter):
-                            y_score[num] = np.vstack((y_score[num], Y_valid_score[num][ensemble[-1], :]))
+            else:
+                print(f'[WORC WARNING] No valid ensemble method given: {method}. Not ensembling')
+                return self
 
-                # Perform n-fold cross validation to estimate performance of each possible addition to ensemble
-                performances_temp = np.zeros((n_iter, n_classifiers))
-                for n_crossval in range(0, n_iter):
-                    # For each estimator, add the score to the ensemble and new ensemble performance
-                    for n_estimator in range(0, n_classifiers):
-                        if iteration == 0:
-                            # No y_score yet, so we need to build it instead of stacking
-                            y_valid_score_new = Y_valid_score[n_crossval][n_estimator, :]
-                        else:
-                            # Stack scores of added model on top of previous scores and average
-                            y_valid_score_new = np.mean(np.vstack((y_score[n_crossval], Y_valid_score[n_crossval][n_estimator, :])), axis=0)
+        # Create the ensemble --------------------------------------------------
 
-                        perf = compute_performance(scoring, Y_valid_truth[n_crossval], y_valid_score_new)
-                        performances_temp[n_crossval, n_estimator] = perf
+        # First create and score the ensemble on the validation set
+        # If we only want the best solution, we use the score from cv_results_
+        if method == 'Single':
+            self.ensemble_validation_score = self.cv_results_['mean_test_score'][0]
+        elif method == 'top_N':
+            self.ensemble_validation_score = [self.cv_results_['mean_test_score'][i] for i in ensemble]
+        else:
+            selected_params = [parameters_all[i] for i in ensemble]
+            val_split_scores = []
+            for train, valid in self.cv_iter:
+                estimators = list()
+                for enum, p_all in enumerate(selected_params):
+                    new_estimator = clone(base_estimator)
+
+                    new_estimator.refit_and_score(X_train, Y_train, p_all,
+                                                   train, valid,
+                                                   verbose=False)
 
-                # Average performances over crossval
-                performances_temp = list(np.mean(performances_temp, axis=0))
+                    estimators.append(new_estimator)
 
-                # Check which ensemble should be in the ensemble to maximally improve
-                new_performance = max(performances_temp)
-                best_index = performances_temp.index(new_performance)
-                iteration += 1
+                new_estimator = clone(base_estimator)
+                new_estimator.ensemble = Ensemble(estimators)
+                new_estimator.best_estimator_ = new_estimator.ensemble
+                # Calculate and store the final performance of the ensemble
+                # on this validation split
+                X_train_values = np.asarray([x[0] for x in X_train])
+                predictions = new_estimator.predict(X_train_values[valid])
+                val_split_scores.append(compute_performance(scoring,
+                                                            Y_train[valid],
+                                                            predictions))
 
-            # Print the performance gain
-            print(f"Ensembling best {scoring}: {best_performance}.")
-            print(f"Single estimator best {scoring}: {single_estimator_performance}.")
-            print(f'Ensemble consists of {len(ensemble)} estimators {ensemble}.')
-        else:
-            print(f'[WORC WARNING] No valid ensemble method given: {method}. Not ensembling')
-            return self
+            validation_score = np.mean(val_split_scores)
+            self.ensemble_validation_score = validation_score
+
+        print('Final ensemble validation score: ' + str(self.ensemble_validation_score))
 
         # Create the ensemble --------------------------------------------------
         train = np.arange(0, len(X_train))
@@ -1505,6 +1575,7 @@ 

Source code for WORC.classification.SearchCV

parameters_all[i],
                                               train, train,
                                               verbose=False)
+
                     estimators.append(estimator)
         else:
             # Create the ensemble trained on the full training set
@@ -1513,10 +1584,10 @@ 

Source code for WORC.classification.SearchCV

nest = len(ensemble)
             for enum, p_all in enumerate(parameters_all):
                 # Refit a SearchCV object with the provided parameters
-                print(f"Refitting estimator {enum+1} / {nest}.")
+                print(f"Refitting estimator {enum + 1} / {nest}.")
                 base_estimator = clone(base_estimator)
 
-                # # Check if we need to create a multiclass estimator
+                # Check if we need to create a multiclass estimator
                 base_estimator.refit_and_score(X_train, Y_train, p_all,
                                                train, train,
                                                verbose=False)
@@ -1524,10 +1595,43 @@ 

Source code for WORC.classification.SearchCV

# Determine whether to overfit the feature scaling on the test set
                 base_estimator.overfit_scaler = overfit_scaler
 
-                estimators.append(base_estimator)
+                try:
+                    # Try a prediction to see if estimator is truly fitted
+                    base_estimator.predict(np.asarray([X_train[0][0], X_train[1][0]]))
+                    estimators.append(base_estimator)
+                except (NotFittedError, ValueError):
+                    print(f'\t\t - Estimator {enum} could not be fitted (correctly), do not include in ensemble.')
+                    if enum + 1 == nest and not estimators:
+                        print(f'\t\t - Reached end of ensemble ({enum + 1}), but ensemble is empty, thus go on untill we find an estimator that works')
+                        while not estimators:
+                            # We cannot have an empy ensemble, thus go on untill we find an estimator that works
+                            enum += 1
+                            p_all = self.cv_results_['params'][enum]
+
+                            # Refit a SearchCV object with the provided parameters
+                            base_estimator = clone(base_estimator)
+
+                            # Check if we need to create a multiclass estimator
+                            base_estimator.refit_and_score(X_train, Y_train, p_all,
+                                                           train, train,
+                                                           verbose=False)
+
+                            # Determine whether to overfit the feature scaling on the test set
+                            base_estimator.overfit_scaler = overfit_scaler
+
+                            try:
+                                # Try a prediction to see if estimator is truly fitted
+                                base_estimator.predict(np.asarray([X_train[0][0], X_train[1][0]]))
+                                estimators.append(base_estimator)
+                            except (NotFittedError, ValueError):
+                                pass
+                        print(f'\t\t - Needed estimator {enum}.')
+                    else:
+                        pass
 
         self.ensemble = Ensemble(estimators)
         self.best_estimator_ = self.ensemble
+
         print("\n")
@@ -2885,6 +2989,462 @@

Source code for WORC.classification.SearchCV

            train/test set.
         """
         return self._fit(X, y, groups, ParameterGrid(self.param_grid))
+ + +
[docs]class BaseSearchCVSMAC(BaseSearchCV): + """Base class for Bayesian hyper parameter search with cross-validation.""" + + def _fit(self, groups): + """Actual fitting, performing the search over parameters.""" + + regressors = ['SVR', 'RFR', 'SGDR', 'Lasso', 'ElasticNet'] + isclassifier = \ + not any(clf in regressors for clf in self.param_distributions['Classification']['classifiers']) + + cv = check_cv(self.cv, self.labels, classifier=isclassifier) + + self.features, self.labels, groups = indexable(self.features, self.labels, groups) + n_splits = cv.get_n_splits(self.features, self.labels, groups) + + pre_dispatch = self.pre_dispatch + cv_iter = list(cv.split(self.features, self.labels, groups)) + + # Build the SMAC configuration + self.param_distributions['Other'] = dict() + self.param_distributions['Other']['random_seed'] = np.random.randint(1, 5000) + cs = build_smac_config(self.param_distributions) + + # Run the optimization + + # Here we will create and execute a fastr network + + # Create temporary directory for fastr + if DebugDetector().do_detection(): + # Specific name for easy debugging + debugnum = 0 + name = 'DEBUG_' + str(debugnum) + tempfolder = os.path.join(fastr.config.mounts['tmp'], 'GS', name) + while os.path.exists(tempfolder): + debugnum += 1 + name = 'DEBUG_' + str(debugnum) + tempfolder = os.path.join(fastr.config.mounts['tmp'], 'GS', name) + + else: + name = ''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(10)) + + tempfolder = os.path.join(fastr.config.mounts['tmp'], 'GS', name) + if not os.path.exists(tempfolder): + os.makedirs(tempfolder) + + # Create the files containing the estimator and settings + estimator_labels = ['X', 'y', 'search_space', 'cv_iter', 'scoring', + 'verbose', 'fit_params', 'return_train_score', + 'return_n_test_samples', + 'return_times', 'return_parameters', + 'error_score', 'budget_type', 'budget', + 'init_method', 'init_budget', 'smac_result_file'] + + estimator_data = pd.Series([self.features, self.labels, cs, + cv_iter, self.scoring, False, + self.fit_params, self.return_train_score, + True, True, True, + self.error_score, + self.param_distributions['SMAC']['budget_type'], + self.param_distributions['SMAC']['budget'], + self.param_distributions['SMAC']['init_method'], + self.param_distributions['SMAC']['init_budget'], + self.smac_result_file], + index=estimator_labels, + name='estimator Data') + + fname = 'estimatordata.hdf5' + estimatorname = os.path.join(tempfolder, fname) + estimator_data.to_hdf(estimatorname, 'Estimator Data') + + estimatordata = f"vfs://tmp/GS/{name}/{fname}" + + # Create the files containing the instance data + instance_labels = ['run_id', 'run_rng', 'run_name', 'tempfolder'] + current_date_time = datetime.now() + random_id = random.randint(1000, 9999) + run_name = current_date_time.strftime('smac-run_' + '%m-%d_%H-%M-%S' + str(random_id)) + instance_files = dict() + for i in range(self.param_distributions['SMAC']['n_smac_cores']): + instance_info = [i, random.randint(0, 2 ** 32 - 1), run_name, tempfolder] + instance_data = pd.Series(instance_info, + index=instance_labels, + name=f'instance data {i}') + fname = f'instancedata_{i}.hdf5' + instancefolder = os.path.join(tempfolder, 'instances', fname) + if not os.path.exists(os.path.dirname(instancefolder)): + os.makedirs(os.path.dirname(instancefolder)) + instance_data.to_hdf(instancefolder, 'Instance Data') + instancedata = f'vfs://tmp/GS/{name}/instances/{fname}' + instance_files[f'{i}'] = instancedata + + # Create the fastr network + network = fastr.create_network('WORC_SMAC_' + name) + estimator_data = network.create_source('HDF5', id='estimator_source') + instance_data = network.create_source('HDF5', id='instance_source') + sink_output = network.create_sink('HDF5', id='output') + + smac_node = network.create_node('worc/smac:1.0', tool_version='1.0', id='smac', + resources=ResourceLimit(memory='5G')) + + smac_node.inputs['estimatordata'] = estimator_data.output + smac_node.inputs['instancedata'] = instance_data.output + sink_output.input = smac_node.outputs['fittedestimator'] + + source_data = {'estimator_source': estimatordata, + 'instance_source': instance_files} + + sink_data = {'output': f"vfs://tmp/GS/{name}/output_{{sample_id}}_{{cardinality}}{{ext}}"} + + network.execute(source_data, sink_data, + tmpdir=os.path.join(tempfolder, 'tmp'), + execution_plugin=self.fastr_plugin) + + # Check whether all jobs have finished + expected_no_files = len(instance_files) + sink_files = glob.glob(os.path.join(fastr.config.mounts['tmp'], 'GS', name) + '/output*.hdf5') + if len(sink_files) != expected_no_files: + difference = expected_no_files - len(sink_files) + fname = os.path.join(tempfolder, 'tmp') + message = ('Fitting classifiers has failed for ' + + f'{difference} / {expected_no_files} files. The temporary ' + + f'results where not deleted and can be found in {tempfolder}. ' + + 'Probably your fitting and scoring failed: check out ' + + 'the tmp/smac folder within the tempfolder for ' + + 'the fastr job temporary results or run: fastr trace ' + + f'"{fname}{os.path.sep}__sink_data__.json" --samples.') + raise WORCexceptions.WORCValueError(message) + + # Read in the output data once finished + save_data = list() + for output in sink_files: + data = pd.read_hdf(output) + save_data.extend(list(data['RET'])) + + # if one choose to see train score, "out" will contain train score info + if self.return_train_score: + (train_scores, test_scores, test_sample_counts, + fit_time, score_time, parameters_est, parameters_all) = \ + zip(*save_data) + else: + (test_scores, test_sample_counts, + fit_time, score_time, parameters_est, parameters_all) = \ + zip(*save_data) + + # Process the smac_results data once finished + # First read in the results of all smac instance files + smac_filenames = glob.glob(os.path.join(tempfolder, + 'tested_configs', + run_name) + '/smac_stats_*.json') + # Then create a combined dictionary with all + # results of this cross-validation split and + # a summary + smac_results_for_this_cv = dict() + smac_results_for_this_cv[run_name] = dict() + summary = dict() + all_costs = [] + best_cost = 1 + all_runtimes = [] + for fn in smac_filenames: + with open(fn, 'r') as f: + smac_result = json.load(f) + run_data = smac_result[list(smac_result.keys())[0]] + nr_of_inc_updates = run_data['inc_changed'] + current_cost = run_data['inc_costs'][nr_of_inc_updates - 1] + all_costs.append(current_cost) + all_runtimes.append(run_data['wallclock_time_used']) + if current_cost < best_cost: + best_cost = current_cost + summary['best_score'] = current_cost + summary['best_inc_wallclock_time'] = run_data['inc_wallclock_times'][nr_of_inc_updates - 1] + summary['best_inc_evals'] = run_data['inc_evaluations'][nr_of_inc_updates - 1] + summary['best_inc_changed'] = run_data['inc_changed'] + summary['best_config'] = run_data['inc_configs'][nr_of_inc_updates - 1] + smac_results_for_this_cv[run_name].update(smac_result) + summary['average_score'] = np.mean(all_costs) + summary['std_score'] = np.std(all_costs) + summary['shortest_runtime'] = np.min(all_runtimes) + summary['longest_runtime'] = np.max(all_runtimes) + summary['average_runtime'] = np.mean(all_runtimes) + summary['total_runtime'] = np.sum(all_runtimes) + final_summary = {'cv-summary': summary} + smac_results_for_this_cv[run_name].update(final_summary) + + result_file = self.smac_result_file + + if os.path.exists(result_file): + with open(result_file, 'r') as jsonfile: + results_so_far = json.load(jsonfile) + results_so_far.update(smac_results_for_this_cv) + with open(result_file, 'w') as jsonfile: + json.dump(results_so_far, jsonfile, indent=4) + else: + with open(result_file, 'a') as jsonfile: + json.dump(smac_results_for_this_cv, jsonfile, indent=4) + + # Remove the temporary folder used + if name != 'DEBUG_0': + # Do delete if not debugging for first iteration + shutil.rmtree(tempfolder) + + # Process the results of the fitting procedure + self.process_fit(n_splits=n_splits, + parameters_all=parameters_all, + test_sample_counts=test_sample_counts, + test_score_dicts=test_scores, + train_score_dicts=train_scores, + fit_time=fit_time, + score_time=score_time, + cv_iter=cv_iter, + X=self.features, y=self.labels, + use_smac=True) + + return self
+ + +
[docs]class GuidedSearchCVSMAC(BaseSearchCVSMAC): + """Guided search on hyperparameters. + + GuidedSearchCV implements a "fit" and a "score" method. + It also implements "predict", "predict_proba", "decision_function", + "transform" and "inverse_transform" if they are implemented in the + estimator used. + + The parameters of the estimator used to apply these methods are optimized + by cross-validated search over parameter settings. + + The optimization is performed using the Sequential Model-based Algorithm + Configuration (SMAC) method. A probabilistic model of the objective function + is constructed and updated with each function evaluation. + + If all parameters are presented as a list, + sampling without replacement is performed. If at least one parameter + is given as a distribution, sampling with replacement is used. + It is highly recommended to use continuous distributions for continuous + parameters. + + Parameters + ---------- + param_distributions : dict + Dictionary with parameter names (string) as keys and details of their + domains as values. From this dictionary the complete search space + will later be constructed. + + n_iter : int, default=10 + Number of function evaluations allowed in each optimization sequence + of SMAC. + + scoring : string, callable or None, default=None + A string (see model evaluation documentation) or + a scorer callable object / function with signature + ``scorer(estimator, X, y)``. + If ``None``, the ``score`` method of the estimator is used. + + fit_params : dict, optional + Parameters to pass to the fit method. + + n_jobs : int, default=1 + Number of jobs to run in parallel. + + pre_dispatch : int, or string, optional + Controls the number of jobs that get dispatched during parallel + execution. Reducing this number can be useful to avoid an + explosion of memory consumption when more jobs get dispatched + than CPUs can process. This parameter can be: + + - None, in which case all the jobs are immediately + created and spawned. Use this for lightweight and + fast-running jobs, to avoid delays due to on-demand + spawning of the jobs + + - An int, giving the exact number of total jobs that are + spawned + + - A string, giving an expression as a function of n_jobs, + as in '2*n_jobs' + + iid : boolean, default=True + If True, the data is assumed to be identically distributed across + the folds, and the loss minimized is the total loss per sample, + and not the mean loss across the folds. + + cv : int, cross-validation generator or an iterable, optional + Determines the cross-validation splitting strategy. + Possible inputs for cv are: + - None, to use the default 3-fold cross validation, + - integer, to specify the number of folds in a `(Stratified)KFold`, + - An object to be used as a cross-validation generator. + - An iterable yielding train, test splits. + + For integer/None inputs, if the estimator is a classifier and ``y`` is + either binary or multiclass, :class:`StratifiedKFold` is used. In all + other cases, :class:`KFold` is used. + + Refer :ref:`User Guide <cross_validation>` for the various + cross-validation strategies that can be used here. + + refit : boolean, default=True + Refit the best estimator with the entire dataset. + If "False", it is impossible to make predictions using + this RandomizedSearchCV instance after fitting. + + verbose : integer + Controls the verbosity: the higher, the more messages. + + random_state : int or RandomState + Pseudo random number generator state used for random uniform sampling + from lists of possible values instead of scipy.stats distributions. + + error_score : 'raise' (default) or numeric + Value to assign to the score if an error occurs in estimator fitting. + If set to 'raise', the error is raised. If a numeric value is given, + FitFailedWarning is raised. This parameter does not affect the refit + step, which will always raise the error. + + return_train_score : boolean, default=True + If ``'False'``, the ``cv_results_`` attribute will not include training + scores. + + Attributes + ---------- + cv_results_ : dict of numpy (masked) ndarrays + A dict with keys as column headers and values as columns, that can be + imported into a pandas ``DataFrame``. + + For instance the below given table + + +--------------+-------------+-------------------+---+---------------+ + | param_kernel | param_gamma | split0_test_score |...|rank_test_score| + +==============+=============+===================+===+===============+ + | 'rbf' | 0.1 | 0.8 |...| 2 | + +--------------+-------------+-------------------+---+---------------+ + | 'rbf' | 0.2 | 0.9 |...| 1 | + +--------------+-------------+-------------------+---+---------------+ + | 'rbf' | 0.3 | 0.7 |...| 1 | + +--------------+-------------+-------------------+---+---------------+ + + will be represented by a ``cv_results_`` dict of:: + + { + 'param_kernel' : masked_array(data = ['rbf', 'rbf', 'rbf'], + mask = False), + 'param_gamma' : masked_array(data = [0.1 0.2 0.3], mask = False), + 'split0_test_score' : [0.8, 0.9, 0.7], + 'split1_test_score' : [0.82, 0.5, 0.7], + 'mean_test_score' : [0.81, 0.7, 0.7], + 'std_test_score' : [0.02, 0.2, 0.], + 'rank_test_score' : [3, 1, 1], + 'split0_train_score' : [0.8, 0.9, 0.7], + 'split1_train_score' : [0.82, 0.5, 0.7], + 'mean_train_score' : [0.81, 0.7, 0.7], + 'std_train_score' : [0.03, 0.03, 0.04], + 'mean_fit_time' : [0.73, 0.63, 0.43, 0.49], + 'std_fit_time' : [0.01, 0.02, 0.01, 0.01], + 'mean_score_time' : [0.007, 0.06, 0.04, 0.04], + 'std_score_time' : [0.001, 0.002, 0.003, 0.005], + 'params' : [{'kernel' : 'rbf', 'gamma' : 0.1}, ...], + } + + NOTE that the key ``'params'`` is used to store a list of parameter + settings dict for all the parameter candidates. + + The ``mean_fit_time``, ``std_fit_time``, ``mean_score_time`` and + ``std_score_time`` are all in seconds. + + best_estimator_ : estimator + Estimator that was chosen by the search, i.e. estimator + which gave highest score (or smallest loss if specified) + on the left out data. Not available if refit=False. + + best_score_ : float + Score of best_estimator on the left out data. + + best_params_ : dict + Parameter setting that gave the best results on the hold out data. + + best_index_ : int + The index (of the ``cv_results_`` arrays) which corresponds to the best + candidate parameter setting. + + The dict at ``search.cv_results_['params'][search.best_index_]`` gives + the parameter setting for the best model, that gives the highest + mean score (``search.best_score_``). + + scorer_ : function + Scorer function used on the held out data to choose the best + parameters for the model. + + n_splits_ : int + The number of cross-validation splits (folds/iterations). + + Notes + ----- + The parameters selected are those that maximize the score of the held-out + data, according to the scoring parameter. + + If `n_jobs` was set to a value higher than one, the data is copied for each + parameter setting(and not `n_jobs` times). This is done for efficiency + reasons if individual jobs take very little time, but may raise errors if + the dataset is large and not enough memory is available. A workaround in + this case is to set `pre_dispatch`. Then, the memory is copied only + `pre_dispatch` many times. A reasonable value for `pre_dispatch` is `2 * + n_jobs`. + + See Also + -------- + :class:`GridSearchCV`: + Does exhaustive search over a grid of parameters. + + :class:`ParameterSampler`: + A generator over parameter settings, constructed from + param_distributions. + + """ + +
[docs] def __init__(self, param_distributions={}, n_iter=10, scoring=None, + fit_params=None, n_jobs=1, iid=True, refit=True, cv=None, + verbose=0, pre_dispatch='2*n_jobs', random_state=None, + error_score='raise', return_train_score=True, + n_jobspercore=100, fastr_plugin=None, maxlen=100, + ranking_score='test_score', features=None, labels=None, + smac_result_file=None): + super(GuidedSearchCVSMAC, self).__init__( + param_distributions=param_distributions, scoring=scoring, fit_params=fit_params, + n_iter=n_iter, random_state=random_state, n_jobs=n_jobs, iid=iid, refit=refit, cv=cv, verbose=verbose, + pre_dispatch=pre_dispatch, error_score=error_score, + return_train_score=return_train_score, + n_jobspercore=n_jobspercore, fastr_plugin=fastr_plugin, + maxlen=maxlen, ranking_score=ranking_score) + self.features = features + self.labels = labels + self.smac_result_file = smac_result_file
+ +
[docs] def fit(self, X, y=None, groups=None): + """Run fit on the estimator with randomly drawn parameters. + + Parameters + ---------- + X : array-like, shape = [n_samples, n_features] + Training vector, where n_samples in the number of samples and + n_features is the number of features. + + y : array-like, shape = [n_samples] or [n_samples, n_output], optional + Target relative to X for classification or regression; + None for unsupervised learning. + + groups : array-like, with shape (n_samples,), optional + Group labels for the samples used while splitting the dataset into + train/test set. + """ + print("Fit: " + str(self.n_iter)) + self.features = X + self.labels = y + + return self._fit(groups)
diff --git a/WORC/doc/_build/html/_modules/WORC/classification/construct_classifier.html b/WORC/doc/_build/html/_modules/WORC/classification/construct_classifier.html index 141a37e3..32253edb 100644 --- a/WORC/doc/_build/html/_modules/WORC/classification/construct_classifier.html +++ b/WORC/doc/_build/html/_modules/WORC/classification/construct_classifier.html @@ -8,7 +8,7 @@ - WORC.classification.construct_classifier — WORC 3.5.0 documentation + WORC.classification.construct_classifier — WORC 3.6.0 documentation @@ -62,7 +62,7 @@
- 3.5.0 + 3.6.0
@@ -165,7 +165,7 @@

Source code for WORC.classification.construct_classifier

 #!/usr/bin/env python
 
-# Copyright 2016-2021 Biomedical Imaging Group Rotterdam, Departments of
+# Copyright 2016-2022 Biomedical Imaging Group Rotterdam, Departments of
 # Medical Informatics and Radiology, Erasmus MC, Rotterdam, The Netherlands
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
@@ -195,6 +195,12 @@ 

Source code for WORC.classification.construct_classifier

import WORC.addexceptions as ae from xgboost import XGBClassifier, XGBRegressor +try: + from lightgbm import LGBMClassifier +except: + print("[INFO] LightGCM classifier currently not available. Please see https://worc.readthedocs.io/en/latest/static/additionalfunctionality.html.") + +
[docs]def construct_classifier(config): """Interface to create classification. @@ -270,6 +276,23 @@

Source code for WORC.classification.construct_classifier

colsample_bytree=colsample_bytree, random_state=config['random_seed']) + elif config['classifiers'] == 'LightGBMClassifier': + # LightGBM Classifier + num_leaves = config['LightGBM_num_leaves'] + max_depth = config['LightGBM_max_depth'] + min_child_samples = config['LightGBM_min_child_samples'] + reg_alpha = config['LightGBM_reg_alpha'] + reg_lambda = config['LightGBM_reg_lambda'] + min_child_weight = config['LightGBM_min_child_weight'] + + classifier = LGBMClassifier(num_leaves=num_leaves, + max_depth=max_depth, + min_child_samples=min_child_samples, + reg_alpha=reg_alpha, + reg_lambda=reg_lambda, + min_child_weight=min_child_weight, + random_state=config['random_seed']) + elif config['classifiers'] == 'RF': # Random forest kernel classifier = RandomForestClassifier(verbose=0, @@ -390,13 +413,18 @@

Source code for WORC.classification.construct_classifier

clf = SVC(class_weight='balanced', probability=True, max_iter=max_iter, random_state=config['random_seed']) else: + # NOTE: SVMR has no random state clf = SVMR(max_iter=max_iter) clf.kernel = str(config['SVMKernel']) clf.C = config['SVMC'] - clf.degree = config['SVMdegree'] - clf.coef0 = config['SVMcoef0'] - clf.gamma = config['SVMgamma'] + # Only add the following parameters if they are defined + if 'SVMdegree' in config: + clf.degree = config['SVMdegree'] + if 'SVMcoef0' in config: + clf.coef0 = config['SVMcoef0'] + if 'SVMgamma' in config: + clf.gamma = config['SVMgamma'] return clf
@@ -508,6 +536,31 @@

Source code for WORC.classification.construct_classifier

scipy.stats.uniform(loc=config['XGB_colsample_bytree'][0], scale=config['XGB_colsample_bytree'][1]) + # LightGBM + param_grid['LightGBM_num_leaves'] =\ + discrete_uniform(loc=config['LightGBM_num_leaves'][0], + scale=config['LightGBM_num_leaves'][1]) + + param_grid['LightGBM_max_depth'] =\ + discrete_uniform(loc=config['LightGBM_max_depth'][0], + scale=config['LightGBM_max_depth'][1]) + + param_grid['LightGBM_min_child_samples'] =\ + discrete_uniform(loc=config['LightGBM_min_child_samples'][0], + scale=config['LightGBM_min_child_samples'][1]) + + param_grid['LightGBM_reg_alpha'] =\ + scipy.stats.uniform(loc=config['LightGBM_reg_alpha'][0], + scale=config['LightGBM_reg_alpha'][1]) + + param_grid['LightGBM_reg_lambda'] =\ + scipy.stats.uniform(loc=config['LightGBM_reg_lambda'][0], + scale=config['LightGBM_reg_lambda'][1]) + + param_grid['LightGBM_min_child_weight'] =\ + log_uniform(loc=config['LightGBM_min_child_weight'][0], + scale=config['LightGBM_min_child_weight'][1]) + return param_grid
diff --git a/WORC/doc/_build/html/_modules/WORC/classification/createfixedsplits.html b/WORC/doc/_build/html/_modules/WORC/classification/createfixedsplits.html index e0d020d0..14a5ef20 100644 --- a/WORC/doc/_build/html/_modules/WORC/classification/createfixedsplits.html +++ b/WORC/doc/_build/html/_modules/WORC/classification/createfixedsplits.html @@ -8,7 +8,7 @@ - WORC.classification.createfixedsplits — WORC 3.5.0 documentation + WORC.classification.createfixedsplits — WORC 3.6.0 documentation @@ -62,7 +62,7 @@
- 3.5.0 + 3.6.0
diff --git a/WORC/doc/_build/html/_modules/WORC/classification/crossval.html b/WORC/doc/_build/html/_modules/WORC/classification/crossval.html index 5212ca1b..a13806a8 100644 --- a/WORC/doc/_build/html/_modules/WORC/classification/crossval.html +++ b/WORC/doc/_build/html/_modules/WORC/classification/crossval.html @@ -8,7 +8,7 @@ - WORC.classification.crossval — WORC 3.5.0 documentation + WORC.classification.crossval — WORC 3.6.0 documentation @@ -62,7 +62,7 @@
- 3.5.0 + 3.6.0
@@ -187,7 +187,7 @@

Source code for WORC.classification.crossval

import time
 from time import gmtime, strftime
 from sklearn.model_selection import train_test_split, LeaveOneOut
-from .parameter_optimization import random_search_parameters
+from .parameter_optimization import random_search_parameters, guided_search_parameters
 import WORC.addexceptions as ae
 from WORC.classification.regressors import regressors
 import glob
@@ -205,7 +205,8 @@ 

Source code for WORC.classification.crossval

fixedsplits=None,
                                   fixed_seed=False, use_fastr=None,
                                   fastr_plugin=None,
-                                  do_test_RS_Ensemble=False):
+                                  do_test_RS_Ensemble=False,
+                                  use_SMAC=False, smac_result_file=None):
     """Cross-validation in which data is randomly split in each iteration.
 
     Due to options of doing single-label and multi-label classification,
@@ -229,6 +230,7 @@ 

Source code for WORC.classification.crossval

if fixedsplits is not None:
         n_iterations = int(fixedsplits.columns.shape[0] / 2)
         print(f'Fixedsplits detected, adjusting n_iterations to {n_iterations}')
+        logging.debug(f'Fixedsplits detected, adjusting n_iterations to {n_iterations}')
 
     for i in range(start, n_iterations):
         print(('Cross-validation iteration {} / {} .').format(str(i + 1), str(n_iterations)))
@@ -376,12 +378,21 @@ 

Source code for WORC.classification.crossval

config['HyperOptimization']['use_fastr'] = use_fastr
         config['HyperOptimization']['fastr_plugin'] = fastr_plugin
         n_cores = config['General']['Joblib_ncores']
-        trained_classifier = random_search_parameters(features=X_train,
-                                                      labels=Y_train,
-                                                      param_grid=param_grid,
-                                                      n_cores=n_cores,
-                                                      random_seed=random_seed,
-                                                      **config['HyperOptimization'])
+        if use_SMAC:
+            trained_classifier = guided_search_parameters(features=X_train,
+                                                          labels=Y_train,
+                                                          parameters=config,
+                                                          n_cores=n_cores,
+                                                          random_seed=random_seed,
+                                                          smac_result_file=smac_result_file,
+                                                          **config['HyperOptimization'])
+        else:
+            trained_classifier = random_search_parameters(features=X_train,
+                                                          labels=Y_train,
+                                                          param_grid=param_grid,
+                                                          n_cores=n_cores,
+                                                          random_seed=random_seed,
+                                                          **config['HyperOptimization'])
 
         # We only want to save the feature values and one label array
         X_train = [x[0] for x in X_train]
@@ -442,7 +453,8 @@ 

Source code for WORC.classification.crossval

modus, test_size, start=0, save_data=None,
                          tempsave=False, tempfolder=None, fixedsplits=None,
                          fixed_seed=False, use_fastr=None,
-                         fastr_plugin=None):
+                         fastr_plugin=None,
+                         use_SMAC=False, smac_result_file=None):
     """Cross-validation in which each sample is once used as the test set.
 
     Mostly based on the default sklearn object.
@@ -511,12 +523,21 @@ 

Source code for WORC.classification.crossval

config['HyperOptimization']['use_fastr'] = use_fastr
         config['HyperOptimization']['fastr_plugin'] = fastr_plugin
         n_cores = config['General']['Joblib_ncores']
-        trained_classifier = random_search_parameters(features=X_train,
-                                                      labels=Y_train,
-                                                      param_grid=param_grid,
-                                                      n_cores=n_cores,
-                                                      random_seed=random_seed,
-                                                      **config['HyperOptimization'])
+        if use_SMAC:
+            trained_classifier = guided_search_parameters(features=X_train,
+                                                          labels=Y_train,
+                                                          parameters=config,
+                                                          n_cores=n_cores,
+                                                          random_seed=random_seed,
+                                                          smac_result_file=smac_result_file,
+                                                          **config['HyperOptimization'])
+        else:
+            trained_classifier = random_search_parameters(features=X_train,
+                                                          labels=Y_train,
+                                                          param_grid=param_grid,
+                                                          n_cores=n_cores,
+                                                          random_seed=random_seed,
+                                                          **config['HyperOptimization'])
 
         # We only want to save the feature values and one label array
         X_train = [x[0] for x in X_train]
@@ -563,7 +584,7 @@ 

Source code for WORC.classification.crossval

param_grid=None, use_fastr=False,
              fastr_plugin=None, tempsave=False,
              fixedsplits=None, ensemble={'Use': False}, outputfolder=None,
-             modus='singlelabel'):
+             modus='singlelabel', use_SMAC=False, smac_result_file=None):
     """Constructs multiple individual classifiers based on the label settings.
 
     Parameters
@@ -731,7 +752,9 @@ 

Source code for WORC.classification.crossval

fixedsplits=fixedsplits,
                                               fixed_seed=fixed_seed,
                                               use_fastr=use_fastr,
-                                              fastr_plugin=fastr_plugin)
+                                              fastr_plugin=fastr_plugin,
+                                              use_SMAC=use_SMAC,
+                                              smac_result_file=smac_result_file)
         elif crossval_type == 'LOO':
             print('Performing leave-one-out cross-validations.')
             logging.debug('Performing leave-one-out cross-validations.')
@@ -751,7 +774,9 @@ 

Source code for WORC.classification.crossval

fixedsplits=fixedsplits,
                                      fixed_seed=fixed_seed,
                                      use_fastr=use_fastr,
-                                     fastr_plugin=fastr_plugin)
+                                     fastr_plugin=fastr_plugin,
+                                     use_SMAC=use_SMAC,
+                                     smac_result_file=smac_result_file)
         else:
             raise ae.WORCKeyError(f'{crossval_type} is not a recognized cross-validation type.')
 
diff --git a/WORC/doc/_build/html/_modules/WORC/classification/estimators.html b/WORC/doc/_build/html/_modules/WORC/classification/estimators.html
index 9f233b4f..559879c5 100644
--- a/WORC/doc/_build/html/_modules/WORC/classification/estimators.html
+++ b/WORC/doc/_build/html/_modules/WORC/classification/estimators.html
@@ -8,7 +8,7 @@
   
   
   
-  WORC.classification.estimators — WORC 3.5.0 documentation
+  WORC.classification.estimators — WORC 3.6.0 documentation
   
 
   
@@ -62,7 +62,7 @@
             
             
               
- 3.5.0 + 3.6.0
diff --git a/WORC/doc/_build/html/_modules/WORC/classification/fitandscore.html b/WORC/doc/_build/html/_modules/WORC/classification/fitandscore.html index 6b8a2046..77e5d3fb 100644 --- a/WORC/doc/_build/html/_modules/WORC/classification/fitandscore.html +++ b/WORC/doc/_build/html/_modules/WORC/classification/fitandscore.html @@ -8,7 +8,7 @@ - WORC.classification.fitandscore — WORC 3.5.0 documentation + WORC.classification.fitandscore — WORC 3.6.0 documentation @@ -62,7 +62,7 @@
- 3.5.0 + 3.6.0
@@ -165,7 +165,7 @@

Source code for WORC.classification.fitandscore

 #!/usr/bin/env python
 
-# Copyright 2016-2021 Biomedical Imaging Group Rotterdam, Departments of
+# Copyright 2016-2022 Biomedical Imaging Group Rotterdam, Departments of
 # Medical Informatics and Radiology, Erasmus MC, Rotterdam, The Netherlands
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
@@ -201,14 +201,20 @@ 

Source code for WORC.classification.fitandscore

< from WORC.featureprocessing.OneHotEncoderWrapper import OneHotEncoderWrapper import WORC import WORC.addexceptions as ae +import time # Specific imports for error management from sklearn.discriminant_analysis import LinearDiscriminantAnalysis as LDA from numpy.linalg import LinAlgError -# Suppress sklearn warnings +# Suppress some sklearn warnings. These occur when unused hyperparameters are +# supplied, when estimators that are refitted do not converge, or parts +# are deprecated import warnings +from sklearn.exceptions import ConvergenceWarning warnings.filterwarnings("ignore", category=DeprecationWarning) +warnings.filterwarnings("ignore", category=UserWarning) +warnings.filterwarnings("ignore", category=ConvergenceWarning)
[docs]def fit_and_score(X, y, scoring, @@ -218,9 +224,9 @@

Source code for WORC.classification.fitandscore

< return_n_test_samples=True, return_times=True, return_parameters=False, return_estimator=False, - error_score='raise', verbose=True, - return_all=True, - refit_workflows=False): + error_score='raise', verbose=False, + return_all=True, refit_workflows=False, + use_smac=False): """Fit an estimator to a dataset and score the performance. The following @@ -453,6 +459,9 @@

Source code for WORC.classification.fitandscore

< if not return_all: del encoder + # Start the timing + start_time = time.time() + # ------------------------------------------------------------------------ # Feature imputation if 'Imputation' in para_estimator.keys(): @@ -460,7 +469,11 @@

Source code for WORC.classification.fitandscore

< imp_type = para_estimator['ImputationMethod'] if verbose: print(f'Imputing NaN with {imp_type}.') - imp_nn = para_estimator['ImputationNeighbours'] + # Only used with KNN in SMAC, otherwise assign default + if 'ImputationNeighbours' in para_estimator.keys(): + imp_nn = para_estimator['ImputationNeighbours'] + else: + imp_nn = 8 imputer = Imputer(missing_values=np.nan, strategy=imp_type, n_neighbors=imp_nn) @@ -477,7 +490,8 @@

Source code for WORC.classification.fitandscore

< del para_estimator['Imputation'] del para_estimator['ImputationMethod'] - del para_estimator['ImputationNeighbours'] + if 'ImputationNeighbours' in para_estimator.keys(): + del para_estimator['ImputationNeighbours'] # Delete the object if we do not need to return it if not return_all: @@ -566,6 +580,14 @@

Source code for WORC.classification.fitandscore

< # Delete the non-used fields para_estimator = delete_nonestimator_parameters(para_estimator) + # Update the runtime + end_time = time.time() + runtime = end_time - start_time + if return_train_score: + ret[3] = runtime + else: + ret[2] = runtime + if return_all: return ret, GroupSel, VarSel, SelectModel, feature_labels[0], scaler, encoder, imputer, pca, StatisticalSel, ReliefSel, Sampler else: @@ -602,6 +624,14 @@

Source code for WORC.classification.fitandscore

< print(parameters) para_estimator = delete_nonestimator_parameters(para_estimator) + # Update the runtime + end_time = time.time() + runtime = end_time - start_time + if return_train_score: + ret[3] = runtime + else: + ret[2] = runtime + if return_all: return ret, GroupSel, VarSel, SelectModel, feature_labels[0], scaler, encoder, imputer, pca, StatisticalSel, ReliefSel, Sampler else: @@ -639,9 +669,8 @@

Source code for WORC.classification.fitandscore

< if not return_all: del scaler - # -------------------------------------------------------------------- - # Relief feature selection, possibly multi classself. + # Relief feature selection, possibly multi class. # Needs to be done after scaling! # para_estimator['ReliefUse'] = 'True' if 'ReliefUse' in para_estimator.keys(): @@ -691,6 +720,14 @@

Source code for WORC.classification.fitandscore

< print(parameters) para_estimator = delete_nonestimator_parameters(para_estimator) + # Update the runtime + end_time = time.time() + runtime = end_time - start_time + if return_train_score: + ret[3] = runtime + else: + ret[2] = runtime + if return_all: return ret, GroupSel, VarSel, SelectModel, feature_labels[0], scaler, encoder, imputer, pca, StatisticalSel, ReliefSel, Sampler else: @@ -698,61 +735,63 @@

Source code for WORC.classification.fitandscore

< # ------------------------------------------------------------------------ # Perform feature selection using a model - para_estimator['SelectFromModel'] = 'True' - if 'SelectFromModel' in para_estimator.keys() and para_estimator['SelectFromModel'] == 'True': - model = para_estimator['SelectFromModel_estimator'] - if verbose: - print(f"Selecting features using model {model}.") - - if model == 'Lasso': - # Use lasso model for feature selection - alpha = para_estimator['SelectFromModel_lasso_alpha'] - selectestimator = Lasso(alpha=alpha, random_state=random_seed) - - elif model == 'LR': - # Use logistic regression model for feature selection - selectestimator = LogisticRegression(random_state=random_seed) - - elif model == 'RF': - # Use random forest model for feature selection - n_estimators = para_estimator['SelectFromModel_n_trees'] - selectestimator = RandomForestClassifier(n_estimators=n_estimators, - random_state=random_seed) - else: - raise ae.WORCKeyError(f'Model {model} is not known for SelectFromModel. Use Lasso, LR, or RF.') - - if len(y_train.shape) >= 2: - # Multilabel or regression. Regression: second dimension has length 1 - if y_train.shape[1] > 1 and model != 'RF': - raise ae.WORCValueError(f'Model {model} is not suitable for multiclass classification. Please use RF or do not use SelectFromModel.') + if 'SelectFromModel' in para_estimator.keys(): + if para_estimator['SelectFromModel'] == 'True': + model = para_estimator['SelectFromModel_estimator'] + if verbose: + print(f"Selecting features using model {model}.") + + if model == 'Lasso': + # Use lasso model for feature selection + alpha = para_estimator['SelectFromModel_lasso_alpha'] + selectestimator = Lasso(alpha=alpha, random_state=random_seed) + + elif model == 'LR': + # Use logistic regression model for feature selection + selectestimator = LogisticRegression(random_state=random_seed) + + elif model == 'RF': + # Use random forest model for feature selection + n_estimators = para_estimator['SelectFromModel_n_trees'] + selectestimator = RandomForestClassifier(n_estimators=n_estimators, + random_state=random_seed) + else: + raise ae.WORCKeyError(f'Model {model} is not known for SelectFromModel. Use Lasso, LR, or RF.') - # Prefit model - selectestimator.fit(X_train, y_train) + if len(y_train.shape) >= 2: + # Multilabel or regression. Regression: second dimension has length 1 + if y_train.shape[1] > 1 and model != 'RF': + raise ae.WORCValueError(f'Model {model} is not suitable for multiclass classification. Please use RF or do not use SelectFromModel.') - # Use fit to select optimal features - SelectModel = SelectFromModel(selectestimator, prefit=True) - if verbose: - print("\t Original Length: " + str(len(X_train[0]))) + # Prefit model + selectestimator.fit(X_train, y_train) - X_train_temp = SelectModel.transform(X_train) - if len(X_train_temp[0]) == 0: + # Use fit to select optimal features + SelectModel = SelectFromModel(selectestimator, prefit=True) if verbose: - print('[WORC WARNING]: No features are selected! Probably your data is too noisy or the selection too strict. Skipping SelectFromModel.') - SelectModel = None - parameters['SelectFromModel'] = 'False' - else: - X_train = SelectModel.transform(X_train) - X_test = SelectModel.transform(X_test) - feature_labels = SelectModel.transform(feature_labels) + print("\t Original Length: " + str(len(X_train[0]))) - if verbose: - print("\t New Length: " + str(len(X_train[0]))) + X_train_temp = SelectModel.transform(X_train) + if len(X_train_temp[0]) == 0: + if verbose: + print('[WORC WARNING]: No features are selected! Probably your data is too noisy or the selection too strict. Skipping SelectFromModel.') + SelectModel = None + parameters['SelectFromModel'] = 'False' + else: + X_train = SelectModel.transform(X_train) + X_test = SelectModel.transform(X_test) + feature_labels = SelectModel.transform(feature_labels) + + if verbose: + print("\t New Length: " + str(len(X_train[0]))) - if 'SelectFromModel' in para_estimator.keys(): del para_estimator['SelectFromModel'] - del para_estimator['SelectFromModel_lasso_alpha'] - del para_estimator['SelectFromModel_estimator'] - del para_estimator['SelectFromModel_n_trees'] + if 'SelectFromModel_lasso_alpha' in para_estimator.keys(): + del para_estimator['SelectFromModel_lasso_alpha'] + if 'SelectFromModel_estimator' in para_estimator.keys(): + del para_estimator['SelectFromModel_estimator'] + if 'SelectFromModel_n_trees' in para_estimator.keys(): + del para_estimator['SelectFromModel_n_trees'] # Delete the object if we do not need to return it if not return_all: @@ -766,6 +805,14 @@

Source code for WORC.classification.fitandscore

< print(parameters) para_estimator = delete_nonestimator_parameters(para_estimator) + # Update the runtime + end_time = time.time() + runtime = end_time - start_time + if return_train_score: + ret[3] = runtime + else: + ret[2] = runtime + if return_all: return ret, GroupSel, VarSel, SelectModel, feature_labels[0], scaler, encoder, imputer, pca, StatisticalSel, ReliefSel, Sampler else: @@ -788,6 +835,15 @@

Source code for WORC.classification.fitandscore

< print(f'[WARNING]: skipping this setting due to PCA Error: {e}.') pca = None + + # Update the runtime + end_time = time.time() + runtime = end_time - start_time + if return_train_score: + ret[3] = runtime + else: + ret[2] = runtime + if return_all: return ret, GroupSel, VarSel, SelectModel, feature_labels[0], scaler, encoder, imputer, pca, StatisticalSel, ReliefSel, Sampler else: @@ -809,6 +865,15 @@

Source code for WORC.classification.fitandscore

< print(f'[WARNING]: skipping this setting due to PCA Error: {e}.') pca = None + + # Update the runtime + end_time = time.time() + runtime = end_time - start_time + if return_train_score: + ret[3] = runtime + else: + ret[2] = runtime + if return_all: return ret, GroupSel, VarSel, SelectModel, feature_labels[0], scaler, encoder, imputer, pca, StatisticalSel, ReliefSel, Sampler else: @@ -851,7 +916,8 @@

Source code for WORC.classification.fitandscore

< if 'UsePCA' in para_estimator.keys(): del para_estimator['UsePCA'] - del para_estimator['PCAType'] + if 'PCAType' in para_estimator.keys(): + del para_estimator['PCAType'] # -------------------------------------------------------------------- # Feature selection based on a statistical test @@ -871,8 +937,21 @@

Source code for WORC.classification.fitandscore

< if len(X_train_temp[0]) == 0: if verbose: print('[WORC WARNING]: No features are selected! Probably your statistical test feature selection was too strict. Skipping thresholding.') - StatisticalSel = None - parameters['StatisticalTestUse'] = 'False' + para_estimator = delete_nonestimator_parameters(para_estimator) + # Update the runtime + end_time = time.time() + runtime = end_time - start_time + if return_train_score: + ret[3] = runtime + else: + ret[2] = runtime + if return_all: + return ret, GroupSel, VarSel, SelectModel,\ + feature_labels[0], scaler, encoder, imputer, pca,\ + StatisticalSel, ReliefSel, Sampler + else: + return ret + else: X_train = StatisticalSel.transform(X_train) X_test = StatisticalSel.transform(X_test) @@ -881,9 +960,13 @@

Source code for WORC.classification.fitandscore

< if verbose: print("\t New Length: " + str(len(X_train[0]))) + # Delete the statistical test keys del para_estimator['StatisticalTestUse'] - del para_estimator['StatisticalTestMetric'] - del para_estimator['StatisticalTestThreshold'] + if 'StatisticalTestMetric' in para_estimator.keys(): + del para_estimator['StatisticalTestMetric'] + + if 'StatisticalTestThreshold' in para_estimator.keys(): + del para_estimator['StatisticalTestThreshold'] # Delete the object if we do not need to return it if not return_all: @@ -899,8 +982,21 @@

Source code for WORC.classification.fitandscore

< neg_initial = int(len(y_train) - pos_initial) len_in = len(y_train) + # If SMAC has removed a certain parameter, add a dummy altough + # it's not actually used + if 'Resampling_sampling_strategy' not in para_estimator.keys(): + para_estimator['Resampling_sampling_strategy'] = None + + if 'Resampling_n_neighbors' not in para_estimator.keys(): + para_estimator['Resampling_n_neighbors'] = None + + if 'Resampling_k_neighbors' not in para_estimator.keys(): + para_estimator['Resampling_k_neighbors'] = None + + if 'Resampling_threshold_cleaning' not in para_estimator.keys(): + para_estimator['Resampling_threshold_cleaning'] = None + # Fit ObjectSampler and transform dataset - # NOTE: need to save random state for this one as well! Sampler =\ ObjectSampler(method=para_estimator['Resampling_Method'], sampling_strategy=para_estimator['Resampling_sampling_strategy'], @@ -930,6 +1026,14 @@

Source code for WORC.classification.fitandscore

< print(parameters) para_estimator = delete_nonestimator_parameters(para_estimator) + # Update the runtime + end_time = time.time() + runtime = end_time - start_time + if return_train_score: + ret[3] = runtime + else: + ret[2] = runtime + if return_all: return ret, GroupSel, VarSel, SelectModel, feature_labels[0], scaler, encoder, imputer, pca, StatisticalSel, ReliefSel, Sampler else: @@ -960,13 +1064,25 @@

Source code for WORC.classification.fitandscore

< train = np.arange(0, len(y_train)) test = np.arange(len(y_train), len(y_train) + len(y_test)) + # Delete the resampling parameters del para_estimator['Resampling_Use'] - del para_estimator['Resampling_Method'] - del para_estimator['Resampling_sampling_strategy'] - del para_estimator['Resampling_n_neighbors'] - del para_estimator['Resampling_k_neighbors'] - del para_estimator['Resampling_threshold_cleaning'] - del para_estimator['Resampling_n_cores'] + if 'Resampling_Method' in para_estimator.keys(): + del para_estimator['Resampling_Method'] + + if 'Resampling_sampling_strategy' in para_estimator.keys(): + del para_estimator['Resampling_sampling_strategy'] + + if 'Resampling_n_neighbors' in para_estimator.keys(): + del para_estimator['Resampling_n_neighbors'] + + if 'Resampling_k_neighbors' in para_estimator.keys(): + del para_estimator['Resampling_k_neighbors'] + + if 'Resampling_threshold_cleaning' in para_estimator.keys(): + del para_estimator['Resampling_threshold_cleaning'] + + if 'Resampling_n_cores' in para_estimator.keys(): + del para_estimator['Resampling_n_cores'] # Delete the object if we do not need to return it if not return_all: @@ -1020,6 +1136,14 @@

Source code for WORC.classification.fitandscore

< if verbose: print(f'[WARNING]: skipping this setting due to LDA Error: {e}.') + # Update the runtime + end_time = time.time() + runtime = end_time - start_time + if return_train_score: + ret[3] = runtime + else: + ret[2] = runtime + if return_all: return ret, GroupSel, VarSel, SelectModel, feature_labels[0], scaler, encoder, imputer, pca, StatisticalSel, ReliefSel, Sampler else: @@ -1037,6 +1161,14 @@

Source code for WORC.classification.fitandscore

< train=indices, test=indices) ret.append(estimator) + # End the timing and store the fit_time + end_time = time.time() + runtime = end_time - start_time + if return_train_score: + ret[3] = runtime + else: + ret[2] = runtime + if return_all: return ret, GroupSel, VarSel, SelectModel, feature_labels[0], scaler, encoder, imputer, pca, StatisticalSel, ReliefSel, Sampler else: @@ -1049,60 +1181,41 @@

Source code for WORC.classification.fitandscore

< Delete all parameters in a parameter dictionary that are not used for the actual estimator. """ - if 'Number' in parameters.keys(): - del parameters['Number'] - - if 'UsePCA' in parameters.keys(): - del parameters['UsePCA'] - del parameters['PCAType'] - - if 'ReliefUse' in parameters.keys(): - del parameters['ReliefUse'] - del parameters['ReliefNN'] - del parameters['ReliefSampleSize'] - del parameters['ReliefDistanceP'] - del parameters['ReliefNumFeatures'] - - if 'OneHotEncoding' in parameters.keys(): - del parameters['OneHotEncoding'] - del parameters['OneHotEncoding_feature_labels_tofit'] - - if 'Imputation' in parameters.keys(): - del parameters['Imputation'] - del parameters['ImputationMethod'] - del parameters['ImputationNeighbours'] - - if 'SelectFromModel' in parameters.keys(): - del parameters['SelectFromModel'] - del parameters['SelectFromModel_lasso_alpha'] - del parameters['SelectFromModel_estimator'] - del parameters['SelectFromModel_n_trees'] - - if 'Featsel_Variance' in parameters.keys(): - del parameters['Featsel_Variance'] - - if 'FeatPreProcess' in parameters.keys(): - del parameters['FeatPreProcess'] - - if 'FeatureScaling' in parameters.keys(): - del parameters['FeatureScaling'] - - if 'StatisticalTestUse' in parameters.keys(): - del parameters['StatisticalTestUse'] - del parameters['StatisticalTestMetric'] - del parameters['StatisticalTestThreshold'] - - if 'Resampling_Use' in parameters.keys(): - del parameters['Resampling_Use'] - del parameters['Resampling_Method'] - del parameters['Resampling_sampling_strategy'] - del parameters['Resampling_n_neighbors'] - del parameters['Resampling_k_neighbors'] - del parameters['Resampling_threshold_cleaning'] - del parameters['Resampling_n_cores'] - - if 'random_seed' in parameters.keys(): - del parameters['random_seed'] + deletekeys = ['Number', + 'UsePCA', + 'PCAType', + 'ReliefUse', + 'ReliefNN', + 'ReliefSampleSize', + 'ReliefNumFeatures', + 'OneHotEncoding', + 'OneHotEncoding_feature_labels_tofit', + 'Imputation', + 'ImputationMethod', + 'ImputationNeighbours', + 'SelectFromModel', + 'SelectFromModel_lasso_alpha', + 'SelectFromModel_estimator', + 'SelectFromModel_n_trees', + 'Featsel_Variance', + 'FeatPreProcess', + 'FeatureScaling', + 'StatisticalTestUse', + 'StatisticalTestMetric', + 'StatisticalTestThreshold', + 'Resampling_Use', + 'Resampling_Method', + 'Resampling_sampling_strategy', + 'Resampling_n_cores', + 'Resampling_n_neighbors', + 'Resampling_k_neighbors', + 'Resampling_threshold_cleaning', + 'random_seed' + ] + + for k in deletekeys: + if k in parameters.keys(): + del parameters[k] return parameters
@@ -1159,7 +1272,13 @@

Source code for WORC.classification.fitandscore

< 'XGB_learning_rate', 'XGB_gamma', 'XGB_min_child_weight', - 'XGB_colsample_bytree'] + 'XGB_colsample_bytree', + 'LightGBM_num_leaves', + 'LightGBM_max_depth', + 'LightGBM_min_child_samples', + 'LightGBM_reg_alpha', + 'LightGBM_reg_lambda', + 'LightGBM_min_child_weight'] for k in deletekeys: if k in para.keys(): diff --git a/WORC/doc/_build/html/_modules/WORC/classification/metrics.html b/WORC/doc/_build/html/_modules/WORC/classification/metrics.html index 187375f8..3a6c66d0 100644 --- a/WORC/doc/_build/html/_modules/WORC/classification/metrics.html +++ b/WORC/doc/_build/html/_modules/WORC/classification/metrics.html @@ -8,7 +8,7 @@ - WORC.classification.metrics — WORC 3.5.0 documentation + WORC.classification.metrics — WORC 3.6.0 documentation @@ -62,7 +62,7 @@
- 3.5.0 + 3.6.0
diff --git a/WORC/doc/_build/html/_modules/WORC/classification/parameter_optimization.html b/WORC/doc/_build/html/_modules/WORC/classification/parameter_optimization.html index 7ca0ce99..1315e80f 100644 --- a/WORC/doc/_build/html/_modules/WORC/classification/parameter_optimization.html +++ b/WORC/doc/_build/html/_modules/WORC/classification/parameter_optimization.html @@ -8,7 +8,7 @@ - WORC.classification.parameter_optimization — WORC 3.5.0 documentation + WORC.classification.parameter_optimization — WORC 3.6.0 documentation @@ -62,7 +62,7 @@
- 3.5.0 + 3.6.0
@@ -183,15 +183,15 @@

Source code for WORC.classification.parameter_optimization

import numpy as np from sklearn.utils import check_random_state from sklearn.model_selection import StratifiedShuffleSplit, ShuffleSplit -from WORC.classification.SearchCV import RandomizedSearchCVfastr, RandomizedSearchCVJoblib +from WORC.classification.SearchCV import RandomizedSearchCVfastr, RandomizedSearchCVJoblib, GuidedSearchCVSMAC
[docs]def random_search_parameters(features, labels, N_iter, test_size, param_grid, scoring_method, n_splits=5, n_jobspercore=200, use_fastr=False, - n_cores=1, fastr_plugin=None, memory='2G', - maxlen=100, - ranking_score='test_score', random_seed=None, + n_cores=1, fastr_plugin=None, + memory='2G', maxlen=100, ranking_score='test_score', + random_seed=None, refit_workflows=False): """ Train a classifier and simultaneously optimizes hyperparameters using a @@ -220,7 +220,9 @@

Source code for WORC.classification.parameter_optimization

random_search: sklearn randomsearch object containing the results. """ if random_seed is None: - random_seed = np.random.randint(1, 5000) + #random_seed = np.random.randint(1, 5000) + # Fix the random seed for testing + random_seed = 42 random_state = check_random_state(random_seed) regressors = ['SVR', 'RFR', 'SGDR', 'Lasso', 'ElasticNet'] @@ -263,6 +265,77 @@

Source code for WORC.classification.parameter_optimization

print(f"\n Best score using best parameters: {scoring_method} = {random_search.best_score_}") return random_search
+ + +
[docs]def guided_search_parameters(features, labels, N_iter, test_size, + parameters, scoring_method, n_splits=5, + n_jobspercore=200, use_fastr=False, + n_cores=1, fastr_plugin=None, + memory='2G', maxlen=100, ranking_score='test_score', + random_seed=None, refit_workflows=False, + smac_result_file=None): + """ + Train a classifier and simultaneously optimizes hyperparameters using a + Bayesian optimization approach. + + Arguments: + features: numpy array containing the training features. + labels: list containing the object labels to be trained on. + N_iter: integer listing the number of iterations to be used in the + hyperparameter optimization. + test_size: float listing the test size percentage used in the cross + validation. + classifier: sklearn classifier to be tested + param_grid: dictionary containing all possible hyperparameters and their + values or distrubitions. + scoring_method: string defining scoring method used in optimization, + e.g. f1_weighted for a SVM. + n_jobsperscore: integer listing the number of jobs that are ran on a + single core when using the fastr randomized search. + use_fastr: Boolean determining of either fastr or joblib should be used + for the opimization. + fastr_plugin: determines which plugin is used for fastr executions. + When None, uses the default plugin from the fastr config. + + Returns: + guided_search: object containing the results + """ + if random_seed is None: + #random_seed = np.random.randint(1, 5000) + # Fix the random seed for testing + random_seed = 42 + random_state = check_random_state(random_seed) + + regressors = ['SVR', 'RFR', 'SGDR', 'Lasso', 'ElasticNet'] + if any(clf in regressors for clf in parameters['Classification']['classifiers']): + # We cannot do a stratified shuffle split with regression + cv = ShuffleSplit(n_splits=n_splits, test_size=test_size, + random_state=random_state) + else: + cv = StratifiedShuffleSplit(n_splits=n_splits, test_size=test_size, + random_state=random_state) + + guided_search = GuidedSearchCVSMAC(param_distributions=parameters, + n_iter=N_iter, + scoring=scoring_method, + n_jobs=n_cores, + n_jobspercore=n_jobspercore, + maxlen=maxlen, + verbose=1, cv=cv, + fastr_plugin=fastr_plugin, + ranking_score=ranking_score, + features=features, + labels=labels, + smac_result_file=smac_result_file) + + guided_search.fit(features, labels) + print("Best found parameters:") + for i in guided_search.best_params_: + print(f'{i}: {guided_search.best_params_[i]}.') + print("\n Best score using best parameters:") + print(guided_search.best_score_) + + return guided_search
diff --git a/WORC/doc/_build/html/_modules/WORC/classification/trainclassifier.html b/WORC/doc/_build/html/_modules/WORC/classification/trainclassifier.html index 9942bfa6..8f6ae959 100644 --- a/WORC/doc/_build/html/_modules/WORC/classification/trainclassifier.html +++ b/WORC/doc/_build/html/_modules/WORC/classification/trainclassifier.html @@ -8,7 +8,7 @@ - WORC.classification.trainclassifier — WORC 3.5.0 documentation + WORC.classification.trainclassifier — WORC 3.6.0 documentation @@ -62,7 +62,7 @@
- 3.5.0 + 3.6.0
@@ -165,7 +165,7 @@

Source code for WORC.classification.trainclassifier

 #!/usr/bin/env python
 
-# Copyright 2016-2021 Biomedical Imaging Group Rotterdam, Departments of
+# Copyright 2016-2022 Biomedical Imaging Group Rotterdam, Departments of
 # Medical Informatics and Radiology, Erasmus MC, Rotterdam, The Netherlands
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
@@ -181,6 +181,7 @@ 

Source code for WORC.classification.trainclassifier

# limitations under the License. import os +import numpy as np from scipy.stats import uniform from WORC.classification import crossval as cv from WORC.classification import construct_classifier as cc @@ -188,12 +189,13 @@

Source code for WORC.classification.trainclassifier

import WORC.IOparser.config_io_classifier as config_io from WORC.classification.AdvancedSampler import discrete_uniform, \ log_uniform, boolean_uniform +import json
[docs]def trainclassifier(feat_train, patientinfo_train, config, output_hdf, feat_test=None, patientinfo_test=None, - fixedsplits=None, verbose=True): + fixedsplits=None, output_smac=None, verbose=True): """Train a classifier using machine learning from features. By default, if no @@ -270,6 +272,14 @@

Source code for WORC.classification.trainclassifier

if type(fixedsplits) is list: fixedsplits = ''.join(fixedsplits) + if type(output_smac) is list: + if len(output_smac) == 1: + output_smac = ''.join(output_smac) + else: + # FIXME + print('[WORC Warning] You provided multiple output json files: only the first one will be used!') + output_smac = output_smac[0] + # Load variables from the config file config = config_io.load_config(config) label_type = config['Labels']['label_names'] @@ -306,6 +316,7 @@

Source code for WORC.classification.trainclassifier

# For N_iter, perform k-fold crossvalidation outputfolder = os.path.dirname(output_hdf) + smac_result_file = output_smac if feat_test is None: trained_classifier = cv.crossval(config, label_data_train, image_features_train, @@ -316,7 +327,9 @@

Source code for WORC.classification.trainclassifier

fixedsplits=fixedsplits, ensemble=config['Ensemble'], outputfolder=outputfolder, - tempsave=config['General']['tempsave']) + tempsave=config['General']['tempsave'], + use_SMAC=config['SMAC']['use'], + smac_result_file=smac_result_file) else: trained_classifier = cv.nocrossval(config, label_data_train, label_data_test, diff --git a/WORC/doc/_build/html/_modules/WORC/detectors/detectors.html b/WORC/doc/_build/html/_modules/WORC/detectors/detectors.html index e1f7f1e6..938d1dd6 100644 --- a/WORC/doc/_build/html/_modules/WORC/detectors/detectors.html +++ b/WORC/doc/_build/html/_modules/WORC/detectors/detectors.html @@ -8,7 +8,7 @@ - WORC.detectors.detectors — WORC 3.5.0 documentation + WORC.detectors.detectors — WORC 3.6.0 documentation @@ -62,7 +62,7 @@
- 3.5.0 + 3.6.0
@@ -229,11 +229,11 @@

Source code for WORC.detectors.detectors

             return False
-
[docs]class CartesiusClusterDetector(AbstractDetector): +
[docs]class SnelliusClusterDetector(AbstractDetector): def _is_detected(self): if LinuxDetector()._is_detected(): try: - if 'cartesius' in Path('/etc/hosts').read_text(): + if 'localhost6.localdomain6' in Path('/etc/hosts').read_text(): return True except: return False diff --git a/WORC/doc/_build/html/_modules/WORC/exampledata/datadownloader.html b/WORC/doc/_build/html/_modules/WORC/exampledata/datadownloader.html index 58bb52ed..08383a48 100644 --- a/WORC/doc/_build/html/_modules/WORC/exampledata/datadownloader.html +++ b/WORC/doc/_build/html/_modules/WORC/exampledata/datadownloader.html @@ -8,7 +8,7 @@ - WORC.exampledata.datadownloader — WORC 3.5.0 documentation + WORC.exampledata.datadownloader — WORC 3.6.0 documentation @@ -62,7 +62,7 @@
- 3.5.0 + 3.6.0
diff --git a/WORC/doc/_build/html/_modules/WORC/featureprocessing/Imputer.html b/WORC/doc/_build/html/_modules/WORC/featureprocessing/Imputer.html index 79e9df03..1945c0da 100644 --- a/WORC/doc/_build/html/_modules/WORC/featureprocessing/Imputer.html +++ b/WORC/doc/_build/html/_modules/WORC/featureprocessing/Imputer.html @@ -8,7 +8,7 @@ - WORC.featureprocessing.Imputer — WORC 3.5.0 documentation + WORC.featureprocessing.Imputer — WORC 3.6.0 documentation @@ -62,7 +62,7 @@
- 3.5.0 + 3.6.0
diff --git a/WORC/doc/_build/html/_modules/WORC/featureprocessing/Relief.html b/WORC/doc/_build/html/_modules/WORC/featureprocessing/Relief.html index 474d322b..2d98c9a6 100644 --- a/WORC/doc/_build/html/_modules/WORC/featureprocessing/Relief.html +++ b/WORC/doc/_build/html/_modules/WORC/featureprocessing/Relief.html @@ -8,7 +8,7 @@ - WORC.featureprocessing.Relief — WORC 3.5.0 documentation + WORC.featureprocessing.Relief — WORC 3.6.0 documentation @@ -62,7 +62,7 @@
- 3.5.0 + 3.6.0
diff --git a/WORC/doc/_build/html/_modules/WORC/featureprocessing/SelectGroups.html b/WORC/doc/_build/html/_modules/WORC/featureprocessing/SelectGroups.html index 21fd4d03..ac0b0219 100644 --- a/WORC/doc/_build/html/_modules/WORC/featureprocessing/SelectGroups.html +++ b/WORC/doc/_build/html/_modules/WORC/featureprocessing/SelectGroups.html @@ -8,7 +8,7 @@ - WORC.featureprocessing.SelectGroups — WORC 3.5.0 documentation + WORC.featureprocessing.SelectGroups — WORC 3.6.0 documentation @@ -62,7 +62,7 @@
- 3.5.0 + 3.6.0
diff --git a/WORC/doc/_build/html/_modules/WORC/featureprocessing/SelectIndividuals.html b/WORC/doc/_build/html/_modules/WORC/featureprocessing/SelectIndividuals.html index aa873206..9191915d 100644 --- a/WORC/doc/_build/html/_modules/WORC/featureprocessing/SelectIndividuals.html +++ b/WORC/doc/_build/html/_modules/WORC/featureprocessing/SelectIndividuals.html @@ -8,7 +8,7 @@ - WORC.featureprocessing.SelectIndividuals — WORC 3.5.0 documentation + WORC.featureprocessing.SelectIndividuals — WORC 3.6.0 documentation @@ -62,7 +62,7 @@
- 3.5.0 + 3.6.0
diff --git a/WORC/doc/_build/html/_modules/WORC/featureprocessing/StatisticalTestFeatures.html b/WORC/doc/_build/html/_modules/WORC/featureprocessing/StatisticalTestFeatures.html index a5797ff2..da8876cd 100644 --- a/WORC/doc/_build/html/_modules/WORC/featureprocessing/StatisticalTestFeatures.html +++ b/WORC/doc/_build/html/_modules/WORC/featureprocessing/StatisticalTestFeatures.html @@ -8,7 +8,7 @@ - WORC.featureprocessing.StatisticalTestFeatures — WORC 3.5.0 documentation + WORC.featureprocessing.StatisticalTestFeatures — WORC 3.6.0 documentation @@ -62,7 +62,7 @@
- 3.5.0 + 3.6.0
diff --git a/WORC/doc/_build/html/_modules/WORC/featureprocessing/StatisticalTestThreshold.html b/WORC/doc/_build/html/_modules/WORC/featureprocessing/StatisticalTestThreshold.html index 2be7d257..0e74c9c1 100644 --- a/WORC/doc/_build/html/_modules/WORC/featureprocessing/StatisticalTestThreshold.html +++ b/WORC/doc/_build/html/_modules/WORC/featureprocessing/StatisticalTestThreshold.html @@ -8,7 +8,7 @@ - WORC.featureprocessing.StatisticalTestThreshold — WORC 3.5.0 documentation + WORC.featureprocessing.StatisticalTestThreshold — WORC 3.6.0 documentation @@ -62,7 +62,7 @@
- 3.5.0 + 3.6.0
diff --git a/WORC/doc/_build/html/_modules/WORC/featureprocessing/VarianceThreshold.html b/WORC/doc/_build/html/_modules/WORC/featureprocessing/VarianceThreshold.html index 133a13ef..752b689d 100644 --- a/WORC/doc/_build/html/_modules/WORC/featureprocessing/VarianceThreshold.html +++ b/WORC/doc/_build/html/_modules/WORC/featureprocessing/VarianceThreshold.html @@ -8,7 +8,7 @@ - WORC.featureprocessing.VarianceThreshold — WORC 3.5.0 documentation + WORC.featureprocessing.VarianceThreshold — WORC 3.6.0 documentation @@ -62,7 +62,7 @@
- 3.5.0 + 3.6.0
diff --git a/WORC/doc/_build/html/_modules/WORC/plotting/compute_CI.html b/WORC/doc/_build/html/_modules/WORC/plotting/compute_CI.html index 22dbb49e..7cc98b22 100644 --- a/WORC/doc/_build/html/_modules/WORC/plotting/compute_CI.html +++ b/WORC/doc/_build/html/_modules/WORC/plotting/compute_CI.html @@ -8,7 +8,7 @@ - WORC.plotting.compute_CI — WORC 3.5.0 documentation + WORC.plotting.compute_CI — WORC 3.6.0 documentation @@ -62,7 +62,7 @@
- 3.5.0 + 3.6.0
diff --git a/WORC/doc/_build/html/_modules/WORC/plotting/linstretch.html b/WORC/doc/_build/html/_modules/WORC/plotting/linstretch.html index 68675c31..b5f29baa 100644 --- a/WORC/doc/_build/html/_modules/WORC/plotting/linstretch.html +++ b/WORC/doc/_build/html/_modules/WORC/plotting/linstretch.html @@ -8,7 +8,7 @@ - WORC.plotting.linstretch — WORC 3.5.0 documentation + WORC.plotting.linstretch — WORC 3.6.0 documentation @@ -62,7 +62,7 @@
- 3.5.0 + 3.6.0
diff --git a/WORC/doc/_build/html/_modules/WORC/plotting/plot_ROC.html b/WORC/doc/_build/html/_modules/WORC/plotting/plot_ROC.html index fa6d0c04..fc4bb635 100644 --- a/WORC/doc/_build/html/_modules/WORC/plotting/plot_ROC.html +++ b/WORC/doc/_build/html/_modules/WORC/plotting/plot_ROC.html @@ -8,7 +8,7 @@ - WORC.plotting.plot_ROC — WORC 3.5.0 documentation + WORC.plotting.plot_ROC — WORC 3.6.0 documentation @@ -62,7 +62,7 @@
- 3.5.0 + 3.6.0
@@ -699,8 +699,11 @@

Source code for WORC.plotting.plot_ROC

     parser.add_argument('-pinfo', '--pinfo', metavar='pinfo',
                         nargs='+', dest='pinfo', type=str, required=True,
                         help='Patient Info File (txt)')
-    parser.add_argument('-ensemble', '--ensemble', metavar='ensemble',
-                        nargs='+', dest='ensemble', type=str, required=True,
+    parser.add_argument('-ensemble_method', '--ensemble_method', metavar='ensemble_method',
+                        nargs='+', dest='ensemble_method', type=str, required=True,
+                        help='Method for creating ensemble (string)')
+    parser.add_argument('-ensemble_size', '--ensemble_size', metavar='ensemble_size',
+                        nargs='+', dest='ensemble_size', type=str, required=False,
                         help='Length of ensemble (int)')
     parser.add_argument('-label_type', '--label_type', metavar='label_type',
                         nargs='+', dest='label_type', type=str, required=True,
@@ -727,7 +730,8 @@ 

Source code for WORC.plotting.plot_ROC

 
     plot_ROC(prediction=args.prediction,
              pinfo=args.pinfo,
-             ensemble=args.ensemble,
+             ensemble_method=args.ensemble_method,
+             ensemble_size=args.ensemble_size,
              label_type=args.label_type,
              ROC_png=args.ROC_png,
              ROC_tex=args.ROC_tex,
@@ -737,7 +741,8 @@ 

Source code for WORC.plotting.plot_ROC

              PRC_csv=args.PRC_csv)
-
[docs]def plot_ROC(prediction, pinfo, ensemble=1, label_type=None, +
[docs]def plot_ROC(prediction, pinfo, ensemble_method='top_N', + ensemble_size=1, label_type=None, ROC_png=None, ROC_tex=None, ROC_csv=None, PRC_png=None, PRC_tex=None, PRC_csv=None): # Convert the inputs to the correct format @@ -747,8 +752,11 @@

Source code for WORC.plotting.plot_ROC

     if type(pinfo) is list:
         pinfo = ''.join(pinfo)
 
-    if type(ensemble) is list:
-        ensemble = int(ensemble[0])
+    if type(ensemble_method) is list:
+        ensemble_method = ''.join(ensemble_method)
+
+    if type(ensemble_size) is list:
+        ensemble_size = int(ensemble_size[0])
 
     if type(ROC_png) is list:
         ROC_png = ''.join(ROC_png)
@@ -787,7 +795,8 @@ 

Source code for WORC.plotting.plot_ROC

     print('Determining score per patient.')
     y_truths, y_scores, _, _ =\
         plot_estimator_performance(prediction, pinfo, [label_type],
-                                   alpha=0.95, ensemble=ensemble,
+                                   alpha=0.95, ensemble_method=ensemble_method,
+                                   ensemble_size=ensemble_size,
                                    output='decision')
 
     # Check if we can compute confidence intervals
diff --git a/WORC/doc/_build/html/_modules/WORC/plotting/plot_barchart.html b/WORC/doc/_build/html/_modules/WORC/plotting/plot_barchart.html
index 525984b0..6f57b26b 100644
--- a/WORC/doc/_build/html/_modules/WORC/plotting/plot_barchart.html
+++ b/WORC/doc/_build/html/_modules/WORC/plotting/plot_barchart.html
@@ -8,7 +8,7 @@
   
   
   
-  WORC.plotting.plot_barchart — WORC 3.5.0 documentation
+  WORC.plotting.plot_barchart — WORC 3.6.0 documentation
   
 
   
@@ -62,7 +62,7 @@
             
             
               
- 3.5.0 + 3.6.0
diff --git a/WORC/doc/_build/html/_modules/WORC/plotting/plot_images.html b/WORC/doc/_build/html/_modules/WORC/plotting/plot_images.html index 426ad077..20e8a132 100644 --- a/WORC/doc/_build/html/_modules/WORC/plotting/plot_images.html +++ b/WORC/doc/_build/html/_modules/WORC/plotting/plot_images.html @@ -8,7 +8,7 @@ - WORC.plotting.plot_images — WORC 3.5.0 documentation + WORC.plotting.plot_images — WORC 3.6.0 documentation @@ -62,7 +62,7 @@
- 3.5.0 + 3.6.0
@@ -165,7 +165,7 @@

Source code for WORC.plotting.plot_images

 #!/usr/bin/env python
 
-# Copyright 2016-2019 Biomedical Imaging Group Rotterdam, Departments of
+# Copyright 2016-2021 Biomedical Imaging Group Rotterdam, Departments of
 # Medical Informatics and Radiology, Erasmus MC, Rotterdam, The Netherlands
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
@@ -189,6 +189,7 @@ 

Source code for WORC.plotting.plot_images

 import matplotlib.colors as colors
 import SimpleITK as sitk
 from skimage import morphology
+import WORC.addexceptions as ae
 
 
 
[docs]def extract_boundary(contour, radius=2): @@ -216,9 +217,10 @@

Source code for WORC.plotting.plot_images

 
 
 
[docs]def slicer(image, mask=None, output_name=None, output_name_zoom=None, - thresholds=[-240, 160], zoomfactor=4, dpi=500, normalize=False, + thresholds=[-5, 5], zoomfactor=4, dpi=500, normalize=True, expand=False, boundary=False, square=False, flip=True, rot90=0, - alpha=0.40, axis='axial', index=None, color='cyan', radius=2): + alpha=0.40, axis='axial', index=None, color='cyan', radius=2, + colormap='gray'): """Plot slice of image where mask is largest, with mask as overlay. image and mask should both be arrays @@ -371,7 +373,7 @@

Source code for WORC.plotting.plot_images

 
     # Plot the image and overlay the mask
     fig = plot_im_and_overlay(imslice, maskslice, figsize=figsize, alpha=alpha,
-                              color=color)
+                              color=color, colormap=colormap)
 
     # Save Output
     print('\t Saving output.')
@@ -400,8 +402,13 @@ 

Source code for WORC.plotting.plot_images

 
 
 
[docs]def plot_im_and_overlay(image, mask=None, figsize=(3, 3), alpha=0.40, - color='cyan'): + color='cyan', colormap='gray', colorbar=False): """Plot an image in a matplotlib figure and overlay with a mask.""" + # Define colormap + validmaps = ['gray', 'turbo', 'jet'] + if colormap not in validmaps: + raise ae.WORCKeyError(f'Colormap {colormap} is not valid. Should be one of {validmaps}.') + # Create a normalized colormap for the image and mask imin = np.min(image) imax = np.max(image) @@ -415,10 +422,14 @@

Source code for WORC.plotting.plot_images

     # Plot and save the full image
     fig = plt.figure(figsize=figsize)
     ax = fig.add_subplot(1, 1, 1)
-    ax.imshow(image, cmap=plt.cm.gray, norm=norm_im, interpolation="bilinear")
+    mappable = ax.imshow(image, cmap=colormap, norm=norm_im, interpolation="bilinear")
     if mask is not None:
         ax.imshow(mask, cmap=cmap, norm=normO, alpha=alpha, interpolation="bilinear")
 
+    # Add colorbar
+    if colorbar:
+        fig.colorbar(mappable)
+
     # Alter aspect ratio according to figure size
     aspect = figsize[0]/figsize[1]
     ax.set_aspect(aspect)
diff --git a/WORC/doc/_build/html/_modules/WORC/plotting/plot_ranked_scores.html b/WORC/doc/_build/html/_modules/WORC/plotting/plot_ranked_scores.html
index 5975ad66..4961ea82 100644
--- a/WORC/doc/_build/html/_modules/WORC/plotting/plot_ranked_scores.html
+++ b/WORC/doc/_build/html/_modules/WORC/plotting/plot_ranked_scores.html
@@ -8,7 +8,7 @@
   
   
   
-  WORC.plotting.plot_ranked_scores — WORC 3.5.0 documentation
+  WORC.plotting.plot_ranked_scores — WORC 3.6.0 documentation
   
 
   
@@ -62,7 +62,7 @@
             
             
               
- 3.5.0 + 3.6.0
@@ -212,9 +212,12 @@

Source code for WORC.plotting.plot_ranked_scores

parser.add_argument('-segmentations', '--segmentations', metavar='segmentations', nargs='+', dest='segs', type=str, required=True, help='Segmentations of patients (ITK Image files)') - parser.add_argument('-ensemble', '--ensemble', metavar='ensemble', - nargs='+', dest='ens', type=str, required=True, - help='Either length of ensemble (int) or Caruana (string)') + parser.add_argument('-ensemble_method', '--ensemble_method', metavar='ensemble_method', + nargs='+', dest='ens_method', type=str, required=True, + help='Method to be used for ensembling (string)') + parser.add_argument('-ensemble_size', '--ensemble_size', metavar='ensemble_size', + nargs='+', dest='ens_size', type=str, required=True, + help='If ensembling method is top_N, size to be used (int)') parser.add_argument('-label_type', '--label_type', metavar='label_type', nargs='+', dest='label_type', type=str, required=True, help='Label name that is predicted by estimator (string)') @@ -238,9 +241,13 @@

Source code for WORC.plotting.plot_ranked_scores

if type(estimator) is list: estimator = ''.join(estimator) - ensemble = args.ens - if type(ensemble) is list: - ensemble = ''.join(ensemble) + ensemble_method = args.ens_method + if type(ensemble_method) is list: + ensemble_method = ''.join(ensemble_method) + + ensemble_size = args.ens_size + if type(ensemble_size) is list: + ensemble_size = int(ensemble_size[0]) label_type = args.label_type if type(label_type) is list: @@ -264,7 +271,8 @@

Source code for WORC.plotting.plot_ranked_scores

scores=scores, images=args.ims, segmentations=args.segs, - ensemble=ensemble, + ensemble_method=ensemble_method, + ensemble_size=ensemble_size, output_csv=output_csv, output_zip=output_zip)
@@ -282,7 +290,8 @@

Source code for WORC.plotting.plot_ranked_scores

[docs]def plot_ranked_percentages(estimator, pinfo, label_type=None, - ensemble=50, output_csv=None): + ensemble_method='top_N', ensemble_size=100, + output_csv=None): # Read the inputs prediction = pd.read_hdf(estimator) @@ -294,7 +303,8 @@

Source code for WORC.plotting.plot_ranked_scores

pinfo, [label_type], alpha=0.95, - ensemble=ensemble, + ensemble_method=ensemble_method, + ensemble_size=ensemble_size, output='stats') percentages = stats['Rankings']['Percentages'] @@ -418,7 +428,8 @@

Source code for WORC.plotting.plot_ranked_scores

[docs]def plot_ranked_posteriors(estimator, pinfo, label_type=None, - ensemble=50, output_csv=None): + ensemble_method='top_N', ensemble_size=100, + output_csv=None): # Read the inputs prediction = pd.read_hdf(estimator) if label_type is None: @@ -432,7 +443,8 @@

Source code for WORC.plotting.plot_ranked_scores

pinfo, [label_type], alpha=0.95, - ensemble=ensemble, + ensemble_method=ensemble_method, + ensemble_size=ensemble_size, output='scores') # Extract all scores for each patient @@ -546,7 +558,8 @@

Source code for WORC.plotting.plot_ranked_scores

[docs]def plot_ranked_scores(estimator, pinfo, label_type, scores='percentages', - images=[], segmentations=[], ensemble=50, + images=[], segmentations=[], ensemble_method='top_N', + ensemble_size=100, output_csv=None, output_zip=None, output_itk=None): ''' Rank the patients according to their average score. The score can either @@ -579,10 +592,11 @@

Source code for WORC.plotting.plot_ranked_scores

List containing the filepaths to the ITKImage segmentation files of the patients. - ensemble: integer or string, optional - Method to be used for ensembling. Either an integer for a fixed size - or 'Caruana' for the Caruana method, see the SearchCV function for more - details. + ensemble_method: string, optional + Method to be used for ensembling. + + ensemble_size: int, optional + If top_N method is used, number of workflows to be included in ensemble. output_csv: filepath, optional If given, the scores will be written to this csv file. @@ -605,8 +619,10 @@

Source code for WORC.plotting.plot_ranked_scores

plot_ranked_posteriors(estimator=estimator, pinfo=pinfo, label_type=label_type, - ensemble=ensemble, + ensemble_method=ensemble_method, + ensemble_size=ensemble_size, output_csv=output_csv) + elif scores == 'percentages': if prediction[prediction.keys()[0]].config['CrossValidation']['Type'] == 'LOO': print('Cannot rank percentages for LOO, returning dummies.') @@ -619,7 +635,8 @@

Source code for WORC.plotting.plot_ranked_scores

plot_ranked_percentages(estimator=estimator, pinfo=pinfo, label_type=label_type, - ensemble=ensemble, + ensemble_method=ensemble_method, + ensemble_size=ensemble_size, output_csv=output_csv) else: message = ('{} is not a valid scoring method!').format(str(scores)) @@ -671,113 +688,6 @@

Source code for WORC.plotting.plot_ranked_scores

'w', zipfile.ZIP_DEFLATED, allowZip64=True)
-
[docs]def example(): - case = 'MESFIB' - if case == 'CLM': - label_type = None - estimator = '/media/martijn/DATA/tmp/classification_0_nonewfeat.hdf5' - ensemble = 50 - scores = 'percentages' - pinfo = '/home/martijn/git/RadTools/CLM/pinfo_CLM_KM.txt' - images_temp = glob.glob('/media/martijn/DATA/CLM/*/*/*/image.nii.gz') - segmentations = list() - images = list() - for i in images_temp: - segs = glob.glob(os.path.dirname(i) + '/seg_*session2*.nii.gz') - if len(segs) == 1: - segmentations.append(segs[0]) - images.append(i) - elif len(segs) > 1: - segmentations.append(segs[0]) - images.append(i) - else: - segs = glob.glob(os.path.dirname(i) + '/seg_*session1*.nii.gz') - if len(segs) == 1: - segmentations.append(segs[0]) - images.append(i) - elif len(segs) > 1: - segmentations.append(segs[0]) - images.append(i) - else: - print(i) - - output_csv = '/media/martijn/DATA/tmp/classification_0_nonewfeat_percentages.csv' - output_zip = '/media/martijn/DATA/tmp/classification_0_nonewfeat_percentages.zip' - elif case == 'MESFIB': - label_type = None - estimator = '/media/martijn/DATA/MESFIB/Results_0704/classification_100crossval_nonewfeat.hdf5' - ensemble = 50 - scores = 'percentages' - pinfo = '/home/martijn/git/RadTools/MESFIB/pinfo_MESFIB.txt' - images_temp = glob.glob('/media/martijn/DATA/MESFIB/*/*/*/image.nii.gz') - segmentations = list() - images = list() - for i in images_temp: - segs = glob.glob(os.path.dirname(i) + '/seg*Mass*.nii.gz') - if len(segs) == 1: - segmentations.append(segs[0]) - images.append(i) - elif len(segs) > 1: - segmentations.append(segs[0]) - images.append(i) - else: - segs = glob.glob(os.path.dirname(i) + '/seg_*mass*.nii.gz') - if len(segs) == 1: - segmentations.append(segs[0]) - images.append(i) - elif len(segs) > 1: - segmentations.append(segs[0]) - images.append(i) - else: - print(i) - - output_csv = '/media/martijn/DATA/MESFIB/Results_0704/classification_100crossval_nonewfeat_percentages.csv' - output_zip = '/media/martijn/DATA/MESFIB/Results_0704/classification_100crossval_nonewfeat_percentages.zip' - - prediction = pd.read_hdf(estimator) - if label_type is None: - # Assume we want to have the first key - label_type = prediction.keys()[0] - - if scores == 'posteriors': - ranked_scores, ranked_truths, ranked_PIDs =\ - plot_ranked_posteriors(estimator=estimator, - pinfo=pinfo, - label_type=label_type, - ensemble=ensemble, - output_csv=output_csv) - elif scores == 'percentages': - ranked_scores, ranked_truths, ranked_PIDs =\ - plot_ranked_percentages(estimator=estimator, - pinfo=pinfo, - label_type=label_type, - ensemble=ensemble, - output_csv=output_csv) - else: - message = ('{} is not a valid scoring method!').format(str(scores)) - raise WORCKeyError(message) - - if output_zip is not None: - # Convert to lower to later on overcome matching errors - ranked_PIDs = [i.lower() for i in ranked_PIDs] - - if images: - plot_ranked_images(pinfo=pinfo, - label_type=label_type, - images=images, - segmentations=segmentations, - ranked_truths=ranked_truths, - ranked_scores=ranked_scores, - ranked_PIDs=ranked_PIDs, - output_zip=output_zip, - scores=scores) - else: - # Make dummy - if output_zip is not None: - zipfile.ZipFile(output_zip, - 'w', zipfile.ZIP_DEFLATED, allowZip64=True)
- - if __name__ == '__main__': main()
diff --git a/WORC/doc/_build/html/_modules/WORC/plotting/scatterplot.html b/WORC/doc/_build/html/_modules/WORC/plotting/scatterplot.html index 1548d97c..a4e5e48c 100644 --- a/WORC/doc/_build/html/_modules/WORC/plotting/scatterplot.html +++ b/WORC/doc/_build/html/_modules/WORC/plotting/scatterplot.html @@ -8,7 +8,7 @@ - WORC.plotting.scatterplot — WORC 3.5.0 documentation + WORC.plotting.scatterplot — WORC 3.6.0 documentation @@ -62,7 +62,7 @@
- 3.5.0 + 3.6.0
diff --git a/WORC/doc/_build/html/_modules/WORC/processing/ExtractNLargestBlobsn.html b/WORC/doc/_build/html/_modules/WORC/processing/ExtractNLargestBlobsn.html index 8e42e888..85f664f4 100644 --- a/WORC/doc/_build/html/_modules/WORC/processing/ExtractNLargestBlobsn.html +++ b/WORC/doc/_build/html/_modules/WORC/processing/ExtractNLargestBlobsn.html @@ -8,7 +8,7 @@ - WORC.processing.ExtractNLargestBlobsn — WORC 3.5.0 documentation + WORC.processing.ExtractNLargestBlobsn — WORC 3.6.0 documentation @@ -62,7 +62,7 @@
- 3.5.0 + 3.6.0
diff --git a/WORC/doc/_build/html/_modules/WORC/processing/classes.html b/WORC/doc/_build/html/_modules/WORC/processing/classes.html index d0ab7331..ca61bd99 100644 --- a/WORC/doc/_build/html/_modules/WORC/processing/classes.html +++ b/WORC/doc/_build/html/_modules/WORC/processing/classes.html @@ -8,7 +8,7 @@ - WORC.processing.classes — WORC 3.5.0 documentation + WORC.processing.classes — WORC 3.6.0 documentation @@ -62,7 +62,7 @@
- 3.5.0 + 3.6.0
diff --git a/WORC/doc/_build/html/_modules/WORC/processing/label_processing.html b/WORC/doc/_build/html/_modules/WORC/processing/label_processing.html index b18156c8..f838fdbb 100644 --- a/WORC/doc/_build/html/_modules/WORC/processing/label_processing.html +++ b/WORC/doc/_build/html/_modules/WORC/processing/label_processing.html @@ -8,7 +8,7 @@ - WORC.processing.label_processing — WORC 3.5.0 documentation + WORC.processing.label_processing — WORC 3.6.0 documentation @@ -62,7 +62,7 @@
- 3.5.0 + 3.6.0
@@ -288,7 +288,7 @@

Source code for WORC.processing.label_processing

label_status (numpy array): The status of the different labels for each patient """ - data = pd.read_csv(input_file, sep=None, header=0) + data = pd.read_csv(input_file, sep=None, header=0, engine='python') # Load and check the header header = data.keys() diff --git a/WORC/doc/_build/html/_modules/WORC/resources/fastr_tests/CalcFeatures_test.html b/WORC/doc/_build/html/_modules/WORC/resources/fastr_tests/CalcFeatures_test.html index c622b99b..207207a2 100644 --- a/WORC/doc/_build/html/_modules/WORC/resources/fastr_tests/CalcFeatures_test.html +++ b/WORC/doc/_build/html/_modules/WORC/resources/fastr_tests/CalcFeatures_test.html @@ -8,7 +8,7 @@ - WORC.resources.fastr_tests.CalcFeatures_test — WORC 3.5.0 documentation + WORC.resources.fastr_tests.CalcFeatures_test — WORC 3.6.0 documentation @@ -62,7 +62,7 @@
- 3.5.0 + 3.6.0
diff --git a/WORC/doc/_build/html/_modules/WORC/resources/fastr_tests/elastix_test.html b/WORC/doc/_build/html/_modules/WORC/resources/fastr_tests/elastix_test.html index b7cf49e8..a1bc5350 100644 --- a/WORC/doc/_build/html/_modules/WORC/resources/fastr_tests/elastix_test.html +++ b/WORC/doc/_build/html/_modules/WORC/resources/fastr_tests/elastix_test.html @@ -8,7 +8,7 @@ - WORC.resources.fastr_tests.elastix_test — WORC 3.5.0 documentation + WORC.resources.fastr_tests.elastix_test — WORC 3.6.0 documentation @@ -62,7 +62,7 @@
- 3.5.0 + 3.6.0
diff --git a/WORC/doc/_build/html/_modules/WORC/resources/fastr_tests/segmentix_test.html b/WORC/doc/_build/html/_modules/WORC/resources/fastr_tests/segmentix_test.html index ab190e36..4b3701bf 100644 --- a/WORC/doc/_build/html/_modules/WORC/resources/fastr_tests/segmentix_test.html +++ b/WORC/doc/_build/html/_modules/WORC/resources/fastr_tests/segmentix_test.html @@ -8,7 +8,7 @@ - WORC.resources.fastr_tests.segmentix_test — WORC 3.5.0 documentation + WORC.resources.fastr_tests.segmentix_test — WORC 3.6.0 documentation @@ -62,7 +62,7 @@
- 3.5.0 + 3.6.0
diff --git a/WORC/doc/_build/html/_modules/WORC/tools/Elastix.html b/WORC/doc/_build/html/_modules/WORC/tools/Elastix.html index 8edc4f5e..f7ebc124 100644 --- a/WORC/doc/_build/html/_modules/WORC/tools/Elastix.html +++ b/WORC/doc/_build/html/_modules/WORC/tools/Elastix.html @@ -8,7 +8,7 @@ - WORC.tools.Elastix — WORC 3.5.0 documentation + WORC.tools.Elastix — WORC 3.6.0 documentation @@ -62,7 +62,7 @@
- 3.5.0 + 3.6.0
diff --git a/WORC/doc/_build/html/_modules/WORC/tools/Evaluate.html b/WORC/doc/_build/html/_modules/WORC/tools/Evaluate.html index f69b4016..bc8a8bc4 100644 --- a/WORC/doc/_build/html/_modules/WORC/tools/Evaluate.html +++ b/WORC/doc/_build/html/_modules/WORC/tools/Evaluate.html @@ -8,7 +8,7 @@ - WORC.tools.Evaluate — WORC 3.5.0 documentation + WORC.tools.Evaluate — WORC 3.6.0 documentation @@ -62,7 +62,7 @@
- 3.5.0 + 3.6.0
@@ -190,8 +190,10 @@

Source code for WORC.tools.Evaluate

 
[docs]class Evaluate(object): """Build a network that evaluates the performance of an estimator.""" -
[docs] def __init__(self, label_type, modus='binary_classification', ensemble=50, +
[docs] def __init__(self, label_type, modus='binary_classification', scores='percentages', + ensemble_method='top_N', + ensemble_size=100, parent=None, features=None, fastr_plugin='LinearExecution', name='Example'): @@ -210,14 +212,14 @@

Source code for WORC.tools.Evaluate

             self.network = parent.network
             self.mode = 'WORC'
             self.name = parent.network.id
-            self.ensemble = parent.configs[0]['Ensemble']['Use']
         else:
             self.mode = 'StandAlone'
             self.fastr_plugin = fastr_plugin
             self.name = 'WORC_Evaluate_' + name
             self.network = fastr.create_network(id=self.name)
             self.fastr_tmpdir = os.path.join(fastr.config.mounts['tmp'], self.name)
-            self.ensemble = ensemble
+            self.ensemble_method = ensemble_method
+            self.ensemble_size = ensemble_size
 
         if features is None and self.mode == 'StandAlone':
             raise WORCexceptions.WORCIOError('Either features as input or a WORC network is required for the Evaluate network.')
@@ -421,9 +423,14 @@ 

Source code for WORC.tools.Evaluate

                 self.network.create_constant('String', [self.label_type],
                                              id='LabelType',
                                              step_id='Evaluation')
-            self.source_Ensemble =\
-                self.network.create_constant('String', [self.ensemble],
-                                             id='Ensemble',
+            self.source_ensemble_method =\
+                self.network.create_constant('String', [self.ensemble_method],
+                                             id='ensemble_method',
+                                             step_id='Evaluation')
+
+            self.source_ensemble_size =\
+                self.network.create_constant('String', [self.ensemble_size],
+                                             id='ensemble_size',
                                              step_id='Evaluation')
 
         # Create sources if not supplied by a WORC network
@@ -509,26 +516,32 @@ 

Source code for WORC.tools.Evaluate

         self.link_segmentations_post.collapse = 'patients'
 
         if self.modus == 'binary_classification':
-            self.node_ROC.inputs['ensemble'] = self.source_Ensemble.output
+            self.node_ROC.inputs['ensemble_method'] = self.source_ensemble_method.output
+            self.node_ROC.inputs['ensemble_size'] = self.source_ensemble_size.output
             self.node_ROC.inputs['label_type'] = self.source_LabelType.output
 
         if 'classification' in self.modus:
-            self.node_Ranked_Percentages.inputs['ensemble'] =\
-                self.source_Ensemble.output
+            self.node_Ranked_Percentages.inputs['ensemble_method'] =\
+                self.source_ensemble_method.output
+            self.node_Ranked_Percentages.inputs['ensemble_size'] =\
+                self.source_ensemble_size.output
             self.node_Ranked_Percentages.inputs['label_type'] =\
                 self.source_LabelType.output
 
-        self.node_Estimator.inputs['ensemble'] = self.source_Ensemble.output
+        self.node_Estimator.inputs['ensemble_method'] = self.source_ensemble_method.output
+        self.node_Estimator.inputs['ensemble_size'] = self.source_ensemble_size.output
         self.node_Estimator.inputs['label_type'] = self.source_LabelType.output
 
-        self.node_Barchart.inputs['estimators'] = self.source_Ensemble.output
+        self.node_Barchart.inputs['estimators'] = self.source_ensemble_size.output
         self.node_Barchart.inputs['label_type'] = self.source_LabelType.output
 
-        self.node_Hyperparameters.inputs['estimators'] = self.source_Ensemble.output
+        self.node_Hyperparameters.inputs['estimators'] = self.source_ensemble_size.output
         self.node_Hyperparameters.inputs['label_type'] = self.source_LabelType.output
 
-        self.node_Ranked_Posteriors.inputs['ensemble'] =\
-            self.source_Ensemble.output
+        self.node_Ranked_Posteriors.inputs['ensemble_method'] =\
+            self.source_ensemble_method.output
+        self.node_Ranked_Posteriors.inputs['ensemble_size'] =\
+            self.source_ensemble_size.output
         self.node_Ranked_Posteriors.inputs['label_type'] =\
             self.source_LabelType.output
@@ -541,7 +554,10 @@

Source code for WORC.tools.Evaluate

         else:
             pinfo = self.parent.source_patientclass_train.output
 
-        config = self.parent.source_class_config.output
+        if self.parent.configs[0]['General']['Fingerprint'] == 'True':
+            config = self.parent.node_fingerprinters['classification'].outputs['config']
+        else:
+            config = self.parent.source_class_config.output
 
         if hasattr(self.parent, 'sources_images_train'):
             if self.parent.sources_images_train:
@@ -552,23 +568,28 @@ 

Source code for WORC.tools.Evaluate

                     self.parent.sources_segmentations_train[label].output
 
         if self.modus == 'binary_classification':
-            self.node_ROC.inputs['ensemble'] = self.parent.source_Ensemble.output
+            self.node_ROC.inputs['ensemble_method'] = self.parent.source_ensemble_method.output
+            self.node_ROC.inputs['ensemble_size'] = self.parent.source_ensemble_size.output
             self.node_ROC.inputs['label_type'] = self.parent.source_LabelType.output
 
         if 'classification' in self.modus:
-            self.node_Ranked_Percentages.inputs['ensemble'] =\
-                self.parent.source_Ensemble.output
+            self.node_Ranked_Percentages.inputs['ensemble_method'] =\
+                self.parent.source_ensemble_method.output
+            self.node_Ranked_Percentages.inputs['ensemble_size'] =\
+                self.parent.source_ensemble_size.output
             self.node_Ranked_Percentages.inputs['label_type'] =\
                 self.parent.source_LabelType.output
 
-        self.node_Barchart.inputs['estimators'] = self.parent.source_Ensemble.output
+        self.node_Barchart.inputs['estimators'] = self.parent.source_ensemble_size.output
         self.node_Barchart.inputs['label_type'] = self.parent.source_LabelType.output
 
-        self.node_Hyperparameters.inputs['estimators'] = self.parent.source_Ensemble.output
+        self.node_Hyperparameters.inputs['estimators'] = self.parent.source_ensemble_size.output
         self.node_Hyperparameters.inputs['label_type'] = self.parent.source_LabelType.output
 
-        self.node_Ranked_Posteriors.inputs['ensemble'] =\
-            self.parent.source_Ensemble.output
+        self.node_Ranked_Posteriors.inputs['ensemble_method'] =\
+            self.parent.source_ensemble_method.output
+        self.node_Ranked_Posteriors.inputs['ensemble_size'] =\
+            self.parent.source_ensemble_size.output
         self.node_Ranked_Posteriors.inputs['label_type'] =\
             self.parent.source_LabelType.output
 
@@ -739,7 +760,8 @@ 

Source code for WORC.tools.Evaluate

             self.source_data['Segmentations'] = segmentations
             self.source_data['Config'] = config
             self.source_data['LabelType'] = self.label_type
-            self.source_data['Ensemble'] = self.ensemble
+            self.source_data['ensemble_method'] = self.ensemble_method
+            self.source_data['ensemble_size'] = self.ensemble_size
 
             for feature, label in zip(features, self.labels):
                 self.source_data[label] = feature
diff --git a/WORC/doc/_build/html/_modules/WORC/tools/Slicer.html b/WORC/doc/_build/html/_modules/WORC/tools/Slicer.html
index 6ba8c334..d64d783e 100644
--- a/WORC/doc/_build/html/_modules/WORC/tools/Slicer.html
+++ b/WORC/doc/_build/html/_modules/WORC/tools/Slicer.html
@@ -8,7 +8,7 @@
   
   
   
-  WORC.tools.Slicer — WORC 3.5.0 documentation
+  WORC.tools.Slicer — WORC 3.6.0 documentation
   
 
   
@@ -62,7 +62,7 @@
             
             
               
- 3.5.0 + 3.6.0
diff --git a/WORC/doc/_build/html/_modules/WORC/tools/Transformix.html b/WORC/doc/_build/html/_modules/WORC/tools/Transformix.html index de97124c..a558fb96 100644 --- a/WORC/doc/_build/html/_modules/WORC/tools/Transformix.html +++ b/WORC/doc/_build/html/_modules/WORC/tools/Transformix.html @@ -8,7 +8,7 @@ - WORC.tools.Transformix — WORC 3.5.0 documentation + WORC.tools.Transformix — WORC 3.6.0 documentation @@ -62,7 +62,7 @@
- 3.5.0 + 3.6.0
diff --git a/WORC/doc/_build/html/_modules/WORC/tools/createfixedsplits.html b/WORC/doc/_build/html/_modules/WORC/tools/createfixedsplits.html index ad86b30a..3717fd6f 100644 --- a/WORC/doc/_build/html/_modules/WORC/tools/createfixedsplits.html +++ b/WORC/doc/_build/html/_modules/WORC/tools/createfixedsplits.html @@ -8,7 +8,7 @@ - WORC.tools.createfixedsplits — WORC 3.5.0 documentation + WORC.tools.createfixedsplits — WORC 3.6.0 documentation @@ -62,7 +62,7 @@
- 3.5.0 + 3.6.0
diff --git a/WORC/doc/_build/html/_modules/index.html b/WORC/doc/_build/html/_modules/index.html index b928ae95..f97bcc63 100644 --- a/WORC/doc/_build/html/_modules/index.html +++ b/WORC/doc/_build/html/_modules/index.html @@ -8,7 +8,7 @@ - Overview: module code — WORC 3.5.0 documentation + Overview: module code — WORC 3.6.0 documentation @@ -62,7 +62,7 @@
- 3.5.0 + 3.6.0
@@ -181,6 +181,7 @@

All modules for which code is available

  • WORC.classification.fitandscore
  • WORC.classification.metrics
  • WORC.classification.parameter_optimization
  • +
  • WORC.classification.smac
  • WORC.classification.trainclassifier
  • WORC.detectors.detectors
  • WORC.exampledata.create_example_data
  • @@ -244,6 +245,7 @@

    All modules for which code is available

  • WORC.tools.Slicer
  • WORC.tools.Transformix
  • WORC.tools.createfixedsplits
  • +
  • WORC.tools.fingerprinting
  • WORC.validators.preflightcheck
  • diff --git a/WORC/doc/_build/html/_sources/autogen/WORC.classification.rst.txt b/WORC/doc/_build/html/_sources/autogen/WORC.classification.rst.txt index 1f358e9b..49bc90f1 100644 --- a/WORC/doc/_build/html/_sources/autogen/WORC.classification.rst.txt +++ b/WORC/doc/_build/html/_sources/autogen/WORC.classification.rst.txt @@ -100,6 +100,15 @@ classification Package :show-inheritance: :special-members: +:mod:`smac` Module +------------------ + +.. automodule:: WORC.classification.smac + :members: + :undoc-members: + :show-inheritance: + :special-members: + :mod:`trainclassifier` Module ----------------------------- diff --git a/WORC/doc/_build/html/_sources/autogen/WORC.config.rst.txt b/WORC/doc/_build/html/_sources/autogen/WORC.config.rst.txt index c6c0f742..e6fb47dd 100644 --- a/WORC/doc/_build/html/_sources/autogen/WORC.config.rst.txt +++ b/WORC/doc/_build/html/_sources/autogen/WORC.config.rst.txt @@ -10,6 +10,7 @@ Evaluation :ref:`Evaluation ` FeatPreProcess :ref:`FeatPreProcess ` Featsel :ref:`Featsel ` FeatureScaling :ref:`FeatureScaling ` +Fingerprinting :ref:`Fingerprinting ` General :ref:`General ` HyperOptimization :ref:`HyperOptimization ` ImageFeatures :ref:`ImageFeatures ` @@ -19,6 +20,7 @@ OneHotEncoding :ref:`OneHotEncoding ` Preprocessing :ref:`Preprocessing ` PyRadiomics :ref:`PyRadiomics ` Resampling :ref:`Resampling ` +SMAC :ref:`SMAC ` Segmentix :ref:`Segmentix ` SelectFeatGroup :ref:`SelectFeatGroup ` ================= =================================================== \ No newline at end of file diff --git a/WORC/doc/_build/html/_sources/autogen/WORC.rst.txt b/WORC/doc/_build/html/_sources/autogen/WORC.rst.txt index 6872a9c8..02387248 100644 --- a/WORC/doc/_build/html/_sources/autogen/WORC.rst.txt +++ b/WORC/doc/_build/html/_sources/autogen/WORC.rst.txt @@ -47,5 +47,6 @@ Subpackages WORC.statistics WORC.tests WORC.tools + WORC.tutorial WORC.validators diff --git a/WORC/doc/_build/html/_sources/autogen/WORC.tools.rst.txt b/WORC/doc/_build/html/_sources/autogen/WORC.tools.rst.txt index f9059a22..786d8f28 100644 --- a/WORC/doc/_build/html/_sources/autogen/WORC.tools.rst.txt +++ b/WORC/doc/_build/html/_sources/autogen/WORC.tools.rst.txt @@ -55,3 +55,12 @@ tools Package :show-inheritance: :special-members: +:mod:`fingerprinting` Module +---------------------------- + +.. automodule:: WORC.tools.fingerprinting + :members: + :undoc-members: + :show-inheritance: + :special-members: + diff --git a/WORC/doc/_build/html/_sources/static/configuration.rst.txt b/WORC/doc/_build/html/_sources/static/configuration.rst.txt index 261b5fc6..0ad52d55 100644 --- a/WORC/doc/_build/html/_sources/static/configuration.rst.txt +++ b/WORC/doc/_build/html/_sources/static/configuration.rst.txt @@ -403,6 +403,23 @@ Specify the hyperparameter optimization procedure here. .. include:: ../autogen/config/WORC.config_HyperOptimization_defopts.rst +.. _config-SMAC: + +SMAC +~~~~ +WORC enables the use of the SMAC algorithm for the hyperparameter optimization. +SMAC uses the same parameter options as the default random search, except for +resampling which is currently not compatible with SMAC. + +**Description:** + +.. include:: ../autogen/config/WORC.config_SMAC_description.rst + +**Defaults and Options:** + +.. include:: ../autogen/config/WORC.config_SMAC_defopts.rst + + .. _config-Ensemble: Ensemble diff --git a/WORC/doc/_build/html/_sources/static/quick_start.rst.txt b/WORC/doc/_build/html/_sources/static/quick_start.rst.txt index a1cca080..1289e11b 100644 --- a/WORC/doc/_build/html/_sources/static/quick_start.rst.txt +++ b/WORC/doc/_build/html/_sources/static/quick_start.rst.txt @@ -183,6 +183,11 @@ After defining the inputs, the following code can be used to run your first expe experiment.labels_from_this_file(label_file) experiment.predict_labels(label_name) + # Set the types of images WORC has to process. Used in fingerprinting + # Valid quantitative types are ['CT', 'PET', 'Thermography', 'ADC'] + # Valid qualitative types are ['MRI', 'DWI', 'US'] + experiment.set_image_types(['CT']) + # Use the standard workflow for your specific modus if modus == 'binary_classification': experiment.binary_classification(coarse=coarse) diff --git a/WORC/doc/_build/html/_static/documentation_options.js b/WORC/doc/_build/html/_static/documentation_options.js index 1d0981c2..9ddc46e0 100644 --- a/WORC/doc/_build/html/_static/documentation_options.js +++ b/WORC/doc/_build/html/_static/documentation_options.js @@ -1,6 +1,6 @@ var DOCUMENTATION_OPTIONS = { URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), - VERSION: '3.5.0', + VERSION: '3.6.0', LANGUAGE: 'None', COLLAPSE_INDEX: false, FILE_SUFFIX: '.html', diff --git a/WORC/doc/_build/html/autogen/WORC.IOparser.html b/WORC/doc/_build/html/autogen/WORC.IOparser.html index 120cb57b..c5c4a3c8 100644 --- a/WORC/doc/_build/html/autogen/WORC.IOparser.html +++ b/WORC/doc/_build/html/autogen/WORC.IOparser.html @@ -8,7 +8,7 @@ - IOparser Package — WORC 3.5.0 documentation + IOparser Package — WORC 3.6.0 documentation @@ -64,7 +64,7 @@
    - 3.5.0 + 3.6.0
    diff --git a/WORC/doc/_build/html/autogen/WORC.classification.html b/WORC/doc/_build/html/autogen/WORC.classification.html index 92008c45..68d92d4e 100644 --- a/WORC/doc/_build/html/autogen/WORC.classification.html +++ b/WORC/doc/_build/html/autogen/WORC.classification.html @@ -8,7 +8,7 @@ - classification Package — WORC 3.5.0 documentation + classification Package — WORC 3.6.0 documentation @@ -64,7 +64,7 @@
    - 3.5.0 + 3.6.0
    @@ -119,6 +119,7 @@
  • metrics Module
  • parameter_optimization Module
  • regressors Module
  • +
  • smac Module
  • trainclassifier Module
  • @@ -540,7 +541,7 @@

    SearchCV ModuleΒΆ

    -class WORC.classification.SearchCV.BaseSearchCV(param_distributions={}, n_iter=10, scoring=None, fit_params=None, n_jobs=1, iid=True, refit=True, cv=None, verbose=0, pre_dispatch='2*n_jobs', random_state=None, error_score='raise', return_train_score=True, n_jobspercore=100, maxlen=100, fastr_plugin=None, memory='2G', ranking_score='test_score', refit_workflows=False)[source]ΒΆ
    +class WORC.classification.SearchCV.BaseSearchCV(param_distributions={}, n_iter=10, scoring=None, fit_params=None, n_jobs=1, iid=True, refit=True, cv=None, verbose=0, pre_dispatch='2*n_jobs', random_state=None, error_score='raise', return_train_score=True, n_jobspercore=100, maxlen=100, fastr_plugin=None, memory='2G', ranking_score='test_score', refit_workflows=False, ensemble_validation_score=None)[source]ΒΆ

    Bases: sklearn.base.BaseEstimator, sklearn.base.MetaEstimatorMixin

    Base class for hyper parameter search with cross-validation.

    @@ -550,7 +551,7 @@

    -__init__(param_distributions={}, n_iter=10, scoring=None, fit_params=None, n_jobs=1, iid=True, refit=True, cv=None, verbose=0, pre_dispatch='2*n_jobs', random_state=None, error_score='raise', return_train_score=True, n_jobspercore=100, maxlen=100, fastr_plugin=None, memory='2G', ranking_score='test_score', refit_workflows=False)[source]ΒΆ
    +__init__(param_distributions={}, n_iter=10, scoring=None, fit_params=None, n_jobs=1, iid=True, refit=True, cv=None, verbose=0, pre_dispatch='2*n_jobs', random_state=None, error_score='raise', return_train_score=True, n_jobspercore=100, maxlen=100, fastr_plugin=None, memory='2G', ranking_score='test_score', refit_workflows=False, ensemble_validation_score=None)[source]ΒΆ

    Initialize SearchCV Object.

    @@ -561,30 +562,34 @@

    -create_ensemble(X_train, Y_train, verbose=None, initialize=True, scoring=None, method=50, overfit_scaler=False)[source]ΒΆ
    -

    Create ensemble of multiple workflows.

    -

    Create an (optimal) ensemble of a combination of hyperparameter settings +create_ensemble(X_train, Y_train, verbose=None, initialize=False, scoring=None, method='top_N', size=50, overfit_scaler=False)[source]ΒΆ +

    Create an (optimal) ensemble of a combination of hyperparameter settings and the associated groupsels, PCAs, estimators etc.

    -

    Based on Caruana et al. 2004, but a little different:

    -
      -
    1. Recreate the training/validation splits for a n-fold cross validation.

    2. -
    3. -
      For each fold:
        -
      1. Start with an empty ensemble

      2. -
      3. Create starting ensemble by adding N individually best performing -models on the validation set. N is tuned on the validation set.

      4. -
      5. Add model that improves ensemble performance on validation set the most, with replacement.

      6. -
      7. Repeat (c) untill performance does not increase

      8. -
      +
      +
      # The following ensemble methods are supported:

      # Single: +# only use the single best classifier. Performance is computed +# using the same predict function as during the optimization +# top_N: +# make an ensemble of the best N individual classifiers, where N is +# given as an input. If N==1, then only the single best classifier is +# used, but it is evaluated using predict_proba. +# FitNumber: +# make an ensemble of the best N individual classifiers, choosing N +# that gives the highest performance +# ForwardSelection: +# add the model that optimizes the total ensemble performance, +# then repeat with replacement until there is no more improvement +# in performance +# Caruana: +# for a fixed number of iterations, add the model that optimizes +# the total ensemble performance, then choose the ensemble size +# which gave the best performance +# Bagging: +# same as Caruana method, but the final ensemble is a weighted average +# of a number of ensembles that each use only a subset of the available +# models

      -
    4. -
    -

    The performance metric is the same as for the original hyperparameter -search, i.e. probably the F1-score for classification and r2-score -for regression. However, we recommend using the SAR score, as this is -more universal.

    -

    Method: top50 or Caruana

    @@ -660,7 +665,7 @@

    -process_fit(n_splits, parameters_all, test_sample_counts, test_score_dicts, train_score_dicts, fit_time, score_time, cv_iter, X, y, fitted_workflows=None)[source]ΒΆ
    +process_fit(n_splits, parameters_all, test_sample_counts, test_score_dicts, train_score_dicts, fit_time, score_time, cv_iter, X, y, fitted_workflows=None, use_smac=False)[source]ΒΆ

    Process a fit.

    Process the outcomes of a SearchCV fit and find the best settings over all cross validations from all hyperparameters tested

    @@ -722,7 +727,7 @@

    -class WORC.classification.SearchCV.BaseSearchCVJoblib(param_distributions={}, n_iter=10, scoring=None, fit_params=None, n_jobs=1, iid=True, refit=True, cv=None, verbose=0, pre_dispatch='2*n_jobs', random_state=None, error_score='raise', return_train_score=True, n_jobspercore=100, maxlen=100, fastr_plugin=None, memory='2G', ranking_score='test_score', refit_workflows=False)[source]ΒΆ
    +class WORC.classification.SearchCV.BaseSearchCVJoblib(param_distributions={}, n_iter=10, scoring=None, fit_params=None, n_jobs=1, iid=True, refit=True, cv=None, verbose=0, pre_dispatch='2*n_jobs', random_state=None, error_score='raise', return_train_score=True, n_jobspercore=100, maxlen=100, fastr_plugin=None, memory='2G', ranking_score='test_score', refit_workflows=False, ensemble_validation_score=None)[source]ΒΆ

    Bases: WORC.classification.SearchCV.BaseSearchCV

    Base class for hyper parameter search with cross-validation.

    @@ -737,9 +742,26 @@

    +
    +
    +class WORC.classification.SearchCV.BaseSearchCVSMAC(param_distributions={}, n_iter=10, scoring=None, fit_params=None, n_jobs=1, iid=True, refit=True, cv=None, verbose=0, pre_dispatch='2*n_jobs', random_state=None, error_score='raise', return_train_score=True, n_jobspercore=100, maxlen=100, fastr_plugin=None, memory='2G', ranking_score='test_score', refit_workflows=False, ensemble_validation_score=None)[source]ΒΆ
    +

    Bases: WORC.classification.SearchCV.BaseSearchCV

    +

    Base class for Bayesian hyper parameter search with cross-validation.

    +
    +
    +__abstractmethods__ = frozenset({'__init__'})ΒΆ
    +
    + +
    +
    +__module__ = 'WORC.classification.SearchCV'ΒΆ
    +
    + +
    +
    -class WORC.classification.SearchCV.BaseSearchCVfastr(param_distributions={}, n_iter=10, scoring=None, fit_params=None, n_jobs=1, iid=True, refit=True, cv=None, verbose=0, pre_dispatch='2*n_jobs', random_state=None, error_score='raise', return_train_score=True, n_jobspercore=100, maxlen=100, fastr_plugin=None, memory='2G', ranking_score='test_score', refit_workflows=False)[source]ΒΆ
    +class WORC.classification.SearchCV.BaseSearchCVfastr(param_distributions={}, n_iter=10, scoring=None, fit_params=None, n_jobs=1, iid=True, refit=True, cv=None, verbose=0, pre_dispatch='2*n_jobs', random_state=None, error_score='raise', return_train_score=True, n_jobspercore=100, maxlen=100, fastr_plugin=None, memory='2G', ranking_score='test_score', refit_workflows=False, ensemble_validation_score=None)[source]ΒΆ

    Bases: WORC.classification.SearchCV.BaseSearchCV

    Base class for hyper parameter search with cross-validation.

    @@ -1393,6 +1415,236 @@

    +
    +
    +class WORC.classification.SearchCV.GuidedSearchCVSMAC(param_distributions={}, n_iter=10, scoring=None, fit_params=None, n_jobs=1, iid=True, refit=True, cv=None, verbose=0, pre_dispatch='2*n_jobs', random_state=None, error_score='raise', return_train_score=True, n_jobspercore=100, fastr_plugin=None, maxlen=100, ranking_score='test_score', features=None, labels=None, smac_result_file=None)[source]ΒΆ
    +

    Bases: WORC.classification.SearchCV.BaseSearchCVSMAC

    +

    Guided search on hyperparameters.

    +

    GuidedSearchCV implements a β€œfit” and a β€œscore” method. +It also implements β€œpredict”, β€œpredict_proba”, β€œdecision_function”, +β€œtransform” and β€œinverse_transform” if they are implemented in the +estimator used.

    +

    The parameters of the estimator used to apply these methods are optimized +by cross-validated search over parameter settings.

    +

    The optimization is performed using the Sequential Model-based Algorithm +Configuration (SMAC) method. A probabilistic model of the objective function +is constructed and updated with each function evaluation.

    +

    If all parameters are presented as a list, +sampling without replacement is performed. If at least one parameter +is given as a distribution, sampling with replacement is used. +It is highly recommended to use continuous distributions for continuous +parameters.

    +
    +
    param_distributionsdict

    Dictionary with parameter names (string) as keys and details of their +domains as values. From this dictionary the complete search space +will later be constructed.

    +
    +
    n_iterint, default=10

    Number of function evaluations allowed in each optimization sequence +of SMAC.

    +
    +
    scoringstring, callable or None, default=None

    A string (see model evaluation documentation) or +a scorer callable object / function with signature +scorer(estimator, X, y). +If None, the score method of the estimator is used.

    +
    +
    fit_paramsdict, optional

    Parameters to pass to the fit method.

    +
    +
    n_jobsint, default=1

    Number of jobs to run in parallel.

    +
    +
    pre_dispatchint, or string, optional

    Controls the number of jobs that get dispatched during parallel +execution. Reducing this number can be useful to avoid an +explosion of memory consumption when more jobs get dispatched +than CPUs can process. This parameter can be:

    +
    +
      +
    • None, in which case all the jobs are immediately +created and spawned. Use this for lightweight and +fast-running jobs, to avoid delays due to on-demand +spawning of the jobs

    • +
    • An int, giving the exact number of total jobs that are +spawned

    • +
    • A string, giving an expression as a function of n_jobs, +as in β€˜2*n_jobs’

    • +
    +
    +
    +
    iidboolean, default=True

    If True, the data is assumed to be identically distributed across +the folds, and the loss minimized is the total loss per sample, +and not the mean loss across the folds.

    +
    +
    cvint, cross-validation generator or an iterable, optional

    Determines the cross-validation splitting strategy. +Possible inputs for cv are:

    +
    +
      +
    • None, to use the default 3-fold cross validation,

    • +
    • integer, to specify the number of folds in a (Stratified)KFold,

    • +
    • An object to be used as a cross-validation generator.

    • +
    • An iterable yielding train, test splits.

    • +
    +
    +

    For integer/None inputs, if the estimator is a classifier and y is +either binary or multiclass, StratifiedKFold is used. In all +other cases, KFold is used.

    +

    Refer User Guide for the various +cross-validation strategies that can be used here.

    +
    +
    refitboolean, default=True

    Refit the best estimator with the entire dataset. +If β€œFalse”, it is impossible to make predictions using +this RandomizedSearchCV instance after fitting.

    +
    +
    verboseinteger

    Controls the verbosity: the higher, the more messages.

    +
    +
    random_stateint or RandomState

    Pseudo random number generator state used for random uniform sampling +from lists of possible values instead of scipy.stats distributions.

    +
    +
    error_scoreβ€˜raise’ (default) or numeric

    Value to assign to the score if an error occurs in estimator fitting. +If set to β€˜raise’, the error is raised. If a numeric value is given, +FitFailedWarning is raised. This parameter does not affect the refit +step, which will always raise the error.

    +
    +
    return_train_scoreboolean, default=True

    If 'False', the cv_results_ attribute will not include training +scores.

    +
    +
    +
    +
    cv_results_dict of numpy (masked) ndarrays

    A dict with keys as column headers and values as columns, that can be +imported into a pandas DataFrame.

    +

    For instance the below given table

    + +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    param_kernel

    param_gamma

    split0_test_score

    …

    rank_test_score

    β€˜rbf’

    0.1

    0.8

    …

    2

    β€˜rbf’

    0.2

    0.9

    …

    1

    β€˜rbf’

    0.3

    0.7

    …

    1

    +

    will be represented by a cv_results_ dict of:

    +
    {
    +'param_kernel' : masked_array(data = ['rbf', 'rbf', 'rbf'],
    +                              mask = False),
    +'param_gamma'  : masked_array(data = [0.1 0.2 0.3], mask = False),
    +'split0_test_score'  : [0.8, 0.9, 0.7],
    +'split1_test_score'  : [0.82, 0.5, 0.7],
    +'mean_test_score'    : [0.81, 0.7, 0.7],
    +'std_test_score'     : [0.02, 0.2, 0.],
    +'rank_test_score'    : [3, 1, 1],
    +'split0_train_score' : [0.8, 0.9, 0.7],
    +'split1_train_score' : [0.82, 0.5, 0.7],
    +'mean_train_score'   : [0.81, 0.7, 0.7],
    +'std_train_score'    : [0.03, 0.03, 0.04],
    +'mean_fit_time'      : [0.73, 0.63, 0.43, 0.49],
    +'std_fit_time'       : [0.01, 0.02, 0.01, 0.01],
    +'mean_score_time'    : [0.007, 0.06, 0.04, 0.04],
    +'std_score_time'     : [0.001, 0.002, 0.003, 0.005],
    +'params' : [{'kernel' : 'rbf', 'gamma' : 0.1}, ...],
    +}
    +
    +
    +

    NOTE that the key 'params' is used to store a list of parameter +settings dict for all the parameter candidates.

    +

    The mean_fit_time, std_fit_time, mean_score_time and +std_score_time are all in seconds.

    +
    +
    best_estimator_estimator

    Estimator that was chosen by the search, i.e. estimator +which gave highest score (or smallest loss if specified) +on the left out data. Not available if refit=False.

    +
    +
    best_score_float

    Score of best_estimator on the left out data.

    +
    +
    best_params_dict

    Parameter setting that gave the best results on the hold out data.

    +
    +
    best_index_int

    The index (of the cv_results_ arrays) which corresponds to the best +candidate parameter setting.

    +

    The dict at search.cv_results_['params'][search.best_index_] gives +the parameter setting for the best model, that gives the highest +mean score (search.best_score_).

    +
    +
    scorer_function

    Scorer function used on the held out data to choose the best +parameters for the model.

    +
    +
    n_splits_int

    The number of cross-validation splits (folds/iterations).

    +
    +
    +

    The parameters selected are those that maximize the score of the held-out +data, according to the scoring parameter.

    +

    If n_jobs was set to a value higher than one, the data is copied for each +parameter setting(and not n_jobs times). This is done for efficiency +reasons if individual jobs take very little time, but may raise errors if +the dataset is large and not enough memory is available. A workaround in +this case is to set pre_dispatch. Then, the memory is copied only +pre_dispatch many times. A reasonable value for pre_dispatch is 2 * +n_jobs.

    +
    +
    GridSearchCV:

    Does exhaustive search over a grid of parameters.

    +
    +
    ParameterSampler:

    A generator over parameter settings, constructed from +param_distributions.

    +
    +
    +
    +
    +__abstractmethods__ = frozenset({})ΒΆ
    +
    + +
    +
    +__init__(param_distributions={}, n_iter=10, scoring=None, fit_params=None, n_jobs=1, iid=True, refit=True, cv=None, verbose=0, pre_dispatch='2*n_jobs', random_state=None, error_score='raise', return_train_score=True, n_jobspercore=100, fastr_plugin=None, maxlen=100, ranking_score='test_score', features=None, labels=None, smac_result_file=None)[source]ΒΆ
    +

    Initialize SearchCV Object.

    +
    + +
    +
    +__module__ = 'WORC.classification.SearchCV'ΒΆ
    +
    + +
    +
    +fit(X, y=None, groups=None)[source]ΒΆ
    +

    Run fit on the estimator with randomly drawn parameters.

    +
    +
    Xarray-like, shape = [n_samples, n_features]

    Training vector, where n_samples in the number of samples and +n_features is the number of features.

    +
    +
    yarray-like, shape = [n_samples] or [n_samples, n_output], optional

    Target relative to X for classification or regression; +None for unsupervised learning.

    +
    +
    groupsarray-like, with shape (n_samples,), optional

    Group labels for the samples used while splitting the dataset into +train/test set.

    +
    +
    +
    + +
    +
    class WORC.classification.SearchCV.RandomizedSearchCVJoblib(param_distributions={}, n_iter=10, scoring=None, fit_params=None, n_jobs=1, iid=True, refit=True, cv=None, verbose=0, pre_dispatch='2*n_jobs', random_state=None, error_score='raise', return_train_score=True, n_jobspercore=100, maxlen=100, ranking_score='test_score')[source]ΒΆ
    @@ -1493,7 +1745,7 @@

    -
    cv_results_dict of numpy (masked) ndarrays

    A dict with keys as column headers and values as columns, that can be +

    cv_results_dict of numpy (masked) ndarrays

    A dict with keys as column headers and values as columns, that can be imported into a pandas DataFrame.

    For instance the below given table

    @@ -1560,24 +1812,24 @@

    The mean_fit_time, std_fit_time, mean_score_time and std_score_time are all in seconds.

    -
    best_estimator_estimator

    Estimator that was chosen by the search, i.e. estimator +

    best_estimator_estimator

    Estimator that was chosen by the search, i.e. estimator which gave highest score (or smallest loss if specified) on the left out data. Not available if refit=False.

    -
    best_score_float

    Score of best_estimator on the left out data.

    +
    best_score_float

    Score of best_estimator on the left out data.

    -
    best_params_dict

    Parameter setting that gave the best results on the hold out data.

    +
    best_params_dict

    Parameter setting that gave the best results on the hold out data.

    -
    best_index_int

    The index (of the cv_results_ arrays) which corresponds to the best +

    best_index_int

    The index (of the cv_results_ arrays) which corresponds to the best candidate parameter setting.

    The dict at search.cv_results_['params'][search.best_index_] gives the parameter setting for the best model, that gives the highest mean score (search.best_score_).

    -
    scorer_function

    Scorer function used on the held out data to choose the best +

    scorer_function

    Scorer function used on the held out data to choose the best parameters for the model.

    -
    n_splits_int

    The number of cross-validation splits (folds/iterations).

    +
    n_splits_int

    The number of cross-validation splits (folds/iterations).

    The parameters selected are those that maximize the score of the held-out @@ -1731,7 +1983,7 @@

    -
    cv_results_dict of numpy (masked) ndarrays

    A dict with keys as column headers and values as columns, that can be +

    cv_results_dict of numpy (masked) ndarrays

    A dict with keys as column headers and values as columns, that can be imported into a pandas DataFrame.

    For instance the below given table

    @@ -1798,24 +2050,24 @@

    The mean_fit_time, std_fit_time, mean_score_time and std_score_time are all in seconds.

    -
    best_estimator_estimator

    Estimator that was chosen by the search, i.e. estimator +

    best_estimator_estimator

    Estimator that was chosen by the search, i.e. estimator which gave highest score (or smallest loss if specified) on the left out data. Not available if refit=False.

    -
    best_score_float

    Score of best_estimator on the left out data.

    +
    best_score_float

    Score of best_estimator on the left out data.

    -
    best_params_dict

    Parameter setting that gave the best results on the hold out data.

    +
    best_params_dict

    Parameter setting that gave the best results on the hold out data.

    -
    best_index_int

    The index (of the cv_results_ arrays) which corresponds to the best +

    best_index_int

    The index (of the cv_results_ arrays) which corresponds to the best candidate parameter setting.

    The dict at search.cv_results_['params'][search.best_index_] gives the parameter setting for the best model, that gives the highest mean score (search.best_score_).

    -
    scorer_function

    Scorer function used on the held out data to choose the best +

    scorer_function

    Scorer function used on the held out data to choose the best parameters for the model.

    -
    n_splits_int

    The number of cross-validation splits (folds/iterations).

    +
    n_splits_int

    The number of cross-validation splits (folds/iterations).

    The parameters selected are those that maximize the score of the held-out @@ -1950,14 +2202,14 @@

    crossval ModuleΒΆ

    -WORC.classification.crossval.LOO_cross_validation(image_features, feature_labels, classes, patient_ids, param_grid, config, modus, test_size, start=0, save_data=None, tempsave=False, tempfolder=None, fixedsplits=None, fixed_seed=False, use_fastr=None, fastr_plugin=None)[source]ΒΆ
    +WORC.classification.crossval.LOO_cross_validation(image_features, feature_labels, classes, patient_ids, param_grid, config, modus, test_size, start=0, save_data=None, tempsave=False, tempfolder=None, fixedsplits=None, fixed_seed=False, use_fastr=None, fastr_plugin=None, use_SMAC=False, smac_result_file=None)[source]ΒΆ

    Cross-validation in which each sample is once used as the test set.

    Mostly based on the default sklearn object.

    -WORC.classification.crossval.crossval(config, label_data, image_features, param_grid=None, use_fastr=False, fastr_plugin=None, tempsave=False, fixedsplits=None, ensemble={'Use': False}, outputfolder=None, modus='singlelabel')[source]ΒΆ
    +WORC.classification.crossval.crossval(config, label_data, image_features, param_grid=None, use_fastr=False, fastr_plugin=None, tempsave=False, fixedsplits=None, ensemble={'Use': False}, outputfolder=None, modus='singlelabel', use_SMAC=False, smac_result_file=None)[source]ΒΆ

    Constructs multiple individual classifiers based on the label settings.

    config: dict, mandatory

    Dictionary with config settings. See the Github Wiki for the @@ -2053,7 +2305,7 @@

    -WORC.classification.crossval.random_split_cross_validation(image_features, feature_labels, classes, patient_ids, n_iterations, param_grid, config, modus, test_size, start=0, save_data=None, tempsave=False, tempfolder=None, fixedsplits=None, fixed_seed=False, use_fastr=None, fastr_plugin=None, do_test_RS_Ensemble=False)[source]ΒΆ
    +WORC.classification.crossval.random_split_cross_validation(image_features, feature_labels, classes, patient_ids, n_iterations, param_grid, config, modus, test_size, start=0, save_data=None, tempsave=False, tempfolder=None, fixedsplits=None, fixed_seed=False, use_fastr=None, fastr_plugin=None, do_test_RS_Ensemble=False, use_SMAC=False, smac_result_file=None)[source]ΒΆ

    Cross-validation in which data is randomly split in each iteration.

    Due to options of doing single-label and multi-label classification, stratified splitting, and regression, we use a manual loop instead @@ -2088,7 +2340,7 @@

    -WORC.classification.fitandscore.fit_and_score(X, y, scoring, train, test, parameters, fit_params=None, return_train_score=True, return_n_test_samples=True, return_times=True, return_parameters=False, return_estimator=False, error_score='raise', verbose=True, return_all=True, refit_workflows=False)[source]ΒΆ
    +WORC.classification.fitandscore.fit_and_score(X, y, scoring, train, test, parameters, fit_params=None, return_train_score=True, return_n_test_samples=True, return_times=True, return_parameters=False, return_estimator=False, error_score='raise', verbose=False, return_all=True, refit_workflows=False, use_smac=False)[source]ΒΆ

    Fit an estimator to a dataset and score the performance.

    The following methods can currently be applied as preprocessing before fitting, in @@ -2308,6 +2560,43 @@

    parameter_optimization ModuleΒΆ

    +
    +
    +WORC.classification.parameter_optimization.guided_search_parameters(features, labels, N_iter, test_size, parameters, scoring_method, n_splits=5, n_jobspercore=200, use_fastr=False, n_cores=1, fastr_plugin=None, memory='2G', maxlen=100, ranking_score='test_score', random_seed=None, refit_workflows=False, smac_result_file=None)[source]ΒΆ
    +

    Train a classifier and simultaneously optimizes hyperparameters using a +Bayesian optimization approach.

    +
    +
    Arguments:

    features: numpy array containing the training features. +labels: list containing the object labels to be trained on. +N_iter: integer listing the number of iterations to be used in the

    +
    +

    hyperparameter optimization.

    +
    +
    +
    test_size: float listing the test size percentage used in the cross

    validation.

    +
    +
    +

    classifier: sklearn classifier to be tested +param_grid: dictionary containing all possible hyperparameters and their

    +
    +

    values or distrubitions.

    +
    +
    +
    scoring_method: string defining scoring method used in optimization,

    e.g. f1_weighted for a SVM.

    +
    +
    n_jobsperscore: integer listing the number of jobs that are ran on a

    single core when using the fastr randomized search.

    +
    +
    use_fastr: Boolean determining of either fastr or joblib should be used

    for the opimization.

    +
    +
    fastr_plugin: determines which plugin is used for fastr executions.

    When None, uses the default plugin from the fastr config.

    +
    +
    +
    +
    Returns:

    guided_search: object containing the results

    +
    +
    +
    +
    WORC.classification.parameter_optimization.random_search_parameters(features, labels, N_iter, test_size, param_grid, scoring_method, n_splits=5, n_jobspercore=200, use_fastr=False, n_cores=1, fastr_plugin=None, memory='2G', maxlen=100, ranking_score='test_score', random_seed=None, refit_workflows=False)[source]ΒΆ
    @@ -2348,6 +2637,27 @@

    regressors ModuleΒΆ

    +
    +
    +

    smac ModuleΒΆ

    +
    +
    +WORC.classification.smac.build_smac_config(parameters)[source]ΒΆ
    +

    Reads a parameter dictionary and constructs a SMAC configuration object +from it, to be used as input for the Bayesian optimization

    +
    +
    +
    parameters: dict, mandatory

    Contains the required config settings

    +
    +
    +
    +
    +
    Returns:

    ConfigurationSpace object that defines the search space of the hyperparameter +optimization

    +
    +
    +
    +

    trainclassifier ModuleΒΆ

    @@ -2359,7 +2669,7 @@

    -WORC.classification.trainclassifier.trainclassifier(feat_train, patientinfo_train, config, output_hdf, feat_test=None, patientinfo_test=None, fixedsplits=None, verbose=True)[source]ΒΆ
    +WORC.classification.trainclassifier.trainclassifier(feat_train, patientinfo_train, config, output_hdf, feat_test=None, patientinfo_test=None, fixedsplits=None, output_smac=None, verbose=True)[source]ΒΆ

    Train a classifier using machine learning from features.

    By default, if no split in training and test is supplied, a cross validation diff --git a/WORC/doc/_build/html/autogen/WORC.config.html b/WORC/doc/_build/html/autogen/WORC.config.html index 6ceb0649..f0c9a3d9 100644 --- a/WORC/doc/_build/html/autogen/WORC.config.html +++ b/WORC/doc/_build/html/autogen/WORC.config.html @@ -8,7 +8,7 @@ - <no title> — WORC 3.5.0 documentation + <no title> — WORC 3.6.0 documentation @@ -62,7 +62,7 @@

    - 3.5.0 + 3.6.0
    @@ -202,33 +202,39 @@

    - + + + + - + - + - + - + - + - + - + - + + + + diff --git a/WORC/doc/_build/html/autogen/WORC.detectors.html b/WORC/doc/_build/html/autogen/WORC.detectors.html index a8cf4925..3aab24ce 100644 --- a/WORC/doc/_build/html/autogen/WORC.detectors.html +++ b/WORC/doc/_build/html/autogen/WORC.detectors.html @@ -8,7 +8,7 @@ - detectors Package — WORC 3.5.0 documentation + detectors Package — WORC 3.6.0 documentation @@ -64,7 +64,7 @@
    - 3.5.0 + 3.6.0
    @@ -246,22 +246,6 @@

    detectors Package -
    -class WORC.detectors.detectors.CartesiusClusterDetector[source]ΒΆ
    -

    Bases: WORC.detectors.detectors.AbstractDetector

    -
    -
    -__abstractmethods__ = frozenset({})ΒΆ
    -
    - -
    -
    -__module__ = 'WORC.detectors.detectors'ΒΆ
    -
    - -
    -
    class WORC.detectors.detectors.CsvDetector(csv_file_path)[source]ΒΆ
    @@ -338,6 +322,22 @@

    detectors Package +
    +class WORC.detectors.detectors.SnelliusClusterDetector[source]ΒΆ
    +

    Bases: WORC.detectors.detectors.AbstractDetector

    +
    +
    +__abstractmethods__ = frozenset({})ΒΆ
    +
    + +
    +
    +__module__ = 'WORC.detectors.detectors'ΒΆ
    +
    + +

    +
    class WORC.detectors.detectors.WORCDirectoryDetector[source]ΒΆ
    diff --git a/WORC/doc/_build/html/autogen/WORC.exampledata.html b/WORC/doc/_build/html/autogen/WORC.exampledata.html index e8f1602e..3d555247 100644 --- a/WORC/doc/_build/html/autogen/WORC.exampledata.html +++ b/WORC/doc/_build/html/autogen/WORC.exampledata.html @@ -8,7 +8,7 @@ - exampledata Package — WORC 3.5.0 documentation + exampledata Package — WORC 3.6.0 documentation @@ -64,7 +64,7 @@
    - 3.5.0 + 3.6.0
    diff --git a/WORC/doc/_build/html/autogen/WORC.facade.html b/WORC/doc/_build/html/autogen/WORC.facade.html index 984195ba..685eac7c 100644 --- a/WORC/doc/_build/html/autogen/WORC.facade.html +++ b/WORC/doc/_build/html/autogen/WORC.facade.html @@ -8,7 +8,7 @@ - facade Package — WORC 3.5.0 documentation + facade Package — WORC 3.6.0 documentation @@ -64,7 +64,7 @@
    - 3.5.0 + 3.6.0
    @@ -252,7 +252,7 @@

    Please also see the WORCTutorial Github.

    -__dict__ = mappingproxy({'__module__': 'WORC.facade.simpleworc', '__doc__': 'Facade around the main WORC object for simple interaction.\n\n Please also see the `WORCTutorial Github <https://github.com/MStarmans91/WORCTutorial/>`_.\n ', '__init__': <function SimpleWORC.__init__>, 'set_fixed_splits': <function SimpleWORC.set_fixed_splits>, 'features_from_this_directory': <function SimpleWORC.features_from_this_directory>, 'images_from_this_directory': <function SimpleWORC.images_from_this_directory>, 'segmentations_from_this_directory': <function SimpleWORC.segmentations_from_this_directory>, 'masks_from_this_directory': <function SimpleWORC.masks_from_this_directory>, 'labels_from_this_file': <function SimpleWORC.labels_from_this_file>, 'semantics_from_this_file': <function SimpleWORC.semantics_from_this_file>, 'predict_labels': <function SimpleWORC.predict_labels>, '_set_and_validate_estimators': <function SimpleWORC._set_and_validate_estimators>, 'count_num_subjects': <function SimpleWORC.count_num_subjects>, '_validate': <function SimpleWORC._validate>, 'binary_classification': <function SimpleWORC.binary_classification>, 'multiclass_classification': <function SimpleWORC.multiclass_classification>, 'regression': <function SimpleWORC.regression>, 'survival': <function SimpleWORC.survival>, 'add_config_overrides': <function SimpleWORC.add_config_overrides>, 'add_evaluation': <function SimpleWORC.add_evaluation>, 'set_tmpdir': <function SimpleWORC.set_tmpdir>, 'set_multicore_execution': <function SimpleWORC.set_multicore_execution>, 'features_from_radiomix_xlsx': <function SimpleWORC.features_from_radiomix_xlsx>, 'execute': <function SimpleWORC.execute>, '__dict__': <attribute '__dict__' of 'SimpleWORC' objects>, '__weakref__': <attribute '__weakref__' of 'SimpleWORC' objects>})ΒΆ
    +__dict__ = mappingproxy({'__module__': 'WORC.facade.simpleworc', '__doc__': 'Facade around the main WORC object for simple interaction.\n\n Please also see the `WORCTutorial Github <https://github.com/MStarmans91/WORCTutorial/>`_.\n ', '__init__': <function SimpleWORC.__init__>, 'set_fixed_splits': <function SimpleWORC.set_fixed_splits>, 'set_image_types': <function SimpleWORC.set_image_types>, 'features_from_this_directory': <function SimpleWORC.features_from_this_directory>, 'images_from_this_directory': <function SimpleWORC.images_from_this_directory>, 'segmentations_from_this_directory': <function SimpleWORC.segmentations_from_this_directory>, 'masks_from_this_directory': <function SimpleWORC.masks_from_this_directory>, 'labels_from_this_file': <function SimpleWORC.labels_from_this_file>, 'semantics_from_this_file': <function SimpleWORC.semantics_from_this_file>, 'predict_labels': <function SimpleWORC.predict_labels>, '_set_and_validate_estimators': <function SimpleWORC._set_and_validate_estimators>, 'count_num_subjects': <function SimpleWORC.count_num_subjects>, '_validate': <function SimpleWORC._validate>, 'binary_classification': <function SimpleWORC.binary_classification>, 'multiclass_classification': <function SimpleWORC.multiclass_classification>, 'regression': <function SimpleWORC.regression>, 'survival': <function SimpleWORC.survival>, 'add_config_overrides': <function SimpleWORC.add_config_overrides>, 'add_evaluation': <function SimpleWORC.add_evaluation>, 'set_tmpdir': <function SimpleWORC.set_tmpdir>, 'set_multicore_execution': <function SimpleWORC.set_multicore_execution>, 'features_from_radiomix_xlsx': <function SimpleWORC.features_from_radiomix_xlsx>, 'execute': <function SimpleWORC.execute>, '__dict__': <attribute '__dict__' of 'SimpleWORC' objects>, '__weakref__': <attribute '__weakref__' of 'SimpleWORC' objects>})ΒΆ
    @@ -526,7 +526,22 @@

    set_fixed_splits(fixed_splits_csv)[source]ΒΆ
    -
    +

    Provide CSV with fixed splits for cross-validation.

    +
    +
    fixed_splits_csv: string

    Path of CSV file

    +
    +
    +

    + +
    +
    +set_image_types(image_types)[source]ΒΆ
    +

    Set the type of images to be processed.

    +
    +
    image_types: list of strings

    Names of types of images that are provided to WORC.

    +
    +
    +
    @@ -536,7 +551,7 @@

    only a single core will be used and jobs are executed in series. When multicore mode is enabled, jobs are parallellized over all available cores, which majorly speeds up the computation.

    -

    Note: SimpleWORC has an automatic detector for the BIGR and Cartesius cluster. Hence, +

    Note: SimpleWORC has an automatic detector for the BIGR and Snellius cluster. Hence, on those clusters, do not use the multicore execution, as this will overwrite the changes applied by the detectors.

    diff --git a/WORC/doc/_build/html/autogen/WORC.featureprocessing.html b/WORC/doc/_build/html/autogen/WORC.featureprocessing.html index 71ebd779..a64483c6 100644 --- a/WORC/doc/_build/html/autogen/WORC.featureprocessing.html +++ b/WORC/doc/_build/html/autogen/WORC.featureprocessing.html @@ -8,7 +8,7 @@ - featureprocessing Package — WORC 3.5.0 documentation + featureprocessing Package — WORC 3.6.0 documentation @@ -64,7 +64,7 @@
    - 3.5.0 + 3.6.0
    diff --git a/WORC/doc/_build/html/autogen/WORC.html b/WORC/doc/_build/html/autogen/WORC.html index cd76b6a0..0b86420a 100644 --- a/WORC/doc/_build/html/autogen/WORC.html +++ b/WORC/doc/_build/html/autogen/WORC.html @@ -8,7 +8,7 @@ - WORC Package — WORC 3.5.0 documentation + WORC Package — WORC 3.6.0 documentation @@ -64,7 +64,7 @@
    - 3.5.0 + 3.6.0
    @@ -294,7 +294,7 @@

    -__dict__ = mappingproxy({'__module__': 'WORC.WORC', '__doc__': 'Workflow for Optimal Radiomics Classification.\n\n A Workflow for Optimal Radiomics Classification (WORC) object that\n serves as a pipeline spawner and manager for optimizating radiomics\n studies. Depending on the attributes set, the object will spawn an\n appropriate pipeline and manage it.\n\n Note that many attributes are lists and can therefore contain multiple\n instances. For example, when providing two sequences per patient,\n the "images" list contains two items. The type of items in the lists\n is described below.\n\n All objects that serve as source for your network, i.e. refer to\n actual files to be used, should be formatted as fastr sources suited for\n one of the fastr plugings, see also\n http://fastr.readthedocs.io/en/stable/fastr.reference.html#ioplugin-reference\n The objects should be lists of these fastr sources or dictionaries with the\n sample ID\'s, e.g.\n\n images_train = [{\'Patient001\': vfs://input/CT001.nii.gz,\n \'Patient002\': vfs://input/CT002.nii.gz},\n {\'Patient001\': vfs://input/MR001.nii.gz,\n \'Patient002\': vfs://input/MR002.nii.gz}]\n\n Attributes\n ------------------\n name: String, default \'WORC\'\n name of the network.\n\n configs: list, required\n Configuration parameters, either ConfigParser objects\n created through the defaultconfig function or paths of config .ini\n files. (list, required)\n\n labels: list, required\n Paths to files containing patient labels (.txt files).\n\n network: automatically generated\n The FASTR network generated through the "build" function.\n\n images: list, optional\n Paths refering to the images used for Radiomics computation. Images\n should be of the ITK Image type.\n\n segmentations: list, optional\n Paths refering to the segmentations used for Radiomics computation.\n Segmentations should be of the ITK Image type.\n\n semantics: semantic features per image type (list, optional)\n\n masks: state which pixels of images are valid (list, optional)\n\n features: input Radiomics features for classification (list, optional)\n\n metadata: DICOM headers belonging to images (list, optional)\n\n Elastix_Para: parameter files for Elastix (list, optional)\n\n fastr_plugin: plugin to use for FASTR execution\n\n fastr_tempdir: temporary directory to use for FASTR execution\n\n additions: additional inputs for your network (dict, optional)\n\n source_data: data to use as sources for FASTR (dict)\n\n sink_data: data to use as sinks for FASTR (dict)\n\n CopyMetadata: Boolean, default True\n when using elastix, copy metadata from image to segmentation or not\n\n ', '__init__': <function WORC.__init__>, 'defaultconfig': <function WORC.defaultconfig>, 'add_tools': <function WORC.add_tools>, 'build': <function WORC.build>, 'build_training': <function WORC.build_training>, 'add_ComBat': <function WORC.add_ComBat>, 'add_preprocessing': <function WORC.add_preprocessing>, 'add_feature_calculator': <function WORC.add_feature_calculator>, 'add_elastix_sourcesandsinks': <function WORC.add_elastix_sourcesandsinks>, 'add_elastix': <function WORC.add_elastix>, 'add_segmentix': <function WORC.add_segmentix>, 'set': <function WORC.set>, 'execute': <function WORC.execute>, 'add_evaluation': <function WORC.add_evaluation>, 'save_config': <function WORC.save_config>, '__dict__': <attribute '__dict__' of 'WORC' objects>, '__weakref__': <attribute '__weakref__' of 'WORC' objects>})ΒΆ
    +__dict__ = mappingproxy({'__module__': 'WORC.WORC', '__doc__': 'Workflow for Optimal Radiomics Classification.\n\n A Workflow for Optimal Radiomics Classification (WORC) object that\n serves as a pipeline spawner and manager for optimizating radiomics\n studies. Depending on the attributes set, the object will spawn an\n appropriate pipeline and manage it.\n\n Note that many attributes are lists and can therefore contain multiple\n instances. For example, when providing two sequences per patient,\n the "images" list contains two items. The type of items in the lists\n is described below.\n\n All objects that serve as source for your network, i.e. refer to\n actual files to be used, should be formatted as fastr sources suited for\n one of the fastr plugings, see also\n http://fastr.readthedocs.io/en/stable/fastr.reference.html#ioplugin-reference\n The objects should be lists of these fastr sources or dictionaries with the\n sample ID\'s, e.g.\n\n images_train = [{\'Patient001\': vfs://input/CT001.nii.gz,\n \'Patient002\': vfs://input/CT002.nii.gz},\n {\'Patient001\': vfs://input/MR001.nii.gz,\n \'Patient002\': vfs://input/MR002.nii.gz}]\n\n Attributes\n ------------------\n name: String, default \'WORC\'\n name of the network.\n\n configs: list, required\n Configuration parameters, either ConfigParser objects\n created through the defaultconfig function or paths of config .ini\n files. (list, required)\n\n labels: list, required\n Paths to files containing patient labels (.txt files).\n\n network: automatically generated\n The FASTR network generated through the "build" function.\n\n images: list, optional\n Paths refering to the images used for Radiomics computation. Images\n should be of the ITK Image type.\n\n segmentations: list, optional\n Paths refering to the segmentations used for Radiomics computation.\n Segmentations should be of the ITK Image type.\n\n semantics: semantic features per image type (list, optional)\n\n masks: state which pixels of images are valid (list, optional)\n\n features: input Radiomics features for classification (list, optional)\n\n metadata: DICOM headers belonging to images (list, optional)\n\n Elastix_Para: parameter files for Elastix (list, optional)\n\n fastr_plugin: plugin to use for FASTR execution\n\n fastr_tempdir: temporary directory to use for FASTR execution\n\n additions: additional inputs for your network (dict, optional)\n\n source_data: data to use as sources for FASTR (dict)\n\n sink_data: data to use as sinks for FASTR (dict)\n\n CopyMetadata: Boolean, default True\n when using elastix, copy metadata from image to segmentation or not\n\n ', '__init__': <function WORC.__init__>, 'defaultconfig': <function WORC.defaultconfig>, 'add_tools': <function WORC.add_tools>, 'build': <function WORC.build>, 'build_training': <function WORC.build_training>, 'add_fingerprinter': <function WORC.add_fingerprinter>, 'add_ComBat': <function WORC.add_ComBat>, 'add_preprocessing': <function WORC.add_preprocessing>, 'add_feature_calculator': <function WORC.add_feature_calculator>, 'add_elastix_sourcesandsinks': <function WORC.add_elastix_sourcesandsinks>, 'add_elastix': <function WORC.add_elastix>, 'add_segmentix': <function WORC.add_segmentix>, 'set': <function WORC.set>, 'execute': <function WORC.execute>, 'add_evaluation': <function WORC.add_evaluation>, 'save_config': <function WORC.save_config>, '__dict__': <attribute '__dict__' of 'WORC' objects>, '__weakref__': <attribute '__weakref__' of 'WORC' objects>})ΒΆ
    @@ -355,6 +355,14 @@

    Add a feature calculation node to the network.

    +
    +
    +add_fingerprinter(id, type, config_source)[source]ΒΆ
    +

    Add WORC Fingerprinter to the network.

    +

    Note: applied per imaging sequence, or per feature file if no +images are present.

    +
    +
    add_preprocessing(preprocess_node, label, nmod)[source]ΒΆ
    @@ -567,6 +575,7 @@

    Subpackagesmetrics Module
  • parameter_optimization Module
  • regressors Module
  • +
  • smac Module
  • trainclassifier Module
  • @@ -683,6 +692,7 @@

    SubpackagesSlicer Module
  • Transformix Module
  • createfixedsplits Module
  • +
  • fingerprinting Module
  • validators Package
      diff --git a/WORC/doc/_build/html/autogen/WORC.plotting.html b/WORC/doc/_build/html/autogen/WORC.plotting.html index dd0ca31a..dfd60b80 100644 --- a/WORC/doc/_build/html/autogen/WORC.plotting.html +++ b/WORC/doc/_build/html/autogen/WORC.plotting.html @@ -8,7 +8,7 @@ - plotting Package — WORC 3.5.0 documentation + plotting Package — WORC 3.6.0 documentation @@ -64,7 +64,7 @@
      - 3.5.0 + 3.6.0
      @@ -283,7 +283,7 @@

      -WORC.plotting.plot_ROC.plot_ROC(prediction, pinfo, ensemble=1, label_type=None, ROC_png=None, ROC_tex=None, ROC_csv=None, PRC_png=None, PRC_tex=None, PRC_csv=None)[source]ΒΆ
      +WORC.plotting.plot_ROC.plot_ROC(prediction, pinfo, ensemble_method='top_N', ensemble_size=1, label_type=None, ROC_png=None, ROC_tex=None, ROC_csv=None, PRC_png=None, PRC_tex=None, PRC_csv=None)[source]ΒΆ
      @@ -427,7 +427,7 @@

      -WORC.plotting.plot_estimator_performance.fit_thresholds(thresholds, estimator, label_type, X_train, Y_train, ensemble, ensemble_scoring)[source]ΒΆ
      +WORC.plotting.plot_estimator_performance.fit_thresholds(thresholds, estimator, label_type, X_train, Y_train, ensemble_method, ensemble_size, ensemble_scoring)[source]ΒΆ
      @@ -437,7 +437,7 @@

      -WORC.plotting.plot_estimator_performance.plot_estimator_performance(prediction, label_data, label_type, crossval_type=None, alpha=0.95, ensemble=None, verbose=True, ensemble_scoring=None, output=None, modus=None, thresholds=None, survival=False, shuffle_estimators=False, bootstrap=None, bootstrap_N=None, overfit_scaler=None, save_memory=True, refit_ensemble=False)[source]ΒΆ
      +WORC.plotting.plot_estimator_performance.plot_estimator_performance(prediction, label_data, label_type, crossval_type=None, alpha=0.95, ensemble_method='top_N', ensemble_size=100, verbose=True, ensemble_scoring=None, output=None, modus=None, thresholds=None, survival=False, shuffle_estimators=False, bootstrap=None, bootstrap_N=None, overfit_scaler=None, save_memory=True, refit_ensemble=False)[source]ΒΆ

      Plot the output of a single estimator, e.g. a SVM.

      prediction: pandas dataframe or string, mandatory

      output of trainclassifier function, either a pandas dataframe @@ -452,11 +452,10 @@

      alpha: float, default 0.95

      Significance of confidence intervals.

      -
      ensemble: False, integer or β€˜Caruana’

      Determine whether an ensemble will be created. If so, -either provide an integer to determine how many of the -top performing classifiers should be in the ensemble, or use -the string β€œCaruana” to use smart ensembling based on -Caruana et al. 2004.

      +
      ensemble_method: string, default β€˜top_N’

      Determine which method to use for creating the ensemble. +Choices: top_N or Caruana

      +
      +
      ensemble_size: int, default 50

      Determine the size of the ensemble. Only relevant for top_N

      verbose: boolean, default True

      Plot intermedate messages.

      @@ -533,13 +532,13 @@

      -WORC.plotting.plot_images.plot_im_and_overlay(image, mask=None, figsize=(3, 3), alpha=0.4, color='cyan')[source]ΒΆ
      +WORC.plotting.plot_images.plot_im_and_overlay(image, mask=None, figsize=(3, 3), alpha=0.4, color='cyan', colormap='gray', colorbar=False)[source]ΒΆ

      Plot an image in a matplotlib figure and overlay with a mask.

      -WORC.plotting.plot_images.slicer(image, mask=None, output_name=None, output_name_zoom=None, thresholds=[-240, 160], zoomfactor=4, dpi=500, normalize=False, expand=False, boundary=False, square=False, flip=True, rot90=0, alpha=0.4, axis='axial', index=None, color='cyan', radius=2)[source]ΒΆ
      +WORC.plotting.plot_images.slicer(image, mask=None, output_name=None, output_name_zoom=None, thresholds=[-5, 5], zoomfactor=4, dpi=500, normalize=True, expand=False, boundary=False, square=False, flip=True, rot90=0, alpha=0.4, axis='axial', index=None, color='cyan', radius=2, colormap='gray')[source]ΒΆ

      Plot slice of image where mask is largest, with mask as overlay.

      image and mask should both be arrays

      @@ -555,11 +554,6 @@

      plot_ranked_scores ModuleΒΆ

      -
      -
      -WORC.plotting.plot_ranked_scores.example()[source]ΒΆ
      -
      -
      WORC.plotting.plot_ranked_scores.flatten_object(input)[source]ΒΆ
      @@ -578,17 +572,17 @@

      -WORC.plotting.plot_ranked_scores.plot_ranked_percentages(estimator, pinfo, label_type=None, ensemble=50, output_csv=None)[source]ΒΆ
      +WORC.plotting.plot_ranked_scores.plot_ranked_percentages(estimator, pinfo, label_type=None, ensemble_method='top_N', ensemble_size=100, output_csv=None)[source]ΒΆ
      -WORC.plotting.plot_ranked_scores.plot_ranked_posteriors(estimator, pinfo, label_type=None, ensemble=50, output_csv=None)[source]ΒΆ
      +WORC.plotting.plot_ranked_scores.plot_ranked_posteriors(estimator, pinfo, label_type=None, ensemble_method='top_N', ensemble_size=100, output_csv=None)[source]ΒΆ
      -WORC.plotting.plot_ranked_scores.plot_ranked_scores(estimator, pinfo, label_type, scores='percentages', images=[], segmentations=[], ensemble=50, output_csv=None, output_zip=None, output_itk=None)[source]ΒΆ
      +WORC.plotting.plot_ranked_scores.plot_ranked_scores(estimator, pinfo, label_type, scores='percentages', images=[], segmentations=[], ensemble_method='top_N', ensemble_size=100, output_csv=None, output_zip=None, output_itk=None)[source]ΒΆ

      Rank the patients according to their average score. The score can either be the average posterior or the percentage of times the patient was classified correctly in the cross validations. Additionally, @@ -611,9 +605,9 @@

      segmentations: list, optional

      List containing the filepaths to the ITKImage segmentation files of the patients.

      -
      ensemble: integer or string, optional

      Method to be used for ensembling. Either an integer for a fixed size -or β€˜Caruana’ for the Caruana method, see the SearchCV function for more -details.

      +
      ensemble_method: string, optional

      Method to be used for ensembling.

      +
      +
      ensemble_size: int, optional

      If top_N method is used, number of workflows to be included in ensemble.

      output_csv: filepath, optional

      If given, the scores will be written to this csv file.

      diff --git a/WORC/doc/_build/html/autogen/WORC.processing.html b/WORC/doc/_build/html/autogen/WORC.processing.html index 6f34f570..5cb03459 100644 --- a/WORC/doc/_build/html/autogen/WORC.processing.html +++ b/WORC/doc/_build/html/autogen/WORC.processing.html @@ -8,7 +8,7 @@ - processing Package — WORC 3.5.0 documentation + processing Package — WORC 3.6.0 documentation @@ -64,7 +64,7 @@
      - 3.5.0 + 3.6.0
      diff --git a/WORC/doc/_build/html/autogen/WORC.resources.fastr_tests.html b/WORC/doc/_build/html/autogen/WORC.resources.fastr_tests.html index d1f9ee00..52572c85 100644 --- a/WORC/doc/_build/html/autogen/WORC.resources.fastr_tests.html +++ b/WORC/doc/_build/html/autogen/WORC.resources.fastr_tests.html @@ -8,7 +8,7 @@ - fastr_tests Package — WORC 3.5.0 documentation + fastr_tests Package — WORC 3.6.0 documentation @@ -64,7 +64,7 @@
      - 3.5.0 + 3.6.0
      diff --git a/WORC/doc/_build/html/autogen/WORC.resources.fastr_tools.html b/WORC/doc/_build/html/autogen/WORC.resources.fastr_tools.html index e218762d..b1dae46d 100644 --- a/WORC/doc/_build/html/autogen/WORC.resources.fastr_tools.html +++ b/WORC/doc/_build/html/autogen/WORC.resources.fastr_tools.html @@ -8,7 +8,7 @@ - fastr_tools Package — WORC 3.5.0 documentation + fastr_tools Package — WORC 3.6.0 documentation @@ -64,7 +64,7 @@
      - 3.5.0 + 3.6.0
      diff --git a/WORC/doc/_build/html/autogen/WORC.resources.html b/WORC/doc/_build/html/autogen/WORC.resources.html index ac656c76..8e8fb6b8 100644 --- a/WORC/doc/_build/html/autogen/WORC.resources.html +++ b/WORC/doc/_build/html/autogen/WORC.resources.html @@ -8,7 +8,7 @@ - resources Package — WORC 3.5.0 documentation + resources Package — WORC 3.6.0 documentation @@ -64,7 +64,7 @@
      - 3.5.0 + 3.6.0
      diff --git a/WORC/doc/_build/html/autogen/WORC.tools.html b/WORC/doc/_build/html/autogen/WORC.tools.html index ea7350b0..b1e931f1 100644 --- a/WORC/doc/_build/html/autogen/WORC.tools.html +++ b/WORC/doc/_build/html/autogen/WORC.tools.html @@ -8,7 +8,7 @@ - tools Package — WORC 3.5.0 documentation + tools Package — WORC 3.6.0 documentation @@ -64,7 +64,7 @@
      - 3.5.0 + 3.6.0
      @@ -126,6 +126,7 @@
    • Slicer Module
    • Transformix Module
    • createfixedsplits Module
    • +
    • fingerprinting Module
  • validators Package
  • @@ -263,7 +264,7 @@

    tools Package

    Evaluate ModuleΒΆ

    -class WORC.tools.Evaluate.Evaluate(label_type, modus='binary_classification', ensemble=50, scores='percentages', parent=None, features=None, fastr_plugin='LinearExecution', name='Example')[source]ΒΆ
    +class WORC.tools.Evaluate.Evaluate(label_type, modus='binary_classification', scores='percentages', ensemble_method='top_N', ensemble_size=100, parent=None, features=None, fastr_plugin='LinearExecution', name='Example')[source]ΒΆ

    Bases: object

    Build a network that evaluates the performance of an estimator.

    @@ -273,7 +274,7 @@

    tools Package
    -__init__(label_type, modus='binary_classification', ensemble=50, scores='percentages', parent=None, features=None, fastr_plugin='LinearExecution', name='Example')[source]ΒΆ
    +__init__(label_type, modus='binary_classification', scores='percentages', ensemble_method='top_N', ensemble_size=100, parent=None, features=None, fastr_plugin='LinearExecution', name='Example')[source]ΒΆ

    Initialize object.

    network: fastr network, default None

    If you input a network, the evaluate network is added @@ -472,6 +473,48 @@

    tools Package +

    fingerprinting ModuleΒΆ

    +
    +
    +class WORC.tools.fingerprinting.Fingerprinter[source]ΒΆ
    +

    Bases: object

    +

    Fingerprinting object for WORC configuration.

    +
    +
    +__dict__ = mappingproxy({'__module__': 'WORC.tools.fingerprinting', '__doc__': 'Fingerprinting object for WORC configuration.', '__init__': <function Fingerprinter.__init__>, 'execute': <function Fingerprinter.execute>, '__dict__': <attribute '__dict__' of 'Fingerprinter' objects>, '__weakref__': <attribute '__weakref__' of 'Fingerprinter' objects>})ΒΆ
    +
    + +
    +
    +__init__()[source]ΒΆ
    +

    Initialize object.

    +
    + +
    +
    +__module__ = 'WORC.tools.fingerprinting'ΒΆ
    +
    + +
    +
    +__weakref__ΒΆ
    +

    list of weak references to the object (if defined)

    +
    + +
    +
    +execute()[source]ΒΆ
    +

    Determine fingerprint of dataset.

    +
    +
    worcobject: WORC object

    WORC object to fingerprint

    +
    +
    +
    + +
    + diff --git a/WORC/doc/_build/html/genindex.html b/WORC/doc/_build/html/genindex.html index d91a03fb..9c527668 100644 --- a/WORC/doc/_build/html/genindex.html +++ b/WORC/doc/_build/html/genindex.html @@ -9,7 +9,7 @@ - Index — WORC 3.5.0 documentation + Index — WORC 3.6.0 documentation @@ -63,7 +63,7 @@
    - 3.5.0 + 3.6.0
    @@ -196,6 +196,8 @@

    _

  • __iter__() (WORC.classification.AdvancedSampler.AdvancedSampler method) @@ -426,6 +436,8 @@

    _

  • (WORC.classification.SearchCV.BaseSearchCV attribute)
  • (WORC.classification.SearchCV.BaseSearchCVJoblib attribute) +
  • +
  • (WORC.classification.SearchCV.BaseSearchCVSMAC attribute)
  • (WORC.classification.SearchCV.BaseSearchCVfastr attribute)
  • @@ -434,6 +446,8 @@

    _

  • (WORC.classification.SearchCV.GridSearchCVJoblib attribute)
  • (WORC.classification.SearchCV.GridSearchCVfastr attribute) +
  • +
  • (WORC.classification.SearchCV.GuidedSearchCVSMAC attribute)
  • (WORC.classification.SearchCV.RandomizedSearchCVJoblib attribute)
  • @@ -442,8 +456,6 @@

    _

  • (WORC.detectors.detectors.AbstractDetector attribute)
  • (WORC.detectors.detectors.BigrClusterDetector attribute) -
  • -
  • (WORC.detectors.detectors.CartesiusClusterDetector attribute)
  • (WORC.detectors.detectors.CsvDetector attribute)
  • @@ -452,6 +464,8 @@

    _

  • (WORC.detectors.detectors.HostnameDetector attribute)
  • (WORC.detectors.detectors.LinuxDetector attribute) +
  • +
  • (WORC.detectors.detectors.SnelliusClusterDetector attribute)
  • (WORC.detectors.detectors.WORCDirectoryDetector attribute)
  • @@ -510,6 +524,8 @@

    _

  • (WORC.tools.Slicer.Slicer attribute)
  • (WORC.tools.Transformix.Transformix attribute) +
  • +
  • (WORC.tools.fingerprinting.Fingerprinter attribute)
  • (WORC.validators.preflightcheck.AbstractValidator attribute)
  • @@ -586,6 +602,8 @@

    _

  • (WORC.tools.Slicer.Slicer attribute)
  • (WORC.tools.Transformix.Transformix attribute) +
  • +
  • (WORC.tools.fingerprinting.Fingerprinter attribute)
  • (WORC.validators.preflightcheck.AbstractValidator attribute)
  • @@ -619,6 +637,8 @@

    A

    + + + + + + - + + + + - + - + - + - + - + - + - + - + + + + @@ -381,6 +388,9 @@

    Contents

    + + +

    FeatureScaling

    FeatureScaling

    General

    Fingerprinting

    Fingerprinting

    General

    General

    HyperOptimization

    HyperOptimization

    HyperOptimization

    ImageFeatures

    ImageFeatures

    ImageFeatures

    Imputation

    Imputation

    Imputation

    Labels

    Labels

    Labels

    OneHotEncoding

    OneHotEncoding

    OneHotEncoding

    Preprocessing

    Preprocessing

    Preprocessing

    PyRadiomics

    PyRadiomics

    PyRadiomics

    Resampling

    Resampling

    Resampling

    SMAC

    SMAC

    Segmentix

    Segmentix

  • set_fixed_splits() (WORC.facade.simpleworc.SimpleWORC method) +
  • +
  • set_image_types() (WORC.facade.simpleworc.SimpleWORC method)
  • set_multicore_execution() (WORC.facade.simpleworc.SimpleWORC method)
  • @@ -1319,6 +1351,8 @@

    S

  • Slicer (class in WORC.tools.Slicer)
  • slicer() (in module WORC.plotting.plot_images) +
  • +
  • SnelliusClusterDetector (class in WORC.detectors.detectors)
  • source_data() (in module WORC.resources.fastr_tests.CalcFeatures_test) @@ -1453,6 +1487,8 @@

    W

  • WORC.classification.regressors (module)
  • WORC.classification.SearchCV (module) +
  • +
  • WORC.classification.smac (module)
  • WORC.classification.trainclassifier (module)
  • @@ -1591,6 +1627,8 @@

    W

  • WORC.tools.Elastix (module)
  • WORC.tools.Evaluate (module) +
  • +
  • WORC.tools.fingerprinting (module)
  • WORC.tools.Inference (module)
  • diff --git a/WORC/doc/_build/html/index.html b/WORC/doc/_build/html/index.html index d014a85f..24807176 100644 --- a/WORC/doc/_build/html/index.html +++ b/WORC/doc/_build/html/index.html @@ -8,7 +8,7 @@ - WORC: Workflow for Optimal Radiomics Classification — WORC 3.5.0 documentation + WORC: Workflow for Optimal Radiomics Classification — WORC 3.6.0 documentation @@ -63,7 +63,7 @@
    - 3.5.0 + 3.6.0
    @@ -279,6 +279,7 @@

    WORC DocumentationClassification
  • CrossValidation
  • HyperOptimization
  • +
  • SMAC
  • Ensemble
  • Evaluation
  • Bootstrap
  • @@ -319,6 +320,7 @@

    WORC DocumentationFeature scaling
  • Image Registration
  • ComBat
  • +
  • Bayesian optimization with SMAC instead of random search
  • Multilabel classification and regression
  • References
  • @@ -350,160 +352,165 @@

    WORC DocumentationResource File Formats
  • Changelog
  •     WORC.classification.SearchCV
        + WORC.classification.smac +
        @@ -585,6 +590,11 @@

    Python Module Index

        WORC.tools.Evaluate
        + WORC.tools.fingerprinting +
        diff --git a/WORC/doc/_build/html/search.html b/WORC/doc/_build/html/search.html index ed4e0c2d..ed46022a 100644 --- a/WORC/doc/_build/html/search.html +++ b/WORC/doc/_build/html/search.html @@ -8,7 +8,7 @@ - Search — WORC 3.5.0 documentation + Search — WORC 3.6.0 documentation @@ -63,7 +63,7 @@
    - 3.5.0 + 3.6.0
    diff --git a/WORC/doc/_build/html/searchindex.js b/WORC/doc/_build/html/searchindex.js index 6e2e48e0..b21354e3 100644 --- a/WORC/doc/_build/html/searchindex.js +++ b/WORC/doc/_build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["autogen/WORC","autogen/WORC.IOparser","autogen/WORC.classification","autogen/WORC.config","autogen/WORC.detectors","autogen/WORC.exampledata","autogen/WORC.export","autogen/WORC.facade","autogen/WORC.facade.helpers","autogen/WORC.fastrconfig","autogen/WORC.featureprocessing","autogen/WORC.plotting","autogen/WORC.processing","autogen/WORC.resources","autogen/WORC.resources.fastr_tests","autogen/WORC.resources.fastr_tools","autogen/WORC.statistics","autogen/WORC.tests","autogen/WORC.tools","autogen/WORC.validators","autogen/config/WORC.config_Bootstrap_defopts","autogen/config/WORC.config_Bootstrap_description","autogen/config/WORC.config_Classification_defopts","autogen/config/WORC.config_Classification_description","autogen/config/WORC.config_ComBat_defopts","autogen/config/WORC.config_ComBat_description","autogen/config/WORC.config_CrossValidation_defopts","autogen/config/WORC.config_CrossValidation_description","autogen/config/WORC.config_Ensemble_defopts","autogen/config/WORC.config_Ensemble_description","autogen/config/WORC.config_Evaluation_defopts","autogen/config/WORC.config_Evaluation_description","autogen/config/WORC.config_FeatPreProcess_defopts","autogen/config/WORC.config_FeatPreProcess_description","autogen/config/WORC.config_Featsel_defopts","autogen/config/WORC.config_Featsel_description","autogen/config/WORC.config_FeatureScaling_defopts","autogen/config/WORC.config_FeatureScaling_description","autogen/config/WORC.config_General_defopts","autogen/config/WORC.config_General_description","autogen/config/WORC.config_HyperOptimization_defopts","autogen/config/WORC.config_HyperOptimization_description","autogen/config/WORC.config_ImageFeatures_defopts","autogen/config/WORC.config_ImageFeatures_description","autogen/config/WORC.config_Imputation_defopts","autogen/config/WORC.config_Imputation_description","autogen/config/WORC.config_Labels_defopts","autogen/config/WORC.config_Labels_description","autogen/config/WORC.config_OneHotEncoding_defopts","autogen/config/WORC.config_OneHotEncoding_description","autogen/config/WORC.config_Preprocessing_defopts","autogen/config/WORC.config_Preprocessing_description","autogen/config/WORC.config_PyRadiomics_defopts","autogen/config/WORC.config_PyRadiomics_description","autogen/config/WORC.config_Resampling_defopts","autogen/config/WORC.config_Resampling_description","autogen/config/WORC.config_Segmentix_defopts","autogen/config/WORC.config_Segmentix_description","autogen/config/WORC.config_SelectFeatGroup_defopts","autogen/config/WORC.config_SelectFeatGroup_description","index","static/additionalfunctionality","static/changelog","static/configuration","static/datamining","static/developerdocumentation","static/faq","static/features","static/file_description","static/introduction","static/quick_start","static/user_manual"],envversion:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.cpp":1,"sphinx.domains.javascript":1,"sphinx.domains.math":2,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,"sphinx.ext.intersphinx":1,"sphinx.ext.todo":1,"sphinx.ext.viewcode":1,sphinx:56},filenames:["autogen/WORC.rst","autogen/WORC.IOparser.rst","autogen/WORC.classification.rst","autogen/WORC.config.rst","autogen/WORC.detectors.rst","autogen/WORC.exampledata.rst","autogen/WORC.export.rst","autogen/WORC.facade.rst","autogen/WORC.facade.helpers.rst","autogen/WORC.fastrconfig.rst","autogen/WORC.featureprocessing.rst","autogen/WORC.plotting.rst","autogen/WORC.processing.rst","autogen/WORC.resources.rst","autogen/WORC.resources.fastr_tests.rst","autogen/WORC.resources.fastr_tools.rst","autogen/WORC.statistics.rst","autogen/WORC.tests.rst","autogen/WORC.tools.rst","autogen/WORC.validators.rst","autogen/config/WORC.config_Bootstrap_defopts.rst","autogen/config/WORC.config_Bootstrap_description.rst","autogen/config/WORC.config_Classification_defopts.rst","autogen/config/WORC.config_Classification_description.rst","autogen/config/WORC.config_ComBat_defopts.rst","autogen/config/WORC.config_ComBat_description.rst","autogen/config/WORC.config_CrossValidation_defopts.rst","autogen/config/WORC.config_CrossValidation_description.rst","autogen/config/WORC.config_Ensemble_defopts.rst","autogen/config/WORC.config_Ensemble_description.rst","autogen/config/WORC.config_Evaluation_defopts.rst","autogen/config/WORC.config_Evaluation_description.rst","autogen/config/WORC.config_FeatPreProcess_defopts.rst","autogen/config/WORC.config_FeatPreProcess_description.rst","autogen/config/WORC.config_Featsel_defopts.rst","autogen/config/WORC.config_Featsel_description.rst","autogen/config/WORC.config_FeatureScaling_defopts.rst","autogen/config/WORC.config_FeatureScaling_description.rst","autogen/config/WORC.config_General_defopts.rst","autogen/config/WORC.config_General_description.rst","autogen/config/WORC.config_HyperOptimization_defopts.rst","autogen/config/WORC.config_HyperOptimization_description.rst","autogen/config/WORC.config_ImageFeatures_defopts.rst","autogen/config/WORC.config_ImageFeatures_description.rst","autogen/config/WORC.config_Imputation_defopts.rst","autogen/config/WORC.config_Imputation_description.rst","autogen/config/WORC.config_Labels_defopts.rst","autogen/config/WORC.config_Labels_description.rst","autogen/config/WORC.config_OneHotEncoding_defopts.rst","autogen/config/WORC.config_OneHotEncoding_description.rst","autogen/config/WORC.config_Preprocessing_defopts.rst","autogen/config/WORC.config_Preprocessing_description.rst","autogen/config/WORC.config_PyRadiomics_defopts.rst","autogen/config/WORC.config_PyRadiomics_description.rst","autogen/config/WORC.config_Resampling_defopts.rst","autogen/config/WORC.config_Resampling_description.rst","autogen/config/WORC.config_Segmentix_defopts.rst","autogen/config/WORC.config_Segmentix_description.rst","autogen/config/WORC.config_SelectFeatGroup_defopts.rst","autogen/config/WORC.config_SelectFeatGroup_description.rst","index.rst","static/additionalfunctionality.rst","static/changelog.rst","static/configuration.rst","static/datamining.rst","static/developerdocumentation.rst","static/faq.rst","static/features.rst","static/file_description.rst","static/introduction.rst","static/quick_start.rst","static/user_manual.rst"],objects:{"WORC.IOparser":{config_WORC:[1,0,0,"-"],config_io_PyRadiomics:[1,0,0,"-"],config_io_classifier:[1,0,0,"-"],config_io_combat:[1,0,0,"-"],config_preprocessing:[1,0,0,"-"],config_segmentix:[1,0,0,"-"],file_io:[1,0,0,"-"]},"WORC.IOparser.config_WORC":{load_config:[1,1,1,""]},"WORC.IOparser.config_io_PyRadiomics":{load_config:[1,1,1,""]},"WORC.IOparser.config_io_classifier":{load_config:[1,1,1,""]},"WORC.IOparser.config_io_combat":{load_config:[1,1,1,""]},"WORC.IOparser.config_preprocessing":{load_config:[1,1,1,""]},"WORC.IOparser.config_segmentix":{load_config:[1,1,1,""]},"WORC.IOparser.file_io":{convert_config_pyradiomics:[1,1,1,""],load_data:[1,1,1,""],load_features:[1,1,1,""]},"WORC.WORC":{Tools:[0,2,1,""],WORC:[0,2,1,""]},"WORC.WORC.Tools":{__dict__:[0,3,1,""],__init__:[0,4,1,""],__module__:[0,3,1,""],__weakref__:[0,3,1,""]},"WORC.WORC.WORC":{__dict__:[0,3,1,""],__init__:[0,4,1,""],__module__:[0,3,1,""],__weakref__:[0,3,1,""],add_ComBat:[0,4,1,""],add_elastix:[0,4,1,""],add_elastix_sourcesandsinks:[0,4,1,""],add_evaluation:[0,4,1,""],add_feature_calculator:[0,4,1,""],add_preprocessing:[0,4,1,""],add_segmentix:[0,4,1,""],add_tools:[0,4,1,""],build:[0,4,1,""],build_training:[0,4,1,""],defaultconfig:[0,4,1,""],execute:[0,4,1,""],save_config:[0,4,1,""],set:[0,4,1,""]},"WORC.addexceptions":{WORCAssertionError:[0,5,1,""],WORCError:[0,5,1,""],WORCIOError:[0,5,1,""],WORCIndexError:[0,5,1,""],WORCKeyError:[0,5,1,""],WORCNotImplementedError:[0,5,1,""],WORCTypeError:[0,5,1,""],WORCValueError:[0,5,1,""]},"WORC.addexceptions.WORCAssertionError":{__module__:[0,3,1,""]},"WORC.addexceptions.WORCError":{__module__:[0,3,1,""],__weakref__:[0,3,1,""]},"WORC.addexceptions.WORCIOError":{__module__:[0,3,1,""],__weakref__:[0,3,1,""]},"WORC.addexceptions.WORCIndexError":{__module__:[0,3,1,""]},"WORC.addexceptions.WORCKeyError":{__module__:[0,3,1,""]},"WORC.addexceptions.WORCNotImplementedError":{__module__:[0,3,1,""]},"WORC.addexceptions.WORCTypeError":{__module__:[0,3,1,""]},"WORC.addexceptions.WORCValueError":{__module__:[0,3,1,""]},"WORC.classification":{AdvancedSampler:[2,0,0,"-"],ObjectSampler:[2,0,0,"-"],SearchCV:[2,0,0,"-"],construct_classifier:[2,0,0,"-"],createfixedsplits:[2,0,0,"-"],crossval:[2,0,0,"-"],fitandscore:[2,0,0,"-"],metrics:[2,0,0,"-"],parameter_optimization:[2,0,0,"-"],regressors:[2,0,0,"-"],trainclassifier:[2,0,0,"-"]},"WORC.classification.AdvancedSampler":{AdvancedSampler:[2,2,1,""],boolean_uniform:[2,2,1,""],discrete_uniform:[2,2,1,""],exp_uniform:[2,2,1,""],log_uniform:[2,2,1,""]},"WORC.classification.AdvancedSampler.AdvancedSampler":{__dict__:[2,3,1,""],__init__:[2,4,1,""],__iter__:[2,4,1,""],__len__:[2,4,1,""],__module__:[2,3,1,""],__weakref__:[2,3,1,""]},"WORC.classification.AdvancedSampler.boolean_uniform":{__dict__:[2,3,1,""],__init__:[2,4,1,""],__module__:[2,3,1,""],__weakref__:[2,3,1,""],rvs:[2,4,1,""]},"WORC.classification.AdvancedSampler.discrete_uniform":{__dict__:[2,3,1,""],__init__:[2,4,1,""],__module__:[2,3,1,""],__weakref__:[2,3,1,""],rvs:[2,4,1,""]},"WORC.classification.AdvancedSampler.exp_uniform":{__dict__:[2,3,1,""],__init__:[2,4,1,""],__module__:[2,3,1,""],__weakref__:[2,3,1,""],rvs:[2,4,1,""]},"WORC.classification.AdvancedSampler.log_uniform":{__dict__:[2,3,1,""],__init__:[2,4,1,""],__module__:[2,3,1,""],__weakref__:[2,3,1,""],rvs:[2,4,1,""]},"WORC.classification.ObjectSampler":{ObjectSampler:[2,2,1,""]},"WORC.classification.ObjectSampler.ObjectSampler":{__dict__:[2,3,1,""],__init__:[2,4,1,""],__module__:[2,3,1,""],__weakref__:[2,3,1,""],fit:[2,4,1,""],init_ADASYN:[2,4,1,""],init_BorderlineSMOTE:[2,4,1,""],init_NearMiss:[2,4,1,""],init_NeighbourhoodCleaningRule:[2,4,1,""],init_RandomOverSampling:[2,4,1,""],init_RandomUnderSampling:[2,4,1,""],init_SMOTE:[2,4,1,""],init_SMOTEENN:[2,4,1,""],init_SMOTETomek:[2,4,1,""],transform:[2,4,1,""]},"WORC.classification.SearchCV":{BaseSearchCV:[2,2,1,""],BaseSearchCVJoblib:[2,2,1,""],BaseSearchCVfastr:[2,2,1,""],Ensemble:[2,2,1,""],GridSearchCVJoblib:[2,2,1,""],GridSearchCVfastr:[2,2,1,""],RandomizedSearchCVJoblib:[2,2,1,""],RandomizedSearchCVfastr:[2,2,1,""],chunks:[2,1,1,""],chunksdict:[2,1,1,""],rms_score:[2,1,1,""],sar_score:[2,1,1,""]},"WORC.classification.SearchCV.BaseSearchCV":{__abstractmethods__:[2,3,1,""],__init__:[2,4,1,""],__module__:[2,3,1,""],create_ensemble:[2,4,1,""],decision_function:[2,4,1,""],inverse_transform:[2,4,1,""],predict:[2,4,1,""],predict_log_proba:[2,4,1,""],predict_proba:[2,4,1,""],preprocess:[2,4,1,""],process_fit:[2,4,1,""],refit_and_score:[2,4,1,""],score:[2,4,1,""],transform:[2,4,1,""]},"WORC.classification.SearchCV.BaseSearchCVJoblib":{__abstractmethods__:[2,3,1,""],__module__:[2,3,1,""]},"WORC.classification.SearchCV.BaseSearchCVfastr":{__abstractmethods__:[2,3,1,""],__module__:[2,3,1,""]},"WORC.classification.SearchCV.Ensemble":{__abstractmethods__:[2,3,1,""],__init__:[2,4,1,""],__module__:[2,3,1,""],decision_function:[2,4,1,""],inverse_transform:[2,4,1,""],predict:[2,4,1,""],predict_log_proba:[2,4,1,""],predict_proba:[2,4,1,""],transform:[2,4,1,""]},"WORC.classification.SearchCV.GridSearchCVJoblib":{__abstractmethods__:[2,3,1,""],__init__:[2,4,1,""],__module__:[2,3,1,""],fit:[2,4,1,""]},"WORC.classification.SearchCV.GridSearchCVfastr":{__abstractmethods__:[2,3,1,""],__init__:[2,4,1,""],__module__:[2,3,1,""],fit:[2,4,1,""]},"WORC.classification.SearchCV.RandomizedSearchCVJoblib":{__abstractmethods__:[2,3,1,""],__init__:[2,4,1,""],__module__:[2,3,1,""],fit:[2,4,1,""]},"WORC.classification.SearchCV.RandomizedSearchCVfastr":{__abstractmethods__:[2,3,1,""],__init__:[2,4,1,""],__module__:[2,3,1,""],fit:[2,4,1,""]},"WORC.classification.construct_classifier":{construct_SVM:[2,1,1,""],construct_classifier:[2,1,1,""],create_param_grid:[2,1,1,""]},"WORC.classification.createfixedsplits":{createfixedsplits:[2,1,1,""]},"WORC.classification.crossval":{LOO_cross_validation:[2,1,1,""],crossval:[2,1,1,""],nocrossval:[2,1,1,""],random_split_cross_validation:[2,1,1,""],test_RS_Ensemble:[2,1,1,""]},"WORC.classification.fitandscore":{delete_cc_para:[2,1,1,""],delete_nonestimator_parameters:[2,1,1,""],fit_and_score:[2,1,1,""],replacenan:[2,1,1,""]},"WORC.classification.metrics":{ICC:[2,1,1,""],ICC_anova:[2,1,1,""],check_multimetric_scoring:[2,1,1,""],check_scoring:[2,1,1,""],f1_weighted_predictproba:[2,1,1,""],multi_class_auc:[2,1,1,""],multi_class_auc_score:[2,1,1,""],pairwise_auc:[2,1,1,""],performance_multilabel:[2,1,1,""],performance_singlelabel:[2,1,1,""]},"WORC.classification.parameter_optimization":{random_search_parameters:[2,1,1,""]},"WORC.classification.trainclassifier":{add_parameters_to_grid:[2,1,1,""],trainclassifier:[2,1,1,""]},"WORC.detectors":{detectors:[4,0,0,"-"]},"WORC.detectors.detectors":{AbstractDetector:[4,2,1,""],BigrClusterDetector:[4,2,1,""],CartesiusClusterDetector:[4,2,1,""],CsvDetector:[4,2,1,""],DebugDetector:[4,2,1,""],HostnameDetector:[4,2,1,""],LinuxDetector:[4,2,1,""],WORCDirectoryDetector:[4,2,1,""]},"WORC.detectors.detectors.AbstractDetector":{__abstractmethods__:[4,3,1,""],__dict__:[4,3,1,""],__module__:[4,3,1,""],__weakref__:[4,3,1,""],do_detection:[4,4,1,""]},"WORC.detectors.detectors.BigrClusterDetector":{__abstractmethods__:[4,3,1,""],__module__:[4,3,1,""]},"WORC.detectors.detectors.CartesiusClusterDetector":{__abstractmethods__:[4,3,1,""],__module__:[4,3,1,""]},"WORC.detectors.detectors.CsvDetector":{__abstractmethods__:[4,3,1,""],__init__:[4,4,1,""],__module__:[4,3,1,""]},"WORC.detectors.detectors.DebugDetector":{__abstractmethods__:[4,3,1,""],__module__:[4,3,1,""]},"WORC.detectors.detectors.HostnameDetector":{__abstractmethods__:[4,3,1,""],__init__:[4,4,1,""],__module__:[4,3,1,""]},"WORC.detectors.detectors.LinuxDetector":{__abstractmethods__:[4,3,1,""],__module__:[4,3,1,""]},"WORC.detectors.detectors.WORCDirectoryDetector":{__abstractmethods__:[4,3,1,""],__module__:[4,3,1,""]},"WORC.exampledata":{create_example_data:[5,0,0,"-"],datadownloader:[5,0,0,"-"]},"WORC.exampledata.create_example_data":{create_random_features:[5,1,1,""]},"WORC.exampledata.datadownloader":{download_HeadAndNeck:[5,1,1,""],download_project:[5,1,1,""],download_subject:[5,1,1,""]},"WORC.export":{hyper_params_exporter:[6,0,0,"-"]},"WORC.export.hyper_params_exporter":{export_hyper_params_to_latex:[6,1,1,""]},"WORC.facade":{basicworc:[7,0,0,"-"],simpleworc:[7,0,0,"-"]},"WORC.facade.basicworc":{BasicWORC:[7,2,1,""]},"WORC.facade.basicworc.BasicWORC":{__init__:[7,4,1,""],__module__:[7,3,1,""],execute:[7,4,1,""]},"WORC.facade.helpers":{configbuilder:[8,0,0,"-"],exceptions:[8,0,0,"-"],processing:[8,0,0,"-"]},"WORC.facade.helpers.configbuilder":{ConfigBuilder:[8,2,1,""]},"WORC.facade.helpers.configbuilder.ConfigBuilder":{__dict__:[8,3,1,""],__init__:[8,4,1,""],__module__:[8,3,1,""],__weakref__:[8,3,1,""],build_config:[8,4,1,""],coarse_overrides:[8,4,1,""],custom_config_overrides:[8,4,1,""],estimator_scoring_overrides:[8,4,1,""],fullprint:[8,4,1,""]},"WORC.facade.helpers.exceptions":{InvalidCsvFileException:[8,5,1,""],InvalidOrderException:[8,5,1,""],NoFeaturesFoundException:[8,5,1,""],NoImagesFoundException:[8,5,1,""],NoMasksFoundException:[8,5,1,""],NoSegmentationsFoundException:[8,5,1,""],PathNotFoundException:[8,5,1,""]},"WORC.facade.helpers.exceptions.InvalidCsvFileException":{__init__:[8,4,1,""],__module__:[8,3,1,""],__weakref__:[8,3,1,""]},"WORC.facade.helpers.exceptions.InvalidOrderException":{__init__:[8,4,1,""],__module__:[8,3,1,""],__weakref__:[8,3,1,""]},"WORC.facade.helpers.exceptions.NoFeaturesFoundException":{__init__:[8,4,1,""],__module__:[8,3,1,""],__weakref__:[8,3,1,""]},"WORC.facade.helpers.exceptions.NoImagesFoundException":{__init__:[8,4,1,""],__module__:[8,3,1,""],__weakref__:[8,3,1,""]},"WORC.facade.helpers.exceptions.NoMasksFoundException":{__init__:[8,4,1,""],__module__:[8,3,1,""],__weakref__:[8,3,1,""]},"WORC.facade.helpers.exceptions.NoSegmentationsFoundException":{__init__:[8,4,1,""],__module__:[8,3,1,""],__weakref__:[8,3,1,""]},"WORC.facade.helpers.exceptions.PathNotFoundException":{__init__:[8,4,1,""],__module__:[8,3,1,""],__weakref__:[8,3,1,""]},"WORC.facade.helpers.processing":{convert_radiomix_features:[8,1,1,""]},"WORC.facade.simpleworc":{SimpleWORC:[7,2,1,""]},"WORC.facade.simpleworc.SimpleWORC":{__dict__:[7,3,1,""],__init__:[7,4,1,""],__module__:[7,3,1,""],__weakref__:[7,3,1,""],add_config_overrides:[7,4,1,""],add_evaluation:[7,4,1,""],binary_classification:[7,4,1,""],count_num_subjects:[7,4,1,""],execute:[7,4,1,""],features_from_radiomix_xlsx:[7,4,1,""],features_from_this_directory:[7,4,1,""],images_from_this_directory:[7,4,1,""],labels_from_this_file:[7,4,1,""],masks_from_this_directory:[7,4,1,""],multiclass_classification:[7,4,1,""],predict_labels:[7,4,1,""],regression:[7,4,1,""],segmentations_from_this_directory:[7,4,1,""],semantics_from_this_file:[7,4,1,""],set_fixed_splits:[7,4,1,""],set_multicore_execution:[7,4,1,""],set_tmpdir:[7,4,1,""],survival:[7,4,1,""]},"WORC.featureprocessing":{ComBat:[10,0,0,"-"],Decomposition:[10,0,0,"-"],FeatureConverter:[10,0,0,"-"],ICCThreshold:[10,0,0,"-"],Imputer:[10,0,0,"-"],OneHotEncoderWrapper:[10,0,0,"-"],Preprocessor:[10,0,0,"-"],Relief:[10,0,0,"-"],Scalers:[10,0,0,"-"],SelectGroups:[10,0,0,"-"],SelectIndividuals:[10,0,0,"-"],StatisticalTestFeatures:[10,0,0,"-"],StatisticalTestThreshold:[10,0,0,"-"],VarianceThreshold:[10,0,0,"-"]},"WORC.featureprocessing.ComBat":{ComBat:[10,1,1,""],ComBatMatlab:[10,1,1,""],ComBatPython:[10,1,1,""],Synthetictest:[10,1,1,""]},"WORC.featureprocessing.Decomposition":{Decomposition:[10,1,1,""]},"WORC.featureprocessing.FeatureConverter":{FeatureConverter:[10,1,1,""],convert_PREDICT:[10,1,1,""],convert_pyradiomics:[10,1,1,""],convert_pyradiomics_featurevector:[10,1,1,""]},"WORC.featureprocessing.ICCThreshold":{ICCThreshold:[10,2,1,""],convert_features_ICC_threshold:[10,1,1,""]},"WORC.featureprocessing.ICCThreshold.ICCThreshold":{__abstractmethods__:[10,3,1,""],__init__:[10,4,1,""],__module__:[10,3,1,""],fit:[10,4,1,""],transform:[10,4,1,""]},"WORC.featureprocessing.Imputer":{Imputer:[10,2,1,""]},"WORC.featureprocessing.Imputer.Imputer":{__dict__:[10,3,1,""],__init__:[10,4,1,""],__module__:[10,3,1,""],__weakref__:[10,3,1,""],fit:[10,4,1,""],transform:[10,4,1,""]},"WORC.featureprocessing.OneHotEncoderWrapper":{OneHotEncoderWrapper:[10,2,1,""],test:[10,1,1,""]},"WORC.featureprocessing.OneHotEncoderWrapper.OneHotEncoderWrapper":{__dict__:[10,3,1,""],__init__:[10,4,1,""],__module__:[10,3,1,""],__weakref__:[10,3,1,""],fit:[10,4,1,""],transform:[10,4,1,""]},"WORC.featureprocessing.Preprocessor":{Preprocessor:[10,2,1,""]},"WORC.featureprocessing.Preprocessor.Preprocessor":{__dict__:[10,3,1,""],__init__:[10,4,1,""],__module__:[10,3,1,""],__weakref__:[10,3,1,""],fit:[10,4,1,""],transform:[10,4,1,""]},"WORC.featureprocessing.Relief":{SelectMulticlassRelief:[10,2,1,""]},"WORC.featureprocessing.Relief.SelectMulticlassRelief":{__abstractmethods__:[10,3,1,""],__init__:[10,4,1,""],__module__:[10,3,1,""],fit:[10,4,1,""],multi_class_relief:[10,4,1,""],single_class_relief:[10,4,1,""],transform:[10,4,1,""]},"WORC.featureprocessing.Scalers":{LogStandardScaler:[10,2,1,""],RobustStandardScaler:[10,2,1,""],WORCScaler:[10,2,1,""],test:[10,1,1,""]},"WORC.featureprocessing.Scalers.LogStandardScaler":{__module__:[10,3,1,""],fit:[10,4,1,""]},"WORC.featureprocessing.Scalers.RobustStandardScaler":{__module__:[10,3,1,""],fit:[10,4,1,""]},"WORC.featureprocessing.Scalers.WORCScaler":{__init__:[10,4,1,""],__module__:[10,3,1,""],fit:[10,4,1,""],transform:[10,4,1,""]},"WORC.featureprocessing.SelectGroups":{SelectGroups:[10,2,1,""]},"WORC.featureprocessing.SelectGroups.SelectGroups":{__abstractmethods__:[10,3,1,""],__init__:[10,4,1,""],__module__:[10,3,1,""],fit:[10,4,1,""],transform:[10,4,1,""]},"WORC.featureprocessing.SelectIndividuals":{SelectIndividuals:[10,2,1,""]},"WORC.featureprocessing.SelectIndividuals.SelectIndividuals":{__abstractmethods__:[10,3,1,""],__init__:[10,4,1,""],__module__:[10,3,1,""],fit:[10,4,1,""],transform:[10,4,1,""]},"WORC.featureprocessing.StatisticalTestFeatures":{StatisticalTestFeatures:[10,1,1,""]},"WORC.featureprocessing.StatisticalTestThreshold":{StatisticalTestThreshold:[10,2,1,""]},"WORC.featureprocessing.StatisticalTestThreshold.StatisticalTestThreshold":{__abstractmethods__:[10,3,1,""],__init__:[10,4,1,""],__module__:[10,3,1,""],fit:[10,4,1,""],transform:[10,4,1,""]},"WORC.featureprocessing.VarianceThreshold":{VarianceThresholdMean:[10,2,1,""],selfeat_variance:[10,1,1,""]},"WORC.featureprocessing.VarianceThreshold.VarianceThresholdMean":{__abstractmethods__:[10,3,1,""],__init__:[10,4,1,""],__module__:[10,3,1,""],fit:[10,4,1,""],transform:[10,4,1,""]},"WORC.plotting":{compute_CI:[11,0,0,"-"],linstretch:[11,0,0,"-"],plot_ROC:[11,0,0,"-"],plot_barchart:[11,0,0,"-"],plot_boxplot_features:[11,0,0,"-"],plot_boxplot_performance:[11,0,0,"-"],plot_errors:[11,0,0,"-"],plot_estimator_performance:[11,0,0,"-"],plot_hyperparameters:[11,0,0,"-"],plot_images:[11,0,0,"-"],plot_pvalues_features:[11,0,0,"-"],plot_ranked_scores:[11,0,0,"-"],plotminmaxresponse:[11,0,0,"-"]},"WORC.plotting.compute_CI":{compute_confidence:[11,1,1,""],compute_confidence_bootstrap:[11,1,1,""],compute_confidence_logit:[11,1,1,""]},"WORC.plotting.linstretch":{linstretch:[11,1,1,""]},"WORC.plotting.plot_ROC":{curve_thresholding:[11,1,1,""],main:[11,1,1,""],plot_PRC_CIc:[11,1,1,""],plot_ROC:[11,1,1,""],plot_ROC_CIc:[11,1,1,""],plot_single_PRC:[11,1,1,""],plot_single_ROC:[11,1,1,""]},"WORC.plotting.plot_barchart":{count_parameters:[11,1,1,""],main:[11,1,1,""],paracheck:[11,1,1,""],plot_barchart:[11,1,1,""],plot_bars:[11,1,1,""]},"WORC.plotting.plot_boxplot_features":{generate_feature_boxplots:[11,1,1,""],plot_boxplot_features:[11,1,1,""]},"WORC.plotting.plot_boxplot_performance":{generate_performance_boxplots:[11,1,1,""],test:[11,1,1,""]},"WORC.plotting.plot_errors":{plot_errors:[11,1,1,""]},"WORC.plotting.plot_estimator_performance":{combine_multiple_estimators:[11,1,1,""],compute_statistics:[11,1,1,""],fit_thresholds:[11,1,1,""],main:[11,1,1,""],plot_estimator_performance:[11,1,1,""]},"WORC.plotting.plot_hyperparameters":{plot_hyperparameters:[11,1,1,""]},"WORC.plotting.plot_images":{bbox_2D:[11,1,1,""],extract_boundary:[11,1,1,""],plot_im_and_overlay:[11,1,1,""],slicer:[11,1,1,""]},"WORC.plotting.plot_pvalues_features":{manhattan_importance:[11,1,1,""]},"WORC.plotting.plot_ranked_scores":{example:[11,1,1,""],flatten_object:[11,1,1,""],main:[11,1,1,""],plot_ranked_images:[11,1,1,""],plot_ranked_percentages:[11,1,1,""],plot_ranked_posteriors:[11,1,1,""],plot_ranked_scores:[11,1,1,""]},"WORC.plotting.plotminmaxresponse":{main:[11,1,1,""]},"WORC.processing":{ExtractNLargestBlobsn:[12,0,0,"-"],classes:[12,0,0,"-"],helpers:[12,0,0,"-"],label_processing:[12,0,0,"-"],preprocessing:[12,0,0,"-"],segmentix:[12,0,0,"-"]},"WORC.processing.ExtractNLargestBlobsn":{ExtractNLargestBlobsn:[12,1,1,""]},"WORC.processing.classes":{"switch":[12,2,1,""]},"WORC.processing.classes.switch":{__dict__:[12,3,1,""],__init__:[12,4,1,""],__iter__:[12,4,1,""],__module__:[12,3,1,""],__weakref__:[12,3,1,""],match:[12,4,1,""]},"WORC.processing.helpers":{check_image_orientation:[12,1,1,""],resample_image:[12,1,1,""],transpose_image:[12,1,1,""]},"WORC.processing.label_processing":{findlabeldata:[12,1,1,""],load_config_XNAT:[12,1,1,""],load_label_XNAT:[12,1,1,""],load_label_csv:[12,1,1,""],load_label_txt:[12,1,1,""],load_labels:[12,1,1,""]},"WORC.processing.preprocessing":{bias_correct_image:[12,1,1,""],clip_image:[12,1,1,""],normalize_image:[12,1,1,""],preprocess:[12,1,1,""]},"WORC.processing.segmentix":{dilate_contour:[12,1,1,""],get_ring:[12,1,1,""],mask_contour:[12,1,1,""],segmentix:[12,1,1,""]},"WORC.resources":{fastr_tools:[15,0,0,"-"]},"WORC.resources.fastr_tests":{CalcFeatures_test:[14,0,0,"-"],elastix_test:[14,0,0,"-"],segmentix_test:[14,0,0,"-"]},"WORC.resources.fastr_tests.CalcFeatures_test":{create_network:[14,1,1,""],main:[14,1,1,""],sink_data:[14,1,1,""],source_data:[14,1,1,""]},"WORC.resources.fastr_tests.elastix_test":{create_network:[14,1,1,""],main:[14,1,1,""],sink_data:[14,1,1,""],source_data:[14,1,1,""]},"WORC.resources.fastr_tests.segmentix_test":{create_network:[14,1,1,""],main:[14,1,1,""],sink_data:[14,1,1,""],source_data:[14,1,1,""]},"WORC.statistics":{delong:[16,0,0,"-"]},"WORC.statistics.delong":{calc_pvalue:[16,1,1,""],compute_ground_truth_statistics:[16,1,1,""],compute_midrank:[16,1,1,""],compute_midrank_weight:[16,1,1,""],delong_roc_test:[16,1,1,""],delong_roc_variance:[16,1,1,""],fastDeLong:[16,1,1,""]},"WORC.tests":{WORCTutorialSimple_unittest_multiclass:[17,0,0,"-"],WORCTutorialSimple_unittest_regression:[17,0,0,"-"],test_combat:[17,0,0,"-"],test_helpers:[17,0,0,"-"],test_iccthreshold:[17,0,0,"-"],test_plot_errors:[17,0,0,"-"],test_validators:[17,0,0,"-"]},"WORC.tests.WORCTutorialSimple_unittest_multiclass":{main:[17,1,1,""]},"WORC.tests.WORCTutorialSimple_unittest_regression":{main:[17,1,1,""]},"WORC.tests.test_combat":{test_combat:[17,1,1,""],test_combat_fastr:[17,1,1,""]},"WORC.tests.test_helpers":{find_exampledatadir:[17,1,1,""],find_testdatadir:[17,1,1,""]},"WORC.tests.test_iccthreshold":{test_iccthreshold:[17,1,1,""]},"WORC.tests.test_plot_errors":{test_plot_errors:[17,1,1,""]},"WORC.tests.test_validators":{test_invalidlabelsvalidator_columnsubstring:[17,1,1,""],test_invalidlabelsvalidator_patientcolumn:[17,1,1,""],test_invalidlabelsvalidator_patientsubstring:[17,1,1,""],test_invalidlabelsvalidator_validconfig:[17,1,1,""]},"WORC.tools":{Elastix:[18,0,0,"-"],Evaluate:[18,0,0,"-"],Inference:[18,0,0,"-"],Slicer:[18,0,0,"-"],Transformix:[18,0,0,"-"],createfixedsplits:[18,0,0,"-"]},"WORC.tools.Elastix":{Elastix:[18,2,1,""]},"WORC.tools.Elastix.Elastix":{__dict__:[18,3,1,""],__init__:[18,4,1,""],__module__:[18,3,1,""],__weakref__:[18,3,1,""],addchangeorder:[18,4,1,""],create_bbox:[18,4,1,""],create_network:[18,4,1,""],execute:[18,4,1,""],getparametermap:[18,4,1,""]},"WORC.tools.Evaluate":{Evaluate:[18,2,1,""]},"WORC.tools.Evaluate.Evaluate":{__dict__:[18,3,1,""],__init__:[18,4,1,""],__module__:[18,3,1,""],__weakref__:[18,3,1,""],create_links_Addon:[18,4,1,""],create_links_Standalone:[18,4,1,""],create_network:[18,4,1,""],execute:[18,4,1,""],set:[18,4,1,""]},"WORC.tools.Inference":{Inference:[18,2,1,""]},"WORC.tools.Inference.Inference":{__dict__:[18,3,1,""],__init__:[18,4,1,""],__module__:[18,3,1,""],__weakref__:[18,3,1,""],create_network:[18,4,1,""]},"WORC.tools.Slicer":{Slicer:[18,2,1,""]},"WORC.tools.Slicer.Slicer":{__dict__:[18,3,1,""],__init__:[18,4,1,""],__module__:[18,3,1,""],__weakref__:[18,3,1,""],create_network:[18,4,1,""],execute:[18,4,1,""],set:[18,4,1,""]},"WORC.tools.Transformix":{Transformix:[18,2,1,""]},"WORC.tools.Transformix.Transformix":{__dict__:[18,3,1,""],__init__:[18,4,1,""],__module__:[18,3,1,""],__weakref__:[18,3,1,""],create_network:[18,4,1,""],execute:[18,4,1,""]},"WORC.tools.createfixedsplits":{createfixedsplits:[18,1,1,""]},"WORC.validators":{preflightcheck:[19,0,0,"-"]},"WORC.validators.preflightcheck":{AbstractValidator:[19,2,1,""],EvaluateValidator:[19,2,1,""],InvalidLabelsValidator:[19,2,1,""],MinSubjectsValidator:[19,2,1,""],SamplesWarning:[19,2,1,""],SimpleValidator:[19,2,1,""],ValidatorsFactory:[19,2,1,""]},"WORC.validators.preflightcheck.AbstractValidator":{__abstractmethods__:[19,3,1,""],__dict__:[19,3,1,""],__module__:[19,3,1,""],__weakref__:[19,3,1,""],do_validation:[19,4,1,""]},"WORC.validators.preflightcheck.EvaluateValidator":{__abstractmethods__:[19,3,1,""],__module__:[19,3,1,""]},"WORC.validators.preflightcheck.InvalidLabelsValidator":{__abstractmethods__:[19,3,1,""],__module__:[19,3,1,""]},"WORC.validators.preflightcheck.MinSubjectsValidator":{__abstractmethods__:[19,3,1,""],__module__:[19,3,1,""]},"WORC.validators.preflightcheck.SamplesWarning":{__abstractmethods__:[19,3,1,""],__module__:[19,3,1,""]},"WORC.validators.preflightcheck.SimpleValidator":{__abstractmethods__:[19,3,1,""],__module__:[19,3,1,""]},"WORC.validators.preflightcheck.ValidatorsFactory":{__dict__:[19,3,1,""],__module__:[19,3,1,""],__weakref__:[19,3,1,""],factor_validators:[19,6,1,""]},WORC:{WORC:[0,0,0,"-"],__init__:[0,0,0,"-"],addexceptions:[0,0,0,"-"],classification:[2,0,0,"-"],facade:[7,0,0,"-"],featureprocessing:[10,0,0,"-"],plotting:[11,0,0,"-"]}},objnames:{"0":["py","module","Python module"],"1":["py","function","Python function"],"2":["py","class","Python class"],"3":["py","attribute","Python attribute"],"4":["py","method","Python method"],"5":["py","exception","Python exception"],"6":["py","staticmethod","Python static method"]},objtypes:{"0":"py:module","1":"py:function","2":"py:class","3":"py:attribute","4":"py:method","5":"py:exception","6":"py:staticmethod"},terms:{"0284186x":10,"06875v1":10,"0a1":67,"0rc1":60,"105741d":60,"1st":2,"1x1x1":[51,61,63],"22nd":71,"2nd":[2,67],"5th":10,"95th":10,"95varianc":[34,35,63],"98nd":67,"boolean":[0,1,2,7,10,11,12,20,26,32,34,40,44,48,52,53,58,60,62,63],"case":[2,12,25,62,63,65,67,71],"catch":[0,62],"class":[0,2,4,7,8,10,16,18,19,60,61,62,65,71],"default":[0,1,2,7,10,11,12,18,20,22,23,24,26,28,29,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,61,62,63,65,67,70,71],"export":[0,60,69],"final":[2,10,12,63,71],"float":[2,10,11,12,16,22,26,34,40,42,43,50,52,54,62,63,67],"function":[0,2,4,7,8,10,11,12,17,18,19,23,51,60,62,63,64,65,66,67,68,70,71],"gr\u00fcnhagen":60,"import":[2,10,35,60,62,63,69,71],"int":[2,10,12],"long":67,"new":[0,60,62,67,69],"return":[0,1,2,10,11,12,16,62,65],"short":67,"static":[19,43,63],"switch":[10,12,62],"throw":[62,67],"true":[0,2,5,7,10,11,12,22,27,30,33,34,38,39,41,42,44,45,49,50,51,52,56,58,59,61,63,70,71],"try":[2,61,69],"while":[2,12,41,61,62,63,67],Added:60,Adding:60,Age:70,And:10,Els:[],For:[0,2,7,10,23,43,49,60,61,62,63,64,65,66,67,69,70,71],IDs:[12,66],Not:[2,7,62,69],One:[2,55,62,63],PCs:[23,63],SVs:[],That:10,The:[0,1,2,7,10,11,12,16,27,35,47,60,61,62,63,64,65,66,67,68,69],Then:2,There:[62,70,71],These:[11,63,65,67,70,71],USING:60,Use:[2,7,20,21,23,28,29,32,33,48,49,54,55,62,63,67,70],Using:[60,69],Vos:60,Was:62,Will:7,With:60,__abstractmethods__:[2,4,10,19],__dict__:[0,2,4,7,8,10,12,18,19],__doc__:[0,2,4,7,8,10,12,18,19],__file__:70,__init__:[0,2,4,7,8,10,12,18],__iter__:[2,12],__len__:2,__module__:[0,2,4,7,8,10,12,18,19],__weakref__:[0,2,4,7,8,10,12,18,19],_abc_data:[4,19],_abc_impl:[4,19],_base:10,_cluster_config_overrid:8,_data:10,_debug_config_overrid:8,_format_result:2,_generate_detector_messag:[4,19],_is_detect:4,_set_and_validate_estim:7,_valid:[7,19],abbrevi:[23,63],abc:[4,19],abl:62,about:67,abov:[2,10,61,62,63,67,69,70,71],absolut:62,abspath:70,abstractdetector:4,abstractvalid:19,accept:[2,40,62,63],accorad:2,accord:[2,10,11,67,70,71],accordingli:[61,70],account:[10,11,71],accur:[2,4,8,10,12,18],accuraci:[2,11,71],acquisit:[61,69],across:2,act:63,actual:[0,2,7,31,60,61,62,63,64,65,69,71],adaboost:[23,61,62,63],adaboost_learning_r:[22,23,63],adaboost_n_estim:[22,23,63],adaboostclassifi:[22,63],adaboostregressor:[22,63],adapt:[60,61,69],adasyn:[2,54,62,63],add:[0,2,7,10,18,62,65,66,67,68,70,71],add_combat:0,add_config_overrid:7,add_elastix:0,add_elastix_sourcesandsink:0,add_evalu:[0,7,70,71],add_feature_calcul:[0,65],add_parameters_to_grid:2,add_preprocess:0,add_segmentix:0,add_tool:0,addchangeord:18,added:[10,18,25,62,63,65,71],addexcept:60,addinf:62,adding:[2,18,63,65,70,71],addit:[0,7,39,60,62,63,67,70,71],addition:[1,10,11,61,62,63,71],address:60,adequ:65,adher:62,adjust:[2,11,62,63,71],adopt:[2,16,55,62,63],advanc:[60,70,71],advancedsampl:[0,60],advantag:63,advic:[53,61,63,65,70,71],affect:2,affin:18,after:[0,2,10,39,61,62,63,65,66,67,70,71],afterward:[7,10],again:[63,67,69,70],age:[42,63,67,71],agesex:11,aggreg:67,agument:12,aim:60,aka:71,alejandro:67,alex:67,algorithm:[16,61,62,63,69],align:[61,71],all:[0,1,2,7,10,11,12,22,25,39,41,45,49,54,58,59,61,62,63,64,65,66,67,69,70,71],allign:71,allow:[2,7,62,66,67,68],allow_non:2,along:[10,69],alpha:11,alpha_new:[],alpha_old:[],alreadi:[61,63,69,71],als:71,also:[0,2,7,10,35,55,60,61,62,63,65,66,67,69,70,71],alter:[2,12,62,63,67],altern:[66,71],although:69,altner:66,alwai:[2,10,62,69,70,71],aminn:61,among:[2,10,11,60,63],amount:[67,69],anaconda:[66,70],analys:70,analysi:[35,60,63,67,71],analyticsvidhya:63,angl:[43,63,67],angu:60,angular:67,ani:[2,10,11,22,40,49,62,63,66,67,69,70,71],annual:60,anoth:[12,61,69,71],anova:2,any_structur:[],anymor:62,anyth:69,anywai:10,apach:60,api:[55,63],appear:67,append:[62,63,66,71],appendix:[],appli:[0,2,7,10,12,39,51,61,62,63,67,69],applic:[12,60,67,69],approach:[10,60,61,63,69],appropri:0,arbitrari:67,area:[16,61,67,71],arg:[1,2,4,12,16,19],argmax:11,argu:67,argument:[0,1,2,12,62,65,66],arif:60,around:[2,7,18,57,61,63,65,71],arrai:[1,2,10,11,12,16,60],artefact:67,articl:[16,60,67],arxiv:[10,60,61],asm:67,aspect:67,assertionerror:0,assess:[7,10,62],assign:[2,41,43,63],assist:[60,67],associ:2,assum:[2,10,51,61,63,66,69,70,71],assumesameimageandmaskmetadata:[12,38,39,63],assumpt:[2,39,63,71],attribut:[0,2,4,7,8,10,12,18,19,60,62],atyp:71,auc:[2,16,61,71],author:16,auto:[2,54,63],autoencod:61,autom:60,automat:[0,7,12,41,60,61,62,63,67,69,70],avail:[2,7,62,64,69],averag:[11,62],average_precision_weight:[40,63],avoid:[2,61,67],awai:67,axes:67,axi:[10,11,51,63,67],axial:[11,12,50,51,52,57,61,62,63,67],back:[62,66],backend:[39,62,63],backward:62,balanc:71,band:[7,71],bangma:60,barchart:[11,62,71],base:[0,2,4,5,7,8,10,11,12,18,19,35,51,61,62,63,67,71],baseestim:[2,10],baselin:69,basesearchcv:2,basesearchcvfastr:2,basesearchcvjoblib:2,basestr:7,basi:71,basic:[65,67,69,71],basicworc:[0,60,62,66,70,71],batch:[10,24,25,61,63],bay:[25,61,63],bbox_2d:11,bca:71,bcr:61,been:[0,10,11,60,61,67,69,70],befor:[0,2,7,10,43,61,62,63,66,67,69,70],beforehand:67,begin:[60,62],beginn:60,behavior:2,behaviour:62,being:[16,51,61,63],belong:[0,2,10],below:[0,2,35,49,61,63,66,67,69,70,71],benefit:[61,67,69],bengio:71,benign:60,bent:60,berlin:67,besid:[0,60,63,71],best:[2,11,62,63,64,69],best_estim:2,best_estimator_:2,best_index_:2,best_params_:2,best_score_:2,beta:2,better:[61,62],between:[2,10,18,22,23,35,43,60,61,62,63,67],bia:[12,51,61,62,63],bias_correct_imag:12,biascorrect:[50,51,63],biascorrection_mask:[50,51,63],big:62,bigr:[7,41,60,63,70],bigr_erasmusmc:2,bigrclusterdetector:4,bin:[53,60,63,65],binari:[2,7,10,11,12,60,61,62,70],binaru:70,binary_classif:[0,7,18,70],binaryimag:12,bincount:[52,53,63],binwidth:[52,53,63],bio:[],biomark:[60,67,69],biomed:60,bit:62,bitbucket:2,bitwise_xor:62,black:60,blazev:60,blob:[12,57,61,63,65],block:70,blog:63,bme:[],bmia:70,boht:67,bonferonni:10,book:60,bool:2,boolean_uniform:2,boost:[23,61,62,63],boostrap:62,bootstrap:[3,11,21,60,62,71],bootstrap_metr:11,bootstrap_n:11,border:61,borderlinesmot:[2,54,63],both:[2,11,60,61,62,63,65,67,69,71],bound:[12,18],boundari:[10,11,12,35,43,63],box:[18,60,63],boxplot:[11,62],braband:60,braf:60,branch:[0,23,63],breviti:70,british:60,broad:67,brought:69,bspline:61,bug:62,bugfix:62,buggi:62,build:[0,18,60,62,69,70,71],build_config:8,build_train:0,built:70,buisman:60,bulletin:10,busy:67,button:60,c_valu:[],cache_s:2,cad:2,caddementia:2,calc_pvalu:16,calcfeat_nod:0,calcfeatur:[38,62,63],calcfeatures_test:[0,13],calcul:[0,2,10,11,39,63,65],call:[2,62,65,67,70,71],callabl:2,can:[0,2,7,10,11,12,18,35,39,43,45,51,60,61,62,63,65,67,69,70,71],cancer:[60,67],candid:2,cannot:[2,60,61,62],captur:61,carcinoma:[],cardin:62,cartesiu:[7,70],cartesiusclusterdetector:4,caruana:[2,11],cash:[63,69],cast:62,castillo:60,categor:[10,62],categori:71,caught:7,caus:61,center:[60,61,67],centr:67,certain:[2,7,18,61,62,63,67,71],cf_:10,cf_pyradiom:[38,63],challeg:2,challeng:[2,71],chang:[7,60,61,63,65,67,70],changelog:60,chapter:[7,60,61,63,64,66,67,68,70,71],characterist:[11,16,71],check:[2,7,12,49,51,61,62,63,65,71],check_image_orient:12,check_multimetric_scor:2,check_scor:2,checkorient:[50,51,63],checkspac:[50,51,63],chen:61,chi2:62,child:[23,63],choic:[2,60,69],choos:[2,51,62,63],chosen:[2,63,67],chunk:2,chunksdict:2,circular:67,cit1:61,cit2:61,cit3:61,class_i:2,class_j:2,class_weight:2,classfic:[41,63],classif:[0,3,7,23,47,62,65,66,67,70,71],classifi:[0,2,11,22,23,33,60,61,62,63,66,71],classifier_data:2,classifiermixin:[],classpi:2,clean:[55,62,63],clf:2,clinic:69,clip:[12,50,51,61,62,63],clip_imag:12,clipping_rang:[50,51,63],clone:70,closest:[],cluster:[2,7,23,41,60,62,63,69,70],cnb_alpha:[22,23,63],coars:[7,67,70],coarse_overrid:8,code:[61,63,70],coef0:2,coeffici:[10,61,71],col:[23,63],coliag:[42,43,59,63],coliage_featur:[10,58,59,63],coliage_features_:10,collabor:60,colleagu:69,color:11,colorect:60,column:[2,7,10,60,67,71],com:[7,10,16,39,60,61,62,63,65,66,67,70,71],combat:[0,3,17,25,38,39,60,62],combatharmon:[10,39,63],combatmatlab:10,combatpython:10,combin:[1,2,10,11,25,32,33,60,61,62,63,64,67,69,71],combine_featur:1,combine_method:[1,32,33,63],combine_multiple_estim:11,comma:[2,10,22,24,36,37,42,63],command:[0,2,10,18,60,62,63,65,66,69,70],common:[2,7],commonli:[61,67],commun:70,compact:67,compar:[16,69],comparison:[60,67],compat:[1,8,10,12,61,62,65],compens:61,complement_label_1:70,complementari:67,complementnb:[23,63],complementnd:[22,63],complet:[62,63,70,71],complex:[67,71],compon:[10,18,35,61,63,69,71],comprehens:[61,64,67],comput:[0,2,7,10,11,16,17,43,53,60,61,62,63,67,69,70,71],compute_ci:[0,60],compute_confid:11,compute_confidence_bootstrap:11,compute_confidence_logit:11,compute_ground_truth_statist:16,compute_midrank:16,compute_midrank_weight:16,compute_statist:11,concept:[60,69],concern:69,concord:71,conda:66,condit:66,conduct:[2,62,71],confer:[60,67,71],conffid:62,confid:[7,11,62,71],config:[0,1,2,7,8,10,11,12,18,23,35,61,62,63,64,65,66,67,70,71],config_file_path:[1,6,12],config_io_classifi:[0,60,65],config_io_combat:[0,60],config_io_pyradiom:[0,60],config_preprocess:[0,60],config_segmentix:[0,60],config_worc:[0,60],configbuild:[0,7,62],configpars:[0,12,63],configur:[0,1,2,7,10,60,61,62,65,66,68,70,71],confipars:1,congress:60,congruenc:67,connect:[],consist:[2,40,41,63,70,71],consol:8,constant:[10,44,63,69],construct:[2,7,11,60,70],construct_classifi:[0,60],construct_svm:2,consumpt:2,contain:[0,1,2,7,10,11,12,37,62,63,66,67,70,71],containingfor:2,content:[8,12,60,67],continu:[2,61,62,70],contour:[11,12,57,61,63],contrast:[2,67],contribut:60,control:2,converg:[11,62],convers:62,convert:[1,8,10,62,65,67],convert_config_pyradiom:1,convert_features_icc_threshold:10,convert_predict:10,convert_pyradiom:10,convert_pyradiomics_featurevector:10,convert_radiomix_featur:8,convex:67,cope:61,copi:[0,2,10,12,39,60,61,62,63,65],copymetadata:0,core:[2,7,39,41,62,63,67,70],coron:[52,63],correct:[12,25,51,61,62,63,71],correctli:[11,62,66,71],correl:[10,16,61,67,69,71],correspond:[2,10,11,41,53,62,63,66,67,71],cost:[],could:[62,66,67,69],count:[7,53,63,67],count_num_subject:7,count_paramet:11,coupl:71,cours:71,covari:16,cox:71,cpu:2,crash:[60,62,70],creat:[0,2,5,7,11,18,62,63,66,67,69,70,71],creata:2,create_bbox:18,create_ensembl:[2,62],create_example_data:[0,60,71],create_links_addon:18,create_links_standalon:18,create_network:[14,18],create_param_grid:2,create_random_featur:5,create_sourc:63,createfixedsplit:[0,60],creation:[60,62,67],criteria:60,criterion:2,crop:69,cross:[0,2,11,18,27,39,41,62,63,71],cross_valid:[38,39,63],crossval:[0,60],crossval_typ:11,crossvalid:[3,60],csv:[7,10,11,62,70,71],csv_file_path:4,csv_out:10,csvdetector:4,ct001:0,ct002:0,cto:[],current:[0,2,10,12,27,33,51,60,61,62,63,66,69,71],curv:[7,11,16,61,62,71],curve_threshold:11,custom:[2,52,53,63],custom_config_overrid:8,cv_iter:2,cv_results_:2,cyan:11,dai:66,dat:10,data:[0,2,10,11,12,17,27,60,61,62,63,66,67,69,70],data_path:70,datadir:70,datadownload:[0,60,62,70],datafil:62,datafold:[5,70],datafram:[2,11],dataset:[0,2,7,31,39,41,60,61,62,63,69,70,71],datatyp:[62,65,68],datayp:62,david:61,dcm:12,deal:[61,62],debug:[11,39,60,62,63,70],debugdetector:4,decent:69,decid:[67,69],decision_funct:2,decision_function_shap:2,decod:67,decomposit:[0,7,60,62,71],decompositon:62,default_queu:66,default_scor:2,defaultconfig:[0,8,63,65,71],defin:[0,2,4,7,8,10,12,18,19,35,57,61,63,64,65,67,69,70,71],definit:[10,60,67],degre:[2,23,43,63,67],del:70,delai:2,delet:[2,60,62,65],delete_cc_para:2,delete_nonestimator_paramet:2,delong:[0,60],delong_roc_test:16,delong_roc_vari:16,demand:2,dementia:2,demo_param:[],demonst:[],demonstr:61,den:60,depend:[0,2,11,60,62,66,69,71],deprec:62,depth:[23,63],der:60,descent:61,describ:[0,64,67,68,71],descript:[2,10,21,23,25,27,29,31,33,35,37,39,41,43,45,47,49,51,53,55,57,59,61,63,65,67,70],descriptor:67,design:[61,69],desmoid:60,despit:60,detail:[7,11,12,60,61,63,66,67,71],detect:[10,62,66,67],detector:[0,7,60,62,70],determin:[1,2,7,11,12,21,29,33,35,37,39,43,45,47,49,51,53,57,60,62,63,67,69,70,71],determinist:2,develop:[2,67,69],developp:62,deviat:[10,43,63,67],df_:10,diagnosi:60,diagnost:60,diamet:67,dicom:[0,42,43,51,59,60,61,62,63,71],dicom_featur:[10,58,59,62,63],dicom_feature_label:[42,43,63,67],dicom_feature_tag:[42,43,63,67],dict:[0,1,2,10,12],dictionari:[0,1,2,7,11,12,62,63,66,71],did:[62,65,69,71],didn:62,differ:[2,11,12,16,60,61,62,69],differenti:60,difficult:69,difscal:10,digit:67,dilat:[12,51,56,57,61,62,63,71],dilate_contour:12,dilate_roi:12,dimens:67,dimension:69,direct:[62,67],directli:[7,62,67,69,70,71],directori:[0,7,63,70],dirnam:70,disabl:[53,62,63],disc:[51,57,63],discret:[43,63,67],discrete_uniform:2,discrimin:60,discuss:[61,67,71],dispatch:2,dissimilar:67,distanc:[10,35,43,63,67],distance_p:10,distinguish:[2,60,71],distribut:[2,61,62,65,70,71],distrubit:2,divers:69,divid:[61,69],do_detect:4,do_test_rs_ensembl:2,do_valid:19,doc:65,docstr:[70,71],doctest:2,document:[2,7,10,62,64,66,70,71],doe:[2,10,62,63,66,67],doi:10,doing:[2,63],don:70,done:[0,2,61,62,63,64,65,66,67,69,71],down:62,download:[62,70],download_headandneck:[5,70],download_project:5,download_subject:5,dpi:11,draw_network:71,drawback:67,drawn:[2,41,63],drmaa:[41,63],drmaaplugin:66,drop:62,drug:67,dti:62,dtrf:[],due:[2,61,62,69],dummi:[62,66],dure:[2,41,62,63,66],dwarkas:60,e104:67,e107:67,each:[2,7,10,11,12,43,61,62,63,66,67,69,70,71],earlier:[67,70],easi:[60,69],easier:[62,69,71],easili:[62,63,69,70,71],echo:67,ecr:60,edg:[43,63,67],edit:[70,71],editelastixtransformfil:62,edwardo:2,effect:60,effici:[2,62,67],effort:69,efron:71,eigen:[22,63],either:[0,2,10,11,25,35,63,70,71],ejrad:[],elast:61,elasticnet:[22,23,62,63],elasticnet_alpha:[22,23,63],elasticnet_l1_ratio:[22,23,63],elastix4:[38,63],elastix:[0,38,60,61,62,63,71],elastix_para:[0,61],elastix_test:[0,13],elastixmodelzoo:61,electr:67,element:[10,35,51,61,63,71],elif:[66,70],ellip:67,ellipsi:2,ellipt:67,elong:67,els:[65,66],emb:65,embed:[61,62,64],emper:[25,63],emphasi:67,empir:[61,71],emploi:2,empti:2,emptygraylevel:66,enabl:[2,7,53,63],encod:[2,49,63],end:[60,65,66],energi:67,engin:[2,69],enhanc:67,enough:2,ensembl:[2,3,11,18,29,41,60,62,69],ensemble_scor:11,ensur:0,enter:[2,12],entir:2,entri:60,entropi:67,environ:66,epsilon_insensit:[22,63],equal:[2,10,23,25,29,51,63,67],erasmu:69,error:[2,7,11,17,60,61,62,67,70,71],error_scor:2,especi:[2,39,60,62,63],establish:[60,67],estim:[2,7,8,11,18,22,23,29,35,41,61,62,63],estimator_input:2,estimator_scoring_overrid:8,estsiz:11,etc:[2,10,11,60],etcetera:70,european:60,eusomii:60,evalu:[0,2,3,7,11,31,41,60,61,62,70],evaluatevalid:19,even:67,everi:[39,63,69],everywher:65,exact:2,exactli:[66,70],exampl:[0,2,7,11,12,16,17,18,49,60,61,62,63,66,67,69,70],example_stwstrategyhn:70,exampledata:[0,60,70,71],examplefil:70,excel:[67,71],except:[0,7,62],exclud:[10,25,33,35,63],excluded_featur:[24,25,63],exclus:[61,70],exctract:67,exe:[24,63],execut:[0,2,7,17,18,22,23,25,60,62,63,65,69,70],execute_first:8,executionplugin:66,exhaust:2,exist:[18,62,69],exp:[],exp_uniform:2,expand:[11,62,67],expect:[66,69,70],expected_hostnam:4,experi:[2,7,17,60,62,67,71],experiment:[31,63],experiment_fold:70,experiment_nam:70,expert:67,explain:[35,63,66],explant:67,explicit:2,explor:[2,70],explos:2,expon:[2,23,63],export_hyper_params_to_latex:6,express:2,extens:[62,69,70],extrac:61,extract:[1,2,7,10,11,12,43,53,57,60,61,62,63,66,69,71],extract_boundari:11,extract_firstord:[52,53,63],extract_shap:[52,53,63],extractnlargestblobsn:[0,60],extractor:[52,53,63],extrat:12,extrem:61,f1_score:62,f1_weight:[2,7,40,63],f1_weighted_predictproba:[2,40,63],f6d255a45dd:63,facad:[0,8,60,62,70,71],facilit:[60,69],factor_valid:19,fail:62,fals:[1,2,5,10,11,12,18,20,22,23,26,30,32,38,40,42,45,48,50,51,52,56,58,60,63,70],familiar:69,fancyimput:10,faq:[60,62],fashion:70,fast:[2,16,60],fastdelong:16,fastr3:62,fastr:[0,2,7,18,22,23,41,60,62,63,65,66,70,71],fastr_plugin:[0,2,18,22,23,63],fastr_tempdir:[0,63],fastr_test:[0,13],fastr_tool:[0,13],fastrconfig:[0,60,63,71],fastrhom:63,fat:67,fator:2,fatsat:67,fault:62,feat:1,feat_in:10,feat_out:10,feat_out_0:60,feat_test:2,feat_train:2,featpreprocess:[3,60],featsel:[3,60,66],featur:[0,1,2,5,7,8,10,11,12,17,18,25,33,35,37,39,43,45,49,52,53,59,60,62,63,69,70],feature:66,feature_dict:66,feature_fil:[7,70],feature_file_nam:7,feature_label:[2,10,11,66,70],feature_label_1:[],feature_label_2:[],feature_labels_tofit:[10,48,49,63],feature_select:[10,35,62,63],feature_set:10,feature_valu:[2,10,66,70],featurecalcul:[38,39,63,65],featureconvert:[0,60,65],featurefil:[1,11],featurefile_p1:70,featurenam:11,featureprocess:[0,60,65,66],features_:70,features_from_radiomix_xlsx:7,features_from_this_directori:[7,66,70],features_in:10,features_mod1_patient1:1,features_mod1_patient2:1,features_mod2_patient1:1,features_mod2_patient2:1,features_out:10,features_p1:70,features_test:71,features_test_in:10,features_test_out:10,features_train:[66,71],features_train_in:10,features_train_out:10,featuresc:[3,60],featuresdatadir:[66,70],featurespatient1:66,featurespatient2:66,featurevector:10,feel:[69,70],fellow:69,felt:69,fetur:[12,67],few:69,fewer:67,fibromatosi:60,fibrosi:60,fiduzi:[],field:[1,2,10,12,37,49,61,62,63,65,67,69,70],fig:11,figsiz:11,figur:[11,62,69],figwidth:11,fij:10,file1:[2,10],file2:[2,10],file3:[2,10],file:[0,1,2,5,7,10,11,12,47,60,61,62,63,65,67,70],file_io:[0,60,62],file_path:7,filenam:[11,12,61,66,71],filepath:[11,62],filesmatlabr2015bbinmatlab:[24,63],filesystem:62,fill:[57,61,63],fill_valu:10,fillhol:[56,57,63],filter:[43,60,63,69],finalbsplineinterpolationord:62,find:[2,17,60,62,64,66,69,70],find_exampledatadir:17,find_testdatadir:17,findlabeldata:12,first:[7,10,11,16,35,53,60,61,62,63,67,69,70,71],fit:[2,10,31,41,62,63,64,65,67,71],fit_and_scor:[2,64,65],fit_param:2,fit_threshold:11,fit_tim:2,fitandscor:[0,60,62,64,65],fitfailedwarn:2,fittd:2,fitted_workflow:2,five:[65,69],fix:[2,11,18,27,35,53,60,61,63,66,69,71],fixandscor:62,fixed_se:[2,26,27,63],fixed_splits_csv:7,fixedsplit:2,flag:62,flat:67,flatten:[11,62],flatten_object:11,fleiss:10,flexibl:[62,69],flip:[11,67],fluctuat:67,focu:71,focuss:71,fold:2,folder:[2,8,11,17,62,63,65,66,70,71],follow:[2,10,11,60,61,63,65,66,67,69,70,71],fontsiz:[10,11],force2d:[52,53,63],force2ddimens:[52,53,63],foremost:67,foresight:69,forest:[35,61,63],fork:66,form:[61,67],format:[0,1,2,5,7,8,10,11,12,60,61,62,63,65,71],formula:2,forward:69,found:[2,60,61,62,63,69,70,71],foundat:[],four:69,fpr:11,fracf_:10,fractal:[59,62,63],fractal_featur:[10,58,59,63],framework:[60,62,69],frangi:[43,63,67],free:70,freeli:71,frequenc:[43,63,67],frequent:[10,61],from:[0,1,2,7,8,10,11,12,16,22,25,39,41,43,47,57,60,61,62,63,65,66,67,69,70,71],frozenset:[2,4,10,19],fulfil:2,full:[7,8,11,12,39,50,51,60,61,62,63,70],fulli:[7,60,62],fullprint:8,fun:69,function_bas:60,funtion:10,further:62,furthermor:67,futur:62,gabor:[10,43,59,60,62,63],gabor_angl:[42,43,63,67],gabor_frequ:[42,43,63,67],gamma:[2,23,63],garcia:2,gastrointestin:60,gather:11,gaussian:[53,60,63],gaussiannb:[22,63],gave:[2,62],gclm:[49,63,67],gener:[0,2,3,7,10,11,22,23,28,35,51,60,61,62,65,66,67,69,71],generalis:61,generaliz:60,generate_config:65,generate_feature_boxplot:11,generate_performance_boxplot:11,genet:[12,71],geometrytoler:[52,53,63],get:[2,11,12,60,69,70,71],get_r:12,getparametermap:18,gibhub:60,git:70,github:[1,2,7,10,11,12,16,39,60,61,62,63,65,66,70,71],give:[2,49,61,62,63,66,67,69,70,71],given:[0,2,7,10,11,41,43,60,62,63,65,67,70,71],glcm:[43,49,53,59,60,63,66],glcm_:10,glcm_angl:[42,43,63,67],glcm_distanc:[42,43,63,67],glcm_level:[42,43,63,67],glcmm:67,glcmms_:10,gldm:[53,59,60,63,66],gldzm:[59,62,63],gldzm_:10,glob:[7,70],glrlm:[43,53,59,60,63,66],glrlm_:10,glszm:[43,53,59,60,63,66],glszm_:10,gmean:[40,63],going:69,good:71,grade:60,gradient:61,grahpviz:62,grai:60,grand:2,graphviz:62,grayscal:[43,63],grid:[2,41,63],grid_scor:62,gridsearch:[23,63],gridsearchcv:2,gridsearchcvfastr:2,gridsearchcvjoblib:2,griethuysen:67,grlm:67,ground:[11,71],ground_truth:16,groundtruth:2,group:[2,10,35,61,62,63,66,67,69,71],groupsel:[2,65],groupwis:[2,62,66,67,71],groupwisesearch:[34,35,63,66],growth:60,gsout:2,guarante:2,guid:[2,60,63,66],guidelin:71,hack:66,had:[62,69],haibo:2,halton:2,haltonsampl:2,hand:[61,69],handbook:60,handl:[10,62],handle_unknown:10,hanff:60,happen:67,harmon:[0,10,17,39,60,61,62,63],has:[0,2,7,10,51,60,63,66,67,69],have:[0,2,10,11,12,35,39,60,61,62,63,65,66,67,69,70,71],hdf5:[1,2,7,8,10,11,60,70,71],head:[70,71],header:[0,2,7,67,71],heidelberg:67,held:2,help:[2,4,8,10,12,18,62,71],helper:[0,7,60],henc:[2,7,10,11,61,62,63,65,67,69,71],hepatocellular:[],herder:60,here:[2,61,63,64,65,67,70,71],heterogen:61,hf_:10,hf_mean:10,high:[60,67,69,70],higher:2,highest:2,highli:[2,69],highlight:[52,53,63],hing:[22,63],histogram:[2,42,43,59,60,63],histogram_featur:[10,58,59,63],histopatholog:60,histori:69,hofland:60,hold:[0,2],hole:[57,61,63],home:62,homogen:[23,63,67],hope:60,horribl:70,hospit:[24,61,63],host:60,hostnamedetector:4,hot:[49,63],hounsfield:63,how:[1,2,11,12,29,43,57,62,63,65,66,67,69,70,71],howev:[2,61,63,65,67,69,71],htm:63,html:[0,10,22,23,35,43,52,53,61,63],http:[0,2,7,10,16,22,23,35,39,43,52,53,55,60,61,62,63,65,66,70,71],huber:[22,63],hyper:[2,63],hyper_params_export:[0,60],hyperoptim:[3,29,41,60,61,62],hyperparamat:2,hyperparamet:[2,11,41,62,63,64,67,69],hypothes:67,hypothesi:16,i_max:11,i_min:11,icc:[2,10,17,62,71],icc_anova:2,iccthreshold:[0,60],icctyp:[2,10],idea:[69,71],ident:2,identifi:[7,70],ids:[2,12],ieee:[2,16,60,61,67],ignor:[10,63],iid:2,iivarinen:67,illustr:69,imag:[0,2,7,11,12,18,39,43,51,53,60,62,63,66,69,70],image_featur:[2,10,11,66],image_features_test:2,image_features_train:2,image_file_nam:[7,70],image_mr:71,image_typ:[42,43,63],imagedatadir:70,imagefeatur:[3,60,67,71],imagefil:12,images1:71,images_from_this_directori:[7,70],images_test:71,images_train:[0,7,71],imagetyp:63,imaginary_label_1:70,imbalanc:[2,55,62,63],img2:11,img:[11,12],immedi:2,implement:[0,2,7,10,12,16,23,25,63,69,71],implicitli:69,imposs:2,improv:[2,67],imput:[0,2,3,45,60,62,65,69],imputat:2,incekara:60,includ:[0,2,7,12,29,33,61,62,63,65,66,67,69,70,71],incompat:[53,63],incorpor:62,incorrect:[51,62,63],incorrectli:[11,62,71],increas:[2,41,62,63],inde:67,independ:[69,71],index:[2,10,11,60,63,66,67,71],indexerror:[0,60],indic:[2,12],individu:2,ineffici:69,infer:[0,41,60,63,71],infinit:62,influenc:67,info:[7,63,66],inform:[2,10,11,39,60,61,63,65,67,70,71],informat:60,ini:[0,1,2,10,12,62,63,65],init:[10,65],init_adasyn:2,init_borderlinesmot:2,init_nearmiss:2,init_neighbourhoodcleaningrul:2,init_randomoversampl:2,init_randomundersampl:2,init_smot:2,init_smoteenn:2,init_smotetomek:2,initi:[0,2,4,7,8,10,12,18,62,67],inner:[43,61,63,67],input:[0,2,7,10,11,12,18,60,62,63,65,66,69],input_fil:[8,12],inputarrai:10,inset:62,insight:71,insightsoftwareconsortium:62,inspect:62,instal:[60,61,62,63],instanc:[0,2,61],instanti:2,instead:[2,53,60,61,62,63,67,70,71],integ:[2,7,10,11,12,20,22,26,28,29,34,38,40,41,42,43,44,45,50,52,53,54,56,60,62,63],integr:[60,62,69],intellig:67,intens:[12,51,53,61,63,67],inter:[2,10,61],interact:[7,60,62,70],interest:[7,67],interfac:2,intermed:11,intermedi:2,intermediatefacad:62,intern:[60,67,71],interpol:[12,52,53,63],interpret:[65,69],interquartil:67,interv:[7,11,62,71],intervent:[60,67],intra:[2,10],intraclass:[10,71],introduc:70,introduct:[60,70],introductori:69,invalidcsvfileexcept:8,invalidlabelsvalid:19,invalidorderexcept:8,invari:67,inverse_transform:2,involv:2,ioerror:0,iopars:[0,2,60,65],ioplugin:0,iqr:61,iri:2,is_empti:[],is_multimetr:2,is_train:7,isbi:60,isi:71,isn:62,issu:[60,62,66,69,70,71],item:[0,2,10,70],iter:[2,11,21,23,39,41,62,63,65,71],ith:[],itk:[0,12,62],itkimag:11,its:[2,61,69],itself:[67,69,71],jacob:67,jalv:60,jfortin1:[10,39,63],jiaj:67,jianan:61,job:[2,7,41,60,62,63],joblib:[2,23,39,62,63],joblib_backend:[38,39,63],joblib_ncor:[38,39,63],join:70,joost:67,joseph:10,journal:[16,60,67],json:[2,12,62,70],jth:[],jukka:67,just:[11,62,65,70,71],k_neighbor:[2,54,55,63],kapsa:60,keep:[2,12,60,62,69],kei:[2,3,42,62,63,66,71],kept:10,kernel:[2,23,63,71],kessel:60,keyerror:0,kfold:2,kind:[62,69],klein:[60,61],knn:[10,44,45,62,63],knnimput:62,know:63,knowledg:2,known:67,kovesi:67,kurtosi:67,kwarg:[2,4,19],label1:[46,63,71],label2:[46,63,71],label:[0,1,2,3,7,10,11,12,16,25,47,49,52,53,60,61,62,67,69,70],label_1_count:16,label_data:[2,11,12],label_data_test:2,label_data_train:2,label_feature_1:66,label_feature_2:66,label_feature_3:66,label_feature_4:66,label_fil:[2,12,18,70],label_info:12,label_nam:[1,2,7,12,46,47,63,70],label_process:[0,60],label_s:[],label_set:10,label_statu:12,label_typ:[0,1,2,10,11,12,18,71],labelprocess:62,labels_from_this_fil:[7,60,70],labels_test:[10,71],labels_train:[10,71],lambda:[],lambda_tol:[],languag:[24,25,60,63,69],laplacian:[53,60,63],laptop:69,larg:[2,62,67,69],larger:[41,62,63,67],largest:[11,12,57,61,63,67],lasso:[2,22,34,35,61,63],last:[62,67,69],lastli:[51,63,65],later:[2,10,63,67],latest:[43,52,53,63],latex:62,latter:65,lbfg:[22,63],lbp:[43,59,60,63],lbp_:10,lbp_npoint:[42,43,63,67],lbp_radiu:[42,43,63,67],lda:[22,23,61,63],lda_shrinkag:[22,23,63],lda_solv:[22,23,63],lead:[62,67],learn:[2,10,11,22,23,35,55,60,61,62,63,69,71],least:[2,66,67,69],leav:[27,62,63],led:62,leender:60,left:[2,62],length:[2,10,11,60],lengthi:70,lesion:[33,63,67],less:[62,63,67],let:70,letter:16,level:[43,52,53,60,63,71],lib:60,licens:60,lidc:60,lightweight:2,lij:10,like:[2,10,60,62,63,67,69,70],limit:[61,71],line:[2,10,60,61,65,67,69,70],linear:[2,22,61,62,63,71],linear_model:[22,23,35,63],linearexecut:[7,18,22,63],link:[18,62,65,70,71],link_n4biasfieldcorrection_doc:61,linr:[22,63],linstretch:[0,60],lint:62,linux:62,linuxdetector:4,lipoma:60,liposarcoma:60,list:[0,1,2,4,7,8,10,11,12,18,19,22,24,36,37,39,42,43,45,48,59,61,63,66,71],literatu:10,literatur:[10,61,67],littl:[2,69],liver:[60,61,71],load:[1,12,43,63,70],load_config:[1,65],load_config_xnat:12,load_data:1,load_featur:[1,62],load_iri:2,load_label:12,load_label_csv:12,load_label_txt:12,load_label_xnat:12,loc:[2,22,23,34,44,54,55,63],local:[43,60,63],locat:[7,59,62,63,67,70],location_featur:[10,58,59,63],locf_:10,log10:16,log:[10,16,23,42,43,52,53,59,60,62,63,65,66,69],log_featur:[10,58,59,63],log_sigma:[42,43,63,67],log_uniform:2,log_z_scor:[36,63],logarithm:[10,61,62],logic:62,logist:[23,61,63],logisticregress:[22,23,35,62,63],logit:10,logstandardscal:10,longer:[62,63],loo:[26,27,62,63],loo_cross_valid:2,look:[7,10,60,61,63,64,65,67,69,70,71],loop:[2,66],loss:[2,23,63,67],lot:[53,63,67,69],low:[60,67],lower:[10,12,35,51,62,63],lowerbound:12,lr_l1_ratio:[22,23,63],lr_solver:[22,23,63],lrc:[22,23,63],lrpenalti:[22,23,63],lsqr:[22,63],luckili:69,lung:60,maarten:[],machin:[2,35,60,61,62,63,67,69,71],macskassi:71,made:[7,60,62,63,67,69,71],maenpaa:67,magnet:67,mai:[2,61,63,65,67,69,70],main:[7,11,14,17,61,62,70,71],major:[54,62,63,67],majorli:[7,62],make:[2,7,11,39,41,62,63,65,66,69,70,71],make_scatterplot:[],make_scor:2,malign:60,manag:[0,67],mandatori:[1,2,10,11,12],manhattan:62,manhattan_import:11,mani:[0,2,10,11,29,57,61,62,63,67,69,71],manipul:71,mann:71,mannwhitneyu:[10,34,63],manual:[2,7,40,60,61,62,63,66,67,69,70],manufactur:[61,67],manuscript:61,map:[2,11,71],mappingproxi:[0,2,4,7,8,10,12,18,19],mark:11,marku:67,martijn:60,mask:[0,2,7,11,12,39,51,53,56,57,61,62,63,69,70],mask_contour:12,mask_file_nam:7,masked_arrai:2,masks_from_this_directori:7,masks_test:71,masks_train:71,mass:67,master:[2,61,65,71],match:[1,12,62,63,71],matlab:[10,12,24,25,60,63,69],matplotlib2tikz:62,matplotlib:11,matrix:[2,10,60],matter:10,matti:67,max:[1,32,33,35,42,63,65,67],max_it:[2,22,23,63],maxim:2,maximum:[23,43,62,63,67],maxlen:[2,40,41,62,63],mean:[1,2,7,10,25,32,33,44,61,62,63,66,67,71],mean_fit_tim:2,mean_score_tim:2,mean_test_scor:2,mean_train_scor:2,measur:[2,7,67,71],median:[10,44,51,61,63,67],medic:[60,61,67,69],medicin:[60,67],meet:[7,60],melanoma:60,member:2,memori:[2,40,41,62,63,71],mention:67,mesenter:60,mesh:67,messag:[2,11,62],metadata:[0,12,39,51,61,62,63,67],metadata_fil:12,metadata_test:71,metadata_train:71,metaestimatormixin:2,metastas:[60,61],method:[0,2,7,10,11,12,16,33,35,37,45,50,51,54,55,60,61,62,63,66,67,69,71],metion:10,metric1:11,metric1t:11,metric2:11,metric2t:11,metric:[0,10,11,28,29,40,41,60,61,62,63,71],mhd:[12,71],miccai:60,michael:67,miclea:60,micro:69,microsoft:70,middl:[0,11,71],midrank:16,mimic:12,min:[10,35,42,62,63,65,67],min_object_s:[56,57,63],mine:[60,61,66,69],minim:[2,43,63,70,71],minimum:[23,43,51,57,62,63,67],minkov:10,minm:[50,63],minmax:[10,36,61,62,63],minor:[54,62,63,67],minsubjectsvalid:19,mismatch:[39,63],miss:[2,10,62],missing_valu:10,missingpi:[10,62],mixtur:12,mod:[10,24,25,62,63,65],modal:[2,10,43,53,61,62,63,67,71],modalityname1:[2,10],modalityname2:[2,10],mode:7,model:[1,2,7,11,16,18,35,41,59,60,61,62,63,69,71],model_select:[2,10],moder:[25,61,63,67],modified_hub:[22,63],modnam:1,modu:[0,2,11,18,46,47,63,70],modul:[13,22,23,35,62,63,65,71],modular:60,modulenotfounderror:60,molecular:60,momentum:67,more:[2,7,10,11,12,37,39,41,60,61,62,63,65,66,67,69,70,71],moreov:69,morpholog:[12,67],most:[2,7,10,23,61,62,63,67,69,70],most_frequ:[10,44,63],mostli:[2,10,62,63,71],mount:[2,7,62,70],move:[61,62],mr001:0,mr002:0,mri:[53,60,63,67],mse:71,mstarmans91:[7,60,65,66,70,71],much:[41,55,62,63,67,70],multi:[2,60,67],multi_class_auc:2,multi_class_auc_scor:2,multi_class_relief:10,multicent:61,multicentr:60,multiclass:[2,7,61,70,71],multiclass_classif:[7,70],multicor:[7,39,63],multifoc:61,multihread:62,multilabel:[2,7,46,47,60,62,63],multilabel_typ:11,multimetric_grid_search:2,multimod:62,multipl:[0,2,10,11,33,39,61,62,63,67,69,70,71],multipli:[12,56,57,63],multiprocess:[38,63],multiresolut:67,multiscal:67,multislic:[43,59,63],multivendor:[],must:[2,60,63],mutat:60,mutlicor:2,mutual:[61,70],mwu:10,mxn:[],n_1:11,n_2:11,n_blob:[56,57,63],n_classifi:16,n_compon:62,n_core:2,n_exampl:16,n_featur:[2,5,10,62],n_iter:[2,18,20,21,26,27,40,41,63],n_job:2,n_jobspercor:[2,40,41,63],n_jobsperscor:2,n_neighbor:[2,10,44,45,54,55,63],n_neighbour:10,n_neightbor:10,n_object:5,n_output:2,n_patient:10,n_sampl:[2,10,62],n_split:[2,40,41,62,63],n_splits_:2,n_test:11,n_train:11,nadeau:71,naiv:[61,69],name:[0,2,7,10,11,12,18,23,25,37,43,49,58,59,60,62,63,67,70,71],name_of_label_predicted_for_evalu:71,nan:[2,10,33,45,62,63,67],natur:61,ndarrai:2,nearest:[10,35,45,63],nearmiss:[54,63],neccesari:[62,65],neck:70,need:[2,7,10,60,62,63,65,67,69,70,71],needaccess:10,neg:[10,62,71],neg_dual_func:[],neighbor:[10,35,45,63],neighborhood:60,neighbour:[10,67],neighbourhoodcleaningrul:[2,54,63],net:[10,61],nettyp:18,network:[0,14,18,60,61,62,63,65,69,70],neural:[61,71],neurocombat:[],never:[31,61,63],new_spac:12,newest:62,newli:62,nework:0,next:[67,70,71],ngldm:[59,62,63],ngldm_:10,ngtdm:[43,53,59,60,62,63,66],ngtdm_:10,nice:[62,69],niessen:60,nifti:[62,71],nii:[0,7,12,70,71],nipyp:2,nmod:0,nocrossv:2,node:[0,18,33,62,63,69,71],nofeaturesfoundexcept:8,noimagesfoundexcept:8,nois:[25,63],nomasksfoundexcept:8,nomean:10,non:[2,7,10,25,61,62,63,67,69,71],none:[0,1,2,4,5,7,8,10,11,12,16,18,19,22,36,52,56,57,62,63,66],nonparametr:71,nor:60,norm_tol:[],normal:[2,7,11,12,50,51,52,53,61,62,63,66,67,69,71],normalization_factor:11,normalize_imag:[12,61],normalize_roi:[12,50,51,63],normalize_whitespac:2,normalizescal:[52,53,63],nosegmentationsfoundexcept:8,not_label:[],notabl:62,note:[0,2,7,10,11,12,62,63,67,69,70],notic:67,notimplementederror:0,now:[62,67],npoint:67,npv:[62,71],nrrd:[12,71],nsampl:11,nsubject:[5,70],num_class:[],num_train:[],number:[2,7,10,11,12,16,21,23,27,35,39,41,43,45,55,62,63,67,69,71],numbertoextract:12,numer:[2,10,71],numf:10,numpi:[2,10,11,12,16,60,62,67],obj:60,object:[0,1,2,4,7,8,10,11,12,18,19,23,33,55,57,60,61,62,63,65,66,70],objectsampl:[0,60,62],observ:[2,10],obsolet:[39,63],occur:[2,10,35,60,63,64,66,71],occurr:10,odd:67,oddfeat:10,oddpati:10,odink:60,oerat:16,of_:[10,24,63],off:[2,66,67,71],offer:[67,70],offici:60,often:[63,67,69,71],ojala:67,older:62,omit:70,onc:[2,12,61,62,67],oncolog:[],oncoradiom:[7,62],one:[0,2,7,10,11,12,27,37,49,51,61,62,63,65,66,67,69,70,71],onehotencod:[2,3,10,49,60,62],onehotencoderwrapp:[0,60],onevsrest:62,onevsrestclassifi:2,onli:[2,7,10,12,23,31,41,51,61,62,63,66,67,69,70,71],onlin:[69,70],ontolog:69,onward:2,open:[60,62,66,69,70],oper:[11,12,60,67,71],opim:2,optim:[0,2,23,41,61,62,63,64,67,71],optimiz:0,option:[0,1,2,7,10,11,12,20,22,23,24,26,28,30,32,33,34,36,38,40,42,44,46,48,50,52,54,56,58,61,62,63,65,66,67,70,71],order:[2,10,11,12,53,61,62,63,64,67,69],org:[2,10,22,23,35,63],organ:[67,69],orient:[12,42,43,51,59,60,61,62,63],orientation_featur:[10,58,59,63],orientationprimaryaxi:[50,51,63],origin:[2,52,53,59,61,62,63,67],original_featur:[10,58,59,63],oserror:0,other:[0,2,10,35,40,60,61,62,63,65,69,70,71],otherwis:[2,10,51,53,61,62,63],otsu:[12,50,51,62,63],our:[60,63,65,67,70,71],out:[2,11,12,27,62,63,69,70,71],outcom:[2,41,61,63,69,70],outer:[27,61,63,67],outlier:[10,61,62],output:[2,7,10,11,12,18,62,63,65,66,69,70,71],output_csv:[10,11],output_file_path:6,output_fold:8,output_hdf:2,output_itk:11,output_json:2,output_nam:11,output_name_zoom:11,output_png:[10,11],output_tex:[10,11],output_zip:11,outputfold:[2,11,70],over:[2,7,10,62,63,67,69],overal:[62,70],overfit:[31,61,62,63],overfit_scal:[2,11],overfitscal:[30,31,63],overid:62,overlai:11,overrid:[7,61,62],oversampl:[62,69],overview:[61,64,67,70,71],overwrit:[7,51,62,63],overwritten:0,own:[38,60,61,62,63,65,67,69,70],p_ngtdm:66,packag:[60,62,67,71],packagedir:62,pad:[11,18],padmo:60,page:[16,60,69,71],pairwis:12,pairwise_auc:2,panda:[2,11,66,70],panda_data:[2,66],paper:[2,10,67],par:[10,24,25,63],para:2,paracheck:11,parallel:[2,7,62,63],param:[2,11],param_c:2,param_degre:2,param_distribut:2,param_gamma:2,param_grid:2,param_kernel:2,param_list:2,paramet:[0,2,7,10,11,12,23,35,41,55,60,61,62,63,64,65,69,71],parameter_optim:[0,60],parametergrid:2,parameters_al:2,parameters_bsplin:61,parameters_est:2,parameters_rigid:61,parametersampl:2,parametr:[10,25,61,63],paramt:[],parekh:67,parent:18,pars:[1,62,63,65],part:[2,7,35,43,62,63,64,65,67,69,71],parti:10,pass:[2,62,71],path:[0,1,2,8,10,11,12,25,62,63,66,70],pathnotfoundexcept:8,patient001:0,patient002:0,patient1:[63,66,71],patient1_0:71,patient1_1:71,patient2:[63,66,71],patient3:[63,71],patient:[0,1,2,7,10,11,12,33,55,60,62,63,67,70,71],patient_001:70,patient_002:70,patient_featur:[10,62,71],patient_id:[2,12,18],patientclass:[62,63],patientinfo:[1,2,10,11,12],patientinfo_test:2,patientinfo_train:2,patrick:10,pattern:[60,71],pca:[2,7,35,62,63,65,71],pcatyp:[34,35,63],pce:62,pdf:10,peak:67,pearson:[61,71],peform:70,penalti:[23,62,63],peopl:60,per:[0,1,2,10,25,57,61,62,63,66,67,71],per_featur:[10,24,25,63],percentag:[2,7,10,11,18,27,35,41,55,62,63,67,70,71],percentil:[10,62,67],perform:[0,2,7,10,11,18,27,31,39,41,47,60,61,62,63,64,69,70,71],performance_all_0:70,performance_fil:70,performance_metr:2,performance_multilabel:2,performance_singlelabel:2,person:60,peter:67,peura:67,pf_:[24,36,63],phase:[42,43,59,60,63],phase_featur:[10,58,59,63],phase_minwavelength:[42,43,63,67],phase_nscal:[42,43,63,67],phasef_:10,phd:69,phenotyp:67,phil:60,philip:67,physic:0,pick:[63,71],pid:[11,12,62],pietikainen:67,pilot:[],pinfo:[11,18,62],pinfo_hn:70,pip:[62,66,70],pipelin:[0,60,62,69,71],pixel:[0,11,43,53,63,67],place:65,placehold:10,platform:[60,69,70],pleas:[7,10,60,61,63,64,65,66,67,70,71],plot:[0,10,17,60,62],plot_bar:11,plot_barchart:[0,60],plot_boxplot_featur:[0,60],plot_boxplot_perform:[0,60],plot_error:[0,60],plot_estimator_perform:[0,60],plot_hyperparamet:[0,60],plot_im_and_overlai:11,plot_imag:[0,60,62],plot_prc_cic:11,plot_pvalues_featur:[0,60],plot_ranked_imag:11,plot_ranked_percentag:11,plot_ranked_posterior:[11,62],plot_ranked_scor:[0,60],plot_roc:[0,60],plot_roc_c:11,plot_single_prc:11,plot_single_roc:11,plot_svm:62,plot_svr:62,plot_test:10,plotminmaxrespons:[0,60],plotrankedscor:62,plu:[2,25,63,71],pluge:0,plugin:[0,2,22,23,41,62,63,66,69],png:[0,11,62],point:[2,11,43,63,70],pointint:11,pointsar:11,poli:[2,22,63],polynomi:[23,63,71],port:62,posit:[2,10,11,35,63,67,71],possibl:[2,10,60,62,67,69,71],post:70,posterior:[7,11,62,71],posteriors_csv:11,potenti:65,ppv:71,practic:69,prax:67,prc:71,prc_csv:11,prc_png:11,prc_tex:11,pre:62,pre_dispatch:2,precis:[11,62,67,71],precomput:70,precrop:[52,53,63],predict:[2,5,7,10,11,16,38,58,60,61,62,63,66,67,69,70,71],predict_label:[7,62,70],predict_log_proba:2,predict_proba:[2,62],predictions_on:16,predictions_sorted_transpos:16,predictions_two:16,predictproba:62,predit:62,preflighcheck:62,preflightcheck:[0,60,62],prepar:[12,60],preprint:[60,61],preprocess:[0,2,3,10,38,39,51,60,62,69,71],preprocess_nod:0,preprocessor:[0,33,60,62,63,65],preprocss:2,present:[2,60,62,67,70],preserverd:[25,63],prevent:62,previou:[69,71],previous:[62,69],primari:[51,63],primarili:61,primary_axi:12,princip:67,principl:[35,60,63,69,71],print:[2,8,10,11,62,70,71],probabl:[2,16,66,70],probe:60,problem:[2,60,61,62,69],procedur:[10,63,71],proceed:[60,71],process:[0,2,7,16,39,60,61,62,63,69,71],process_fit:2,processpoolexecut:18,produc:[2,67],program:[24,63,69],progress:[2,62],project:[5,12,62],project_nam:5,projectid:[46,47,63],proof:60,proper:[0,62],properli:62,properti:[2,67],prostat:60,protocol:61,proven:69,provid:[0,2,7,11,12,18,25,29,39,50,51,61,63,64,67,70,71],provost:71,pseudo:2,psycholog:10,publish:16,purpos:[0,31,63],push:60,put:[11,62,63,71],pvalu:16,pxcastconvert:62,pyradiom:[1,3,10,38,52,53,58,60,62,65,66,67],python3:62,python:[5,10,24,60,62,63,65,69,70],python_intro:[],pywavelet:66,qda:[22,23,61,63],qda_reg_param:[22,23,63],qualiti:2,quantifi:67,quantit:[60,67,69],question:69,queue:60,quick:[60,63,66],quickli:67,quit:[63,69],qxm:[],radial:[67,71],radian:[43,63,67],radii:[43,63],radiograph:67,radiolog:[60,67],radiom:[0,10,61,63,64,71],radiomix:[7,8,62],radiu:[11,12,43,51,57,63,67],rais:[2,62],rajic:60,ran:[2,62,70],random:[2,5,25,27,35,61,62,63,71],random_se:2,random_search:2,random_search_paramet:2,random_split:[26,63],random_split_cross_valid:2,random_st:[2,10],randomizedsearchcv:2,randomizedsearchcvfastr:2,randomizedsearchcvjoblib:2,randomli:[2,35,63,66],randomoversampl:[54,63],randomsearch:2,randomst:2,randomundersampl:[54,63],rang:[11,12,23,35,55,61,63,67],rank:[7,10,11,29,35,41,62,63,69,71],rank_:2,rank_test_scor:2,ranked_pid:11,ranked_scor:11,ranked_truth:11,rankedposterior:62,rankedsvm:62,ranking_scor:[2,40,41,63],ranksvm:[],ranksvm_test:[],ranksvm_test_origin:[],ranksvm_train:[],ranksvm_train_old:[],rate:[11,23,63,71],rater:10,rather:2,ratio:[11,23,63,67],rational:64,raw:[12,67],rbf:[2,22,63],read:[1,2,12,62,69,70,71],read_hdf:70,reader:62,readthedoc:[0,43,52,53,55,60,61,62,63],reason:[2,67],recal:[11,62,71],receiv:[11,16,71],recent:62,recogn:66,recommend:[2,23,25,60,63,65,67,69,70],recommmend:70,recreat:2,reduc:[2,60,62],reduct:[62,69],redund:[62,67],ref:2,refactor:62,refer:[0,1,2,3,4,7,8,10,11,12,16,18,19,38,62,63,65,67,69],refit:[2,41,62,63],refit_and_scor:2,refit_ensembl:11,refit_workflow:[2,40,41,63],reflect:67,regard:60,regardless:70,region:[7,67],registr:[0,39,60,62,63,69,71],registrationnod:[38,39,63],regress:[2,7,11,18,23,47,60,62,63,66,70,71],regressor:[0,60,61,62],regular:[23,61,63,71],rel:[2,66],relat:[0,67],releas:[62,69],relev:[61,65,67,69,71],reli:67,reliabl:10,relief:[0,2,35,60,61,62,63],reliefdistancep:[34,35,63],reliefnn:[34,35,63],reliefnumfeatur:[34,35,63],reliefsamples:[34,35,62,63],reliefsel:2,reliefus:[34,35,63],remov:[10,11,39,57,61,62,63],remove_small_object:[56,57,63],removeconst:11,renam:62,rencken:60,repeat:[2,61,63],repetit:67,replac:[2,10,45,62,63,65,66],replacenan:[2,62],report:71,repositori:[60,70],repres:[2,67],reproduc:[61,62,69],requir:[0,2,7,23,60,62,63,66,69,70,71],resampl:[2,3,12,50,51,55,60,61,62,71],resample_imag:12,resampled_imag:12,resampledpixelspac:[52,53,63],resampling_spac:[50,51,63],research:[67,69],resourc:[0,12,14,60,66,69],respect:[10,57,61,63,70,71],rest:61,result:[2,10,11,39,51,60,61,62,63,67,69],ret:2,retreiv:12,retriev:67,return_al:2,return_estim:2,return_n_test_sampl:2,return_paramet:2,return_tim:2,return_train_scor:2,returnplot:11,revert:62,review:67,rfmax_depth:[22,23,63],rfmin_samples_split:[22,23,63],rfn_estim:[22,23,63],rfr:[22,63],rgrd:[59,62,63],rgrd_featur:[10,58,59,63],rgrdf_:10,ridg:[22,61,62,63],right:71,rigid:61,ring:[12,56,57,61,62,63],risk:71,rms_score:2,rng:2,robert:61,robust:[10,36,60,61,62,63,67],robust_z_scor:[10,36,63],robustscal:[10,62],robuststandardscal:[10,62],roc:[7,11,16,61,62,71],roc_comparison:16,roc_csv:11,roc_png:11,roc_tex:11,roi:[12,51,53,60,62,63,71],roi_dilate_radiu:12,roidetermin:[12,50,51,63],roidil:[50,51,63],roidilateradiu:[50,51,63],rokwa:10,root:[2,7],rosset:71,rot90:11,rotat:[51,63,67],rough:67,round:[2,23,62,63],rounded_list:2,routin:[67,69],row:[2,10,67],rtstructread:62,run:[2,7,10,60,62,63,66,69,71],runtim:[2,62],rvs:2,safe:65,saga:[22,63],sagit:[52,62,63],sai:61,same:[1,2,10,11,23,33,39,61,62,63,67,69,70,71],samefeat:10,sampl:[0,1,2,10,11,23,35,41,55,61,62,63,71],sample_s:10,sample_weight:16,sampler:2,sampleswarn:19,sampling_strategi:[2,54,55,63],sar:2,sar_scor:2,sarcoma:[],satur:67,save:[0,2,5,10,11,39,41,62,63,66,67,70,71],save_config:[0,65],save_data:2,save_memori:11,scale:[2,10,22,23,34,37,43,44,53,54,55,60,62,63,67,69],scaler:[0,2,31,60,62,63,65],scaling_method:[36,37,63],scan:[63,67,70],scanner:67,scatterplot:[11,62],schoot:60,scienc:71,scikit:[2,10,22,23,35,63],scipi:2,score:[2,7,10,11,18,41,51,61,62,63,64,71],score_tim:2,scorer:2,scorer_:2,scorers_dict:2,scoring_method:[2,7,8,40,41,63],scoring_paramet:2,script:[10,61,62,65,66,69,70,71],script_path:70,scroll:71,search:[2,7,10,35,41,60,62,63,65,66],searchcv:[0,11,60,62,65],sebastian:60,second:[2,10,16,25,63,67],section:[63,66,70,71],see:[0,1,2,4,7,8,10,11,12,18,22,23,35,39,43,52,53,55,60,61,62,63,65,66,67,70,71],seed:[2,27,62,63],seem:[62,69],seen:71,seg:[18,62],seg_liver_mr:71,seg_tumor1_mr:71,seg_tumor2_mr:71,seg_tumor_mr:71,segment:[0,7,11,12,18,39,57,61,62,63,67,69,70],segmentation_file_nam:[7,70],segmentations1:71,segmentations2:71,segmentations_from_this_directori:[7,70],segmentations_test:71,segmentations_train:[7,71],segmentix:[0,1,3,38,39,53,60,61,62,71],segmentix_test:[0,13],segradiu:[56,57,63],segtyp:[56,57,63],sel:10,select:[2,7,10,12,23,35,53,60,61,62,63,69,71],selected_label:7,selectfeatgroup:[3,35,60,66],selectfrommodel:[34,35,62,63],selectfrommodel_estim:[34,35,63],selectfrommodel_lasso_alpha:[34,35,63],selectfrommodel_n_tre:[34,35,63],selectgroup:[0,60,66],selectindividu:[0,60],selectmodel:2,selectmulticlassrelief:10,selectormixin:[10,62],self:[2,4,8,10,12,18,23,63,66],selfeat_vari:10,semant:[0,7,59,60,62,63],semantic_featur:[10,58,59,63],semantics_from_this_fil:7,semantics_test:71,semantics_train:71,semf_:[10,24,36,63],semicolon:62,sensibl:67,sensit:[61,71],separ:[2,7,22,24,31,36,37,42,62,63,71],sequenc:[0,2,61,71],seri:[7,66],seriou:61,serpar:62,serv:[0,67,69,71],session:5,set:[0,1,2,5,7,10,11,16,18,23,31,39,41,45,51,61,62,63,65,66,67,69,70,71],set_fixed_split:7,set_multicore_execut:[7,70],set_tmpdir:[7,70],settin:2,settings_dict:1,setup:[7,62],sever:[0,7,10,12,61,62,63,66,67,69,70,71],sex:[10,42,63,67,71],sf_:[10,24,63,66],sf_compact:10,sgd:[22,23,63],sgd_alpha:[22,23,63],sgd_l1_ratio:[22,23,63],sgd_loss:[22,23,63],sgd_penalti:[22,23,63],sgdr:[22,63],shape:[2,10,42,43,53,59,60,63,66],shape_featur:[10,58,59,63],shear:69,sheet:71,shift:[25,63],should:[0,1,2,7,10,11,12,25,37,39,41,43,55,57,61,62,63,66,71],show:[2,11,62,70,71],shown:69,shrink:2,shrinkag:[23,63],shrout:10,shuffle_estim:11,shutil:62,siemen:67,sigma:[10,16,67],sign:[2,10],signal:16,signatur:[2,4,8,10,12,18,60],signific:[11,71],significantli:63,similar:[2,10,61,62,65,66,67,69,70,71],similarli:65,simpl:[7,61,66,67,69,70],simpleelastix:71,simpleitk:[51,61,62,63,71],simpler:69,simplest:71,simplevalid:19,simpleworc:[0,60,61,62,70,71],simpli:[25,60,62,63,66,70,71],simplifi:70,simultan:[2,69],sinc:66,singel:7,singl:[2,7,11,12,16,25,41,43,45,60,61,62,63,64,71],single_class_relief:10,singleclass:2,singlelabel:[2,18,46,47,63],singleton:2,sink:[0,18,62,65,69,71],sink_data:[0,14,18,71],site:[2,60],sitkbsplin:[52,53,63],six:67,size:[2,11,18,35,41,43,60,62,63,71],size_alpha:[],skew:67,skip:[37,62,63,70,71],skip_featur:[10,36,37,63],sklearn:[2,10,11,22,23,35,40,62,63,65],slack:[23,63],sleijfer:60,slice:[0,2,11,57,62,63,67,71],slicer:[0,11,60,62],slight:2,slightli:70,slow:62,small:[10,57,61,62,63,67],smaller:[55,63,67],smallest:2,smart:[11,63],smit:60,smote:[2,54,62,63],smoteen:2,smoteenn:[54,63],smotetomek:[54,63],snapshot:71,sne:[7,71],societi:60,soft:[],softwar:[25,60,63,69],sole:67,solid:67,solut:[2,66],solv:[66,69],solver:[23,62,63],some:[0,2,7,60,61,62,63,65,69,70,71],somenam:[63,71],someon:69,someotherrandandomfolderwith:66,sometim:62,sort:[2,16,62,70],sourc:[0,1,2,4,5,6,7,8,10,11,12,14,16,17,18,19,60,62,63,65,67,69,70],source_data:[0,14,71],space:[2,10,11,12,35,51,61,62,63,65,67,71],span:2,spars:[10,71],spatial:61,spawn:[0,2],spawner:0,spearman:[61,71],special:61,specif:[2,10,23,49,63,65,66,67,69,70,71],specifi:[0,2,7,12,23,35,39,41,49,55,63],speed:[7,70],spend:2,spheric:67,split0_test_scor:2,split0_train_scor:2,split1_test_scor:2,split1_train_scor:2,split2_test_scor:2,split2_train_scor:2,split:[2,10,18,23,27,62,63,67,69,71],springer:67,squar:[2,11,61,71],squared_epsilon_insensit:[22,63],squared_hing:[22,63],squared_loss:[22,63],src:2,ssh:70,stabl:[0,10,22,23,35,55,62,63],stack:1,standalon:[18,62],standard:[7,10,43,60,62,63,67,70,71],standardis:60,standardscal:10,starman:60,start:[2,60,62,63,66,69],stat:[2,11,70],state:[0,2,29,62,63,65,70],statement:[12,65],staticmethod:19,statist:[0,2,10,11,17,35,60,62,63,67,70,71],statisticalsel:2,statisticaltest:62,statisticaltestfeatur:[0,60,62],statisticaltestmetr:[34,35,63],statisticaltestthreshold:[0,34,35,60,63],statisticaltestus:[34,35,63],statsticaltestthreshold:62,statu:[2,12,60],std:10,std_fit_tim:2,std_score_tim:2,std_test_scor:2,std_train_scor:2,stefan:[60,61],step:[2,43,61,62,63,64,66,67,69,71],still:[62,66,70,71],stimul:60,stochast:61,stop:[12,62],store:[2,7,8,70,71],str:[2,62],straight:[61,69],strategi:[2,10,11,44,45,55,60,62,63],stratif:60,stratifi:[2,18],stratifiedkfold:2,strenght:[23,63],strength:[23,63,67],stretch:11,string:[0,1,2,7,10,11,12,22,24,36,40,41,42,46,48,62,63,71],stromal:60,strongli:70,struct:62,structer:67,structur:[66,67,70,71],stuck:70,student:[10,69,71],studi:[0,60,61,69],studio:70,stwstrategyhn1:70,sub:[0,67],subfold:[7,62,66,70],subgroup:67,subject:[2,5,7],subkei:[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,63],submit:60,subpackag:60,subset:70,substr:[10,25,37,49,63],subtract:[12,56,57,62,63],succeed:62,success:2,suffici:71,suggest:[2,65],suit:[0,2,12],suitabl:[60,67],sun2014fast:16,sun:16,superelastix:61,suppli:[1,2,11,43,51,55,57,61,62,63,71],support:[2,10,27,51,60,61,62,63,66,67,69,71],suppos:63,sure:[7,65,66,71],surfac:67,surfsara:70,surgeri:60,surgic:[],surrog:2,surround:67,surveil:[],surviv:[7,11,71],svc:2,svd:[22,63],svm:[2,7,11,22,23,61,62,63],svmc:[22,23,63],svmcoef0:[22,23,63],svmdegre:[22,23,63],svmgamma:[22,23,63],svmkernel:[22,23,63],svr:[2,7,22,63],symlink:62,symmetri:67,symposium:60,synthet:[10,11],synthetictest:10,system:[0,2,63,67,71],tabl:[2,71],tadpol:[2,71],tag:[42,43,62,63,67,71],take:[2,10,41,62,63,65,71],taken:11,tandfonlin:10,target:2,task:69,techniqu:[61,63,67],tedious:69,tell:[7,65,71],tempdir:[62,70],tempfold:2,temporari:[0,7,62,70],tempsav:[2,38,39,63],term:[23,35,61,62,63,69],terminolog:60,test:[0,2,7,10,11,16,27,31,35,39,41,60,61,62,63,66,70,71],test_combat:[0,60],test_combat_fastr:17,test_data:[],test_help:[0,60],test_iccthreshold:[0,60],test_invalidlabelsvalidator_columnsubstr:17,test_invalidlabelsvalidator_patientcolumn:17,test_invalidlabelsvalidator_patientsubstr:17,test_invalidlabelsvalidator_validconfig:17,test_metr:11,test_plot_error:[0,60],test_rs_ensembl:2,test_sampl:11,test_sample_count:2,test_scor:[2,40,63],test_score_dict:2,test_siz:[2,18,26,27,40,41,63],test_target:[],test_valid:[0,60],tex:[11,62],text:2,textur:[43,59,60,63],texture_featur:10,texture_gabor:[42,43,63],texture_gabor_featur:[10,58,59,63],texture_glcm:[42,43,52,53,63],texture_glcm_featur:[10,58,59,63],texture_glcmm:[42,43,63],texture_glcmms_featur:[10,58,59,63],texture_gldm:[52,53,63],texture_gldm_featur:[58,59,63],texture_gldzm_featur:[10,58,59,63],texture_glrlm:[42,43,52,53,63],texture_glrlm_featur:[10,58,59,63],texture_glszm:[42,43,52,53,63],texture_glszm_featur:[10,58,59,63],texture_lbp:[42,43,63],texture_lbp_featur:[10,58,59,63],texture_ngldm_featur:[10,58,59,63],texture_ngtdm:[42,43,52,53,63],texture_ngtdm_featur:[10,58,59,63],tf_glcm_contrastd1:67,than:[2,55,62,63,66,70],thei:[2,62,63,64,67,70,71],them:[2,62,63,69,71],themselv:67,therebi:[60,62,69,71],therefor:[0,7,10,61,62,65,66,67,69,70,71],thi:[0,2,7,10,11,33,37,41,49,51,55,60,61,62,63,64,65,66,67,68,69,70,71],thick:67,thing:[62,63,66,70],third:10,thoma:60,thomeer:60,those:[2,7,10,65,67,71],thread:[38,62,63],three:[2,66,67],thresh:[10,11],threshold:[2,10,11,17,35,51,55,62,63,67],threshold_annot:11,threshold_clean:[2,54,55,63],through:[0,2,10,12,18,51,60,61,62,63,67,69,70,71],throughput:67,thu:[2,10,60,61,62,63,66,67,69,71],tibshirani:71,tiff:[12,71],tikzplotlib:62,till:61,timbergen:60,time:[2,11,27,35,41,55,61,62,63,67,69,70,71],timer:62,timo:67,tip:60,tissu:[],titl:16,tmp:7,tmpdir:[7,70],to_hdf:66,todo:[2,10],togeth:[62,65,70],tol:2,toler:[],tomek:2,tomographi:60,tone:60,too:67,tool:[0,7,38,39,60,61,62,63,65,68,69,70,71],toolbox:[10,58,59,60,61,62,63,66,67,71],top50:2,top:[11,62],topi:67,toshiba:67,total:[2,67],towardsdatasci:63,tpr:11,trace:[66,70],track:2,trade:2,train:[0,2,7,11,23,27,31,35,39,41,62,63,71],train_data:[],train_scor:2,train_score_dict:2,train_target:[],train_test_split:2,trainclassifi:[0,11,60,62,65],transact:[2,61,67],transform:[2,10,39,61,62,63,65,67,71],transformationnod:[38,39,63],transformermixin:10,transformix:[0,38,60,62,63],transpos:[12,61,62],transpose_imag:12,travi:62,treat:63,tree:[23,35,61,63,71],tri:[2,69],trick:60,trigger:67,truth:[2,11,62,71],tsampl:11,ttest:[10,34,62,63],tube:67,tubular:67,tumor:[60,70,71],tumour:60,tune:[2,63,69],tupl:2,turn:[61,62,66],tutori:[17,60,63,66],two:[0,2,10,11,16,22,34,42,44,54,61,62,63,67,70,71],txt:[0,1,2,7,10,11,61,62,63,71],type:[0,2,4,8,10,11,12,18,23,26,27,35,39,60,61,62,63,65,67,69,71],typeerror:[0,2],typegroup:62,typic:71,typo:62,udr:[],unadjust:16,unaffect:[25,63],unag:12,uncorrect:71,under:[2,16,60,61,62,63,67,71],underli:2,underscor:71,understand:69,unfit:2,unfortun:66,uniform:[2,23,55,62,63,65,67],uniformli:2,uniqu:[2,67],unit:[62,63],univari:[2,7,61,62,71],univers:[2,60],unless:2,unreleas:[],unround:62,unsuccesful:62,unsuit:62,unsupervis:2,until:2,updat:62,upgrad:62,upon:[7,63],upper:[35,63],upperbound:[12,51,63],uri:62,url:[12,46,47,62,63],urltyp:62,usabl:2,usag:[2,41,61,62,63,67,71],usd:10,use:[0,2,7,10,11,12,18,21,23,25,27,29,31,33,35,39,44,45,49,51,53,59,60,61,62,63,65,67,69,70,71],use_fastr:2,useag:10,used:[0,1,2,7,10,11,12,23,27,29,31,35,39,41,43,45,47,51,53,55,57,59,60,61,62,63,65,67,69,70,71],useful:[2,10,39,63,71],usemask:12,usepca:[34,35,63],user:[2,7,61,67,68,70],usersmynamefeaturefold:7,usersmynameimagefold:7,usersmynamemaskfold:7,usersmynamesegmentationfold:7,uses:[2,7,10,62,65,66,67,68],using:[0,2,7,10,18,23,25,27,29,35,41,45,51,53,60,61,62,63,65,66,67,69,70,71],usual:67,util:2,v600e:60,val:0,valid:[0,2,7,10,11,18,27,39,41,60,62,63,71],validationm:[27,63],validatorsfactori:19,valu:[0,2,7,10,11,12,16,35,40,43,45,49,53,61,62,63,65,66,67,70,71],value1:63,value2:63,valueerror:0,van:[60,67],vari:[2,53,62,63,67,69],variabl:[0,11,25,61,62,63,66,70],varianc:[2,10,16,34,35,62,63,67],variancethreshold:[0,35,60,62,63],variancethresholdmean:10,variant:69,variat:[25,61,63],varieti:[7,60,67],variou:[2,11,60,61,62,63,65,68,69,71],varsel:2,vector:[2,10,61],veenland:60,veldt:60,vendor:60,verbos:[2,5,10,11,62],verhoef:60,veri:[2,69],verion:62,vermeulen:60,version:[16,25,61,62,63,66,67],verson:62,versu:60,vessel:[42,43,59,60,63],vessel_featur:[10,58,59,63],vessel_radiu:[42,43,63,67],vessel_scale_rang:[42,43,63,67],vessel_scale_step:[42,43,63,67],vf_:10,vfs:[0,62],via:70,vincent:60,virtual:66,virtualenv:70,vishwa:67,visit:65,visser:60,visual:[67,70],vizual:62,vol:71,volum:[16,60,67],voort:60,voxel:[57,63,67],voxelarrayshift:[52,53,63],wai:[63,67,71],want:[0,7,12,60,61,63,67,70,71],warn:[2,62],warp:[61,71],wavelength:[43,63],wavelet:[52,53,59,60,62,63],wavelet_featur:[10,58,59,63],weak:[0,2,4,7,8,10,12,18,19],week:66,weichao:16,weight:[23,62,63],weigth:[35,63],welch:[10,34,63,71],well:[12,60,61,62,63,65,67,69,70,71],were:[62,65,66,67,69,71],weus:71,what:[65,67],when:[0,2,7,10,11,18,23,27,29,35,37,41,45,61,62,63,65,66,67,69,70,71],whenev:2,where:[2,11,60,62,69,70],wheter:[31,63],whether:[1,2,7,10,11,12,21,29,39,43,47,49,51,53,57,62,63,64,67,70],which:[0,2,7,8,10,11,12,25,35,37,39,41,49,53,61,62,63,64,65,66,67,69,70,71],whitnei:71,whole:[41,63,69],why:63,wich:2,wide:[60,67],width:[53,60,63,71],wijnenga:60,wiki:[1,2,10,11,12],wilcoxon:[2,10,34,63,71],wildcard:[7,66],willemssen:60,window:[23,62,63,70],wip:[10,11,46,47,63,64,65],with_mean:10,with_std:10,within:[62,64,66,67,69,71],withing:[51,63],without:[2,62],wonder:69,worc:[1,2,4,5,6,7,8,10,11,12,14,16,17,18,19,23,38,40,43,49,61,62,63,64,65,67,68,69,70],worc_:70,worc_config:[0,60,62,63],worcassertionerror:0,worccastconvert:62,worccastcovert:62,worcdirectorydetector:4,worcerror:0,worcflow:60,worcindexerror:0,worcioerror:0,worckeyerror:[0,60],worcnotimplementederror:0,worcscal:10,worctutori:[7,60,66,70,71],worctutorialsimple_travis_multiclass:[],worctutorialsimple_travis_regress:[],worctutorialsimple_unittest_multiclass:[0,60],worctutorialsimple_unittest_regress:[0,60],worctypeerror:0,worcvalueerror:[0,60],worcworc:65,work:[12,60,62,67,69],workaround:2,workflow:[0,2,7,11,41,61,62,63,64,65,67,69,70,71],would:[60,63,67,69,70,71],wrap:[2,62,65,69],wrapper:[2,61,65,71],write:11,written:[2,10,11],wtype:0,www:[10,63],x_test:[2,10],x_train:[2,10,11],xgb:[23,63],xgb_boosting_round:[22,23,63],xgb_colsample_bytre:[22,23,63],xgb_gamma:[22,23,63],xgb_learning_r:[22,23,63],xgb_max_depth:[22,23,63],xgb_min_child_weight:[22,23,63],xgbclassifi:[22,63],xgboost:[61,62,63],xgbregressor:[22,63],xgdboost:62,xlsx:[2,8],xml:65,xnat:[12,62,70],xnat_url:5,y_predict:[2,11],y_score:[2,11],y_test:2,y_train:[2,10,11],y_truth:[2,11],yandexdataschool:16,year:16,yet:[7,12,62],yield:2,yml:62,you:[0,2,7,12,18,49,55,60,61,62,63,65,66,67,69,70,71],your:[0,2,7,31,38,39,41,47,53,60,62,63,65,70],yourself:[60,69],yspace:10,z_score:[10,12,36,50,63],zero:[10,45,62,63],zij:10,zip:[11,62,70],zone:60,zoomfactor:11,zwanenburg:67},titles:["WORC Package","IOparser Package","classification Package","<no title>","detectors Package","exampledata Package","export Package","facade Package","helpers Package","fastrconfig Package","featureprocessing Package","plotting Package","processing Package","resources Package","fastr_tests Package","fastr_tools Package","statistics Package","tests Package","tools Package","validators Package","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","WORC: Workflow for Optimal Radiomics Classification","Additional functionality","Changelog","Configuration","Data Mining Methods","Developer documentation","FAQ","Radiomics Features","Resource File Formats","Introduction","Quick start guide","User Manual"],titleterms:{"0rc1":62,"boolean":66,"class":12,"default":66,"export":6,"function":61,"import":70,Added:62,Adding:65,The:[70,71],actual:70,addexcept:[0,66],addit:61,advancedsampl:2,alter:66,analysi:[64,70],arrai:66,attribut:71,basicworc:7,begin:66,bigr:66,bin:67,binari:67,bootstrap:63,calcfeatures_test:14,can:66,chang:62,changelog:62,choic:67,classif:[2,60,61,63,64],classifi:[],cluster:66,column:66,combat:[10,61,63],command:71,compon:64,comput:66,compute_ci:11,config_io_classifi:1,config_io_combat:1,config_io_pyradiom:1,config_preprocess:1,config_segmentix:1,config_worc:1,configbuild:8,configur:63,construct:71,construct_classifi:2,content:63,convert:66,crash:66,create_example_data:5,createfixedsplit:[2,18],creation:63,crossval:2,crossvalid:63,data:[64,65,71],datadownload:5,debug:71,decomposit:10,definit:71,delet:66,delong:16,depend:67,detector:4,develop:[60,65],dicom:67,differ:[66,67],dimension:64,document:[60,65],elastix:18,elastix_para:71,elastix_test:14,ensembl:63,entri:66,error:66,estim:[],evalu:[18,63,71],exampl:[65,71],exampledata:5,except:8,execut:[66,71],experi:[66,70],extract:67,extractnlargestblobsn:12,facad:7,fals:66,faq:66,fastr:69,fastr_test:14,fastr_tool:15,fastrconfig:9,feat_out_0:66,featpreprocess:63,featsel:63,featur:[61,64,65,66,67,71],featureconvert:10,featureprocess:10,featuresc:63,file:[66,68,71],file_io:1,filter:67,first:66,fitandscor:2,fix:[62,67],format:[66,68],found:66,from:64,full:67,function_bas:66,gabor:67,gaussian:67,gener:63,given:66,glcm:67,gldm:67,glrlm:67,glszm:67,grai:67,groupwis:64,guid:70,hdf5:66,helper:[8,12],histogram:67,hyper_params_export:6,hyperoptim:[63,65],icc:[],iccthreshold:10,imag:[61,67,71],imagefeatur:63,imput:[10,63,64],indexerror:66,indic:[60,66],infer:18,input:[70,71],instal:[66,70],instead:66,integ:66,interact:[63,71],introduct:[63,69],iopars:1,job:66,keep:66,label:[63,66,71],label_process:12,labels_from_this_fil:66,laplacian:67,lbp:67,learn:64,length:67,level:67,lib:66,like:66,line:66,linstretch:11,local:67,log:67,look:66,machin:64,manual:71,mask:71,matrix:67,metadata:71,method:[64,65],metric:2,mine:64,model:64,modul:[0,1,2,4,5,6,7,8,9,10,11,12,14,16,17,18,19,60,66],modular:69,modulenotfounderror:66,multilabel:61,must:66,name:66,need:66,neighborhood:67,network:71,ngtdm:67,numpi:66,obj:66,object:71,objectsampl:2,occur:67,onehotencod:[63,64],onehotencoderwrapp:10,ones:66,optim:[60,69],orient:67,other:[66,67],own:66,packag:[0,1,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,66,70],paramet:67,parameter_optim:2,patient:66,pattern:67,pca:64,phase:67,plot:11,plot_barchart:11,plot_boxplot_featur:11,plot_boxplot_perform:11,plot_error:11,plot_estimator_perform:11,plot_hyperparamet:11,plot_imag:11,plot_pvalues_featur:11,plot_ranked_scor:11,plot_roc:11,plotminmaxrespons:11,preflightcheck:19,preprocess:[12,61,63],preprocessor:10,princip:64,process:[8,12,65],pyradiom:63,queue:66,quick:70,radiom:[60,67,69],rankedsvm:[],reduct:64,refer:[60,61],registr:61,regress:[61,64],regressor:2,relief:[10,64],resampl:[63,64],resourc:[13,68],result:70,roi:67,run:[67,70],scale:[61,64],scaler:10,scatterplot:[],searchcv:2,segment:71,segmentix:[12,63],segmentix_test:14,select:[64,66,67],selectfeatgroup:63,selectgroup:10,selectindividu:10,semant:[67,71],shape:67,simpleworc:[7,66],site:66,size:67,slicer:18,some:66,sourc:71,standard:[66,69],start:70,statist:[16,64],statisticaltestfeatur:10,statisticaltestthreshold:10,submit:66,subpackag:[0,7,13],surviv:64,tabl:60,tell:66,terminolog:69,test:[17,64,65],test_combat:17,test_help:17,test_iccthreshold:17,test_plot_error:17,test_valid:17,textur:67,tip:70,tone:67,tool:18,toolbox:65,trainclassifi:2,transformix:18,trick:70,tutori:70,type:66,univari:64,unreleas:[],use:66,used:66,user:[60,71],valid:19,varianc:64,variancethreshold:10,vessel:67,wavelet:67,welcom:60,where:66,width:67,worc:[0,60,66,71],worc_config:9,worckeyerror:66,worctutorialsimple_travis_multiclass:[],worctutorialsimple_travis_regress:[],worctutorialsimple_unittest_multiclass:17,worctutorialsimple_unittest_regress:17,worcvalueerror:66,work:66,workflow:60,would:66,your:[66,71],zone:67}}) \ No newline at end of file +Search.setIndex({docnames:["autogen/WORC","autogen/WORC.IOparser","autogen/WORC.classification","autogen/WORC.config","autogen/WORC.detectors","autogen/WORC.exampledata","autogen/WORC.export","autogen/WORC.facade","autogen/WORC.facade.helpers","autogen/WORC.fastrconfig","autogen/WORC.featureprocessing","autogen/WORC.plotting","autogen/WORC.processing","autogen/WORC.resources","autogen/WORC.resources.fastr_tests","autogen/WORC.resources.fastr_tools","autogen/WORC.statistics","autogen/WORC.tests","autogen/WORC.tools","autogen/WORC.validators","autogen/config/WORC.config_Bootstrap_defopts","autogen/config/WORC.config_Bootstrap_description","autogen/config/WORC.config_Classification_defopts","autogen/config/WORC.config_Classification_description","autogen/config/WORC.config_ComBat_defopts","autogen/config/WORC.config_ComBat_description","autogen/config/WORC.config_CrossValidation_defopts","autogen/config/WORC.config_CrossValidation_description","autogen/config/WORC.config_Ensemble_defopts","autogen/config/WORC.config_Ensemble_description","autogen/config/WORC.config_Evaluation_defopts","autogen/config/WORC.config_Evaluation_description","autogen/config/WORC.config_FeatPreProcess_defopts","autogen/config/WORC.config_FeatPreProcess_description","autogen/config/WORC.config_Featsel_defopts","autogen/config/WORC.config_Featsel_description","autogen/config/WORC.config_FeatureScaling_defopts","autogen/config/WORC.config_FeatureScaling_description","autogen/config/WORC.config_Fingerprinting_defopts","autogen/config/WORC.config_Fingerprinting_description","autogen/config/WORC.config_General_defopts","autogen/config/WORC.config_General_description","autogen/config/WORC.config_HyperOptimization_defopts","autogen/config/WORC.config_HyperOptimization_description","autogen/config/WORC.config_ImageFeatures_defopts","autogen/config/WORC.config_ImageFeatures_description","autogen/config/WORC.config_Imputation_defopts","autogen/config/WORC.config_Imputation_description","autogen/config/WORC.config_Labels_defopts","autogen/config/WORC.config_Labels_description","autogen/config/WORC.config_OneHotEncoding_defopts","autogen/config/WORC.config_OneHotEncoding_description","autogen/config/WORC.config_Preprocessing_defopts","autogen/config/WORC.config_Preprocessing_description","autogen/config/WORC.config_PyRadiomics_defopts","autogen/config/WORC.config_PyRadiomics_description","autogen/config/WORC.config_Resampling_defopts","autogen/config/WORC.config_Resampling_description","autogen/config/WORC.config_SMAC_defopts","autogen/config/WORC.config_SMAC_description","autogen/config/WORC.config_Segmentix_defopts","autogen/config/WORC.config_Segmentix_description","autogen/config/WORC.config_SelectFeatGroup_defopts","autogen/config/WORC.config_SelectFeatGroup_description","index","static/additionalfunctionality","static/changelog","static/configuration","static/datamining","static/developerdocumentation","static/faq","static/features","static/file_description","static/introduction","static/quick_start","static/user_manual"],envversion:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.cpp":1,"sphinx.domains.javascript":1,"sphinx.domains.math":2,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,"sphinx.ext.intersphinx":1,"sphinx.ext.todo":1,"sphinx.ext.viewcode":1,sphinx:56},filenames:["autogen/WORC.rst","autogen/WORC.IOparser.rst","autogen/WORC.classification.rst","autogen/WORC.config.rst","autogen/WORC.detectors.rst","autogen/WORC.exampledata.rst","autogen/WORC.export.rst","autogen/WORC.facade.rst","autogen/WORC.facade.helpers.rst","autogen/WORC.fastrconfig.rst","autogen/WORC.featureprocessing.rst","autogen/WORC.plotting.rst","autogen/WORC.processing.rst","autogen/WORC.resources.rst","autogen/WORC.resources.fastr_tests.rst","autogen/WORC.resources.fastr_tools.rst","autogen/WORC.statistics.rst","autogen/WORC.tests.rst","autogen/WORC.tools.rst","autogen/WORC.validators.rst","autogen/config/WORC.config_Bootstrap_defopts.rst","autogen/config/WORC.config_Bootstrap_description.rst","autogen/config/WORC.config_Classification_defopts.rst","autogen/config/WORC.config_Classification_description.rst","autogen/config/WORC.config_ComBat_defopts.rst","autogen/config/WORC.config_ComBat_description.rst","autogen/config/WORC.config_CrossValidation_defopts.rst","autogen/config/WORC.config_CrossValidation_description.rst","autogen/config/WORC.config_Ensemble_defopts.rst","autogen/config/WORC.config_Ensemble_description.rst","autogen/config/WORC.config_Evaluation_defopts.rst","autogen/config/WORC.config_Evaluation_description.rst","autogen/config/WORC.config_FeatPreProcess_defopts.rst","autogen/config/WORC.config_FeatPreProcess_description.rst","autogen/config/WORC.config_Featsel_defopts.rst","autogen/config/WORC.config_Featsel_description.rst","autogen/config/WORC.config_FeatureScaling_defopts.rst","autogen/config/WORC.config_FeatureScaling_description.rst","autogen/config/WORC.config_Fingerprinting_defopts.rst","autogen/config/WORC.config_Fingerprinting_description.rst","autogen/config/WORC.config_General_defopts.rst","autogen/config/WORC.config_General_description.rst","autogen/config/WORC.config_HyperOptimization_defopts.rst","autogen/config/WORC.config_HyperOptimization_description.rst","autogen/config/WORC.config_ImageFeatures_defopts.rst","autogen/config/WORC.config_ImageFeatures_description.rst","autogen/config/WORC.config_Imputation_defopts.rst","autogen/config/WORC.config_Imputation_description.rst","autogen/config/WORC.config_Labels_defopts.rst","autogen/config/WORC.config_Labels_description.rst","autogen/config/WORC.config_OneHotEncoding_defopts.rst","autogen/config/WORC.config_OneHotEncoding_description.rst","autogen/config/WORC.config_Preprocessing_defopts.rst","autogen/config/WORC.config_Preprocessing_description.rst","autogen/config/WORC.config_PyRadiomics_defopts.rst","autogen/config/WORC.config_PyRadiomics_description.rst","autogen/config/WORC.config_Resampling_defopts.rst","autogen/config/WORC.config_Resampling_description.rst","autogen/config/WORC.config_SMAC_defopts.rst","autogen/config/WORC.config_SMAC_description.rst","autogen/config/WORC.config_Segmentix_defopts.rst","autogen/config/WORC.config_Segmentix_description.rst","autogen/config/WORC.config_SelectFeatGroup_defopts.rst","autogen/config/WORC.config_SelectFeatGroup_description.rst","index.rst","static/additionalfunctionality.rst","static/changelog.rst","static/configuration.rst","static/datamining.rst","static/developerdocumentation.rst","static/faq.rst","static/features.rst","static/file_description.rst","static/introduction.rst","static/quick_start.rst","static/user_manual.rst"],objects:{"WORC.IOparser":{config_WORC:[1,0,0,"-"],config_io_PyRadiomics:[1,0,0,"-"],config_io_classifier:[1,0,0,"-"],config_io_combat:[1,0,0,"-"],config_preprocessing:[1,0,0,"-"],config_segmentix:[1,0,0,"-"],file_io:[1,0,0,"-"]},"WORC.IOparser.config_WORC":{load_config:[1,1,1,""]},"WORC.IOparser.config_io_PyRadiomics":{load_config:[1,1,1,""]},"WORC.IOparser.config_io_classifier":{load_config:[1,1,1,""]},"WORC.IOparser.config_io_combat":{load_config:[1,1,1,""]},"WORC.IOparser.config_preprocessing":{load_config:[1,1,1,""]},"WORC.IOparser.config_segmentix":{load_config:[1,1,1,""]},"WORC.IOparser.file_io":{convert_config_pyradiomics:[1,1,1,""],load_data:[1,1,1,""],load_features:[1,1,1,""]},"WORC.WORC":{Tools:[0,2,1,""],WORC:[0,2,1,""]},"WORC.WORC.Tools":{__dict__:[0,3,1,""],__init__:[0,4,1,""],__module__:[0,3,1,""],__weakref__:[0,3,1,""]},"WORC.WORC.WORC":{__dict__:[0,3,1,""],__init__:[0,4,1,""],__module__:[0,3,1,""],__weakref__:[0,3,1,""],add_ComBat:[0,4,1,""],add_elastix:[0,4,1,""],add_elastix_sourcesandsinks:[0,4,1,""],add_evaluation:[0,4,1,""],add_feature_calculator:[0,4,1,""],add_fingerprinter:[0,4,1,""],add_preprocessing:[0,4,1,""],add_segmentix:[0,4,1,""],add_tools:[0,4,1,""],build:[0,4,1,""],build_training:[0,4,1,""],defaultconfig:[0,4,1,""],execute:[0,4,1,""],save_config:[0,4,1,""],set:[0,4,1,""]},"WORC.addexceptions":{WORCAssertionError:[0,5,1,""],WORCError:[0,5,1,""],WORCIOError:[0,5,1,""],WORCIndexError:[0,5,1,""],WORCKeyError:[0,5,1,""],WORCNotImplementedError:[0,5,1,""],WORCTypeError:[0,5,1,""],WORCValueError:[0,5,1,""]},"WORC.addexceptions.WORCAssertionError":{__module__:[0,3,1,""]},"WORC.addexceptions.WORCError":{__module__:[0,3,1,""],__weakref__:[0,3,1,""]},"WORC.addexceptions.WORCIOError":{__module__:[0,3,1,""],__weakref__:[0,3,1,""]},"WORC.addexceptions.WORCIndexError":{__module__:[0,3,1,""]},"WORC.addexceptions.WORCKeyError":{__module__:[0,3,1,""]},"WORC.addexceptions.WORCNotImplementedError":{__module__:[0,3,1,""]},"WORC.addexceptions.WORCTypeError":{__module__:[0,3,1,""]},"WORC.addexceptions.WORCValueError":{__module__:[0,3,1,""]},"WORC.classification":{AdvancedSampler:[2,0,0,"-"],ObjectSampler:[2,0,0,"-"],SearchCV:[2,0,0,"-"],construct_classifier:[2,0,0,"-"],createfixedsplits:[2,0,0,"-"],crossval:[2,0,0,"-"],fitandscore:[2,0,0,"-"],metrics:[2,0,0,"-"],parameter_optimization:[2,0,0,"-"],regressors:[2,0,0,"-"],smac:[2,0,0,"-"],trainclassifier:[2,0,0,"-"]},"WORC.classification.AdvancedSampler":{AdvancedSampler:[2,2,1,""],boolean_uniform:[2,2,1,""],discrete_uniform:[2,2,1,""],exp_uniform:[2,2,1,""],log_uniform:[2,2,1,""]},"WORC.classification.AdvancedSampler.AdvancedSampler":{__dict__:[2,3,1,""],__init__:[2,4,1,""],__iter__:[2,4,1,""],__len__:[2,4,1,""],__module__:[2,3,1,""],__weakref__:[2,3,1,""]},"WORC.classification.AdvancedSampler.boolean_uniform":{__dict__:[2,3,1,""],__init__:[2,4,1,""],__module__:[2,3,1,""],__weakref__:[2,3,1,""],rvs:[2,4,1,""]},"WORC.classification.AdvancedSampler.discrete_uniform":{__dict__:[2,3,1,""],__init__:[2,4,1,""],__module__:[2,3,1,""],__weakref__:[2,3,1,""],rvs:[2,4,1,""]},"WORC.classification.AdvancedSampler.exp_uniform":{__dict__:[2,3,1,""],__init__:[2,4,1,""],__module__:[2,3,1,""],__weakref__:[2,3,1,""],rvs:[2,4,1,""]},"WORC.classification.AdvancedSampler.log_uniform":{__dict__:[2,3,1,""],__init__:[2,4,1,""],__module__:[2,3,1,""],__weakref__:[2,3,1,""],rvs:[2,4,1,""]},"WORC.classification.ObjectSampler":{ObjectSampler:[2,2,1,""]},"WORC.classification.ObjectSampler.ObjectSampler":{__dict__:[2,3,1,""],__init__:[2,4,1,""],__module__:[2,3,1,""],__weakref__:[2,3,1,""],fit:[2,4,1,""],init_ADASYN:[2,4,1,""],init_BorderlineSMOTE:[2,4,1,""],init_NearMiss:[2,4,1,""],init_NeighbourhoodCleaningRule:[2,4,1,""],init_RandomOverSampling:[2,4,1,""],init_RandomUnderSampling:[2,4,1,""],init_SMOTE:[2,4,1,""],init_SMOTEENN:[2,4,1,""],init_SMOTETomek:[2,4,1,""],transform:[2,4,1,""]},"WORC.classification.SearchCV":{BaseSearchCV:[2,2,1,""],BaseSearchCVJoblib:[2,2,1,""],BaseSearchCVSMAC:[2,2,1,""],BaseSearchCVfastr:[2,2,1,""],Ensemble:[2,2,1,""],GridSearchCVJoblib:[2,2,1,""],GridSearchCVfastr:[2,2,1,""],GuidedSearchCVSMAC:[2,2,1,""],RandomizedSearchCVJoblib:[2,2,1,""],RandomizedSearchCVfastr:[2,2,1,""],chunks:[2,1,1,""],chunksdict:[2,1,1,""],rms_score:[2,1,1,""],sar_score:[2,1,1,""]},"WORC.classification.SearchCV.BaseSearchCV":{__abstractmethods__:[2,3,1,""],__init__:[2,4,1,""],__module__:[2,3,1,""],create_ensemble:[2,4,1,""],decision_function:[2,4,1,""],inverse_transform:[2,4,1,""],predict:[2,4,1,""],predict_log_proba:[2,4,1,""],predict_proba:[2,4,1,""],preprocess:[2,4,1,""],process_fit:[2,4,1,""],refit_and_score:[2,4,1,""],score:[2,4,1,""],transform:[2,4,1,""]},"WORC.classification.SearchCV.BaseSearchCVJoblib":{__abstractmethods__:[2,3,1,""],__module__:[2,3,1,""]},"WORC.classification.SearchCV.BaseSearchCVSMAC":{__abstractmethods__:[2,3,1,""],__module__:[2,3,1,""]},"WORC.classification.SearchCV.BaseSearchCVfastr":{__abstractmethods__:[2,3,1,""],__module__:[2,3,1,""]},"WORC.classification.SearchCV.Ensemble":{__abstractmethods__:[2,3,1,""],__init__:[2,4,1,""],__module__:[2,3,1,""],decision_function:[2,4,1,""],inverse_transform:[2,4,1,""],predict:[2,4,1,""],predict_log_proba:[2,4,1,""],predict_proba:[2,4,1,""],transform:[2,4,1,""]},"WORC.classification.SearchCV.GridSearchCVJoblib":{__abstractmethods__:[2,3,1,""],__init__:[2,4,1,""],__module__:[2,3,1,""],fit:[2,4,1,""]},"WORC.classification.SearchCV.GridSearchCVfastr":{__abstractmethods__:[2,3,1,""],__init__:[2,4,1,""],__module__:[2,3,1,""],fit:[2,4,1,""]},"WORC.classification.SearchCV.GuidedSearchCVSMAC":{__abstractmethods__:[2,3,1,""],__init__:[2,4,1,""],__module__:[2,3,1,""],fit:[2,4,1,""]},"WORC.classification.SearchCV.RandomizedSearchCVJoblib":{__abstractmethods__:[2,3,1,""],__init__:[2,4,1,""],__module__:[2,3,1,""],fit:[2,4,1,""]},"WORC.classification.SearchCV.RandomizedSearchCVfastr":{__abstractmethods__:[2,3,1,""],__init__:[2,4,1,""],__module__:[2,3,1,""],fit:[2,4,1,""]},"WORC.classification.construct_classifier":{construct_SVM:[2,1,1,""],construct_classifier:[2,1,1,""],create_param_grid:[2,1,1,""]},"WORC.classification.createfixedsplits":{createfixedsplits:[2,1,1,""]},"WORC.classification.crossval":{LOO_cross_validation:[2,1,1,""],crossval:[2,1,1,""],nocrossval:[2,1,1,""],random_split_cross_validation:[2,1,1,""],test_RS_Ensemble:[2,1,1,""]},"WORC.classification.fitandscore":{delete_cc_para:[2,1,1,""],delete_nonestimator_parameters:[2,1,1,""],fit_and_score:[2,1,1,""],replacenan:[2,1,1,""]},"WORC.classification.metrics":{ICC:[2,1,1,""],ICC_anova:[2,1,1,""],check_multimetric_scoring:[2,1,1,""],check_scoring:[2,1,1,""],f1_weighted_predictproba:[2,1,1,""],multi_class_auc:[2,1,1,""],multi_class_auc_score:[2,1,1,""],pairwise_auc:[2,1,1,""],performance_multilabel:[2,1,1,""],performance_singlelabel:[2,1,1,""]},"WORC.classification.parameter_optimization":{guided_search_parameters:[2,1,1,""],random_search_parameters:[2,1,1,""]},"WORC.classification.smac":{build_smac_config:[2,1,1,""]},"WORC.classification.trainclassifier":{add_parameters_to_grid:[2,1,1,""],trainclassifier:[2,1,1,""]},"WORC.detectors":{detectors:[4,0,0,"-"]},"WORC.detectors.detectors":{AbstractDetector:[4,2,1,""],BigrClusterDetector:[4,2,1,""],CsvDetector:[4,2,1,""],DebugDetector:[4,2,1,""],HostnameDetector:[4,2,1,""],LinuxDetector:[4,2,1,""],SnelliusClusterDetector:[4,2,1,""],WORCDirectoryDetector:[4,2,1,""]},"WORC.detectors.detectors.AbstractDetector":{__abstractmethods__:[4,3,1,""],__dict__:[4,3,1,""],__module__:[4,3,1,""],__weakref__:[4,3,1,""],do_detection:[4,4,1,""]},"WORC.detectors.detectors.BigrClusterDetector":{__abstractmethods__:[4,3,1,""],__module__:[4,3,1,""]},"WORC.detectors.detectors.CsvDetector":{__abstractmethods__:[4,3,1,""],__init__:[4,4,1,""],__module__:[4,3,1,""]},"WORC.detectors.detectors.DebugDetector":{__abstractmethods__:[4,3,1,""],__module__:[4,3,1,""]},"WORC.detectors.detectors.HostnameDetector":{__abstractmethods__:[4,3,1,""],__init__:[4,4,1,""],__module__:[4,3,1,""]},"WORC.detectors.detectors.LinuxDetector":{__abstractmethods__:[4,3,1,""],__module__:[4,3,1,""]},"WORC.detectors.detectors.SnelliusClusterDetector":{__abstractmethods__:[4,3,1,""],__module__:[4,3,1,""]},"WORC.detectors.detectors.WORCDirectoryDetector":{__abstractmethods__:[4,3,1,""],__module__:[4,3,1,""]},"WORC.exampledata":{create_example_data:[5,0,0,"-"],datadownloader:[5,0,0,"-"]},"WORC.exampledata.create_example_data":{create_random_features:[5,1,1,""]},"WORC.exampledata.datadownloader":{download_HeadAndNeck:[5,1,1,""],download_project:[5,1,1,""],download_subject:[5,1,1,""]},"WORC.export":{hyper_params_exporter:[6,0,0,"-"]},"WORC.export.hyper_params_exporter":{export_hyper_params_to_latex:[6,1,1,""]},"WORC.facade":{basicworc:[7,0,0,"-"],simpleworc:[7,0,0,"-"]},"WORC.facade.basicworc":{BasicWORC:[7,2,1,""]},"WORC.facade.basicworc.BasicWORC":{__init__:[7,4,1,""],__module__:[7,3,1,""],execute:[7,4,1,""]},"WORC.facade.helpers":{configbuilder:[8,0,0,"-"],exceptions:[8,0,0,"-"],processing:[8,0,0,"-"]},"WORC.facade.helpers.configbuilder":{ConfigBuilder:[8,2,1,""]},"WORC.facade.helpers.configbuilder.ConfigBuilder":{__dict__:[8,3,1,""],__init__:[8,4,1,""],__module__:[8,3,1,""],__weakref__:[8,3,1,""],build_config:[8,4,1,""],coarse_overrides:[8,4,1,""],custom_config_overrides:[8,4,1,""],estimator_scoring_overrides:[8,4,1,""],fullprint:[8,4,1,""]},"WORC.facade.helpers.exceptions":{InvalidCsvFileException:[8,5,1,""],InvalidOrderException:[8,5,1,""],NoFeaturesFoundException:[8,5,1,""],NoImagesFoundException:[8,5,1,""],NoMasksFoundException:[8,5,1,""],NoSegmentationsFoundException:[8,5,1,""],PathNotFoundException:[8,5,1,""]},"WORC.facade.helpers.exceptions.InvalidCsvFileException":{__init__:[8,4,1,""],__module__:[8,3,1,""],__weakref__:[8,3,1,""]},"WORC.facade.helpers.exceptions.InvalidOrderException":{__init__:[8,4,1,""],__module__:[8,3,1,""],__weakref__:[8,3,1,""]},"WORC.facade.helpers.exceptions.NoFeaturesFoundException":{__init__:[8,4,1,""],__module__:[8,3,1,""],__weakref__:[8,3,1,""]},"WORC.facade.helpers.exceptions.NoImagesFoundException":{__init__:[8,4,1,""],__module__:[8,3,1,""],__weakref__:[8,3,1,""]},"WORC.facade.helpers.exceptions.NoMasksFoundException":{__init__:[8,4,1,""],__module__:[8,3,1,""],__weakref__:[8,3,1,""]},"WORC.facade.helpers.exceptions.NoSegmentationsFoundException":{__init__:[8,4,1,""],__module__:[8,3,1,""],__weakref__:[8,3,1,""]},"WORC.facade.helpers.exceptions.PathNotFoundException":{__init__:[8,4,1,""],__module__:[8,3,1,""],__weakref__:[8,3,1,""]},"WORC.facade.helpers.processing":{convert_radiomix_features:[8,1,1,""]},"WORC.facade.simpleworc":{SimpleWORC:[7,2,1,""]},"WORC.facade.simpleworc.SimpleWORC":{__dict__:[7,3,1,""],__init__:[7,4,1,""],__module__:[7,3,1,""],__weakref__:[7,3,1,""],add_config_overrides:[7,4,1,""],add_evaluation:[7,4,1,""],binary_classification:[7,4,1,""],count_num_subjects:[7,4,1,""],execute:[7,4,1,""],features_from_radiomix_xlsx:[7,4,1,""],features_from_this_directory:[7,4,1,""],images_from_this_directory:[7,4,1,""],labels_from_this_file:[7,4,1,""],masks_from_this_directory:[7,4,1,""],multiclass_classification:[7,4,1,""],predict_labels:[7,4,1,""],regression:[7,4,1,""],segmentations_from_this_directory:[7,4,1,""],semantics_from_this_file:[7,4,1,""],set_fixed_splits:[7,4,1,""],set_image_types:[7,4,1,""],set_multicore_execution:[7,4,1,""],set_tmpdir:[7,4,1,""],survival:[7,4,1,""]},"WORC.featureprocessing":{ComBat:[10,0,0,"-"],Decomposition:[10,0,0,"-"],FeatureConverter:[10,0,0,"-"],ICCThreshold:[10,0,0,"-"],Imputer:[10,0,0,"-"],OneHotEncoderWrapper:[10,0,0,"-"],Preprocessor:[10,0,0,"-"],Relief:[10,0,0,"-"],Scalers:[10,0,0,"-"],SelectGroups:[10,0,0,"-"],SelectIndividuals:[10,0,0,"-"],StatisticalTestFeatures:[10,0,0,"-"],StatisticalTestThreshold:[10,0,0,"-"],VarianceThreshold:[10,0,0,"-"]},"WORC.featureprocessing.ComBat":{ComBat:[10,1,1,""],ComBatMatlab:[10,1,1,""],ComBatPython:[10,1,1,""],Synthetictest:[10,1,1,""]},"WORC.featureprocessing.Decomposition":{Decomposition:[10,1,1,""]},"WORC.featureprocessing.FeatureConverter":{FeatureConverter:[10,1,1,""],convert_PREDICT:[10,1,1,""],convert_pyradiomics:[10,1,1,""],convert_pyradiomics_featurevector:[10,1,1,""]},"WORC.featureprocessing.ICCThreshold":{ICCThreshold:[10,2,1,""],convert_features_ICC_threshold:[10,1,1,""]},"WORC.featureprocessing.ICCThreshold.ICCThreshold":{__abstractmethods__:[10,3,1,""],__init__:[10,4,1,""],__module__:[10,3,1,""],fit:[10,4,1,""],transform:[10,4,1,""]},"WORC.featureprocessing.Imputer":{Imputer:[10,2,1,""]},"WORC.featureprocessing.Imputer.Imputer":{__dict__:[10,3,1,""],__init__:[10,4,1,""],__module__:[10,3,1,""],__weakref__:[10,3,1,""],fit:[10,4,1,""],transform:[10,4,1,""]},"WORC.featureprocessing.OneHotEncoderWrapper":{OneHotEncoderWrapper:[10,2,1,""],test:[10,1,1,""]},"WORC.featureprocessing.OneHotEncoderWrapper.OneHotEncoderWrapper":{__dict__:[10,3,1,""],__init__:[10,4,1,""],__module__:[10,3,1,""],__weakref__:[10,3,1,""],fit:[10,4,1,""],transform:[10,4,1,""]},"WORC.featureprocessing.Preprocessor":{Preprocessor:[10,2,1,""]},"WORC.featureprocessing.Preprocessor.Preprocessor":{__dict__:[10,3,1,""],__init__:[10,4,1,""],__module__:[10,3,1,""],__weakref__:[10,3,1,""],fit:[10,4,1,""],transform:[10,4,1,""]},"WORC.featureprocessing.Relief":{SelectMulticlassRelief:[10,2,1,""]},"WORC.featureprocessing.Relief.SelectMulticlassRelief":{__abstractmethods__:[10,3,1,""],__init__:[10,4,1,""],__module__:[10,3,1,""],fit:[10,4,1,""],multi_class_relief:[10,4,1,""],single_class_relief:[10,4,1,""],transform:[10,4,1,""]},"WORC.featureprocessing.Scalers":{LogStandardScaler:[10,2,1,""],RobustStandardScaler:[10,2,1,""],WORCScaler:[10,2,1,""],test:[10,1,1,""]},"WORC.featureprocessing.Scalers.LogStandardScaler":{__module__:[10,3,1,""],fit:[10,4,1,""]},"WORC.featureprocessing.Scalers.RobustStandardScaler":{__module__:[10,3,1,""],fit:[10,4,1,""]},"WORC.featureprocessing.Scalers.WORCScaler":{__init__:[10,4,1,""],__module__:[10,3,1,""],fit:[10,4,1,""],transform:[10,4,1,""]},"WORC.featureprocessing.SelectGroups":{SelectGroups:[10,2,1,""]},"WORC.featureprocessing.SelectGroups.SelectGroups":{__abstractmethods__:[10,3,1,""],__init__:[10,4,1,""],__module__:[10,3,1,""],fit:[10,4,1,""],transform:[10,4,1,""]},"WORC.featureprocessing.SelectIndividuals":{SelectIndividuals:[10,2,1,""]},"WORC.featureprocessing.SelectIndividuals.SelectIndividuals":{__abstractmethods__:[10,3,1,""],__init__:[10,4,1,""],__module__:[10,3,1,""],fit:[10,4,1,""],transform:[10,4,1,""]},"WORC.featureprocessing.StatisticalTestFeatures":{StatisticalTestFeatures:[10,1,1,""]},"WORC.featureprocessing.StatisticalTestThreshold":{StatisticalTestThreshold:[10,2,1,""]},"WORC.featureprocessing.StatisticalTestThreshold.StatisticalTestThreshold":{__abstractmethods__:[10,3,1,""],__init__:[10,4,1,""],__module__:[10,3,1,""],fit:[10,4,1,""],transform:[10,4,1,""]},"WORC.featureprocessing.VarianceThreshold":{VarianceThresholdMean:[10,2,1,""],selfeat_variance:[10,1,1,""]},"WORC.featureprocessing.VarianceThreshold.VarianceThresholdMean":{__abstractmethods__:[10,3,1,""],__init__:[10,4,1,""],__module__:[10,3,1,""],fit:[10,4,1,""],transform:[10,4,1,""]},"WORC.plotting":{compute_CI:[11,0,0,"-"],linstretch:[11,0,0,"-"],plot_ROC:[11,0,0,"-"],plot_barchart:[11,0,0,"-"],plot_boxplot_features:[11,0,0,"-"],plot_boxplot_performance:[11,0,0,"-"],plot_errors:[11,0,0,"-"],plot_estimator_performance:[11,0,0,"-"],plot_hyperparameters:[11,0,0,"-"],plot_images:[11,0,0,"-"],plot_pvalues_features:[11,0,0,"-"],plot_ranked_scores:[11,0,0,"-"],plotminmaxresponse:[11,0,0,"-"]},"WORC.plotting.compute_CI":{compute_confidence:[11,1,1,""],compute_confidence_bootstrap:[11,1,1,""],compute_confidence_logit:[11,1,1,""]},"WORC.plotting.linstretch":{linstretch:[11,1,1,""]},"WORC.plotting.plot_ROC":{curve_thresholding:[11,1,1,""],main:[11,1,1,""],plot_PRC_CIc:[11,1,1,""],plot_ROC:[11,1,1,""],plot_ROC_CIc:[11,1,1,""],plot_single_PRC:[11,1,1,""],plot_single_ROC:[11,1,1,""]},"WORC.plotting.plot_barchart":{count_parameters:[11,1,1,""],main:[11,1,1,""],paracheck:[11,1,1,""],plot_barchart:[11,1,1,""],plot_bars:[11,1,1,""]},"WORC.plotting.plot_boxplot_features":{generate_feature_boxplots:[11,1,1,""],plot_boxplot_features:[11,1,1,""]},"WORC.plotting.plot_boxplot_performance":{generate_performance_boxplots:[11,1,1,""],test:[11,1,1,""]},"WORC.plotting.plot_errors":{plot_errors:[11,1,1,""]},"WORC.plotting.plot_estimator_performance":{combine_multiple_estimators:[11,1,1,""],compute_statistics:[11,1,1,""],fit_thresholds:[11,1,1,""],main:[11,1,1,""],plot_estimator_performance:[11,1,1,""]},"WORC.plotting.plot_hyperparameters":{plot_hyperparameters:[11,1,1,""]},"WORC.plotting.plot_images":{bbox_2D:[11,1,1,""],extract_boundary:[11,1,1,""],plot_im_and_overlay:[11,1,1,""],slicer:[11,1,1,""]},"WORC.plotting.plot_pvalues_features":{manhattan_importance:[11,1,1,""]},"WORC.plotting.plot_ranked_scores":{flatten_object:[11,1,1,""],main:[11,1,1,""],plot_ranked_images:[11,1,1,""],plot_ranked_percentages:[11,1,1,""],plot_ranked_posteriors:[11,1,1,""],plot_ranked_scores:[11,1,1,""]},"WORC.plotting.plotminmaxresponse":{main:[11,1,1,""]},"WORC.processing":{ExtractNLargestBlobsn:[12,0,0,"-"],classes:[12,0,0,"-"],helpers:[12,0,0,"-"],label_processing:[12,0,0,"-"],preprocessing:[12,0,0,"-"],segmentix:[12,0,0,"-"]},"WORC.processing.ExtractNLargestBlobsn":{ExtractNLargestBlobsn:[12,1,1,""]},"WORC.processing.classes":{"switch":[12,2,1,""]},"WORC.processing.classes.switch":{__dict__:[12,3,1,""],__init__:[12,4,1,""],__iter__:[12,4,1,""],__module__:[12,3,1,""],__weakref__:[12,3,1,""],match:[12,4,1,""]},"WORC.processing.helpers":{check_image_orientation:[12,1,1,""],resample_image:[12,1,1,""],transpose_image:[12,1,1,""]},"WORC.processing.label_processing":{findlabeldata:[12,1,1,""],load_config_XNAT:[12,1,1,""],load_label_XNAT:[12,1,1,""],load_label_csv:[12,1,1,""],load_label_txt:[12,1,1,""],load_labels:[12,1,1,""]},"WORC.processing.preprocessing":{bias_correct_image:[12,1,1,""],clip_image:[12,1,1,""],normalize_image:[12,1,1,""],preprocess:[12,1,1,""]},"WORC.processing.segmentix":{dilate_contour:[12,1,1,""],get_ring:[12,1,1,""],mask_contour:[12,1,1,""],segmentix:[12,1,1,""]},"WORC.resources":{fastr_tools:[15,0,0,"-"]},"WORC.resources.fastr_tests":{CalcFeatures_test:[14,0,0,"-"],elastix_test:[14,0,0,"-"],segmentix_test:[14,0,0,"-"]},"WORC.resources.fastr_tests.CalcFeatures_test":{create_network:[14,1,1,""],main:[14,1,1,""],sink_data:[14,1,1,""],source_data:[14,1,1,""]},"WORC.resources.fastr_tests.elastix_test":{create_network:[14,1,1,""],main:[14,1,1,""],sink_data:[14,1,1,""],source_data:[14,1,1,""]},"WORC.resources.fastr_tests.segmentix_test":{create_network:[14,1,1,""],main:[14,1,1,""],sink_data:[14,1,1,""],source_data:[14,1,1,""]},"WORC.statistics":{delong:[16,0,0,"-"]},"WORC.statistics.delong":{calc_pvalue:[16,1,1,""],compute_ground_truth_statistics:[16,1,1,""],compute_midrank:[16,1,1,""],compute_midrank_weight:[16,1,1,""],delong_roc_test:[16,1,1,""],delong_roc_variance:[16,1,1,""],fastDeLong:[16,1,1,""]},"WORC.tests":{WORCTutorialSimple_unittest_multiclass:[17,0,0,"-"],WORCTutorialSimple_unittest_regression:[17,0,0,"-"],test_combat:[17,0,0,"-"],test_helpers:[17,0,0,"-"],test_iccthreshold:[17,0,0,"-"],test_plot_errors:[17,0,0,"-"],test_validators:[17,0,0,"-"]},"WORC.tests.WORCTutorialSimple_unittest_multiclass":{main:[17,1,1,""]},"WORC.tests.WORCTutorialSimple_unittest_regression":{main:[17,1,1,""]},"WORC.tests.test_combat":{test_combat:[17,1,1,""],test_combat_fastr:[17,1,1,""]},"WORC.tests.test_helpers":{find_exampledatadir:[17,1,1,""],find_testdatadir:[17,1,1,""]},"WORC.tests.test_iccthreshold":{test_iccthreshold:[17,1,1,""]},"WORC.tests.test_plot_errors":{test_plot_errors:[17,1,1,""]},"WORC.tests.test_validators":{test_invalidlabelsvalidator_columnsubstring:[17,1,1,""],test_invalidlabelsvalidator_patientcolumn:[17,1,1,""],test_invalidlabelsvalidator_patientsubstring:[17,1,1,""],test_invalidlabelsvalidator_validconfig:[17,1,1,""]},"WORC.tools":{Elastix:[18,0,0,"-"],Evaluate:[18,0,0,"-"],Inference:[18,0,0,"-"],Slicer:[18,0,0,"-"],Transformix:[18,0,0,"-"],createfixedsplits:[18,0,0,"-"],fingerprinting:[18,0,0,"-"]},"WORC.tools.Elastix":{Elastix:[18,2,1,""]},"WORC.tools.Elastix.Elastix":{__dict__:[18,3,1,""],__init__:[18,4,1,""],__module__:[18,3,1,""],__weakref__:[18,3,1,""],addchangeorder:[18,4,1,""],create_bbox:[18,4,1,""],create_network:[18,4,1,""],execute:[18,4,1,""],getparametermap:[18,4,1,""]},"WORC.tools.Evaluate":{Evaluate:[18,2,1,""]},"WORC.tools.Evaluate.Evaluate":{__dict__:[18,3,1,""],__init__:[18,4,1,""],__module__:[18,3,1,""],__weakref__:[18,3,1,""],create_links_Addon:[18,4,1,""],create_links_Standalone:[18,4,1,""],create_network:[18,4,1,""],execute:[18,4,1,""],set:[18,4,1,""]},"WORC.tools.Inference":{Inference:[18,2,1,""]},"WORC.tools.Inference.Inference":{__dict__:[18,3,1,""],__init__:[18,4,1,""],__module__:[18,3,1,""],__weakref__:[18,3,1,""],create_network:[18,4,1,""]},"WORC.tools.Slicer":{Slicer:[18,2,1,""]},"WORC.tools.Slicer.Slicer":{__dict__:[18,3,1,""],__init__:[18,4,1,""],__module__:[18,3,1,""],__weakref__:[18,3,1,""],create_network:[18,4,1,""],execute:[18,4,1,""],set:[18,4,1,""]},"WORC.tools.Transformix":{Transformix:[18,2,1,""]},"WORC.tools.Transformix.Transformix":{__dict__:[18,3,1,""],__init__:[18,4,1,""],__module__:[18,3,1,""],__weakref__:[18,3,1,""],create_network:[18,4,1,""],execute:[18,4,1,""]},"WORC.tools.createfixedsplits":{createfixedsplits:[18,1,1,""]},"WORC.tools.fingerprinting":{Fingerprinter:[18,2,1,""]},"WORC.tools.fingerprinting.Fingerprinter":{__dict__:[18,3,1,""],__init__:[18,4,1,""],__module__:[18,3,1,""],__weakref__:[18,3,1,""],execute:[18,4,1,""]},"WORC.validators":{preflightcheck:[19,0,0,"-"]},"WORC.validators.preflightcheck":{AbstractValidator:[19,2,1,""],EvaluateValidator:[19,2,1,""],InvalidLabelsValidator:[19,2,1,""],MinSubjectsValidator:[19,2,1,""],SamplesWarning:[19,2,1,""],SimpleValidator:[19,2,1,""],ValidatorsFactory:[19,2,1,""]},"WORC.validators.preflightcheck.AbstractValidator":{__abstractmethods__:[19,3,1,""],__dict__:[19,3,1,""],__module__:[19,3,1,""],__weakref__:[19,3,1,""],do_validation:[19,4,1,""]},"WORC.validators.preflightcheck.EvaluateValidator":{__abstractmethods__:[19,3,1,""],__module__:[19,3,1,""]},"WORC.validators.preflightcheck.InvalidLabelsValidator":{__abstractmethods__:[19,3,1,""],__module__:[19,3,1,""]},"WORC.validators.preflightcheck.MinSubjectsValidator":{__abstractmethods__:[19,3,1,""],__module__:[19,3,1,""]},"WORC.validators.preflightcheck.SamplesWarning":{__abstractmethods__:[19,3,1,""],__module__:[19,3,1,""]},"WORC.validators.preflightcheck.SimpleValidator":{__abstractmethods__:[19,3,1,""],__module__:[19,3,1,""]},"WORC.validators.preflightcheck.ValidatorsFactory":{__dict__:[19,3,1,""],__module__:[19,3,1,""],__weakref__:[19,3,1,""],factor_validators:[19,6,1,""]},WORC:{WORC:[0,0,0,"-"],__init__:[0,0,0,"-"],addexceptions:[0,0,0,"-"],classification:[2,0,0,"-"],facade:[7,0,0,"-"],featureprocessing:[10,0,0,"-"],plotting:[11,0,0,"-"]}},objnames:{"0":["py","module","Python module"],"1":["py","function","Python function"],"2":["py","class","Python class"],"3":["py","attribute","Python attribute"],"4":["py","method","Python method"],"5":["py","exception","Python exception"],"6":["py","staticmethod","Python static method"]},objtypes:{"0":"py:module","1":"py:function","2":"py:class","3":"py:attribute","4":"py:method","5":"py:exception","6":"py:staticmethod"},terms:{"0284186x":10,"06875v1":10,"0a1":71,"0rc1":64,"105741d":64,"1st":2,"1x1x1":[53,65,67],"22nd":75,"2nd":[2,71],"5th":10,"95th":10,"95varianc":[34,35,67],"98nd":71,"boolean":[0,1,2,7,10,11,12,20,26,32,34,42,46,50,54,55,62,64,66,67],"case":[2,12,25,66,67,69,71,75],"catch":[0,66],"class":[0,2,4,7,8,10,16,18,19,64,65,66,69,75],"default":[0,1,2,7,10,11,12,18,20,22,23,24,26,28,29,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,65,66,67,69,71,74,75],"export":[0,64,73],"final":[2,10,12,65,67,75],"float":[2,10,11,12,16,22,26,34,42,44,45,52,54,56,66,67,71],"function":[0,2,4,7,8,10,11,12,17,18,19,23,53,64,66,67,68,69,70,71,72,74,75],"gr\u00fcnhagen":64,"import":[2,10,35,64,66,67,73,75],"int":[2,10,11,12],"long":71,"new":[0,64,65,66,69,71,73],"return":[0,1,2,10,11,12,16,66,69],"short":71,"static":[19,45,67],"switch":[10,12,66],"throw":[66,71],"true":[0,2,5,7,10,11,12,22,27,30,33,34,40,41,43,44,46,47,51,52,53,54,58,59,60,62,63,65,67,74,75],"try":[2,65,73],"while":[2,12,43,65,66,67,71],Added:64,Adding:64,Age:74,And:10,Els:[],For:[0,2,7,10,23,45,51,64,65,66,67,68,69,70,71,73,74,75],IDs:[12,70],Not:[2,7,66,73],One:[2,57,66,67],PCs:[23,67],SVs:[],That:10,The:[0,1,2,7,10,11,12,16,27,35,45,49,64,65,66,67,68,69,70,71,72,73],Then:2,There:[65,66,74,75],These:[11,67,69,71,74,75],USING:64,Use:[2,7,20,21,23,32,33,50,51,56,57,66,67,71,74],Used:74,Using:[64,73],Vos:64,Was:66,Will:7,With:64,__abstractmethods__:[2,4,10,19],__dict__:[0,2,4,7,8,10,12,18,19],__doc__:[0,2,4,7,8,10,12,18,19],__file__:74,__init__:[0,2,4,7,8,10,12,18],__iter__:[2,12],__len__:2,__module__:[0,2,4,7,8,10,12,18,19],__weakref__:[0,2,4,7,8,10,12,18,19],_abc_data:[4,19],_abc_impl:[4,19],_base:10,_cluster_config_overrid:8,_data:10,_debug_config_overrid:8,_format_result:2,_generate_detector_messag:[4,19],_is_detect:4,_set_and_validate_estim:7,_valid:[7,19],abbrevi:[23,67],abc:[4,19],abl:66,about:71,abov:[2,10,65,66,67,71,73,74,75],absolut:66,abspath:74,abstractdetector:4,abstractvalid:19,accept:[2,42,66,67],accorad:2,accord:[2,10,11,71,74,75],accordingli:[65,74],account:[10,11,75],accur:[2,4,8,10,12,18],accuraci:[2,11,75],acquisit:[65,73],across:2,act:67,actual:[0,2,7,31,64,65,66,67,68,69,73,75],adaboost:[23,65,66,67],adaboost_learning_r:[22,23,67],adaboost_n_estim:[22,23,67],adaboostclassifi:[22,67],adaboostregressor:[22,67],adapt:[64,65,73],adasyn:[2,56,66,67],adc:[45,67,74],add:[0,2,7,10,18,66,69,70,71,72,74,75],add_combat:0,add_config_overrid:7,add_elastix:0,add_elastix_sourcesandsink:0,add_evalu:[0,7,74,75],add_feature_calcul:[0,69],add_fingerprint:0,add_parameters_to_grid:2,add_preprocess:0,add_segmentix:0,add_tool:0,addchangeord:18,added:[10,18,25,65,66,67,69,75],addexcept:64,addinf:66,adding:[18,67,69,74,75],addit:[0,7,41,64,66,67,71,74,75],addition:[1,10,11,65,66,67,75],address:64,adequ:69,adher:66,adjust:[2,11,66,67,75],adopt:[2,16,57,66,67],advanc:[64,74,75],advancedsampl:[0,64],advantag:67,advic:[55,65,67,69,74,75],affect:2,affin:18,after:[0,2,10,41,65,66,67,69,70,71,74,75],afterward:[7,10],again:[67,71,73,74],age:[44,67,71,75],agesex:11,aggreg:71,agument:12,aim:64,aka:75,alejandro:71,alex:71,algorithm:[2,16,65,66,67,73],align:[65,75],all:[0,1,2,7,10,11,12,22,25,41,43,47,51,56,62,63,65,66,67,68,69,70,71,73,74,75],allign:75,allow:[2,7,66,70,71,72],allow_non:2,along:[10,65,73],alpha:11,alpha_new:[],alpha_old:[],alreadi:[65,67,73,75],als:75,also:[0,2,7,10,23,35,57,64,65,66,67,69,70,71,73,74,75],alter:[2,12,66,67,71],altern:[66,70,75],although:73,altner:70,alwai:[2,10,59,66,67,73,74,75],aminn:65,among:[2,10,11,64,67],amount:[71,73],anaconda:[70,74],analys:74,analysi:[35,64,67,71,75],analyticsvidhya:67,angl:[45,67,71],angu:64,angular:71,ani:[2,10,11,22,42,51,66,67,70,71,73,74,75],annual:64,anoth:[12,65,73,75],anova:2,any_structur:[],anymor:66,anyth:73,anywai:10,apach:64,api:[57,67],appear:71,append:[66,67,70,75],appendix:[],appli:[0,2,7,10,12,41,53,65,66,67,71,73],applic:[12,64,71,73],approach:[2,10,64,65,66,67,73],appropri:0,apt:65,arbitrari:71,area:[16,65,71,75],arg:[1,2,4,12,16,19],argmax:11,argu:71,argument:[0,1,2,12,66,69,70],arif:64,around:[2,7,18,61,65,67,69,75],arrai:[1,2,10,11,12,16,64],artefact:71,articl:[16,64,71],arxiv:[10,64,65],asm:71,aspect:71,assertionerror:0,assess:[7,10,66],assign:[2,43,45,67],assist:[64,71],associ:2,assum:[2,10,53,65,67,70,73,74,75],assumesameimageandmaskmetadata:[12,40,41,67],assumpt:[2,41,67,75],attribut:[0,2,4,7,8,10,12,18,19,64,66],atyp:75,auc:[2,16,65,75],author:16,auto:[2,56,67],autoencod:65,autom:64,automat:[0,7,12,43,64,65,66,67,71,73,74],avail:[2,7,66,68,73],averag:[2,11,65,66],average_precision_weight:[42,67],avoid:[2,65,71],awai:71,axes:71,axi:[10,11,53,67,71],axial:[11,12,52,53,54,61,65,66,67,71],back:[66,70],backend:[41,66,67],backward:66,bag:[2,28,29,66,67],balanc:75,band:[7,75],bangma:64,barchart:[11,66,75],base:[0,2,4,5,7,8,10,12,18,19,23,35,53,65,66,67,71,75],baseestim:[2,10],baselin:73,basesearchcv:2,basesearchcvfastr:2,basesearchcvjoblib:2,basesearchcvsmac:2,basestr:7,basi:75,basic:[69,71,73,75],basicworc:[0,64,66,70,74,75],batch:[10,24,25,65,67],bay:[25,65,67],bayesian:[2,64,66],bbox_2d:11,bca:75,bcr:65,becaus:65,been:[0,10,11,64,65,71,73,74],befor:[0,2,7,10,45,65,66,67,70,71,73,74],beforehand:71,begin:[64,66],beginn:64,behavior:2,behaviour:66,being:[16,53,65,67],belong:[0,2,10],below:[0,2,35,51,65,67,70,71,73,74,75],benefit:[65,71,73],bengio:75,benign:64,bent:64,berlin:71,besid:[0,64,66,67,75],best:[2,11,65,66,67,68,73],best_estim:2,best_estimator_:2,best_index_:2,best_params_:2,best_score_:2,beta:2,better:[65,66],between:[2,10,18,22,23,35,45,64,65,66,67,71],bia:[12,53,65,66,67],bias_correct_imag:12,biascorrect:[52,53,67],biascorrection_mask:[52,53,67],big:66,bigr:[7,43,64,67,74],bigr_erasmusmc:2,bigrclusterdetector:4,bin:[55,64,65,67,69],binari:[2,7,10,11,12,64,65,66,74],binaru:74,binary_classif:[0,7,18,74],binaryimag:12,bincount:[54,55,67],binwidth:[54,55,67],bio:[],biomark:[64,71,73],biomed:64,bit:66,bitbucket:2,bitwise_xor:66,black:64,blazev:64,blob:[12,61,65,67,69],block:74,blog:67,bme:[],bmia:74,boht:71,bonferonni:10,book:64,bool:2,boolean_uniform:2,boost:[23,65,66,67],boostrap:66,bootstrap:[3,11,21,64,66,75],bootstrap_metr:11,bootstrap_n:11,border:65,borderlinesmot:[2,56,67],both:[2,11,64,65,66,67,69,71,73,75],bound:[12,18],boundari:[10,11,12,35,45,67],box:[18,64,67],boxplot:[11,66],braband:64,braf:64,branch:[0,23,67],breviti:74,british:64,broad:71,brought:73,bspline:65,budget:[58,59,67],budget_typ:[58,59,67],bug:66,bugfix:66,buggi:66,build:[0,18,64,66,73,74,75],build_config:8,build_smac_config:2,build_train:0,built:74,buisman:64,bulletin:10,busy:71,button:64,c_valu:[],cache_s:2,cad:2,caddementia:2,calc_pvalu:16,calcfeat_nod:0,calcfeatur:[40,66,67],calcfeatures_test:[0,13],calcul:[0,2,10,11,41,67,69],call:[2,66,69,71,74,75],callabl:2,can:[0,2,7,10,11,12,18,35,41,45,47,53,64,65,66,67,69,71,73,74,75],cancer:[64,71],candid:2,cannot:[2,64,65,66],captur:65,carcinoma:[],cardin:66,cartesiu:74,cartesiusclusterdetector:[],caruana:[2,11,28,66,67],cash:[67,73],cast:66,castillo:64,categor:[10,66],categori:75,caught:7,caus:65,center:[64,65,71],centr:71,certain:[2,7,18,65,66,67,71,75],cf_:10,cf_pyradiom:[40,67],challeg:2,challeng:[2,75],chang:[7,64,65,67,69,71,74],changelog:64,chapter:[7,64,65,67,68,70,71,72,74,75],characterist:[11,16,75],check:[2,7,12,51,53,65,66,67,69,75],check_image_orient:12,check_multimetric_scor:2,check_scor:2,checkorient:[52,53,67],checkspac:[52,53,67],chen:65,chi2:66,child:[23,67,69],choic:[2,11,59,64,67,73],choos:[2,29,53,66,67],chosen:[2,67,71],chunk:2,chunksdict:2,circular:71,circumv:65,cit1:65,cit2:65,cit3:65,class_i:2,class_j:2,class_weight:2,classfic:[43,67],classif:[0,3,7,23,49,66,69,70,71,74,75],classifi:[0,2,11,22,23,33,64,65,66,67,69,70,75],classifier_data:2,classifiermixin:[],classpi:2,clean:[57,66,67],clf:2,clinic:73,clip:[12,52,53,65,66,67],clip_imag:12,clipping_rang:[52,53,67],clone:74,closest:[],cluster:[2,7,23,43,64,66,67,73,74],cnb_alpha:[22,23,67],coars:[7,71,74],coarse_overrid:8,code:[65,67,74],coef0:2,coeffici:[10,65,75],col:[23,67],coliag:[44,45,63,67],coliage_featur:[10,62,63,67],coliage_features_:10,collabor:64,colleagu:73,color:11,colorbar:11,colorect:64,colormap:11,column:[2,7,10,64,71,75],com:[7,10,16,41,64,65,66,67,69,70,71,74,75],combat:[0,3,17,25,40,41,64,66],combatharmon:[10,41,67],combatmatlab:10,combatpython:10,combin:[1,2,10,11,25,32,33,64,65,66,67,68,71,73,75],combine_featur:1,combine_method:[1,32,33,67],combine_multiple_estim:11,comma:[2,10,22,24,36,37,44,67],command:[0,2,10,18,64,66,67,69,70,73,74],common:[2,7],commonli:[65,71],commun:74,compact:71,compar:[16,73],comparison:[64,71],compat:[1,8,10,12,65,66,67,69],compens:65,complement_label_1:74,complementari:71,complementnb:[23,67],complementnd:[22,67],complet:[2,66,67,74,75],complex:[71,75],compon:[10,18,35,65,66,67,73,75],comprehens:[65,68,71],comput:[0,2,7,10,11,16,17,45,55,64,65,66,67,71,73,74,75],compute_ci:[0,64],compute_confid:11,compute_confidence_bootstrap:11,compute_confidence_logit:11,compute_ground_truth_statist:16,compute_midrank:16,compute_midrank_weight:16,compute_statist:11,concept:[64,73],concern:73,concord:75,conda:70,condit:70,conduct:[2,66,75],confer:[64,71,75],conffid:66,confid:[7,11,66,75],config:[0,1,2,7,8,10,11,12,18,23,35,65,66,67,68,69,70,71,74,75],config_file_path:[1,6,12],config_io_classifi:[0,64,69],config_io_combat:[0,64],config_io_pyradiom:[0,64],config_preprocess:[0,64],config_segmentix:[0,64],config_sourc:0,config_worc:[0,64],configbuild:[0,7,66],configpars:[0,12,67],configur:[0,1,2,7,10,18,64,65,66,69,70,72,74,75],configurationspac:2,confipars:1,congress:64,congruenc:71,connect:[],consist:[2,42,43,67,74,75],consol:8,constant:[10,46,67,73],construct:[2,7,11,64,74],construct_classifi:[0,64,69],construct_svm:2,consumpt:2,contain:[0,1,2,7,10,11,12,37,65,66,67,70,71,74,75],containingfor:2,content:[8,12,64,71],continu:[2,65,66,74],contour:[11,12,61,65,67],contrast:[2,71],contribut:64,control:2,converg:[11,66],convers:66,convert:[1,8,10,66,69,71],convert_config_pyradiom:1,convert_features_icc_threshold:10,convert_predict:10,convert_pyradiom:10,convert_pyradiomics_featurevector:10,convert_radiomix_featur:8,convex:71,cope:65,copi:[0,2,10,12,41,64,65,66,67,69],copymetadata:0,core:[2,7,41,43,65,66,67,71,74],coron:[54,67],correct:[12,25,53,65,66,67,75],correctli:[11,66,70,75],correl:[10,16,65,71,73,75],correspond:[2,10,11,43,55,66,67,70,71,75],cost:[],could:[66,70,71,73],count:[7,55,67,71],count_num_subject:7,count_paramet:11,coupl:75,cours:75,covari:16,cox:75,cpu:2,crash:[64,66,74],creat:[0,2,5,7,11,18,66,67,70,71,73,74,75],creata:2,create_bbox:18,create_ensembl:[2,66],create_example_data:[0,64,75],create_links_addon:18,create_links_standalon:18,create_network:[14,18],create_param_grid:[2,69],create_random_featur:5,create_sourc:67,createfixedsplit:[0,64],creation:[64,66,71],criteria:64,criterion:2,crop:73,cross:[0,2,7,11,18,27,41,43,65,66,67,75],cross_valid:[40,41,67],crossval:[0,64],crossval_typ:11,crossvalid:[3,64],csv:[7,10,11,66,74,75],csv_file_path:4,csv_out:10,csvdetector:4,ct001:0,ct002:0,cto:[],current:[0,2,10,12,27,33,53,64,65,66,67,70,73,75],curv:[7,11,16,65,66,75],curve_threshold:11,custom:[2,54,55,65,67],custom_config_overrid:8,cv_iter:2,cv_results_:2,cyan:11,dai:70,dat:10,data:[0,2,10,11,12,17,23,27,64,65,66,67,70,71,73,74],data_path:74,datadir:74,datadownload:[0,64,66,74],datafil:66,datafold:[5,74],datafram:[2,11],dataset:[0,2,7,18,31,41,43,64,65,66,67,73,74,75],datatyp:[66,69,72],datayp:66,david:65,dcm:12,deal:[65,66],debug:[11,41,64,66,67,74],debugdetector:4,decent:73,decid:[71,73],decision_funct:2,decision_function_shap:2,decod:71,decomposit:[0,7,64,66,75],decompositon:66,default_queu:70,default_scor:2,defaultconfig:[0,8,67,69,75],defin:[0,2,4,7,8,10,12,18,19,35,61,65,67,68,69,71,73,74,75],definit:[10,64,71],degre:[2,23,45,67,71],del:74,delai:2,delet:[2,64,66,69],delete_cc_para:2,delete_nonestimator_paramet:2,delong:[0,64],delong_roc_test:16,delong_roc_vari:16,demand:2,dementia:2,demo_param:[],demonst:[],demonstr:65,den:64,depend:[0,2,11,59,64,66,67,70,73,75],deprec:66,depth:[23,67],der:64,descent:65,describ:[0,68,71,72,75],descript:[2,10,21,23,25,27,29,31,33,35,37,39,41,43,45,47,49,51,53,55,57,59,61,63,65,67,69,71,74],descriptor:71,design:[65,73],desmoid:64,despit:64,detail:[2,7,12,64,65,67,70,71,75],detect:[10,66,70,71],detector:[0,7,64,66,74],determin:[1,2,7,11,12,18,21,29,33,35,37,41,45,47,49,51,53,55,61,64,66,67,71,73,74,75],determinist:2,develop:[2,71,73],developp:66,deviat:[10,45,67,71],df_:10,diagnosi:64,diagnost:64,diamet:71,dicom:[0,44,45,53,63,64,65,66,67,75],dicom_featur:[10,62,63,66,67],dicom_feature_label:[44,45,67,71],dicom_feature_tag:[44,45,67,71],dict:[0,1,2,10,12],dictionari:[0,1,2,7,11,12,66,67,70,75],did:[66,69,73,75],didn:66,differ:[2,11,12,16,64,65,66,73],differenti:64,difficult:73,difscal:10,digit:71,dilat:[12,53,60,61,65,66,67,75],dilate_contour:12,dilate_roi:12,dimens:71,dimension:73,direct:[66,71],directli:[7,66,71,73,74,75],directori:[0,7,67,74],dirnam:74,disabl:[55,66,67],disc:[53,61,67],discret:[45,67,71],discrete_uniform:2,discrimin:64,discuss:[65,71,75],dispatch:2,dissimilar:71,distanc:[10,35,45,67,71],distance_p:10,distinguish:[2,64,75],distribut:[2,65,66,69,74,75],distrubit:2,divers:73,divid:[65,73],do_detect:4,do_test_rs_ensembl:2,do_valid:19,doc:69,docstr:[74,75],doctest:2,document:[2,7,10,66,68,70,74,75],doe:[2,10,66,67,70,71],doi:10,doing:[2,67],domain:2,don:74,done:[0,2,65,66,67,68,69,70,71,73,75],down:66,download:[66,74],download_headandneck:[5,74],download_project:5,download_subject:5,dpi:11,draw_network:75,drawback:71,drawn:[2,43,67],drmaa:[43,67],drmaaplugin:70,drop:66,drug:71,dti:66,dtrf:[],due:[2,65,66,73],dummi:[66,70],dure:[2,39,43,66,67,70],dwarkas:64,dwi:[45,67,74],e104:71,e107:71,each:[2,7,10,11,12,45,65,66,67,70,71,73,74,75],earlier:[71,74],easi:[64,73],easier:[66,73,75],easili:[66,67,73,74,75],echo:71,ecr:64,edg:[45,67,71],edit:[74,75],editelastixtransformfil:66,edwardo:2,effect:64,effici:[2,66,71],effort:73,efron:75,eigen:[22,67],either:[0,2,10,11,25,35,59,67,74,75],ejrad:[],elast:65,elasticnet:[22,23,66,67],elasticnet_alpha:[22,23,67],elasticnet_l1_ratio:[22,23,67],elastix4:[40,67],elastix:[0,40,64,65,66,67,75],elastix_para:[0,65],elastix_test:[0,13],elastixmodelzoo:65,electr:71,element:[10,35,53,65,67,75],elif:[70,74],ellip:71,ellipsi:2,ellipt:71,elong:71,els:[69,70],emb:69,embed:[65,66,68],emper:[25,67],emphasi:71,empir:[65,75],emploi:2,empti:[],emptygraylevel:70,enabl:[2,7,55,67],encod:[2,51,67],end:[64,65,69,70],energi:71,engin:[2,73],enhanc:71,enough:2,ensembl:[2,3,11,29,43,64,66,73],ensemble_method:[11,18],ensemble_s:[11,18],ensemble_scor:11,ensemble_validation_scor:2,ensur:0,enter:[2,12],entir:2,entri:64,entropi:71,environ:70,epsilon_insensit:[22,67],equal:[2,10,23,25,53,67,71],erasmu:73,error:[2,7,11,17,64,65,66,71,74,75],error_scor:2,especi:[2,41,64,66,67],establish:[64,71],estim:[2,7,8,11,18,22,23,29,35,43,65,66,67,69],estimator_input:2,estimator_scoring_overrid:8,estsiz:11,etc:[2,10,11,64],etcetera:74,european:64,eusomii:64,eval:[58,67],evalu:[0,2,3,7,11,31,39,43,59,64,65,66,74],evaluatevalid:19,even:71,everi:[41,67,73],everywher:69,exact:2,exactli:[70,74],exampl:[0,2,7,12,16,17,18,51,64,65,66,67,70,71,73,74],example_stwstrategyhn:74,exampledata:[0,64,74,75],examplefil:74,excel:[71,75],except:[0,7,66,67],exclud:[10,25,33,35,67],excluded_featur:[24,25,67],exclus:[65,74],exctract:71,exe:[24,67],execut:[0,2,7,17,18,22,23,25,64,66,67,69,73,74],execute_first:8,executionplugin:70,exhaust:2,exist:[18,66,73],exp:[],exp_uniform:2,expand:[11,66,71],expect:[70,73,74],expected_hostnam:4,experi:[2,7,17,64,66,71,75],experiment:[31,67],experiment_fold:74,experiment_nam:74,expert:71,explain:[35,67,70],explant:71,explicit:2,explor:[2,74],explos:2,expon:[2,23,67],export_hyper_params_to_latex:6,express:2,extens:[66,73,74],extrac:65,extract:[1,2,7,10,11,12,45,55,61,64,65,66,67,70,73,75],extract_boundari:11,extract_firstord:[54,55,67],extract_shap:[54,55,67],extraction_mod:[44,45,67],extractnlargestblobsn:[0,64],extractor:[54,55,67],extrat:12,extrem:65,f1_score:66,f1_weight:[2,7,42,67],f1_weighted_predictproba:[2,42,67],f6d255a45dd:67,facad:[0,8,64,66,69,74,75],facilit:[64,73],factor_valid:19,fail:66,fals:[1,2,5,10,11,12,18,20,22,23,26,30,32,40,42,44,47,50,52,53,54,58,60,62,64,67,74],familiar:73,fancyimput:10,faq:[64,66],fashion:74,fast:[2,16,64],fastdelong:16,fastr3:66,fastr:[0,2,7,18,22,23,43,64,66,67,69,70,74,75],fastr_plugin:[0,2,18,22,23,67],fastr_tempdir:[0,67],fastr_test:[0,13],fastr_tool:[0,13,65],fastrconfig:[0,64,67,75],fastrhom:67,fat:71,fator:2,fatsat:71,fault:66,feat:1,feat_in:10,feat_out:10,feat_out_0:64,feat_test:2,feat_train:2,featpreprocess:[3,64],featsel:[3,64,70],featur:[0,1,2,5,7,8,10,11,12,17,18,25,33,35,37,41,45,47,51,54,55,63,64,66,67,73,74],feature:70,feature_dict:70,feature_fil:[7,74],feature_file_nam:7,feature_label:[2,10,11,70,74],feature_label_1:[],feature_label_2:[],feature_labels_tofit:[10,50,51,67],feature_select:[10,35,66,67],feature_set:10,feature_valu:[2,10,70,74],featurecalcul:[40,41,67,69],featureconvert:[0,64,69],featurefil:[1,11],featurefile_p1:74,featurenam:11,featureprocess:[0,64,69,70],features_:74,features_from_radiomix_xlsx:7,features_from_this_directori:[7,70,74],features_in:10,features_mod1_patient1:1,features_mod1_patient2:1,features_mod2_patient1:1,features_mod2_patient2:1,features_out:10,features_p1:74,features_test:75,features_test_in:10,features_test_out:10,features_train:[70,75],features_train_in:10,features_train_out:10,featuresc:[3,64],featuresdatadir:[70,74],featurespatient1:70,featurespatient2:70,featurevector:10,feel:[73,74],fellow:73,felt:73,fetur:[12,71],few:73,fewer:71,fibromatosi:64,fibrosi:64,fiduzi:[],field:[1,2,10,12,37,51,65,66,67,69,71,73,74],fig:11,figsiz:11,figur:[11,66,73],figwidth:11,fij:10,file1:[2,10],file2:[2,10],file3:[2,10],file:[0,1,2,5,7,10,11,12,49,64,65,66,67,69,71,74],file_io:[0,64,66],file_path:7,filenam:[11,12,65,70,75],filepath:[11,66],filesmatlabr2015bbinmatlab:[24,67],filesystem:66,fill:[61,65,67],fill_valu:10,fillhol:[60,61,67],filter:[45,64,67,73],finalbsplineinterpolationord:66,find:[2,17,64,66,68,70,73,74],find_exampledatadir:17,find_testdatadir:17,findlabeldata:12,fingerprint:[0,3,39,40,41,64,66,67,74],first:[7,10,11,16,35,55,64,65,66,67,71,73,74,75],fit:[2,10,31,43,66,67,68,69,71,75],fit_and_scor:[2,68,69],fit_param:2,fit_threshold:11,fit_tim:2,fitandscor:[0,64,66,68,69],fitfailedwarn:2,fitnumb:[2,28,67],fittd:2,fitted_workflow:2,five:[69,73],fix:[2,7,18,27,35,55,64,65,67,70,73,75],fixandscor:66,fixed_se:[2,26,27,67],fixed_splits_csv:7,fixedsplit:2,flag:66,flat:71,flatten:[11,66],flatten_object:11,fleiss:10,flexibl:[66,73],flip:[11,71],fluctuat:71,focu:75,focuss:75,fold:2,folder:[2,8,11,17,65,66,67,69,70,74,75],follow:[2,10,11,64,65,67,69,70,71,73,74,75],fontsiz:[10,11],force2d:[54,55,67],force2ddimens:[54,55,67],foremost:71,foresight:73,forest:[35,65,67],fork:[65,70],form:[65,71],format:[0,1,2,5,7,8,10,11,12,64,65,66,67,69,75],formula:2,forward:73,forwardselect:[2,28,66,67],found:[2,64,65,66,67,73,74,75],foundat:[],four:73,fpr:11,fracf_:10,fractal:[63,66,67],fractal_featur:[10,62,63,67],framework:[64,66,73],frangi:[45,67,71],free:74,freeli:75,frequenc:[45,67,71],frequent:[10,65],from:[0,1,2,7,8,10,11,12,16,22,25,41,43,45,49,61,64,65,66,67,69,70,71,73,74,75],frozenset:[2,4,10,19],fulfil:2,full:[7,8,11,12,41,52,53,64,65,66,67,74],fulli:[7,64,66],fullprint:8,fun:73,function_bas:64,funtion:10,further:66,furthermor:71,futur:66,gabor:[10,45,63,64,66,67],gabor_angl:[44,45,67,71],gabor_frequ:[44,45,67,71],gamma:[2,23,67],garcia:2,gastrointestin:64,gather:11,gaussian:[55,64,67],gaussiannb:[22,67],gave:[2,66],gclm:[51,67,71],gener:[0,2,3,7,10,11,22,23,28,35,53,64,65,66,69,70,71,73,75],generalis:65,generaliz:64,generate_config:69,generate_feature_boxplot:11,generate_performance_boxplot:11,genet:[12,75],geometrytoler:[54,55,67],get:[2,11,12,64,65,73,74,75],get_r:12,getparametermap:18,gibhub:64,git:[65,74],github:[1,2,7,10,11,12,16,41,64,65,66,67,69,70,74,75],give:[2,51,65,66,67,70,71,73,74,75],given:[0,2,7,10,11,43,45,64,66,67,69,71,74,75],glcm:[45,51,55,63,64,67,70],glcm_:10,glcm_angl:[44,45,67,71],glcm_distanc:[44,45,67,71],glcm_level:[44,45,67,71],glcmm:71,glcmms_:10,gldm:[55,63,64,67,70],gldzm:[63,66,67],gldzm_:10,glob:[7,74],glrlm:[45,55,63,64,67,70],glrlm_:10,glszm:[45,55,63,64,67,70],glszm_:10,gmean:[42,67],going:73,good:75,grade:64,gradient:65,grahpviz:66,grai:[11,64],grand:2,graphviz:66,grayscal:[45,67],grid:[2,43,67],grid_scor:66,gridsearch:[23,67],gridsearchcv:2,gridsearchcvfastr:2,gridsearchcvjoblib:2,griethuysen:71,grlm:71,ground:[11,75],ground_truth:16,groundtruth:2,group:[2,10,35,65,66,67,70,71,73,75],groupsel:[2,69],groupwis:[2,66,70,71,75],groupwisesearch:[34,35,67,70],growth:64,gsout:2,guarante:2,guid:[2,64,67,70],guided_search:2,guided_search_paramet:2,guidedsearchcv:2,guidedsearchcvsmac:2,guidelin:75,hack:70,had:[66,73],haibo:2,halton:2,haltonsampl:2,hand:[65,73],handbook:64,handl:[10,66],handle_unknown:10,hanff:64,happen:71,harmon:[0,10,17,41,64,65,66,67],has:[0,2,7,10,53,64,67,70,71,73,74],have:[0,2,10,11,12,35,41,45,64,65,66,67,69,70,71,73,74,75],hdf5:[1,2,7,8,10,11,64,74,75],head:[74,75],header:[0,2,7,71,75],heidelberg:71,held:2,help:[2,4,8,10,12,18,66,75],helper:[0,7,64],henc:[2,7,10,11,65,66,67,69,71,73,75],hepatocellular:[],herder:64,here:[2,65,67,68,69,71,74,75],hessian:[23,67],heterogen:65,hf_:10,hf_mean:10,high:[64,71,73,74],higher:2,highest:2,highli:[2,73],highlight:[54,55,67],hing:[22,67],histogram:[2,44,45,63,64,67],histogram_featur:[10,62,63,67],histopatholog:64,histori:73,hofland:64,hold:[0,2],hole:[61,65,67],home:66,homogen:[23,67,71],hope:64,horribl:74,hospit:[24,65,67],host:64,hostnamedetector:4,hot:[51,67],hounsfield:67,how:[1,2,12,45,61,66,67,69,70,71,73,74,75],howev:[2,65,67,69,71,73,75],htm:67,html:[0,10,22,23,35,45,54,55,65,67],http:[0,2,7,10,16,22,23,35,41,45,54,55,57,64,65,66,67,69,70,74,75],huber:[22,67],hyper:[2,67],hyper_params_export:[0,64],hyperoptim:[3,29,43,64,65,66],hyperparamat:2,hyperparamet:[2,11,43,65,66,67,68,71,73],hypothes:71,hypothesi:16,i_max:11,i_min:11,icc:[2,10,17,66,75],icc_anova:2,iccthreshold:[0,64],icctyp:[2,10],idea:[73,75],ident:2,identifi:[7,74],ids:[2,12],ieee:[2,16,64,65,71],ignor:[10,67],iid:2,iivarinen:71,illustr:73,imag:[0,2,7,11,12,18,39,41,45,53,55,64,66,67,70,73,74],image_featur:[2,10,11,70],image_features_test:2,image_features_train:2,image_file_nam:[7,74],image_mr:75,image_typ:[7,44,45,67],imagedatadir:74,imagefeatur:[3,64,71,75],imagefil:12,images1:75,images_from_this_directori:[7,74],images_test:75,images_train:[0,7,75],imagetyp:67,imaginary_label_1:74,imbalanc:[2,57,66,67],img2:11,img:[11,12],immedi:2,implement:[0,2,7,10,12,16,23,25,65,67,73,75],implicitli:73,imposs:2,improv:[2,71],imput:[0,2,3,47,64,66,69,73],imputat:2,incekara:64,includ:[0,2,7,11,12,33,65,66,67,69,70,71,73,74,75],incompat:[55,67],incorpor:66,incorrect:[53,66,67],incorrectli:[11,66,75],increas:[43,66,67],inde:71,independ:[59,67,73,75],index:[2,10,11,64,67,70,71,75],indexerror:[0,64],indic:[2,12],individu:2,ineffici:73,infer:[0,43,64,67,75],infinit:66,influenc:71,info:[7,67,70],inform:[2,10,11,41,64,65,67,69,71,74,75],informat:64,ini:[0,1,2,10,12,66,67,69],init:[10,69],init_adasyn:2,init_borderlinesmot:2,init_budget:[58,59,67],init_method:[58,59,67],init_nearmiss:2,init_neighbourhoodcleaningrul:2,init_randomoversampl:2,init_randomundersampl:2,init_smot:2,init_smoteenn:2,init_smotetomek:2,initi:[0,2,4,7,8,10,12,18,59,66,67,71],inner:[45,65,67,71],input:[0,2,7,10,11,12,18,64,66,67,69,70,73],input_fil:[8,12],inputarrai:10,inset:66,insight:75,insightsoftwareconsortium:66,inspect:66,instal:[64,65,66,67],instanc:[0,2,23,59,65,67],instanti:2,instead:[2,55,64,66,67,71,74,75],instruct:66,integ:[2,7,10,11,12,20,22,26,28,34,38,40,42,43,44,45,46,47,52,54,55,56,58,60,64,66,67],integr:[64,66,73],intellig:71,intens:[12,53,55,65,67,71],inter:[2,10,65],interact:[7,64,66,74],interest:[7,71],interfac:2,intermed:11,intermedi:[2,65],intermediatefacad:66,intern:[64,71,75],interpol:[12,54,55,67],interpret:[69,73],interquartil:71,interv:[7,11,66,75],intervent:[64,71],intra:[2,10],intraclass:[10,75],introduc:74,introduct:[64,74],introductori:73,invalidcsvfileexcept:8,invalidlabelsvalid:19,invalidorderexcept:8,invari:71,inverse_transform:2,involv:2,ioerror:0,iopars:[0,2,64,69],ioplugin:0,iqr:65,iri:2,is_empti:[],is_multimetr:2,is_train:7,isbi:64,isi:75,isn:66,issu:[64,65,66,70,73,74,75],item:[0,2,10,74],iter:[2,11,21,23,41,43,66,67,69,75],ith:[],itk:[0,12,66],itkimag:11,its:[2,65,73],itself:[71,73,75],jacob:71,jalv:64,jfortin1:[10,41,67],jiaj:71,jianan:65,job:[2,7,43,64,66,67],joblib:[2,23,41,66,67],joblib_backend:[40,41,67],joblib_ncor:[40,41,67],join:74,joost:71,joseph:10,journal:[16,64,71],json:[2,12,65,66,74],jth:[],jukka:71,just:[11,66,69,74,75],k_neighbor:[2,56,57,67],kapsa:64,keep:[2,12,64,66,73],kei:[2,3,44,66,67,70,75],kept:10,kernel:[2,23,67,75],kessel:64,keyerror:0,kfold:2,kind:[66,73],klein:[64,65],knn:[10,46,47,66,67],knnimput:66,know:67,knowledg:2,known:71,kovesi:71,kurtosi:71,kwarg:[2,4,19],label1:[48,67,75],label2:[48,67,75],label:[0,1,2,3,7,10,11,12,16,25,49,51,54,55,64,65,66,71,73,74],label_1_count:16,label_data:[2,11,12],label_data_test:2,label_data_train:2,label_feature_1:70,label_feature_2:70,label_feature_3:70,label_feature_4:70,label_fil:[2,12,18,74],label_info:12,label_nam:[1,2,7,12,48,49,67,74],label_process:[0,64],label_s:[],label_set:10,label_statu:12,label_typ:[0,1,2,10,11,12,18,75],labelprocess:66,labels_from_this_fil:[7,64,74],labels_test:[10,75],labels_train:[10,75],lambda:[],lambda_tol:[],languag:[24,25,64,67,73],laplacian:[55,64,67],laptop:73,larg:[2,66,71,73],larger:[43,45,66,67,71],largest:[11,12,61,65,67,71],lasso:[2,22,34,35,65,67],last:[66,71,73],lastli:[53,67,69],later:[2,10,67,71],latest:[23,45,54,55,67],latex:66,latter:[45,67,69],lbfg:[22,67],lbp:[45,63,64,67],lbp_:10,lbp_npoint:[44,45,67,71],lbp_radiu:[44,45,67,71],lda:[22,23,65,67],lda_shrinkag:[22,23,67],lda_solv:[22,23,67],lead:[66,71],leaf:[23,67],learn:[2,10,11,22,23,35,57,64,65,66,67,69,73,75],learner:[23,67],least:[2,70,71,73],leav:[23,27,66,67],led:66,leender:64,left:[2,66],length:[2,10,11,64],lengthi:74,lesion:[33,67,71],less:[66,67,71],let:74,letter:16,level:[45,54,55,64,67,75],lib:64,licens:64,lidc:64,light:66,lightgbm:[23,66,67],lightgbm_max_depth:[22,23,67],lightgbm_min_child_sampl:[22,23,67],lightgbm_min_child_weight:[22,23,67],lightgbm_num_leav:[22,23,67],lightgbm_reg_alpha:[22,23,67],lightgbm_reg_lambda:[22,23,67],lightweight:2,lij:10,like:[2,10,64,66,67,71,73,74],limit:[39,59,65,67,75],line:[2,10,64,65,69,71,73,74],linear:[2,22,65,66,67,75],linear_model:[22,23,35,67],linearexecut:[7,18,22,67],link:[18,66,69,74,75],link_n4biasfieldcorrection_doc:65,linr:[22,67],linstretch:[0,64],lint:66,linux:[65,66],linuxdetector:4,lipoma:64,liposarcoma:64,list:[0,1,2,4,7,8,10,11,12,18,19,22,24,36,37,41,44,45,47,50,63,65,67,70,75],literatu:10,literatur:[10,65,71],littl:[2,73],liver:[64,65,75],load:[1,12,45,67,74],load_config:[1,69],load_config_xnat:12,load_data:1,load_featur:[1,66],load_iri:2,load_label:12,load_label_csv:12,load_label_txt:12,load_label_xnat:12,loc:[2,22,23,34,46,56,57,67],local:[45,64,67],locat:[7,63,66,67,71,74],location_featur:[10,62,63,67],locf_:10,log10:16,log:[10,16,23,44,45,54,55,63,64,66,67,69,70,73],log_featur:[10,62,63,67],log_sigma:[44,45,67,71],log_uniform:2,log_z_scor:[36,67],logarithm:[10,65,66],logic:66,logist:[23,65,67],logisticregress:[22,23,35,66,67],logit:10,logstandardscal:10,longer:[66,67],loo:[26,27,66,67],loo_cross_valid:2,look:[7,10,64,65,67,68,69,71,73,74,75],loop:[2,70],loss:[2,23,67,71],lot:[55,67,71,73],low:[64,71],lower:[10,12,35,53,66,67],lowerbound:12,lr_l1_ratio:[22,23,67],lr_solver:[22,23,67],lrc:[22,23,67],lrpenalti:[22,23,67],lsqr:[22,67],luckili:73,lung:64,maarten:[],machin:[2,35,64,65,66,67,69,71,73,75],macskassi:75,made:[7,64,66,67,71,73,75],maenpaa:71,magnet:71,mai:[2,65,67,69,71,73,74],main:[7,11,14,17,65,66,74,75],major:[56,66,67,71],majorli:[7,66],make:[2,7,11,41,43,65,66,67,69,70,73,74,75],make_scatterplot:[],make_scor:2,malign:64,manag:[0,71],mandatori:[1,2,10,11,12,45,67],manhattan:66,manhattan_import:11,mani:[0,2,10,61,65,66,67,71,73,75],manipul:75,mann:75,manner:[45,67],mannwhitneyu:[10,34,67],manual:[2,7,42,64,65,66,67,70,71,73,74],manufactur:[65,71],manuscript:65,map:[2,11,75],mappingproxi:[0,2,4,7,8,10,12,18,19],mark:11,marku:71,martijn:64,mask:[0,2,7,11,12,41,45,53,55,60,61,65,66,67,73,74],mask_contour:12,mask_file_nam:7,masked_arrai:2,masks_from_this_directori:7,masks_test:75,masks_train:75,mass:71,master:[2,65,69,75],match:[1,12,66,67,75],matlab:[10,12,24,25,64,67,73],matplotlib2tikz:66,matplotlib:11,matrix:[2,10,64],matter:10,matti:71,max:[1,32,33,35,44,67,69,71],max_it:[2,22,23,67],max_num_imag:[38,39],maxim:2,maximum:[23,39,45,66,67,71],maxlen:[2,42,43,66,67],mean:[1,2,7,10,25,32,33,46,65,66,67,70,71,75],mean_fit_tim:2,mean_score_tim:2,mean_test_scor:2,mean_train_scor:2,measur:[2,7,71,75],median:[10,46,53,65,67,71],medic:[64,65,71,73],medicin:[64,71],meet:[7,64],melanoma:64,member:2,memori:[2,42,43,66,67,75],mention:71,mesenter:64,mesh:71,messag:[2,11,66],metadata:[0,12,41,53,65,66,67,71],metadata_fil:12,metadata_test:75,metadata_train:75,metaestimatormixin:2,metastas:[64,65],method:[0,2,7,10,11,12,16,28,29,33,35,37,47,52,53,56,57,59,64,65,66,67,70,71,73,75],metion:10,metric1:11,metric1t:11,metric2:11,metric2t:11,metric:[0,10,11,28,29,42,43,64,65,66,67,75],mhd:[12,75],miccai:64,michael:71,miclea:64,micro:73,microsoft:74,middl:[0,11,75],midrank:16,mimic:12,min:[10,35,44,66,67,69,71],min_object_s:[60,61,67],mine:[64,65,70,73],minim:[2,45,67,74,75],minimum:[23,45,53,61,66,67,71],minkov:10,minm:[52,67],minmax:[10,36,65,66,67],minor:[56,66,67,71],minsubjectsvalid:19,mismatch:[41,67],miss:[2,10,66],missing_valu:10,missingpi:[10,66],mitchelldeen:65,mixtur:12,mod:[10,24,25,66,67,69],modal:[2,10,45,55,65,66,67,71,75],modalityname1:[2,10],modalityname2:[2,10],mode:7,model:[1,2,7,11,16,18,35,43,63,64,65,66,67,73,75],model_select:[2,10],moder:[25,65,67,71],modifi:65,modified_hub:[22,67],modnam:1,modu:[0,2,11,18,48,49,67,74],modul:[13,22,23,35,66,67,69,75],modular:64,modulenotfounderror:64,molecular:64,momentum:71,more:[2,7,10,12,37,41,43,64,65,66,67,69,70,71,73,74,75],moreov:73,morpholog:[12,71],most:[7,10,23,65,66,67,71,73,74],most_frequ:[10,46,67],mostli:[2,10,66,67,75],mount:[2,7,66,74],move:[65,66],mr001:0,mr002:0,mri:[45,64,67,71,74],mse:75,mstarmans91:[7,64,69,70,74,75],much:[43,45,57,66,67,71,74],multi:[2,64,71],multi_class_auc:2,multi_class_auc_scor:2,multi_class_relief:10,multicent:65,multicentr:64,multiclass:[2,7,65,74,75],multiclass_classif:[7,74],multicor:[7,41,67],multifoc:65,multihread:66,multilabel:[2,7,48,49,64,66,67],multilabel_typ:11,multimetric_grid_search:2,multimod:66,multipl:[0,2,10,11,33,41,65,66,67,71,73,74,75],multipli:[12,60,61,67],multiprocess:[40,67],multiresolut:71,multiscal:71,multislic:[45,63,67],multivendor:[],must:[2,64,67],mutat:64,mutlicor:2,mutual:[65,74],mwu:10,mxn:[],n_1:11,n_2:11,n_blob:[60,61,67],n_classifi:16,n_compon:66,n_core:2,n_exampl:16,n_featur:[2,5,10,66],n_iter:[2,18,20,21,26,27,42,43,67],n_job:2,n_jobspercor:[2,42,43,67],n_jobsperscor:2,n_neighbor:[2,10,46,47,56,57,67],n_neighbour:10,n_neightbor:10,n_object:5,n_output:2,n_patient:10,n_sampl:[2,10,66],n_smac_cor:[58,59,67],n_split:[2,42,43,66,67],n_splits_:2,n_test:11,n_train:11,nadeau:75,naiv:[65,73],name:[0,2,7,10,11,12,18,23,25,37,45,51,62,63,64,66,67,71,74,75],name_of_label_predicted_for_evalu:75,nan:[2,10,33,47,66,67,71],natur:65,ndarrai:2,nearest:[10,35,47,67],nearmiss:[56,67],neccesari:[66,69],neck:74,need:[2,7,10,23,64,65,66,67,69,71,73,74,75],needaccess:10,neg:[10,66,75],neg_dual_func:[],neighbor:[10,35,47,67],neighborhood:64,neighbour:[10,71],neighbourhoodcleaningrul:[2,56,67],net:[10,65],nettyp:18,network:[0,14,18,64,65,66,67,69,73,74],neural:[65,75],neurocombat:[],never:[31,65,67],new_spac:12,newest:66,newli:66,nework:0,next:[66,71,74,75],ngldm:[63,66,67],ngldm_:10,ngtdm:[45,55,63,64,66,67,70],ngtdm_:10,nice:[66,73],niessen:64,nifti:[66,75],nii:[0,7,12,74,75],nipyp:2,nmod:0,nocrossv:2,node:[0,18,33,66,67,73,75],nofeaturesfoundexcept:8,noimagesfoundexcept:8,nois:[25,67],nomasksfoundexcept:8,nomean:10,non:[2,7,10,25,65,66,67,71,73,75],none:[0,1,2,4,5,7,8,10,11,12,16,18,19,22,36,54,60,61,66,67,70],nonparametr:75,nor:64,norm_tol:[],normal:[2,7,11,12,52,53,54,55,65,66,67,70,71,73,75],normalization_factor:11,normalize_imag:[12,65],normalize_roi:[12,52,53,67],normalize_whitespac:2,normalizescal:[54,55,67],nosegmentationsfoundexcept:8,not_label:[],notabl:66,note:[0,2,7,10,11,12,66,67,71,73,74],notic:71,notimplementederror:0,now:[66,71],npoint:71,npv:[66,75],nrrd:[12,75],nsampl:11,nsubject:[5,74],num_class:[],num_train:[],number:[2,7,10,11,12,16,21,23,27,29,35,39,41,43,45,47,57,59,66,67,71,73,75],numbertoextract:12,numer:[2,10,75],numf:10,numpi:[2,10,11,12,16,64,66,71],obj:64,object:[0,1,2,4,7,8,10,11,12,18,19,23,33,57,61,64,65,66,67,69,70,74],objectsampl:[0,64,66],observ:[2,10],obsolet:[41,67],occur:[2,10,35,64,67,68,70,75],occurr:10,odd:71,oddfeat:10,oddpati:10,odink:64,oerat:16,of_:[10,24,67],off:[2,70,71,75],offer:[71,74],offici:64,often:[67,71,73,75],ojala:71,older:66,omit:74,onc:[2,12,65,66,71],oncolog:[],oncoradiom:[7,66],one:[0,2,7,10,11,12,27,37,45,51,53,65,66,67,69,70,71,73,74,75],onehotencod:[2,3,10,51,64,66],onehotencoderwrapp:[0,64],onevsrest:66,onevsrestclassifi:2,onli:[2,7,10,11,12,23,31,43,45,53,65,66,67,70,71,73,74,75],onlin:[73,74],ontolog:73,onward:2,open:[64,66,70,73,74],oper:[11,12,64,71,75],opim:2,optim:[0,2,23,43,59,66,67,68,71,75],optimiz:0,option:[0,1,2,7,10,11,12,20,22,23,24,26,28,30,32,33,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,65,66,67,69,70,71,74,75],order:[2,10,11,12,55,65,66,67,68,71,73],org:[2,10,22,23,35,67],organ:[71,73],orient:[12,44,45,53,63,64,65,66,67],orientation_featur:[10,62,63,67],orientationprimaryaxi:[52,53,67],origin:[2,54,55,63,65,66,67,71],original_featur:[10,62,63,67],oserror:0,other:[0,2,10,35,42,64,65,66,67,69,73,74,75],otherwis:[2,10,53,55,65,66,67],otsu:[12,52,53,66,67],our:[64,67,69,71,74,75],out:[2,11,12,27,66,67,73,74,75],outcom:[2,43,65,67,73,74],outer:[27,65,67,71],outlier:[10,65,66],output:[2,7,10,11,12,18,65,66,67,69,70,73,74,75],output_csv:[10,11],output_file_path:6,output_fold:8,output_hdf:2,output_itk:11,output_json:2,output_nam:11,output_name_zoom:11,output_png:[10,11],output_smac:2,output_tex:[10,11],output_zip:11,outputfold:[2,11,74],over:[2,7,10,65,66,67,71,73],overal:[66,74],overfit:[31,65,66,67],overfit_scal:[2,11],overfitscal:[30,31,67],overid:66,overlai:11,overrid:[7,65,66],oversampl:[66,73],overview:[65,68,71,74,75],overwrit:[7,53,66,67],overwritten:0,own:[40,64,65,66,67,69,71,73,74],p_ngtdm:70,packag:[64,65,66,71,75],packagedir:66,pad:[11,18],padmo:64,page:[16,64,73,75],pairwis:12,pairwise_auc:2,panda:[2,11,70,74],panda_data:[2,70],paper:[2,10,71],par:[10,24,25,67],para:2,paracheck:11,parallel:[2,7,59,66,67],param:[2,11],param_c:2,param_degre:2,param_distribut:2,param_gamma:2,param_grid:2,param_kernel:2,param_list:2,paramet:[0,2,7,10,11,12,23,35,43,57,64,65,66,67,68,69,73,75],parameter_optim:[0,64],parametergrid:2,parameters_al:2,parameters_bsplin:65,parameters_est:2,parameters_rigid:65,parametersampl:2,parametr:[10,25,65,67],paramt:[],parekh:71,parent:18,pars:[1,66,67,69],part:[2,7,35,45,66,67,68,69,71,73,75],parti:10,pass:[2,66,75],path:[0,1,2,7,8,10,11,12,25,66,67,70,74],pathnotfoundexcept:8,patient001:0,patient002:0,patient1:[67,70,75],patient1_0:75,patient1_1:75,patient2:[67,70,75],patient3:[67,75],patient:[0,1,2,7,10,11,12,33,57,64,66,67,71,74,75],patient_001:74,patient_002:74,patient_featur:[10,66,75],patient_id:[2,12,18],patientclass:[66,67],patientinfo:[1,2,10,11,12],patientinfo_test:2,patientinfo_train:2,patrick:10,pattern:[64,75],pca:[2,7,35,66,67,69,75],pcatyp:[34,35,67],pce:66,pdf:10,peak:71,pearson:[65,75],peform:74,penalti:[23,66,67],peopl:64,per:[0,1,2,10,25,61,65,66,67,70,71,75],per_featur:[10,24,25,67],percentag:[2,7,10,11,18,27,35,43,57,66,67,71,74,75],percentil:[10,66,71],perform:[0,2,7,10,11,18,27,31,41,43,49,64,65,66,67,68,73,74,75],performance_all_0:74,performance_fil:74,performance_metr:2,performance_multilabel:2,performance_singlelabel:2,person:64,pet:[45,67,74],peter:71,peura:71,pf_:[24,36,67],phase:[44,45,63,64,67],phase_featur:[10,62,63,67],phase_minwavelength:[44,45,67,71],phase_nscal:[44,45,67,71],phasef_:10,phd:73,phenotyp:71,phil:64,philip:71,physic:0,pick:[67,75],pid:[11,12,66],pietikainen:71,pilot:[],pinfo:[11,18,66],pinfo_hn:74,pip:[65,66,70,74],pipelin:[0,64,66,73,75],pixel:[0,11,45,55,67,71],place:69,placehold:10,platform:[64,73,74],pleas:[7,10,64,65,67,68,69,70,71,74,75],plot:[0,10,17,64,66],plot_bar:11,plot_barchart:[0,64],plot_boxplot_featur:[0,64],plot_boxplot_perform:[0,64],plot_error:[0,64],plot_estimator_perform:[0,64],plot_hyperparamet:[0,64],plot_im_and_overlai:11,plot_imag:[0,64,66],plot_prc_cic:11,plot_pvalues_featur:[0,64],plot_ranked_imag:11,plot_ranked_percentag:11,plot_ranked_posterior:[11,66],plot_ranked_scor:[0,64],plot_roc:[0,64],plot_roc_c:11,plot_single_prc:11,plot_single_roc:11,plot_svm:66,plot_svr:66,plot_test:10,plotminmaxrespons:[0,64],plotrankedscor:66,plu:[2,25,67,75],pluge:0,plugin:[0,2,22,23,43,66,67,70,73],png:[0,11,66],point:[2,11,45,67,74],pointint:11,pointsar:11,poli:[2,22,67],polynomi:[23,67,75],port:66,posit:[2,10,11,35,67,71,75],possibl:[2,10,64,66,71,73,75],post:74,posterior:[7,11,66,75],posteriors_csv:11,potenti:69,ppv:75,practic:73,prax:71,prc:75,prc_csv:11,prc_png:11,prc_tex:11,pre:66,pre_dispatch:2,precis:[11,66,71,75],precomput:74,precrop:[54,55,67],predict:[2,5,7,10,11,16,40,62,64,65,66,67,70,71,73,74,75],predict_label:[7,66,74],predict_log_proba:2,predict_proba:[2,66],predictions_on:16,predictions_sorted_transpos:16,predictions_two:16,predictproba:66,predit:66,preflighcheck:66,preflightcheck:[0,64,66],prepar:[12,64],preprint:[64,65],preprocess:[0,2,3,10,40,41,53,64,66,73,75],preprocess_nod:0,preprocessor:[0,33,64,66,67,69],preprocss:2,present:[0,2,64,66,71,74],preserverd:[25,67],prevent:66,previou:[73,75],previous:[66,73],primari:[53,67],primarili:65,primary_axi:12,princip:71,principl:[35,64,67,73,75],print:[2,8,10,11,66,74,75],probabilist:2,probabl:[2,16,70,74],probe:64,problem:[2,64,65,66,73],procedur:[10,65,67,75],proceed:[64,75],process:[0,2,7,16,41,64,65,66,67,73,74,75],process_fit:2,processpoolexecut:18,produc:[2,71],program:[24,67,73],progress:[2,66],project:[5,12,66],project_nam:5,projectid:[48,49,67],proof:64,proper:[0,66],properli:66,properti:[2,71],prostat:64,protocol:65,proven:73,provid:[0,2,7,11,12,18,25,41,52,53,65,66,67,68,71,74,75],provost:75,pseudo:2,psycholog:10,publish:16,purpos:[0,31,67],push:64,put:[11,66,67,75],pvalu:16,pxcastconvert:66,pyradiom:[1,3,10,40,54,55,62,64,66,69,70,71],pyrfr:65,python3:66,python:[5,10,24,64,66,67,69,73,74],python_intro:[],pywavelet:70,qda:[22,23,65,67],qda_reg_param:[22,23,67],qualit:[45,67,74],qualiti:2,quantifi:71,quantit:[45,64,67,71,73,74],question:73,queue:64,quick:[64,67,70],quickli:71,quit:[67,73],qxm:[],radial:[71,75],radian:[45,67,71],radii:[45,67],radiograph:71,radiolog:[64,71],radiom:[0,10,65,67,68,75],radiomix:[7,8,66],radiu:[11,12,45,53,61,67,71],rais:[2,66],rajic:64,ran:[2,66,74],random:[2,5,25,27,35,58,59,64,66,67,75],random_se:2,random_search:2,random_search_paramet:2,random_split:[26,67],random_split_cross_valid:2,random_st:[2,10],randomizedsearchcv:2,randomizedsearchcvfastr:2,randomizedsearchcvjoblib:2,randomli:[2,35,67,70],randomoversampl:[56,67],randomsearch:2,randomst:2,randomundersampl:[56,67],rang:[11,12,23,35,57,65,67,71],rank:[7,10,11,29,35,43,66,67,73,75],rank_:2,rank_test_scor:2,ranked_pid:11,ranked_scor:11,ranked_truth:11,rankedposterior:66,rankedsvm:66,ranking_scor:[2,42,43,67],ranksvm:[],ranksvm_test:[],ranksvm_test_origin:[],ranksvm_train:[],ranksvm_train_old:[],rate:[11,23,67,75],rater:10,rather:2,ratio:[11,23,67,71],rational:68,raw:[12,71],rbf:[2,22,67],read:[1,2,12,66,73,74,75],read_hdf:74,reader:66,readthedoc:[0,23,45,54,55,57,64,65,66,67],reason:[2,71],recal:[11,66,75],receiv:[11,16,75],recent:66,recogn:70,recommend:[2,23,25,45,64,67,69,71,73,74],recommmend:74,recreat:[],reduc:[2,64,66],reduct:[66,73],redund:[66,71],ref:2,refactor:66,refer:[0,1,2,3,4,7,8,10,11,12,16,18,19,40,66,67,69,71,73],refit:[2,43,66,67],refit_and_scor:2,refit_ensembl:11,refit_workflow:[2,42,43,67],reflect:71,regard:64,regardless:[59,67,74],region:[7,71],registr:[0,41,64,66,67,73,75],registrationnod:[40,41,67],regress:[2,7,11,18,23,49,64,66,67,70,74,75],regressor:[0,64,65,66],regular:[23,65,67,75],rel:[2,70],relat:[0,71],releas:[66,73],relev:[11,65,69,71,73,75],reli:71,reliabl:10,relief:[0,2,35,64,65,66,67],reliefdistancep:[34,35,67],reliefnn:[34,35,67],reliefnumfeatur:[34,35,67],reliefsamples:[34,35,66,67],reliefsel:2,reliefus:[34,35,67],remov:[10,11,41,61,65,66,67],remove_small_object:[60,61,67],removeconst:11,renam:66,rencken:64,repeat:[2,65,67],repetit:71,replac:[2,10,47,66,67,69,70],replacenan:[2,66],report:75,repositori:[64,74],repres:[2,71],reproduc:[65,66,73],requir:[0,2,7,23,64,66,67,70,73,74,75],resampl:[2,3,12,52,53,57,64,65,66,75],resample_imag:12,resampled_imag:12,resampledpixelspac:[54,55,67],resampling_spac:[52,53,67],research:[71,73],resourc:[0,12,14,64,65,70,73],respect:[10,61,65,67,74,75],rest:65,result:[2,10,11,41,53,64,65,66,67,71,73],ret:2,retrain:66,retreiv:12,retriev:71,return_al:2,return_estim:2,return_n_test_sampl:2,return_paramet:2,return_tim:2,return_train_scor:2,returnplot:11,revert:66,review:71,rfmax_depth:[22,23,67],rfmin_samples_split:[22,23,67],rfn_estim:[22,23,67],rfr:[22,67],rgrd:[63,66,67],rgrd_featur:[10,62,63,67],rgrdf_:10,ridg:[22,65,66,67],right:75,rigid:65,ring:[12,60,61,65,66,67],risk:75,rms_score:2,rng:2,robert:65,robust:[10,36,64,65,66,67,71],robust_z_scor:[10,36,67],robustscal:[10,66],robuststandardscal:[10,66],roc:[7,11,16,65,66,75],roc_comparison:16,roc_csv:11,roc_png:11,roc_tex:11,roi:[12,53,55,64,66,67,75],roi_dilate_radiu:12,roidetermin:[12,52,53,67],roidil:[52,53,67],roidilateradiu:[52,53,67],rokwa:10,root:[2,7],rosset:75,rot90:11,rotat:[53,67,71],rough:71,round:[2,23,66,67],rounded_list:2,routin:[71,73],row:[2,10,71],rtstructread:66,run:[2,7,10,64,66,67,70,73,75],runtim:[2,66],rvs:2,safe:69,saga:[22,67],sagit:[54,66,67],sai:65,same:[1,2,10,11,23,33,41,65,66,67,71,73,74,75],samefeat:10,sampl:[0,1,2,10,11,23,35,43,57,65,66,67,75],sample_s:10,sample_weight:16,sampler:2,sampleswarn:19,sampling_strategi:[2,56,57,67],sar:2,sar_scor:2,sarcoma:[],satur:71,save:[0,2,5,10,11,41,43,66,67,70,71,74,75],save_config:[0,69],save_data:2,save_memori:11,scale:[2,10,22,23,34,37,45,46,55,56,57,64,66,67,71,73],scaler:[0,2,31,64,66,67,69],scaling_method:[36,37,67],scan:[67,71,74],scanner:71,scatterplot:[11,66],schoot:64,scienc:75,scikit:[2,10,22,23,35,67],scipi:2,score:[2,7,10,11,18,43,53,65,66,67,68,75],score_tim:2,scorer:2,scorer_:2,scorers_dict:2,scoring_method:[2,7,8,42,43,67],scoring_paramet:2,script:[10,65,66,69,70,73,74,75],script_path:74,scroll:75,search:[2,7,10,35,43,64,66,67,69,70],searchcv:[0,64,66,69],sebastian:64,second:[2,10,16,25,59,67,71],section:[67,70,74,75],see:[0,1,2,4,7,8,10,11,12,18,22,23,35,41,45,54,55,57,64,65,66,67,69,70,71,74,75],seed:[2,27,66,67],seem:[66,73],seen:75,seg:[18,66],seg_liver_mr:75,seg_tumor1_mr:75,seg_tumor2_mr:75,seg_tumor_mr:75,segment:[0,7,11,12,18,39,41,61,65,66,67,71,73,74],segmentation_file_nam:[7,74],segmentations1:75,segmentations2:75,segmentations_from_this_directori:[7,74],segmentations_test:75,segmentations_train:[7,75],segmentix:[0,1,3,40,41,55,61,64,65,66,75],segmentix_test:[0,13],segradiu:[60,61,67],segtyp:[60,61,67],sel:10,select:[2,7,10,12,23,35,55,64,65,66,67,73,75],selected_label:7,selectfeatgroup:[3,35,64,70],selectfrommodel:[34,35,66,67],selectfrommodel_estim:[34,35,67],selectfrommodel_lasso_alpha:[34,35,67],selectfrommodel_n_tre:[34,35,67],selectgroup:[0,64,70],selectindividu:[0,64],selectmodel:2,selectmulticlassrelief:10,selectormixin:[10,66],self:[2,4,8,10,12,18,23,67,70],selfeat_vari:10,semant:[0,7,63,64,66,67],semantic_featur:[10,62,63,67],semantics_from_this_fil:7,semantics_test:75,semantics_train:75,semf_:[10,24,36,67],semicolon:66,sensibl:71,sensit:[65,75],separ:[2,7,22,24,31,36,37,44,65,66,67,75],sequenc:[0,2,59,65,67,75],sequenti:2,seri:[7,70],seriou:65,serpar:66,serv:[0,71,73,75],session:5,set:[0,1,2,5,7,10,11,16,18,23,31,41,43,47,53,65,66,67,69,70,71,73,74,75],set_fixed_split:7,set_image_typ:[7,74],set_multicore_execut:[7,74],set_tmpdir:[7,74],settin:2,settings_dict:1,setup:[7,66],sever:[0,7,10,12,65,66,67,70,71,73,74,75],sex:[10,44,67,71,75],sf_:[10,24,67,70],sf_compact:10,sgd:[22,23,67],sgd_alpha:[22,23,67],sgd_l1_ratio:[22,23,67],sgd_loss:[22,23,67],sgd_penalti:[22,23,67],sgdr:[22,67],shape:[2,10,44,45,55,63,64,67,70],shape_featur:[10,62,63,67],shear:73,sheet:75,shift:[25,67],should:[0,1,2,7,10,11,12,25,37,41,43,45,57,61,65,66,67,70,75],show:[2,11,66,74,75],shown:73,shrink:2,shrinkag:[23,67],shrout:10,shuffle_estim:11,shutil:66,siemen:71,sigma:[10,16,71],sign:[2,10],signal:16,signatur:[2,4,8,10,12,18,64],signific:[11,75],significantli:67,similar:[2,10,65,66,69,70,71,73,74,75],similarli:69,simpl:[7,65,70,71,73,74],simpleelastix:75,simpleitk:[53,65,66,67,75],simpler:73,simplest:75,simplevalid:19,simpleworc:[0,64,65,66,69,74,75],simpli:[25,64,66,67,70,74,75],simplifi:74,simultan:[2,73],sinc:70,singel:7,singl:[2,7,11,12,16,25,28,29,43,45,47,64,65,66,67,68,75],single_class_relief:10,singleclass:2,singlelabel:[2,18,48,49,67],singleton:2,sink:[0,18,66,69,73,75],sink_data:[0,14,18,75],site:[2,64],sitkbsplin:[54,55,67],six:71,size:[2,11,18,28,29,35,43,45,59,64,66,67,75],size_alpha:[],skew:71,skip:[37,66,67,74,75],skip_featur:[10,36,37,67],sklearn:[2,10,11,22,23,35,42,66,67,69],slack:[23,67],sleijfer:64,slice:[0,2,11,45,61,66,67,71,75],slicer:[0,11,64,66],slight:2,slightli:74,slow:66,smac3:65,smac:[0,3,59,64,66],smac_result_fil:2,smac_results_all_0:65,smac_tool:65,small:[10,61,65,66,67,71],smaller:[57,67,71],smallest:2,smart:67,smit:64,smote:[2,56,66,67],smoteen:2,smoteenn:[56,67],smotetomek:[56,67],snapshot:75,sne:[7,75],snelliu:7,snelliusclusterdetector:4,sobol:[58,59,67],societi:64,soft:[],softwar:[25,64,67,73],sole:71,solid:71,solut:[2,70],solv:[70,73],solver:[23,66,67],some:[0,2,7,64,65,66,67,69,73,74,75],somenam:[67,75],someon:73,someotherrandandomfolderwith:70,sometim:66,sort:[2,16,66,74],sourc:[0,1,2,4,5,6,7,8,10,11,12,14,16,17,18,19,64,66,67,69,71,73,74],source_data:[0,14,75],space:[2,10,11,12,35,45,53,65,66,67,69,71,75],span:2,spars:[10,75],spatial:65,spawn:[0,2],spawner:0,spearman:[65,75],special:65,specif:[2,10,23,51,66,67,69,70,71,73,74,75],specifi:[0,2,7,12,23,35,41,43,51,57,65,67],speed:[7,74],spend:2,spheric:71,split0_test_scor:2,split0_train_scor:2,split1_test_scor:2,split1_train_scor:2,split2_test_scor:2,split2_train_scor:2,split:[2,7,10,18,23,27,65,66,67,71,73,75],springer:71,squar:[2,11,65,75],squared_epsilon_insensit:[22,67],squared_hing:[22,67],squared_loss:[22,67],src:2,ssh:74,stabl:[0,10,22,23,35,57,66,67],stack:[1,45,67],standalon:[18,66],standard:[7,10,45,64,66,67,71,74,75],standardis:64,standardscal:10,starman:64,start:[2,64,66,67,70,73],stat:[2,11,74],state:[0,2,66,69,74],statement:[12,69],staticmethod:19,statist:[0,2,10,11,17,35,64,65,66,67,71,74,75],statisticalsel:2,statisticaltest:66,statisticaltestfeatur:[0,64,66],statisticaltestmetr:[34,35,67],statisticaltestthreshold:[0,34,35,64,67],statisticaltestus:[34,35,67],statsticaltestthreshold:66,statu:[2,12,64],std:10,std_fit_tim:2,std_score_tim:2,std_test_scor:2,std_train_scor:2,stefan:[64,65],step:[2,45,65,66,67,68,70,71,73,75],still:[66,70,74,75],stimul:64,stochast:65,stop:[12,66],store:[2,7,8,74,75],str:[2,66],straight:[65,73],strategi:[2,10,11,46,47,57,59,64,66,67],stratif:64,stratifi:[2,18],stratifiedkfold:2,strenght:[23,67],strength:[23,67,71],stretch:11,string:[0,1,2,7,10,11,12,22,24,36,42,43,44,48,50,66,67,75],stromal:64,strongli:74,struct:66,structer:71,structur:[70,71,74,75],stuck:74,student:[10,73,75],studi:[0,64,65,73],studio:74,stwstrategyhn1:74,sub:[0,71],subfold:[7,66,70,74],subgroup:71,subject:[2,5,7],subkei:[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,67],submit:64,subpackag:64,subset:[2,74],substr:[10,25,37,51,67],subtract:[12,60,61,66,67],succeed:66,success:2,sudo:65,suffici:75,suggest:[2,69],suit:[0,2,12],suitabl:[64,71],sum:[23,67],summari:65,sun2014fast:16,sun:16,superelastix:65,suppli:[1,2,11,45,53,57,61,65,66,67,75],support:[2,10,27,53,59,64,65,66,67,70,71,73,75],suppos:67,sure:[7,65,69,70,75],surfac:71,surfsara:74,surgeri:64,surgic:[],surrog:[2,65],surround:71,surveil:[],surviv:[7,11,75],svc:2,svd:[22,67],svm:[2,7,11,22,23,65,66,67],svmc:[22,23,67],svmcoef0:[22,23,67],svmdegre:[22,23,67],svmgamma:[22,23,67],svmkernel:[22,23,67],svr:[2,7,22,67],swig3:65,swig:65,symlink:66,symmetri:71,symposium:64,synthet:[10,11],synthetictest:10,system:[0,2,67,71,75],tabl:[2,75],tadpol:[2,75],tag:[44,45,66,67,71,75],take:[2,10,43,65,66,67,69,75],taken:11,tandfonlin:10,target:2,task:73,techniqu:[65,67,71],tedious:73,tell:[7,69,75],tempdir:[66,74],tempfold:2,temporari:[0,7,66,74],tempsav:[2,40,41,67],term:[23,35,65,66,67,73],terminolog:64,test:[0,2,7,10,11,16,27,31,35,41,43,64,65,66,67,70,74,75],test_combat:[0,64],test_combat_fastr:17,test_data:[],test_help:[0,64],test_iccthreshold:[0,64],test_invalidlabelsvalidator_columnsubstr:17,test_invalidlabelsvalidator_patientcolumn:17,test_invalidlabelsvalidator_patientsubstr:17,test_invalidlabelsvalidator_validconfig:17,test_metr:11,test_plot_error:[0,64],test_rs_ensembl:2,test_sampl:11,test_sample_count:2,test_scor:[2,42,67],test_score_dict:2,test_siz:[2,18,26,27,42,43,67],test_target:[],test_valid:[0,64],tex:[11,66],text:2,textur:[45,63,64,67],texture_featur:10,texture_gabor:[44,45,67],texture_gabor_featur:[10,62,63,67],texture_glcm:[44,45,54,55,67],texture_glcm_featur:[10,62,63,67],texture_glcmm:[44,45,67],texture_glcmms_featur:[10,62,63,67],texture_gldm:[54,55,67],texture_gldm_featur:[62,63,67],texture_gldzm_featur:[10,62,63,67],texture_glrlm:[44,45,54,55,67],texture_glrlm_featur:[10,62,63,67],texture_glszm:[44,45,54,55,67],texture_glszm_featur:[10,62,63,67],texture_lbp:[44,45,67],texture_lbp_featur:[10,62,63,67],texture_ngldm_featur:[10,62,63,67],texture_ngtdm:[44,45,54,55,67],texture_ngtdm_featur:[10,62,63,67],tf_glcm_contrastd1:71,than:[2,45,57,66,67,70,74],thei:[2,66,67,68,71,74,75],them:[2,66,67,73,75],themselv:71,therebi:[64,66,73,75],therefor:[0,7,10,65,66,69,70,71,73,74,75],thermographi:[45,67,74],thi:[0,2,7,10,11,33,37,43,51,53,57,64,65,66,67,68,69,70,71,72,73,74,75],thick:[45,67,71],thing:[66,67,70,74],third:10,thoma:64,thomeer:64,those:[2,7,10,69,71,75],thread:[40,66,67],three:[2,70,71],thresh:[10,11],threshold:[2,10,11,17,35,53,57,66,67,71],threshold_annot:11,threshold_clean:[2,56,57,67],through:[0,2,10,12,18,53,64,65,66,67,71,73,74,75],throughput:71,thu:[2,10,64,65,66,67,70,71,73,75],tibshirani:75,tiff:[12,75],tikzplotlib:66,till:65,timbergen:64,time:[2,11,27,35,43,57,58,59,65,66,67,71,73,74,75],timer:66,timo:71,tip:64,tissu:[],titl:16,tmp:7,tmpdir:[7,74],to_hdf:70,todo:[2,10],togeth:[66,69,74],tol:2,toler:[],tomek:2,tomographi:64,tone:64,too:71,tool:[0,7,40,41,64,65,66,67,69,72,73,74,75],toolbox:[10,62,63,64,65,66,67,70,71,75],top50:[],top:[11,66],top_n:[2,11,18,28,29,66,67],topi:71,toshiba:71,total:[2,71],towardsdatasci:67,tpr:11,trace:[70,74],track:2,trade:2,train:[0,2,7,11,23,27,31,35,41,43,65,66,67,75],train_data:[],train_scor:2,train_score_dict:2,train_target:[],train_test_split:2,trainclassifi:[0,11,64,66,69],transact:[2,65,71],transform:[2,10,41,65,66,67,69,71,75],transformationnod:[40,41,67],transformermixin:10,transformix:[0,40,64,66,67],transpos:[12,65,66],transpose_imag:12,travi:66,treat:67,tree:[23,35,65,67,75],tri:[2,73],trick:64,trigger:71,tru:[45,67],truth:[2,11,66,75],tsampl:11,ttest:[10,34,66,67],tube:71,tubular:71,tumor:[64,74,75],tumour:64,tune:[67,73],tupl:2,turn:[65,66,70],tutori:[17,64,67,70],two:[0,2,10,11,16,22,34,44,46,56,65,66,67,71,74,75],txt:[0,1,2,7,10,11,65,66,67,75],type:[0,2,4,7,8,10,11,12,18,23,26,27,35,41,59,64,65,66,67,69,71,73,74,75],typeerror:[0,2],typegroup:66,typic:75,typo:66,udr:[],unadjust:16,unaffect:[25,67],unag:12,uncorrect:75,under:[2,16,64,65,66,67,71,75],underli:2,underscor:75,understand:73,unfit:2,unfortun:70,uniform:[2,23,57,66,67,69,71],uniformli:2,uniqu:[2,71],unit:[66,67],univari:[2,7,65,66,75],univers:64,unless:2,unreleas:[],unround:66,unsuccesful:66,unsuit:66,unsupervis:2,until:2,updat:[2,66],upgrad:66,upon:[7,67],upper:[35,67],upperbound:[12,53,67],uri:66,url:[12,48,49,66,67],urltyp:66,usabl:2,usag:[2,43,65,66,67,71,75],usd:10,use:[0,2,7,10,11,12,18,21,23,25,27,29,31,33,35,41,46,47,51,53,55,58,59,63,64,65,66,67,69,71,73,74,75],use_fastr:2,use_smac:2,useag:10,used:[0,1,2,7,10,11,12,23,27,29,31,35,41,43,45,47,49,53,55,57,59,61,63,64,65,66,67,69,71,73,74,75],useful:[2,10,41,67,75],usemask:12,usepca:[34,35,67],user:[2,7,45,65,67,71,72,74],usersmynamefeaturefold:7,usersmynameimagefold:7,usersmynamemaskfold:7,usersmynamesegmentationfold:7,uses:[2,7,10,66,67,69,70,71,72],using:[0,2,7,10,18,23,25,27,29,35,43,47,53,55,64,65,66,67,69,70,71,73,74,75],usr:65,usual:71,util:2,v600e:64,val:0,valid:[0,2,7,10,11,18,27,41,43,45,64,65,66,67,74,75],validationm:[27,67],validatorsfactori:19,valu:[0,2,7,10,11,12,16,35,42,45,47,51,55,65,66,67,69,70,71,74,75],value1:67,value2:67,valueerror:0,van:[64,71],vari:[2,55,66,67,71,73],variabl:[0,11,25,65,66,67,70,74],varianc:[2,10,16,34,35,66,67,71],variancethreshold:[0,35,64,66,67],variancethresholdmean:10,variant:73,variat:[25,65,67],varieti:[7,64,71],variou:[2,11,64,65,66,67,69,72,73,75],varsel:2,vector:[2,10,65],veenland:64,veldt:64,vendor:64,verbos:[2,5,10,11,66],verhoef:64,veri:[2,73],verion:66,vermeulen:64,version:[16,25,65,66,67,70,71],verson:66,versu:64,vessel:[44,45,63,64,67],vessel_featur:[10,62,63,67],vessel_radiu:[44,45,67,71],vessel_scale_rang:[44,45,67,71],vessel_scale_step:[44,45,67,71],vf_:10,vfs:[0,66],via:74,vincent:64,virtual:70,virtualenv:74,vishwa:71,visit:69,visser:64,visual:[71,74],vizual:66,vol:75,volum:[16,64,71],voort:64,voxel:[61,67,71],voxelarrayshift:[54,55,67],wai:[67,71,75],wallclock:[59,67],want:[0,7,12,64,65,67,69,71,74,75],warn:[2,66],warp:[65,75],wavelength:[45,67],wavelet:[54,55,63,64,66,67],wavelet_featur:[10,62,63,67],weak:[0,2,4,7,8,10,12,18,19],week:70,weichao:16,weight:[2,23,66,67],weigth:[35,67],welch:[10,34,67,75],well:[12,64,65,66,67,69,71,73,74,75],were:[66,69,70,71,73,75],weus:75,what:[69,71],when:[0,2,7,10,11,18,23,27,29,35,37,43,45,47,65,66,67,69,70,71,73,74,75],whenev:2,where:[2,11,64,65,66,73,74],wheter:[31,67],whether:[1,2,7,10,11,12,21,41,45,49,51,53,55,61,66,67,68,71,74],which:[0,2,7,8,10,11,12,25,29,35,37,41,43,51,55,59,65,66,67,68,69,70,71,73,74,75],whitelist:69,whitnei:75,whole:[43,67,73],why:67,wich:2,wide:[64,71],width:[55,64,67,75],wijnenga:64,wiki:[1,2,10,11,12],wilcoxon:[2,10,34,67,75],wildcard:[7,70],willemssen:64,window:[23,66,67,74],wip:[10,11,48,49,67,68,69],wish:[29,67],with_mean:10,with_std:10,within:[65,66,68,70,71,73,75],withing:[53,67],without:[2,66],wonder:73,worc:[1,2,4,5,6,7,8,10,11,12,14,16,17,18,19,23,40,42,45,51,65,66,67,68,69,71,72,73,74],worc_:74,worc_config:[0,64,66,67],worcassertionerror:0,worccastconvert:66,worccastcovert:66,worcdirectorydetector:4,worcerror:0,worcflow:64,worcindexerror:0,worcioerror:0,worckeyerror:[0,64],worcnotimplementederror:0,worcobject:18,worcscal:10,worctutori:[7,64,70,74,75],worctutorialsimple_travis_multiclass:[],worctutorialsimple_travis_regress:[],worctutorialsimple_unittest_multiclass:[0,64],worctutorialsimple_unittest_regress:[0,64],worctypeerror:0,worcvalueerror:[0,64],worcworc:69,work:[12,64,65,66,71,73],workaround:2,workflow:[0,7,11,43,65,66,67,68,69,71,73,74,75],workload:39,would:[64,67,71,73,74,75],wrap:[2,66,69,73],wrapper:[2,65,69,75],write:11,written:[2,10,11],wtype:0,www:[10,67],x_test:[2,10],x_train:[2,10,11],xgb:[23,67],xgb_boosting_round:[22,23,67],xgb_colsample_bytre:[22,23,67],xgb_gamma:[22,23,67],xgb_learning_r:[22,23,67],xgb_max_depth:[22,23,67],xgb_min_child_weight:[22,23,67],xgbclassifi:[22,67],xgboost:[65,66,67],xgbregressor:[22,67],xgdboost:66,xlsx:[2,8],xml:69,xnat:[12,66,74],xnat_url:5,y_predict:[2,11],y_score:[2,11],y_test:2,y_train:[2,10,11],y_truth:[2,11],yandexdataschool:16,year:16,yet:[7,12,66],yield:2,yml:66,you:[0,2,7,12,18,29,51,57,64,65,66,67,69,70,71,73,74,75],your:[0,2,7,31,40,41,43,45,49,55,64,66,67,69,74],yourself:[64,73],yspace:10,z_score:[10,12,36,52,67],zero:[10,47,66,67],zij:10,zip:[11,66,74],zone:64,zoomfactor:11,zwanenburg:71},titles:["WORC Package","IOparser Package","classification Package","<no title>","detectors Package","exampledata Package","export Package","facade Package","helpers Package","fastrconfig Package","featureprocessing Package","plotting Package","processing Package","resources Package","fastr_tests Package","fastr_tools Package","statistics Package","tests Package","tools Package","validators Package","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","WORC: Workflow for Optimal Radiomics Classification","Additional functionality","Changelog","Configuration","Data Mining Methods","Developer documentation","FAQ","Radiomics Features","Resource File Formats","Introduction","Quick start guide","User Manual"],titleterms:{"0rc1":66,"boolean":70,"class":12,"default":70,"export":6,"function":65,"import":74,Added:66,Adding:69,The:[74,75],actual:74,addexcept:[0,70],addit:65,advancedsampl:2,alter:70,analysi:[68,74],arrai:70,attribut:75,basicworc:7,bayesian:65,begin:70,bigr:70,bin:71,binari:71,bootstrap:67,calcfeatures_test:14,can:70,chang:66,changelog:66,choic:71,classif:[2,64,65,67,68],classifi:[],cluster:70,column:70,combat:[10,65,67],command:75,compon:68,comput:70,compute_ci:11,config_io_classifi:1,config_io_combat:1,config_io_pyradiom:1,config_preprocess:1,config_segmentix:1,config_worc:1,configbuild:8,configur:67,construct:75,construct_classifi:2,content:67,convert:70,crash:70,create_example_data:5,createfixedsplit:[2,18],creation:67,crossval:2,crossvalid:67,data:[68,69,75],datadownload:5,debug:75,decomposit:10,definit:75,delet:70,delong:16,depend:71,detector:4,develop:[64,69],dicom:71,differ:[70,71],dimension:68,document:[64,69],elastix:18,elastix_para:75,elastix_test:14,ensembl:67,entri:70,error:70,estim:[],evalu:[18,67,75],exampl:[69,75],exampledata:5,except:8,execut:[70,75],experi:[70,74],extract:71,extractnlargestblobsn:12,facad:7,fals:70,faq:70,fastr:73,fastr_test:14,fastr_tool:15,fastrconfig:9,feat_out_0:70,featpreprocess:67,featsel:67,featur:[65,68,69,70,71,75],featureconvert:10,featureprocess:10,featuresc:67,file:[70,72,75],file_io:1,filter:71,fingerprint:18,first:70,fitandscor:2,fix:[66,71],format:[70,72],found:70,from:68,full:71,function_bas:70,gabor:71,gaussian:71,gener:67,given:70,glcm:71,gldm:71,glrlm:71,glszm:71,grai:71,groupwis:68,guid:74,hdf5:70,helper:[8,12],histogram:71,hyper_params_export:6,hyperoptim:[67,69],icc:[],iccthreshold:10,imag:[65,71,75],imagefeatur:67,imput:[10,67,68],indexerror:70,indic:[64,70],infer:18,input:[74,75],instal:[70,74],instead:[65,70],integ:70,interact:[67,75],introduct:[67,73],iopars:1,job:70,keep:70,label:[67,70,75],label_process:12,labels_from_this_fil:70,laplacian:71,lbp:71,learn:68,length:71,level:71,lib:70,like:70,line:70,linstretch:11,local:71,log:71,look:70,machin:68,manual:75,mask:75,matrix:71,metadata:75,method:[68,69],metric:2,mine:68,model:68,modul:[0,1,2,4,5,6,7,8,9,10,11,12,14,16,17,18,19,64,70],modular:73,modulenotfounderror:70,multilabel:65,must:70,name:70,need:70,neighborhood:71,network:75,ngtdm:71,numpi:70,obj:70,object:75,objectsampl:2,occur:71,onehotencod:[67,68],onehotencoderwrapp:10,ones:70,optim:[64,65,73],orient:71,other:[70,71],own:70,packag:[0,1,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,70,74],paramet:71,parameter_optim:2,patient:70,pattern:71,pca:68,phase:71,plot:11,plot_barchart:11,plot_boxplot_featur:11,plot_boxplot_perform:11,plot_error:11,plot_estimator_perform:11,plot_hyperparamet:11,plot_imag:11,plot_pvalues_featur:11,plot_ranked_scor:11,plot_roc:11,plotminmaxrespons:11,preflightcheck:19,preprocess:[12,65,67],preprocessor:10,princip:68,process:[8,12,69],pyradiom:67,queue:70,quick:74,radiom:[64,71,73],random:65,rankedsvm:[],reduct:68,refer:[64,65],registr:65,regress:[65,68],regressor:2,relief:[10,68],resampl:[67,68],resourc:[13,72],result:74,roi:71,run:[71,74],scale:[65,68],scaler:10,scatterplot:[],search:65,searchcv:2,segment:75,segmentix:[12,67],segmentix_test:14,select:[68,70,71],selectfeatgroup:67,selectgroup:10,selectindividu:10,semant:[71,75],shape:71,simpleworc:[7,70],site:70,size:71,slicer:18,smac:[2,65,67],some:70,sourc:75,standard:[70,73],start:74,statist:[16,68],statisticaltestfeatur:10,statisticaltestthreshold:10,submit:70,subpackag:[0,7,13],surviv:68,tabl:64,tell:70,terminolog:73,test:[17,68,69],test_combat:17,test_help:17,test_iccthreshold:17,test_plot_error:17,test_valid:17,textur:71,tip:74,tone:71,tool:18,toolbox:69,trainclassifi:2,transformix:18,trick:74,tutori:74,type:70,univari:68,unreleas:[],use:70,used:70,user:[64,75],valid:19,varianc:68,variancethreshold:10,vessel:71,wavelet:71,welcom:64,where:70,width:71,worc:[0,64,70,75],worc_config:9,worckeyerror:70,worctutorialsimple_travis_multiclass:[],worctutorialsimple_travis_regress:[],worctutorialsimple_unittest_multiclass:17,worctutorialsimple_unittest_regress:17,worcvalueerror:70,work:70,workflow:64,would:70,your:[70,75],zone:71}}) \ No newline at end of file diff --git a/WORC/doc/_build/html/static/changelog.html b/WORC/doc/_build/html/static/changelog.html index 3c8da0a3..755fddc6 100644 --- a/WORC/doc/_build/html/static/changelog.html +++ b/WORC/doc/_build/html/static/changelog.html @@ -8,7 +8,7 @@ - Changelog — WORC 3.5.0 documentation + Changelog — WORC 3.6.0 documentation @@ -64,7 +64,7 @@
    - 3.5.0 + 3.6.0
    @@ -99,160 +99,165 @@
  • Developer documentation
  • Resource File Formats
  • Changelog
  • FeatureScaling

    FeatureScaling

    General

    Fingerprinting

    Fingerprinting

    General

    General

    HyperOptimization

    HyperOptimization

    HyperOptimization

    ImageFeatures

    ImageFeatures

    ImageFeatures

    Imputation

    Imputation

    Imputation

    Labels

    Labels

    Labels

    OneHotEncoding

    OneHotEncoding

    OneHotEncoding

    Preprocessing

    Preprocessing

    Preprocessing

    PyRadiomics

    PyRadiomics

    PyRadiomics

    Resampling

    Resampling

    Resampling

    SMAC

    SMAC

    Segmentix

    Segmentix

    ComBat

    Whether to use ComBat feature harmonization on your FULL dataset, i.e. not in a train-test setting. See <https://github.com/Jfortin1/ComBatHarmonization for more information./>`_ .

    Fingerprint

    Whether to use Fingerprinting or not.

    Defaults and Options:

    @@ -430,7 +440,7 @@

    Contents

    tempsave

    -

    False

    +

    True

    True, False

    AssumeSameImageAndMaskMetadata

    @@ -441,6 +451,10 @@

    Contents

    Fingerprint

    +

    True

    +

    True, False

    +

    @@ -704,7 +718,7 @@

    Contents

    mask

    -

    If a mask is supplied, should the mask be subtracted from the contour or multiplied.

    +

    If None, masks will not be used by segmentix. If a mask is supplied, should the mask be subtracted from the contour or multiplied.

    segtype

    If Ring, then a ring around the segmentation will be used as contour. If Dilate, the segmentation will be dilated per 2-D axial slice with a disc.

    @@ -729,9 +743,9 @@

    Contents - - + +

    Subkey

    @@ -741,8 +755,8 @@

    Contents

    mask

    -

    subtract

    -

    subtract, multiply

    +

    None

    +

    None, subtract, multiply

    segtype

    None

    @@ -780,8 +794,8 @@

    Contents - - + +

    Subkey

    @@ -832,51 +846,54 @@

    Contents

    image_type

    -

    Modality of images supplied. Determines how the image is loaded.

    +

    Modality of images supplied. Determines how the image is loaded. Mandatory to supply by user. Should be one of the valid quantitative modalities [β€˜CT’, β€˜PET’, β€˜Thermography’, β€˜ADC’, β€˜MG’] or qualitative modalities [β€˜MRI’, β€˜MR’, β€˜DWI’, β€˜US’].

    -

    gabor_frequencies

    +

    extraction_mode

    +

    Determine how to extract the features: 2D if your masks and/or images have only one 2D slice, 3D for tru 3D images, 2.5D for 3D images but in a slice-by-slice stacked 2D manner. The latter is recommended when the slice thickness is much larger (>2) than the pixel spacing.

    + +

    gabor_frequencies

    Frequencies of Gabor filters used: can be a single float or a list.

    -

    gabor_angles

    +

    gabor_angles

    Angles of Gabor filters in degrees: can be a single integer or a list.

    -

    GLCM_angles

    +

    GLCM_angles

    Angles used in GLCM computation in radians: can be a single float or a list.

    -

    GLCM_levels

    +

    GLCM_levels

    Number of grayscale levels used in discretization before GLCM computation.

    -

    GLCM_distances

    +

    GLCM_distances

    Distance(s) used in GLCM computation in pixels: can be a single integer or a list.

    -

    LBP_radius

    +

    LBP_radius

    Radii used for LBP computation: can be a single integer or a list.

    -

    LBP_npoints

    +

    LBP_npoints

    Number(s) of points used in LBP computation: can be a single integer or a list.

    -

    phase_minwavelength

    +

    phase_minwavelength

    Minimal wavelength in pixels used for phase features.

    -

    phase_nscale

    +

    phase_nscale

    Number of scales used in phase feature computation.

    -

    log_sigma

    +

    log_sigma

    Standard deviation(s) in pixels used in log feature computation: can be a single integer or a list.

    -

    vessel_scale_range

    +

    vessel_scale_range

    Scale in pixels used for Frangi vessel filter. Given as a minimum and a maximum.

    -

    vessel_scale_step

    +

    vessel_scale_step

    Step size used to go from minimum to maximum scale on Frangi vessel filter.

    -

    vessel_radius

    +

    vessel_radius

    Radius to determine boundary of between inner part and edge in Frangi vessel filter.

    -

    dicom_feature_tags

    +

    dicom_feature_tags

    DICOM tags to be extracted as features. See https://worc.readthedocs.io/en/latest/static/features.html.

    -

    dicom_feature_labels

    +

    dicom_feature_labels

    For each of the DICOM tag values extracted, name that should be assigned to the feature. See https://worc.readthedocs.io/en/latest/static/features.html.

    @@ -952,66 +969,70 @@

    Contents

    image_type

    -

    CT

    -

    CT

    + +

    String

    -

    gabor_frequencies

    +

    extraction_mode

    +

    2.5D

    +

    String: 2D, 2.5D or 3D

    + +

    gabor_frequencies

    0.05, 0.2, 0.5

    Float(s)

    -

    gabor_angles

    +

    gabor_angles

    0, 45, 90, 135

    Integer(s)

    -

    GLCM_angles

    +

    GLCM_angles

    0, 0.79, 1.57, 2.36

    Float(s)

    -

    GLCM_levels

    +

    GLCM_levels

    16

    Integer > 0

    -

    GLCM_distances

    +

    GLCM_distances

    1, 3

    Integer(s) > 0

    -

    LBP_radius

    +

    LBP_radius

    3, 8, 15

    Integer(s) > 0

    -

    LBP_npoints

    +

    LBP_npoints

    12, 24, 36

    Integer(s) > 0

    -

    phase_minwavelength

    +

    phase_minwavelength

    3

    Integer > 0

    -

    phase_nscale

    +

    phase_nscale

    5

    Integer > 0

    -

    log_sigma

    +

    log_sigma

    1, 5, 10

    Integer(s)

    -

    vessel_scale_range

    +

    vessel_scale_range

    1, 10

    Two integers: min and max.

    -

    vessel_scale_step

    +

    vessel_scale_step

    2

    Integer > 0

    -

    vessel_radius

    +

    vessel_radius

    5

    Integer > 0

    -

    dicom_feature_tags

    +

    dicom_feature_tags

    0010 1010, 0010 0040

    DICOM tag keys, e.g. 0010 0010, separated by comma’s

    -

    dicom_feature_labels

    +

    dicom_feature_labels

    age, sex

    List of strings

    @@ -1054,7 +1075,7 @@

    Contentshttps://pyradiomics.readthedocs.io/en/latest/customization.html/>`_ .

    binCount

    -

    We advice to use a fixed bin count instead of a fixed bin width, as on imaging modalities such as MRI, the scale of the values varies a lot, which is incompatible with a fixed bin width. See <https://pyradiomics.readthedocs.io/en/latest/customization.html/>`_ .

    +

    We advice to use a fixed bin count instead of a fixed bin width, as on imaging modalities such as MR, the scale of the values varies a lot, which is incompatible with a fixed bin width. See <https://pyradiomics.readthedocs.io/en/latest/customization.html/>`_ .

    binWidth

    See <https://pyradiomics.readthedocs.io/en/latest/customization.html/>`_ .

    @@ -1968,8 +1989,8 @@

    Contents - - + +

    Subkey

    @@ -2079,14 +2100,32 @@

    Contents

    XGB_colsample_bytree

    Col sample by tree in XGB.

    +

    LightGBM_num_leaves

    +

    Maximum tree leaves for base learners. See also https://lightgbm.readthedocs.io/en/latest/Parameters.html.

    + +

    LightGBM_max_depth

    +

    Maximum tree depth for base learners. See also https://lightgbm.readthedocs.io/en/latest/Parameters.html.

    + +

    LightGBM_min_child_samples

    +

    Minimum number of data needed in a child (leaf). See also https://lightgbm.readthedocs.io/en/latest/Parameters.html.

    + +

    LightGBM_reg_alpha

    +

    L1 regularization term on weights. See also https://lightgbm.readthedocs.io/en/latest/Parameters.html.

    + +

    LightGBM_reg_lambda

    +

    L2 regularization term on weights. See also https://lightgbm.readthedocs.io/en/latest/Parameters.html.

    + +

    LightGBM_min_child_weight

    +

    Minimum sum of instance weight (hessian) needed in a child (leaf). See also https://lightgbm.readthedocs.io/en/latest/Parameters.html.

    +

    Defaults and Options:

    ---+++ @@ -2231,6 +2270,30 @@

    Contents

    + + + + + + + + + + + + + + + + + + + + + + +

    Subkey

    LightGBM_num_leaves

    5, 95

    Two Integers: loc and scale

    LightGBM_max_depth

    3, 12

    Two Integers: loc and scale

    LightGBM_min_child_samples

    5, 45

    Two Integers: loc and scale

    LightGBM_reg_alpha

    0.01, 0.99

    Two Floats: loc and scale

    LightGBM_reg_lambda

    0.01, 0.99

    Two Floats: loc and scale

    LightGBM_min_child_weight

    -7, 4

    Two Integers: loc and scale

    @@ -2393,6 +2456,84 @@

    Contents +

    SMACΒΆ

    +

    WORC enables the use of the SMAC algorithm for the hyperparameter optimization. +SMAC uses the same parameter options as the default random search, except for +resampling which is currently not compatible with SMAC.

    +

    Description:

    + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + +

    Subkey

    Description

    use

    If True, use SMAC as the optimization strategy.

    n_smac_cores

    Number of independent, parallel SMAC instances to use.

    budget_type

    Type of budget to use for the SMAC optimization, either an evaluation limit or a time limit.

    budget

    Size of the budget, which depends on the type of budget. Number of evaluations for an evaluation limit, or wallclock seconds for a time limit.

    init_method

    Initialization method of SMAC. Supported are a random initialization or a sobol sequence.

    init_budget

    Number of evaluations used for the initialization. Always an evaluation limit, regardless of the budget type choice of the optimization.

    +

    Defaults and Options:

    + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Subkey

    Default

    Options

    use

    False

    True, False

    n_smac_cores

    1

    Integer

    budget_type

    evals

    evals, time

    budget

    100

    Integer

    init_method

    random

    random, sobol

    init_budget

    20

    Integer

    +

    EnsembleΒΆ

    WORC supports ensembling of workflows. This is not a default approach in @@ -2410,10 +2551,13 @@

    Contents

    Use

    -

    Determine whether to use ensembling or not. Provide an integer to state how many estimators to include: 1 equals no ensembling.

    +

    Method

    +

    Choose which ensemble method to use. If you do not wish to use an ensemble, use Single or top_N with size 1.

    -

    Metric

    +

    Size

    +

    Number of estimators to use in the ensemble for the top_N method, or the number of bags for the Bagging method.

    + +

    Metric

    Metric used to determine ranking of estimators in ensemble. When using default, the metric that is used in the hyperoptimization is used.

    @@ -2421,9 +2565,9 @@

    Contents - - - + + +

    Subkey

    @@ -2432,11 +2576,15 @@

    Contents

    Use

    +

    Method

    +

    top_N

    +

    Single, top_N, FitNumber, ForwardSelection, Caruana, Bagging

    + +

    Size

    100

    Integer

    -

    Metric

    +

    Metric

    Default

    Default, generalization

    @@ -2526,7 +2674,7 @@

    Contents

    N_iterations

    -

    1000

    +

    10000

    Integer

    diff --git a/WORC/doc/_build/html/static/file_description.html b/WORC/doc/_build/html/static/file_description.html index 998f3b1c..e946d69e 100644 --- a/WORC/doc/_build/html/static/file_description.html +++ b/WORC/doc/_build/html/static/file_description.html @@ -8,7 +8,7 @@ - Resource File Formats — WORC 3.5.0 documentation + Resource File Formats — WORC 3.6.0 documentation @@ -64,7 +64,7 @@
    - 3.5.0 + 3.6.0
    diff --git a/WORC/doc/_build/html/static/introduction.html b/WORC/doc/_build/html/static/introduction.html index 75cba34c..1c735afc 100644 --- a/WORC/doc/_build/html/static/introduction.html +++ b/WORC/doc/_build/html/static/introduction.html @@ -8,7 +8,7 @@ - Introduction — WORC 3.5.0 documentation + Introduction — WORC 3.6.0 documentation @@ -64,7 +64,7 @@
    - 3.5.0 + 3.6.0
    diff --git a/WORC/doc/_build/html/static/quick_start.html b/WORC/doc/_build/html/static/quick_start.html index 1f29f213..08c3aafc 100644 --- a/WORC/doc/_build/html/static/quick_start.html +++ b/WORC/doc/_build/html/static/quick_start.html @@ -8,7 +8,7 @@ - Quick start guide — WORC 3.5.0 documentation + Quick start guide — WORC 3.6.0 documentation @@ -64,7 +64,7 @@
    - 3.5.0 + 3.6.0
    @@ -347,6 +347,11 @@

    The actual experimentexperiment.labels_from_this_file(label_file) experiment.predict_labels(label_name) +# Set the types of images WORC has to process. Used in fingerprinting +# Valid quantitative types are ['CT', 'PET', 'Thermography', 'ADC'] +# Valid qualitative types are ['MRI', 'DWI', 'US'] +experiment.set_image_types(['CT']) + # Use the standard workflow for your specific modus if modus == 'binary_classification': experiment.binary_classification(coarse=coarse) diff --git a/WORC/doc/_build/html/static/user_manual.html b/WORC/doc/_build/html/static/user_manual.html index c51ef806..061444f2 100644 --- a/WORC/doc/_build/html/static/user_manual.html +++ b/WORC/doc/_build/html/static/user_manual.html @@ -8,7 +8,7 @@ - User Manual — WORC 3.5.0 documentation + User Manual — WORC 3.6.0 documentation @@ -64,7 +64,7 @@
    - 3.5.0 + 3.6.0
    diff --git a/WORC/doc/autogen/WORC.classification.rst b/WORC/doc/autogen/WORC.classification.rst index 1f358e9b..49bc90f1 100644 --- a/WORC/doc/autogen/WORC.classification.rst +++ b/WORC/doc/autogen/WORC.classification.rst @@ -100,6 +100,15 @@ classification Package :show-inheritance: :special-members: +:mod:`smac` Module +------------------ + +.. automodule:: WORC.classification.smac + :members: + :undoc-members: + :show-inheritance: + :special-members: + :mod:`trainclassifier` Module ----------------------------- diff --git a/WORC/doc/autogen/WORC.config.rst b/WORC/doc/autogen/WORC.config.rst index 5111b92f..e6fb47dd 100644 --- a/WORC/doc/autogen/WORC.config.rst +++ b/WORC/doc/autogen/WORC.config.rst @@ -20,7 +20,7 @@ OneHotEncoding :ref:`OneHotEncoding ` Preprocessing :ref:`Preprocessing ` PyRadiomics :ref:`PyRadiomics ` Resampling :ref:`Resampling ` +SMAC :ref:`SMAC ` Segmentix :ref:`Segmentix ` -SelectFeatGroup :ref:`SelectFeatGroup ` -SMAC :ref:`SMAC ` +SelectFeatGroup :ref:`SelectFeatGroup ` ================= =================================================== \ No newline at end of file diff --git a/WORC/doc/autogen/WORC.rst b/WORC/doc/autogen/WORC.rst index 6872a9c8..02387248 100644 --- a/WORC/doc/autogen/WORC.rst +++ b/WORC/doc/autogen/WORC.rst @@ -47,5 +47,6 @@ Subpackages WORC.statistics WORC.tests WORC.tools + WORC.tutorial WORC.validators diff --git a/WORC/doc/autogen/WORC.tools.rst b/WORC/doc/autogen/WORC.tools.rst index f9059a22..786d8f28 100644 --- a/WORC/doc/autogen/WORC.tools.rst +++ b/WORC/doc/autogen/WORC.tools.rst @@ -55,3 +55,12 @@ tools Package :show-inheritance: :special-members: +:mod:`fingerprinting` Module +---------------------------- + +.. automodule:: WORC.tools.fingerprinting + :members: + :undoc-members: + :show-inheritance: + :special-members: + diff --git a/WORC/doc/autogen/config/WORC.config_Classification_defopts.rst b/WORC/doc/autogen/config/WORC.config_Classification_defopts.rst index 4abf9921..8ddff69d 100644 --- a/WORC/doc/autogen/config/WORC.config_Classification_defopts.rst +++ b/WORC/doc/autogen/config/WORC.config_Classification_defopts.rst @@ -1,44 +1,44 @@ -========================== ======================================================================================== ================================================================================================================================================================================================================================================== -Subkey Default Options -========================== ======================================================================================== ================================================================================================================================================================================================================================================== -fastr True True, False -fastr_plugin LinearExecution Any `fastr execution plugin `_ . -classifiers SVM, RF, LR, LDA, QDA, GaussianNB, AdaBoostClassifier, XGBClassifier, LightGBMClassifier SVM , SVR, SGD, SGDR, RF, LDA, QDA, ComplementND, GaussianNB, AdaBoostClassifier, XGBClassifier, LR, RFR, Lasso, ElasticNet, LinR, Ridge, AdaBoostRegressor, XGBRegressor. All are estimators from `sklearn `_ -max_iter 100000 Integer -SVMKernel linear, poly, rbf poly, linear, rbf -SVMC 0, 6 Two Integers: loc and scale -SVMdegree 1, 6 Two Integers: loc and scale -SVMcoef0 0, 1 Two Integers: loc and scale -SVMgamma -5, 5 Two Integers: loc and scale -RFn_estimators 10, 90 Two Integers: loc and scale -RFmin_samples_split 2, 3 Two Integers: loc and scale -RFmax_depth 5, 5 Two Integers: loc and scale -LRpenalty l1, l2, elasticnet none, l2, l1 -LRC 0.01, 0.99 Two Floats: loc and scale -LR_solver lbfgs, saga Comma separated list of strings, for the options see https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html -LR_l1_ratio 0, 1 Float between 0.0 and 1.0. -LDA_solver svd, lsqr, eigen svd, lsqr, eigen -LDA_shrinkage -5, 5 Two Integers: loc and scale -QDA_reg_param -5, 5 Two Integers: loc and scale -ElasticNet_alpha -5, 5 Two Integers: loc and scale -ElasticNet_l1_ratio 0, 1 Two Integers: loc and scale -SGD_alpha -5, 5 Two Integers: loc and scale -SGD_l1_ratio 0, 1 Two Integers: loc and scale -SGD_loss squared_loss, huber, epsilon_insensitive, squared_epsilon_insensitive hinge, squared_hinge, modified_huber -SGD_penalty none, l2, l1 none, l2, l1 -CNB_alpha 0, 1 Two Integers: loc and scale -AdaBoost_n_estimators 10, 90 Two Integers: loc and scale -AdaBoost_learning_rate 0.01, 0.99 Two Floats: loc and scale -XGB_boosting_rounds 10, 90 Two Integers: loc and scale -XGB_max_depth 3, 12 Two Integers: loc and scale -XGB_learning_rate 0.01, 0.99 Two Floats: loc and scale -XGB_gamma 0.01, 9.99 Two Floats: loc and scale -XGB_min_child_weight 1, 6 Two Integers: loc and scale -XGB_colsample_bytree 0.3, 0.7 Two Floats: loc and scale -LightGBM_num_leaves 5, 95 Two Integers: loc and scale -LightGBM_max_depth 3, 12 Two Integers: loc and scale -LightGBM_min_child_samples 5, 45 Two Integers: loc and scale -LightGBM_reg_alpha 0.01, 0.99 Two Floats: loc and scale -LightGBM_reg_lambda 0.01, 0.99 Two Floats: loc and scale -LightGBM_min_child_weight -7, 4 Two Integers: loc and scale -========================== ======================================================================================== ================================================================================================================================================================================================================================================== \ No newline at end of file +========================== ===================================================================== ================================================================================================================================================================================================================================================== +Subkey Default Options +========================== ===================================================================== ================================================================================================================================================================================================================================================== +fastr True True, False +fastr_plugin LinearExecution Any `fastr execution plugin `_ . +classifiers SVM, RF, LR, LDA, QDA, GaussianNB, AdaBoostClassifier, XGBClassifier SVM , SVR, SGD, SGDR, RF, LDA, QDA, ComplementND, GaussianNB, AdaBoostClassifier, XGBClassifier, LR, RFR, Lasso, ElasticNet, LinR, Ridge, AdaBoostRegressor, XGBRegressor. All are estimators from `sklearn `_ +max_iter 100000 Integer +SVMKernel linear, poly, rbf poly, linear, rbf +SVMC 0, 6 Two Integers: loc and scale +SVMdegree 1, 6 Two Integers: loc and scale +SVMcoef0 0, 1 Two Integers: loc and scale +SVMgamma -5, 5 Two Integers: loc and scale +RFn_estimators 10, 90 Two Integers: loc and scale +RFmin_samples_split 2, 3 Two Integers: loc and scale +RFmax_depth 5, 5 Two Integers: loc and scale +LRpenalty l1, l2, elasticnet none, l2, l1 +LRC 0.01, 0.99 Two Floats: loc and scale +LR_solver lbfgs, saga Comma separated list of strings, for the options see https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html +LR_l1_ratio 0, 1 Float between 0.0 and 1.0. +LDA_solver svd, lsqr, eigen svd, lsqr, eigen +LDA_shrinkage -5, 5 Two Integers: loc and scale +QDA_reg_param -5, 5 Two Integers: loc and scale +ElasticNet_alpha -5, 5 Two Integers: loc and scale +ElasticNet_l1_ratio 0, 1 Two Integers: loc and scale +SGD_alpha -5, 5 Two Integers: loc and scale +SGD_l1_ratio 0, 1 Two Integers: loc and scale +SGD_loss squared_loss, huber, epsilon_insensitive, squared_epsilon_insensitive hinge, squared_hinge, modified_huber +SGD_penalty none, l2, l1 none, l2, l1 +CNB_alpha 0, 1 Two Integers: loc and scale +AdaBoost_n_estimators 10, 90 Two Integers: loc and scale +AdaBoost_learning_rate 0.01, 0.99 Two Floats: loc and scale +XGB_boosting_rounds 10, 90 Two Integers: loc and scale +XGB_max_depth 3, 12 Two Integers: loc and scale +XGB_learning_rate 0.01, 0.99 Two Floats: loc and scale +XGB_gamma 0.01, 9.99 Two Floats: loc and scale +XGB_min_child_weight 1, 6 Two Integers: loc and scale +XGB_colsample_bytree 0.3, 0.7 Two Floats: loc and scale +LightGBM_num_leaves 5, 95 Two Integers: loc and scale +LightGBM_max_depth 3, 12 Two Integers: loc and scale +LightGBM_min_child_samples 5, 45 Two Integers: loc and scale +LightGBM_reg_alpha 0.01, 0.99 Two Floats: loc and scale +LightGBM_reg_lambda 0.01, 0.99 Two Floats: loc and scale +LightGBM_min_child_weight -7, 4 Two Integers: loc and scale +========================== ===================================================================== ================================================================================================================================================================================================================================================== \ No newline at end of file diff --git a/WORC/doc/autogen/config/WORC.config_Ensemble_defopts.rst b/WORC/doc/autogen/config/WORC.config_Ensemble_defopts.rst index e9a0a782..063fba07 100644 --- a/WORC/doc/autogen/config/WORC.config_Ensemble_defopts.rst +++ b/WORC/doc/autogen/config/WORC.config_Ensemble_defopts.rst @@ -1,7 +1,7 @@ ====== ======= ============================================================ -Subkey Default Options +Subkey Default Options ====== ======= ============================================================ Method top_N Single, top_N, FitNumber, ForwardSelection, Caruana, Bagging -Size 100 Integer -Metric Default Default, generalization +Size 100 Integer +Metric Default Default, generalization ====== ======= ============================================================ \ No newline at end of file diff --git a/WORC/doc/autogen/config/WORC.config_Ensemble_description.rst b/WORC/doc/autogen/config/WORC.config_Ensemble_description.rst index f7492174..95135f7d 100644 --- a/WORC/doc/autogen/config/WORC.config_Ensemble_description.rst +++ b/WORC/doc/autogen/config/WORC.config_Ensemble_description.rst @@ -1,7 +1,7 @@ ====== ========================================================================================================================================= -Subkey Description +Subkey Description ====== ========================================================================================================================================= -Method Choose which ensemble method to use. If you do not wish to use an ensemble, use Single or top_N with size 1. -Size Number of estimators to use in the ensemble for the top_N method, or the number of bags for the Bagging method. +Method Choose which ensemble method to use. If you do not wish to use an ensemble, use Single or top_N with size 1. +Size Number of estimators to use in the ensemble for the top_N method, or the number of bags for the Bagging method. Metric Metric used to determine ranking of estimators in ensemble. When using default, the metric that is used in the hyperoptimization is used. ====== ========================================================================================================================================= \ No newline at end of file diff --git a/WORC/doc/autogen/config/WORC.config_General_defopts.rst b/WORC/doc/autogen/config/WORC.config_General_defopts.rst index 317e2e55..cb0f9951 100644 --- a/WORC/doc/autogen/config/WORC.config_General_defopts.rst +++ b/WORC/doc/autogen/config/WORC.config_General_defopts.rst @@ -9,7 +9,7 @@ RegistrationNode elastix4.8/Elastix:4.8 TransformationNode elastix4.8/Transformix:4.8 'elastix4.8/Transformix:4.8', your own tool reference Joblib_ncores 1 Integer > 0 Joblib_backend threading multiprocessing, threading -tempsave False True, False +tempsave True True, False AssumeSameImageAndMaskMetadata False True, False ComBat False True, False Fingerprint True True, False diff --git a/WORC/doc/autogen/config/WORC.config_ImageFeatures_description.rst b/WORC/doc/autogen/config/WORC.config_ImageFeatures_description.rst index 2328b117..c97d8895 100644 --- a/WORC/doc/autogen/config/WORC.config_ImageFeatures_description.rst +++ b/WORC/doc/autogen/config/WORC.config_ImageFeatures_description.rst @@ -15,7 +15,7 @@ coliage Determine whether coliage features are computed or not. vessel Determine whether vessel features are computed or not. log Determine whether LoG features are computed or not. phase Determine whether local phase features are computed or not. -image_type Modality of images supplied. Determines how the image is loaded. Mandatory to supply by user. Should be one of the valid quantitative modalities ['CT', 'PET', 'Thermography', 'ADC'] or qualitative modalities ['MRI', 'DWI', 'US']. +image_type Modality of images supplied. Determines how the image is loaded. Mandatory to supply by user. Should be one of the valid quantitative modalities ['CT', 'PET', 'Thermography', 'ADC', 'MG'] or qualitative modalities ['MRI', 'MR', 'DWI', 'US']. extraction_mode Determine how to extract the features: 2D if your masks and/or images have only one 2D slice, 3D for tru 3D images, 2.5D for 3D images but in a slice-by-slice stacked 2D manner. The latter is recommended when the slice thickness is much larger (>2) than the pixel spacing. gabor_frequencies Frequencies of Gabor filters used: can be a single float or a list. gabor_angles Angles of Gabor filters in degrees: can be a single integer or a list. diff --git a/WORC/doc/autogen/config/WORC.config_PyRadiomics_description.rst b/WORC/doc/autogen/config/WORC.config_PyRadiomics_description.rst index 41970f23..742c71f9 100644 --- a/WORC/doc/autogen/config/WORC.config_PyRadiomics_description.rst +++ b/WORC/doc/autogen/config/WORC.config_PyRadiomics_description.rst @@ -1,26 +1,26 @@ -===================== ===================================================================================================================================================================================================================================================================== -Subkey Description -===================== ===================================================================================================================================================================================================================================================================== -geometryTolerance See `_ . -normalize See `_ . -normalizeScale See `_ . -resampledPixelSpacing See `_ . -interpolator See `_ . -preCrop See `_ . -binCount We advice to use a fixed bin count instead of a fixed bin width, as on imaging modalities such as MRI, the scale of the values varies a lot, which is incompatible with a fixed bin width. See `_ . -binWidth See `_ . -force2D See `_ . -force2Ddimension See `_ . -voxelArrayShift See `_ . -Original Enable/Disable computation of original image features. -Wavelet Enable/Disable computation of wavelet image features. -LoG Enable/Disable computation of Laplacian of Gaussian (LoG) image features. -label "Intensity" of the pixels in the mask to be used for feature extraction. If using segmentix, use 1, as your mask will be boolean. Otherwise, select the integer(s) corresponding to the ROI in your mask. -extract_firstorder Determine whether first order features are computed or not. -extract_shape Determine whether shape features are computed or not. -texture_GLCM Determine whether GLCM features are computed or not. -texture_GLRLM Determine whether GLRLM features are computed or not. -texture_GLSZM Determine whether GLSZM features are computed or not. -texture_GLDM Determine whether GLDM features are computed or not. -texture_NGTDM Determine whether NGTDM features are computed or not. -===================== ===================================================================================================================================================================================================================================================================== \ No newline at end of file +===================== ==================================================================================================================================================================================================================================================================== +Subkey Description +===================== ==================================================================================================================================================================================================================================================================== +geometryTolerance See `_ . +normalize See `_ . +normalizeScale See `_ . +resampledPixelSpacing See `_ . +interpolator See `_ . +preCrop See `_ . +binCount We advice to use a fixed bin count instead of a fixed bin width, as on imaging modalities such as MR, the scale of the values varies a lot, which is incompatible with a fixed bin width. See `_ . +binWidth See `_ . +force2D See `_ . +force2Ddimension See `_ . +voxelArrayShift See `_ . +Original Enable/Disable computation of original image features. +Wavelet Enable/Disable computation of wavelet image features. +LoG Enable/Disable computation of Laplacian of Gaussian (LoG) image features. +label "Intensity" of the pixels in the mask to be used for feature extraction. If using segmentix, use 1, as your mask will be boolean. Otherwise, select the integer(s) corresponding to the ROI in your mask. +extract_firstorder Determine whether first order features are computed or not. +extract_shape Determine whether shape features are computed or not. +texture_GLCM Determine whether GLCM features are computed or not. +texture_GLRLM Determine whether GLRLM features are computed or not. +texture_GLSZM Determine whether GLSZM features are computed or not. +texture_GLDM Determine whether GLDM features are computed or not. +texture_NGTDM Determine whether NGTDM features are computed or not. +===================== ==================================================================================================================================================================================================================================================================== \ No newline at end of file diff --git a/WORC/doc/autogen/config/WORC.config_SMAC_defopts.rst b/WORC/doc/autogen/config/WORC.config_SMAC_defopts.rst new file mode 100644 index 00000000..f7f6f3a4 --- /dev/null +++ b/WORC/doc/autogen/config/WORC.config_SMAC_defopts.rst @@ -0,0 +1,10 @@ +============ ======= ============= +Subkey Default Options +============ ======= ============= +use False True, False +n_smac_cores 1 Integer +budget_type evals evals, time +budget 100 Integer +init_method random random, sobol +init_budget 20 Integer +============ ======= ============= \ No newline at end of file diff --git a/WORC/doc/autogen/config/WORC.config_SMAC_description.rst b/WORC/doc/autogen/config/WORC.config_SMAC_description.rst new file mode 100644 index 00000000..d7bfacb0 --- /dev/null +++ b/WORC/doc/autogen/config/WORC.config_SMAC_description.rst @@ -0,0 +1,10 @@ +============ ============================================================================================================================================== +Subkey Description +============ ============================================================================================================================================== +use If True, use SMAC as the optimization strategy. +n_smac_cores Number of independent, parallel SMAC instances to use. +budget_type Type of budget to use for the SMAC optimization, either an evaluation limit or a time limit. +budget Size of the budget, which depends on the type of budget. Number of evaluations for an evaluation limit, or wallclock seconds for a time limit. +init_method Initialization method of SMAC. Supported are a random initialization or a sobol sequence. +init_budget Number of evaluations used for the initialization. Always an evaluation limit, regardless of the budget type choice of the optimization. +============ ============================================================================================================================================== \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 230414da..0ffccc6a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -11,7 +11,7 @@ nose-parameterized>=0.5.0 nose>=1.3.7 numpy>=1.16.3 pandas>=0.24.2 -PREDICT>=3.1.14 +PREDICT>=3.1.15 pyOpenSSL>=16.2.0 pydicom>=1.2.2 python-dateutil<=2.8.0