C'est donc pour tout ça que j'ai décidé d'écrire un module pour Python qui me permette de charger ces images. Ça n'a pas été très simple, car ces fichiers sont constitués de plusieurs images, une par canal et par tranche. En effet, en imagerie confocale, on peut exciter spécifiquement des fluorofores (c'est à dire des donneurs de fluorescence) et ainsi avoir un canal par marqueur. Une seconde spécificité de ces microscopes, c'est de pouvoir faire des tranches optiques, donc avoir une série d'images qui peuvent reconstituer nos objets en 3D (c'est de la chance en biologie de travailler avec des matériaux relativement transparents, ce qui permet ces tranches optiques). Tout ça pour dire qu'il y a des foules d'informations dans ces fichiers.
Avec ce petit module Python, il est donc possible de visualiser les différents canaux et tranches.
Parce que je suis très original et que je ne le cache pas, j'ai baptisé ce module pyLSM, py pour python et LSM pour... LSM (c'est l'extension des fichiers). Cette dépêche est un appel à tests et suggestions d'améliorations pour ceux intéressés. Il y a de plus quelques fonctionnalités amusantes. Comme Python est très objet, la variable retournée quand on charge un fichier est une instance de la classe LSMImage dans laquelle j'ai implémenté ces fonctionnalités.
On peut :
- Enregistrer le temps écoulé depuis le début de l'expérience et ainsi comparer les image selon ce temps (im1>im2 donne TRUE si im1 a été enregistré après im2)
- im1.getImage(stack,channel,precision=0.5) pour charger l'image correspondant à la tranche "stack" du canal "channel" et d'une taille moitié moindre que l'original (c'est utile pour faire des trucs plus rapides)
- im1.setAngle(angle) si on veut tourner notre image
et d'autres que vous trouverez sur le site... ou dans le code... je n'ai pas encore eu le temps de faire une documentation digne de ce nom.
Vous pourrez trouver tout ça sur Launchpad : https://launchpad.net/pylsm
Lien pour télécharger directement (notez qu'il y a un embryon de documentation dans le premier lien) :
https://launchpad.net/pylsm/+download
Donc si vous ou des connaissances travaillez avec ce genre de microscope, allez-y et faites-moi part de vos remarques, encouragements, souhaits, ou je ne sais quoi.
Aller plus loin
- Page du projet (40 clics)
- Lien de téléchargement (17 clics)
# Simplement cool!
Posté par Maclag . Évalué à 6.
Personnellement j'ai pesté sur un Leica confocal (bon, pour faire de belles images de structures MEMS - micro-électromécanique, on avait eu le microscope gratuitement par Leica suite à un retard pas possible sur un autre contrat) pendant mes travaux en salle blanche. Certes, j'avais bien les tranches d'images... exploitables uniquement par les outils proprio de Leica sur le PC qui gère le microscope...
Donc, le tout en salle blanche, et si on n'occupe pas le PC pour travailler sa reconstitution sur place, pas de résultat!
Je n'en ai plus besoin maintenant parce que je ne bosse plus au même endroit, mais avoir un outil libre pour retravailler les acquisitions plus tard, ça m'aurait bien arrangé! Donc je ne peux pas tester le résultat (encore moins l'adapter). Mais je n'aurais jamais espéré qu'un libriste programmeur se penche sur le sujet!
Juste par curiosité, question technique, mais de ce que je me souviens, sur le Leica, il fallait pouvoir interprêter les variations de couleur (le pas vertical, on l'a réglé soi-même donc à priori il est connu), comment tu as fait pour "interprêter" les variations de couleurs/lumière/autre si le traitement se base sur un truc différent?
A l'époque je pensais que c'était LE facteur bloquant.
[^] # Re: Simplement cool!
Posté par roduit (site web personnel) . Évalué à 4.
Niveau technique, le fichier est un "simple" tiff modifié. Le plus dur a été de comprendre les entête et les différents offsets qui pointent sur les entêtes elles-mêmes et sur les images.
Ensuite, les images sont codées directement en intensité, le tout est de savoir si c'est en 8 ou 16 bits. Cette partie ne fait que 6 lignes de code (c'est la fonction readStack dans LSMParse.py).
J'éspère avoir répondu à ta question...
[^] # Re: Simplement cool!
Posté par Alexandre Santos . Évalué à 1.
Dès que j'en ai le temps je vais essayer ton module.
# Gwyddion
Posté par Émile CARRY . Évalué à 4.
Alors certes, ce logiciel est plutôt orienté microscopies à sonde locale, mais il dispose déjà de pas mal d'outil de traitement d'image et surtout il est possible de lui adjoindre des plugins dans différents langages dont le python, peut-être une piste à creuser?
[^] # Re: Gwyddion
Posté par roduit (site web personnel) . Évalué à 2.
Niveau traitement d'image, je me suis orienté vers Python Imaging Library, qui est très puissant. Mais je garde ton lien sous la main, il pourrait y avoir de bonnes inspirations.
[^] # Re: Gwyddion
Posté par Émilien Tlapale . Évalué à 1.
# PEP-8
Posté par Jean B . Évalué à 6.
Je noterai un léger bémol. Ton code enfreint a peu près toutes les conventions de la PEP-8 ( http://www.python.org/dev/peps/pep-0008/ ).
Je sais que ça peut paraître ridicule, mais ça rend le code sensiblement plus difficile à lire.
[^] # Re: PEP-8
Posté par sifu . Évalué à 3.
Bon courage.
[^] # Re: PEP-8
Posté par roduit (site web personnel) . Évalué à 3.
Pour Jean B : Tu as encore été gentil dans ton message... quand j'ai vu les spécifications, et surtout les insultes que m'a envoyé Pylint, j'étais pas fière (je devais avoir une note entre 0 et 1 sur 10, lamentable). Maintenant, ça vas mieux (plus de 9/10) et c'est en effet plus propre.
Le point fort de Pylint, c'est qu'il traque aussi les variables qui ne sont pas utilisées, très pratique.
Merci encore à vous deux.
[^] # Re: PEP-8
Posté par roduit (site web personnel) . Évalué à 7.
Je vais regarder ça de plus près et corriger mon code.
Et effectivement, la lisibilité du code est très importante si je veux que mon travail puisse servir à d'autres.
Merci.
# ITK / BioImageXD
Posté par Mathieu Malaterre (site web personnel) . Évalué à 2.
- ITK support les fichiers LSM
- BioImageXD support entre autre LSM
Il ne sont pas cité dans l'article et pourtant sont des references dans le domaines medicale (distribué sous license open source), qu'elles etaient les problemes avec ces toolkits ?
Le plus dur sous linux ca va etre les macro VB stockées dans les nouveau fichiers LSM :)
merci
ref:
http://itk.org
http://www.bioimagexd.net/
[^] # Re: ITK / BioImageXD
Posté par roduit (site web personnel) . Évalué à 3.
Cependant, de ce que je me rappelles, ces deux projets sont liés intimement à VTK, une biliothèque de visualisation très puissante.
Dans mon cas, tout ce que je voulais étais un truc très simple qui me retourne une matrice avec les valeurs d'intensité des pixels pour pouvoir ensuite les analyser. J'ai essayé BioImageXD, mais il était lié à une version de VTK en dévoloppement (en tout cas quand j'ai essayé). J'ai essayé aussi de lire leurs code pour extraire ce qui m'intéressait au niveau de la lecture des fichiers LSM, mais c'était un peu compliqué pour moi en mélangeant du code python avec du C (faudra que je m'y mette au C...). De ce que j'avais compris à l'époque, c'est que la lecture de fichiers LSM était liée à cette version de VTK, une dépendance que je ne souhaitait pas par soucis de simplicité (pourquoi inclure un module de visualisation juste pour lire ces fichiers ?). Voilà donc pourquoi j'ai oublié de mentionner ces deux projets.
L'avantage de ce module, c'est qu'il ne dépends que de numpy et scipy. Il ne renvoie qu'une matrice 2D correspondant au canal et tranche désirée. J'ai voulu faire simple et léger.
# Dispersion des efforts...
Posté par Khâpin (site web personnel) . Évalué à 3.
Une question tout de même: as-tu essayé d'utiliser le format OME (http://www.openmicroscopy.org/site/file-formats ) qui est vraiment fait pour ça?
Et une deuxième question: as-tu essayé d'utiliser µManager (http://www.micro-manager.org/ ) pour commander ton confocal (apparemment, tu n'aimes pas imageJ, donc je suppose que non...)?
[^] # Re: Dispersion des efforts...
Posté par roduit (site web personnel) . Évalué à 2.
Selon les infos sur le site, Zeiss (le constructeur du LSM 510) se trouve dans les "Formal Indication of Support", donc c'est pas gagné. Cependant, je ne manquerait pas de leur en faire part à l'occase.
Pour le deuxième lien (µManager) ça parait aussi très intéressant. Malheureusement, le microscope n'est pas à moi, je dois donc faire avec ce qui est installé dessus. Typiquement, on est plusieurs laboratoires à se partager le même microscope. Les réservations se font 1-2 semaines à l'avance. Je me vois donc mal commencer à y installer un linux et y faire tourner µMananger (oui, ça tourne aussi sur windows, mais laisse-moi rêver...).
En conclusion, ce sont deux liens très intéressant que je vais m'empresser de partager avec mes collègues, des fois, ça pourrait faire bouger les choses dans le bon sens. Mais pour l'instant, je dois faire avec les fichiers LSM :-(
Merci pour ta remarque
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.