#python #itk
#python #itk
Вопрос:
Всякий раз, когда я загружаю.img.gz файл с использованием python medpy.io функция загрузки, я получаю предупреждающее сообщение типа:
ПРЕДУПРЕЖДЕНИЕ: в /usr/share/miniconda/envs/bld/conda-bld/simpleitk_1598369168428/work/build/ITK/Modules/IO/NIFTI/src/itkNiftiImageIO.cxx , строка 1009 NiftiImageIO (0x56268f287910): /data/temp.img.gz это анализируемый файл, и он устарел
Есть ли какой-либо способ подавить предупреждающие сообщения? Я попытался использовать библиотеку импорта журналов и установить logging.disable(sys.maxsize) и импортировать предупреждения и установить warnings.simplefilter («игнорировать», category = PendingDeprecationWarning)
Ни один из методов не сработал для меня.
Ответ №1:
Что, если вы не укажете категорию?
Я делаю это таким образом в каждом конкретном случае, чтобы это не влияло на весь файл python.
import warnings
with warnings.catch_warnings():
warnings.simplefilter("ignore")
# do whatever after this
Обновление: вероятно, это проблема со стороны C , которая выдает предупреждение, а не python. Вам придется больше копаться в C , чтобы уловить это.
https://github.com/InsightSoftwareConsortium/ITK/blob/34231b57021418fdb6afd4fcf5082a73b12969ed/Modules/IO/NIFTI/src/itkNiftiImageIO.cxx#L1009 а затем посмотрите на itkWarningMacro
: https://itk.org/Doxygen318/html/itkMacro_8h.html#a0c47033c6ca9aae1319b1793f4419ada
Комментарии:
1. Я попытался получить доступ к файлу itkNiftiImageIO.cxx, но не смог его найти. В нем говорится, что папка miniconda не существует.
2. Извините, то, что я сказал, было неточным. Если вы измените исходный код C , вам потребуется перекомпилировать модуль python. Но вам, вероятно, не следует этого делать. Что я хотел сказать ранее, так это то, что вам нужно будет понять, как C регистрирует его, что
itkWarningMacro
делает, чтобы у вас был шанс захватить его с помощью Python. Вы также можете проверить страницу NIFTI на github, чтобы создать проблему или найти решения.
Ответ №2:
Отображение предупреждающих сообщений ITK можно глобально переключать itk.ProcessObject.SetGlobalWarningDisplay
. Итак, вы хотите
itk.ProcessObject.SetGlobalWarningDisplay(False)
См . статическую функцию itk::Object::SetGlobalWarningDisplay
. Документы C здесь.
Ответ №3:
Возможно, вы захотите проверить, как отключить предупреждение в simpleitk.readImage в Python на Github.
Вы можете отключить все предупреждения SimpleITK, вызвав SetGlobalWarningDisplay .
import SimpleITK as sitk
from medpy.io import load
sitk.ProcessObject_SetGlobalWarningDisplay(False)
image_data, image_header = load('path/to/image.nii.gz')
sitk.ProcessObject_SetGlobalWarningDisplay(True)