BiaPyX / BiaPy

Open source Python library for building bioimage analysis pipelines
https://BiaPyX.github.io
MIT License
114 stars 28 forks source link

Error handling TIFFs created in MIB #42

Closed sgtsmg90 closed 7 months ago

sgtsmg90 commented 7 months ago

Error handling TIFFs from MIB: ValueError: the ImageJ format does not support data type dtype('<f4') for RGB

MIB software: https://mib.helsinki.fi/index.html

To note, I've checked the TIFF's and they are in 8 bit format but they have LZW compression and I don't know if this is an an issue.

Error info from the training step: 21:09:50.070554] Creating validation data [21:09:51.261219] Loaded train data shape is: (7536, 4, 160, 160, 1) [21:09:51.261283] Loaded train GT shape is: (7536, 4, 160, 160, 1) [21:09:51.261307] Loaded validation data shape is: (1884, 4, 160, 160, 1) [21:09:51.261326] Loaded validation GT shape is: (1884, 4, 160, 160, 1) [21:09:51.261420] ############################## [21:09:51.261436] # PREPARE TRAIN GENERATORS # [21:09:51.261452] ############################## [21:09:51.261677] Initializing train data generator . . . [21:09:52.987917] Normalization config used for X: {'type': 'div', 'orig_dtype': dtype('uint8'), 'div_255': 1} [21:09:52.987972] Normalization config used for Y: as_mask [21:09:52.991121] Initializing val data generator . . . [21:09:53.432304] Normalization config used for X: {'type': 'div', 'orig_dtype': dtype('uint8'), 'div_255': 1} [21:09:53.432401] Normalization config used for Y: as_mask [21:09:53.432800] Creating generator samples . . . [21:09:53.432853] 0) Creating samples of data augmentation . . . 0% 0/10 [00:00<?, ?it/s] 0% 0/1 [00:00<?, ?it/s] 0% 0/10 [00:00<?, ?it/s] Traceback (most recent call last): File "/content/BiaPy/utils/util.py", line 240, in save_tif imsave(f, aux, imagej=True, metadata={'axes': 'ZCYXS'}, check_contrast=False, compression=('zlib', 1)) File "/usr/local/lib/python3.10/dist-packages/skimage/io/_io.py", line 143, in imsave return call_plugin('imsave', fname, arr, plugin=plugin, *plugin_args) File "/usr/local/lib/python3.10/dist-packages/skimage/io/manage_plugins.py", line 205, in call_plugin return func(args, kwargs) File "/usr/local/lib/python3.10/dist-packages/skimage/io/_plugins/tifffile_plugin.py", line 47, in imsave return tifffile_imwrite(fname, arr, kwargs) File "/usr/local/lib/python3.10/dist-packages/tifffile/tifffile.py", line 1280, in imwrite result = tif.write( File "/usr/local/lib/python3.10/dist-packages/tifffile/tifffile.py", line 2332, in write raise ValueError( ValueError: the ImageJ format does not support data type dtype('<f4') for RGB

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "/content/BiaPy/main.py", line 137, in workflow.train() File "/content/BiaPy/engine/base_workflow.py", line 454, in train self.prepare_train_generators() File "/content/BiaPy/engine/base_workflow.py", line 285, in prepare_train_generators self.num_training_steps_per_epoch = create_train_val_augmentors(self.cfg, self.X_train, self.Y_train, File "/content/BiaPy/data/generators/init.py", line 214, in create_train_val_augmentors train_generator.get_transformed_samples( File "/content/BiaPy/data/generators/pair_base_data_generator.py", line 1266, in get_transformed_samples self.save_aug_samples(sample_x[i], sample_y[i], orig_images, i, pos, out_dir, point_dict) File "/content/BiaPy/data/generators/pair_data_3D_generator.py", line 88, in save_aug_samples save_tif(aux, out_dir, [str(i)+"_origx"+str(pos)+"_"+self.trans_made+'.tif'], verbose=False) File "/content/BiaPy/utils/util.py", line 242, in save_tif imsave(f, aux, imagej=True, metadata={'axes': 'ZCYXS'}, check_contrast=False) File "/usr/local/lib/python3.10/dist-packages/skimage/io/_io.py", line 143, in imsave return call_plugin('imsave', fname, arr, plugin=plugin, *plugin_args) File "/usr/local/lib/python3.10/dist-packages/skimage/io/manage_plugins.py", line 205, in call_plugin return func(args, kwargs) File "/usr/local/lib/python3.10/dist-packages/skimage/io/_plugins/tifffile_plugin.py", line 47, in imsave return tifffile_imwrite(fname, arr, kwargs) File "/usr/local/lib/python3.10/dist-packages/tifffile/tifffile.py", line 1280, in imwrite result = tif.write( File "/usr/local/lib/python3.10/dist-packages/tifffile/tifffile.py", line 2332, in write raise ValueError( ValueError: the ImageJ format does not support data type dtype('<f4') for RGB

danifranco commented 7 months ago

Fixed in cdcbc19.

The error is thrown when images are saved, which is done with NumPy arrays (nothing to be done with MIB software). I successfully reproduced the error, and it only happened when, in the Z axis, you select a patch size less than 5. In that case, I think the ImageJ format is assuming it is saving an RGB image, even if the axes are correctly set... I changed the way we save TIFF images using all axes that the ImageJ format expects, e.g., TZCYXS instead of ZCYXS.