Skip to content

Commit

Permalink
Merge pull request #309 from JoostJM/add-pykwalify-log-handler
Browse files Browse the repository at this point in the history
Add logger handler to pykwalify if none is defined
  • Loading branch information
JoostJM committed Oct 9, 2017
2 parents a746c31 + c99e290 commit 4139259
Showing 1 changed file with 9 additions and 4 deletions.
13 changes: 9 additions & 4 deletions radiomics/featureextractor.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@
import SimpleITK as sitk
import six

import radiomics
from radiomics import generalinfo, getFeatureClasses, getImageTypes, getParameterValidationFiles, imageoperations
from radiomics import enableCExtensions, generalinfo, getFeatureClasses, getImageTypes, getParameterValidationFiles, \
imageoperations


class RadiomicsFeaturesExtractor:
Expand Down Expand Up @@ -120,6 +120,11 @@ def loadParams(self, paramsFile):
If supplied file does not match the requirements (i.e. unrecognized names or invalid values for a setting), a
pykwalify error is raised.
"""
# Ensure pykwalify.core has a log handler (needed when parameter validation fails)
if len(pykwalify.core.log.handlers) == 0 and len(logging.getLogger().handlers) == 0:
# No handler available for either pykwalify or root logger, provide first radiomics handler (outputs to stderr)
pykwalify.core.log.addHandler(logging.getLogger('radiomics').handlers[0])

schemaFile, schemaFuncs = getParameterValidationFiles()
c = pykwalify.core.Core(source_file=paramsFile, schema_files=[schemaFile], extensions=[schemaFuncs])
params = c.validate()
Expand Down Expand Up @@ -231,7 +236,7 @@ def enableImageTypes(self, **enabledImagetypes):
To disable input images, use :py:func:`enableInputImageByName` or :py:func:`disableAllInputImages`
instead.
:param inputImages: dictionary, key is imagetype (original, wavelet or log) and value is custom settings
:param enabledImagetypes: dictionary, key is imagetype (original, wavelet or log) and value is custom settings
(dictionary)
"""
self.logger.debug('Updating enabled images types with %s', enabledImagetypes)
Expand Down Expand Up @@ -307,7 +312,7 @@ def execute(self, imageFilepath, maskFilepath, label=None):
"""
# Enable or disable C extensions for high performance matrix calculation. Only logs a message (INFO) when setting is
# successfully changed. If an error occurs, full-python mode is forced and a warning is logged.
radiomics.enableCExtensions(self.settings['enableCExtensions'])
enableCExtensions(self.settings['enableCExtensions'])
if self.geometryTolerance != self.settings.get('geometryTolerance'):
self._setTolerance()

Expand Down

0 comments on commit 4139259

Please sign in to comment.