Обработка ошибки кодировки ASCII при сохранении файлов TIFF в PythonPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Обработка ошибки кодировки ASCII при сохранении файлов TIFF в Python

Сообщение Anonymous »

Я работаю над сценарием Python, который обрабатывает изображения и сохраняет их в виде файлов TIFF, используя библиотеку tifffile. Сценарий выполняется как часть более крупного конвейера, в котором я использую инструмент ashlar для дальнейшей обработки этих файлов TIFF. Однако при сохранении файлов TIFF я столкнулся с проблемой, связанной с кодировкой ASCII.
Контекст:
Среда Python: я использую Python 3.9. вместе с библиотекой tifffile для обработки файлов TIFF.
Триггер ошибки: ошибка возникает во время выполнения функции save_tiff, которая отвечает за сохранение файлов TIFF с описанием.
Обработка описаний: инструмент ashlar требует, чтобы все описания в файлах TIFF были ASCII-совместимыми для правильного функционирования на последующих этапах обработки.
Фрагмент кода Python:
import numpy as np
import tifffile

def save_tiff(image, path, description='Generated by process_tile'):
"""
Save the image as a TIFF file with an ASCII-compliant description.

Args:
- image: The image array to save.
- path: The file path to save the TIFF file.
- description: Optional description string (default is 'Generated by process_tile').
"""
description_ascii = description.encode('ascii', 'ignore').decode('ascii')

with tifffile.TiffWriter(path, imagej=True) as tif:
tif.save(image, description=description_ascii)

Фрагмент сценария Bash:
#!/usr/bin/env bash

module load jupyter/python_3.9
ashlar --version

# Function to check consistency of input images
check_images() {
local input_path=$1
find $input_path -name 'mask*.tif' -type f -print0 | sort -z | xargs -0 ashlar -o $OUTPUT_PATH/ashlar_output_mask.ome.tif -c 0 --stitch-alpha 0.01 --filter-sigma 1.0
}

# Function to modify TIFF descriptions to ensure ASCII compliance
modify_tiff_description() {
local input_path=$1
local temp_path=$2
find $input_path -name 'overlay*.tif' -type f -print0 | sort -z | xargs -0 ashlar -o $OUTPUT_PATH/ashlar_output_overlay.ome.tif -c 0 --stitch-alpha 0.01 --filter-sigma 1.0
}

# Create temporary directories for modified images
TEMP_PATH_MASK="${INPUT_PATH_MASK}/temp"
TEMP_PATH_OVERLAY="${INPUT_PATH_OVERLAY}/temp"
mkdir -p $TEMP_PATH_MASK $TEMP_PATH_OVERLAY # Create temp directories

# Check consistency of mask images
echo "Checking mask images..."
check_images $TEMP_PATH_MASK

# Check consistency of overlay images
echo "Checking overlay images..."
check_images $TEMP_PATH_OVERLAY

# Modify TIFF descriptions to ensure ASCII compliance
echo "Modifying TIFF descriptions for mask images..."
modify_tiff_description $INPUT_PATH_MASK $TEMP_PATH_MASK

echo "Modifying TIFF descriptions for overlay images..."
modify_tiff_description $INPUT_PATH_OVERLAY $TEMP_PATH_OVERLAY

# Clean up temporary directories
rm -rf $TEMP_PATH_MASK $TEMP_PATH_OVERLAY

Сообщение об ошибке:
Traceback (most recent call last):
File "/scg/apps/software/jupyter/python_3.9/lib/python3.9/site-packages/tifffile/tifffile.py", line 7552, in overwrite
value = value.encode('ascii')
UnicodeEncodeError: 'ascii' codec can't encode character '\xb5' in position 552: ordinal not in range(128)

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "/scg/apps/software/jupyter/python_3.9/bin/ashlar", line 8, in
sys.exit(main())
File "/scg/apps/software/jupyter/python_3.9/lib/python3.9/site-packages/ashlar/scripts/ashlar.py", line 226, in main
return process_single(
File "/scg/apps/software/jupyter/python_3.9/lib/python3.9/site-packages/ashlar/scripts/ashlar.py", line 296, in process_single
writer.run()
File "/scg/apps/software/jupyter/python_3.9/lib/python3.9/site-packages/ashlar/reg.py", line 1307, in run
print()
File "/scg/apps/software/jupyter/python_3.9/lib/python3.9/site-packages/tifffile/tifffile.py", line 2809, in __exit__
self.close()
File "/scg/apps/software/jupyter/python_3.9/lib/python3.9/site-packages/tifffile/tifffile.py", line 2802, in close
self._write_image_description()
File "/scg/apps/software/jupyter/python_3.9/lib/python3.9/site-packages/tifffile/tifffile.py", line 2791, in _write_image_description
self._descriptiontag.overwrite(self, description, erase=False)
File "/scg/apps/software/jupyter/python_3.9/lib/python3.9/site-packages/tifffile/tifffile.py", line 7554, in overwrite
raise ValueError(
ValueError: TIFF strings must be 7-bit ASCII


Подробнее здесь: https://stackoverflow.com/questions/786 ... -in-python
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»