(image_file_formats:aicsimagio=)
Lecture de fichiers avec AICSImageIO#
La bibliothèque AICSImageIO vise à simplifier la lecture des données d’images de microscopie.
Pour installer la bibliothèque, vous devez exécuter cette commande.
pip install aicsimageio
Dans le cas où des formats de fichiers propriétaires spécifiques doivent être lus, des logiciels supplémentaires doivent être installés. Consultez la documentation pour plus de détails.
from aicsimageio import AICSImage
from skimage.io import imshow
Tout d’abord, nous créons un objet AICSImage pour voir s’il comprend notre format de fichier. Dans l’exemple suivant, nous lisons un fichier OME Tif qui a été enregistré avec ImageJ auparavant.
Comme exemple, nous utilisons ici une image partagée par Célia Baroux et al(Université de Zurich) qui a été réenregistrée à des fins de démonstration.
aics_image = AICSImage("../../data/EM_C_6_c0.ome.tif")
aics_image
Attempted file (C:/structure/code/BioImageAnalysisNotebooks/data/EM_C_6_c0.ome.tif) load with reader: aicsimageio.readers.bfio_reader.OmeTiledTiffReader failed with error: No module named 'bfio'
C:\Users\haase\mambaforge\envs\bio39\lib\site-packages\ome_types\_convenience.py:105: FutureWarning: The default XML parser will be changing from 'xmlschema' to 'lxml' in version 0.4.0. To silence this warning, please provide the `parser` argument, specifying either 'lxml' (to opt into the new behavior), or'xmlschema' (to retain the old behavior).
d = to_dict(os.fspath(xml), parser=parser, validate=validate)
<AICSImage [Reader: OmeTiffReader, Image-is-in-Memory: False]>
Cet objet peut déjà nous donner des informations de base telles que la taille/forme de l’image, les dimensions et les noms et l’ordre des dimensions.
aics_image.shape
(1, 1, 256, 256, 256)
aics_image.dims
<Dimensions [T: 1, C: 1, Z: 256, Y: 256, X: 256]>
aics_image.dims.order
'TCZYX'
À partir de cet objet, nous pouvons également récupérer les pixels sous forme de tableaux numpy.
np_image = aics_image.get_image_data("ZYX", T=0)
np_image.shape
(256, 256, 256)
imshow(np_image[128])
<matplotlib.image.AxesImage at 0x158c9b60ac0>
Lecture des métadonnées#
Lorsqu’on travaille avec des données d’images de microscopie, il est important d’être conscient des métadonnées, par exemple la taille du voxel. Pour effectuer des mesures de volume dans des unités physiques appropriées, nous devons connaître la taille d’un voxel en X, Y et Z.
aics_image.physical_pixel_sizes
PhysicalPixelSizes(Z=0.16784672897196262, Y=0.16776018346253663, X=0.16776018346253663)
Et on peut définir une fonction auxiliaire pour lire la taille du voxel au format Z/Y/X.
def get_voxel_size_from_aics_image(aics_image):
return (aics_image.physical_pixel_sizes.Z,
aics_image.physical_pixel_sizes.Y,
aics_image.physical_pixel_sizes.X)
get_voxel_size_from_aics_image(aics_image)
(0.16784672897196262, 0.16776018346253663, 0.16776018346253663)
Lecture des fichiers CZI#
Si la bibliothèque aicspylibczi est également installée, on peut aussi ouvrir des fichiers CZI en utilisant AICSImageIO.
czi_image = AICSImage("../../data/PupalWing.czi")
czi_image.shape
(1, 1, 80, 520, 692)
np_czi_image = czi_image.get_image_data("ZYX", T=0)
np_czi_image.shape
(80, 520, 692)
get_voxel_size_from_aics_image(czi_image)
(1.0, 0.20476190476190476, 0.20476190476190476)
Lecture des fichiers LIF#
Si la bibliothèque readlif est également installée, on peut aussi lire des images LIF en utilisant AICSImageIO.
lif_image = AICSImage("../../data/y293-Gal4_vmat-GFP-f01.lif")
lif_image.shape
(1, 2, 86, 500, 616)
np_lif_image = lif_image.get_image_data("ZYX", T=0)
np_lif_image.shape
(86, 500, 616)
get_voxel_size_from_aics_image(lif_image)
(1.0070810588235295, 0.46827875751503006, 0.46827869918699183)