VorAce, analyse quantitative en microscopie de super-résolution [1] Vue d’ensemble

    5 Comments

     

    Au cours de ma 2e année de Master de Neurosciences à Aix-Marseille Université, j’ai eu la chance de pouvoir faire converger mes deux intérêts pour l’informatique 💻 et les sciences du cerveau 🧠.

    J’ai réalisé un super stage au sein de l’équipe NeuroCyto Lab de l’Institut de Neuro-Physiopathologie à Marseille, dont je vais vous parler en quelques articles.

    La description “scientifique” de ce que j’ai réalisé étant déjà dans le mémoire que j’ai rendu à mes enseignants, les articles seront plutôt rédigés afin de donner à mes proches non-scientifiques (coucou mamie🧓🏻 !) un petit goût de ce que j’ai fait pendant ces quelques mois.
    D’autres articles plus spécialisés aborderont les problématiques de programmation que j’ai rencontrées et comment je les ai résolues.

    Pour aider le lecteur, les mots doublement soulignés contiennent une bulle d’aide lorsque le curseur de la souris les survole afin de préciser des notions.

     

    Contexte scientifique


    L’équipe de Christophe Leterrier s’intéresse à l’organisation des protéines dans les neurones. Elle cherche à comprendre comment ces assemblages de protéines permettent de faire émerger des propriétés nécessaires au fonctionnement des neurones.

    Pour réaliser des observations à une échelle aussi fine, l’équipe utilise une nouvelle technologie de microscopie qui est en plein boom dans la biologie: STORM 3D.

    Sans rentrer dans les détails techniques du pourquoi et du comment ici (mais ça viendra 😉 ), cette technique permet de “voir 10 fois plus gros” que ce qui est possible en microscopie classique, et en 3 dimensions s’il vous plait ! Illustration en image ci-après…

    Image en microscopie classique (gauche) et STORM (droite) d’une présynapse sur bille. Le carré fait 40 microns de coté, on peut voir que la résolution est limitée à gauche, le gros paté blanc est la protéine synapsine présente dans les présynapses, mais on ne distingue aucun détail. À droite la résolution a gagné un ordre de grandeur et laisse apparaitre bien plus de détails.

     

    Agrandissement de l’image STORM sur la présynapse. Le carré fait 6 microns de coté. On peut voir la finesse des détails, les petits agrégats de protéines ou les ensembles plus diffus.

     

    Question posée


    La beauté de la science c’est au moins autant autant l’art de poser des questions que de chercher des réponses 🙂

    À cause de la nouveauté de l’usage de STORM en biologie (à peine 10 ans), il existe encore peu de méthodes adaptées à celle-ci pour pouvoir réaliser ce que nécessite toute étude de biologie digne de ce nom:  l’objectivation des résultats par une analyse quantitative.

    C’est là où mon expérience de nerd d’informaticien 🤓 entre en jeu, le but de mon stage est de développer une méthode d’analyse quantitative sur des données STORM 3D d’expériences que je vais réaliser.

    Je vais dans un premier temps réaliser des expériences sur des neurones en culture et observer certaines de leurs protéines en microscopie STORM. Puis je vais développer une méthode d’analyse et l’outil informatique permettant de la réaliser, et mettre à l’épreuve cette méthode sur les données acquises lors de mes expériences.

    Je vais observer en microscopie STORM les protéines bassoon et synapsin, présentes dans les pré-synapses et impliquées dans la dynamique de libération des neurotransmetteurs. Les observations seront réalisées dans différentes conditions de perturbation du cytosquelette au moyen d’agents qui vont le fragiliser ou renforcer.

     

    État de l’art et approche de la question


    Tenter de répondre à une question scientifique comment nécessairement par faire la synthèse des connaissances sur le sujet auquel on s’intéresse.

    Le prochain article fera un peu le tour de la connaissance existante sur le sujet et définira l’approche que j’ai utilisée pour tenter de répondre à la question.

    Dégradé polaire dans Cairo

    No Comments

     

    Un article rapide sur une solution (simple) implémentée pour répondre à un (petit) problème que j’ai rencontré en contribuant sur un projet open-source absolument fabuleux : Darktable

    Si vous aimez la photo et que vous ne connaissez pas ce logiciel, allez vite y faire un tour, vous ne serez pas déçu ! C’est un peu comme “Adobe LightRoom”, mais gratuit, open-source, et avec encore plus de fonctionnalités !

     

    Cairo, programmer un dessin

     

    Cairo est une librairie bien connue de tous les adeptes de Linux. Elle offre des primitives de programmation permettant de créer des dessins à partir de formes de base (ligne, carré, ellipse, etc…). Ces dessins pourront être exportés sous forme de fichier, ou utilisés dans un programme pour décorer des boutons par exemple.

     

    C’est précisément le cas d’utilisation que j’ai eu, je voulais dessiner avec Cairo quelque chose qui ressemble à l’image ci-après afin de décorer un bouton que j’ajoutais dans Darktable.

     

    image

    Mes compétences dans GIMP sont ébouriffantes non ?

     

    Problème : les dégradés existent bien dans Cairo, mais ils sont soit linéaires (d’un bord à l’autre d’une forme), soit radiaux (du centre vers l’extrémité d’une forme). J’ai donc du improviser une petite solution “maison”.

     

    Un dégradé c’est pas si compliqué

     

    Quand on y réfléchit, un dégradé c’est quoi ?

     

    Un changement progressif de la couleur en suivant une direction. 👏🏼

     

    Donc si je décompose mon arc de cercle en petits morceaux…

     

    En modifiant la couleur petit à petit à chaque arc…

     

    Et que je réassemble le tout à la fin…

     

     

    Bon, pas de quoi se prendre pour Neo dans la matrice non plus hein…

     

    Code

     

    Je mets à disposition ici le code que j’ai écrit pour résoudre ce petit problème (en attendant que j’installe un plugin wordpress de visualisation de code).

    Bout de code qui m’a permis de réaliser les boutons encadrés en rouge dans l’interface de Darktable.

     

     

    Vu que je suis sympa j’ai même documenté…

     

    Amélioration réalisable à peu de frais, le faire pour de la couleur !

     

    Pour les flemmards, le code est aussi dispo ci-après 😉

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    void cairo_gradient_arc(cairo_t *cr, double lw, int nb_steps, double x_center, double y_center, double radius,
    double angle_from, double angle_to, double color_from, double color_to)
    {
    cairo_set_line_width(cr, lw);

    double *portions = malloc((1 + nb_steps) * sizeof(double));

    // note: cairo angles seems to be shifted by M_PI relatively to the unit circle
    angle_from = angle_from + M_PI;
    angle_to = angle_to + M_PI;
    double step = (angle_to - angle_from) / nb_steps;
    for(int i = 0; i < nb_steps; i++) portions[i] = angle_from + i * step;
    portions[nb_steps] = angle_to;

    for(int i = 0; i < nb_steps; i++)
    {
    double color = color_from + i * (color_to - color_from) / nb_steps;
    cairo_set_source_rgb(cr, color, color, color);
    cairo_arc(cr, x_center, y_center, radius, portions[i], portions[i + 1]);
    cairo_stroke(cr);
    }
    free(portions);
    }
    Categories: Programmation Tags: Étiquettes : , , ,

    Capteurs de température sans fil, partie 1: le projet

    No Comments
    Trop pressé ? La partie 2 c’est par ici !

     

    Un peu avant l’été j’ai eu la chance de déménager dans un appartement au dernier étage d’un vieil immeuble marseillais (au passage merci les potos du Master pour le déménagement 😉).

     

    À cette occasion j’ai pu faire l’expérience de passer du conseil abstrait de ma grand-mère

    Holala les derniers étages pour la chaleur c’est terrible !!

    à la réalité vécue dans mon petit corps transpirant quand la température montait à 33° chez moi 😓.

     

    Le problème

    Je me suis mis en quête d’établir la meilleure stratégie pour minimiser la chaleur chez moi avec les quelques variables à ma disposition. Dans le même temps, j’ai cherché à diagnostiquer les ponts thermiques dans l’idée d’isoler de la façon la plus appropriée une fois l’été passée.

    Les variables : fenêtres sud et nord ouvertes ou fermées, volets ouverts ou fermés, ventilation forcée ou naturelle.

    Les ponts thermiques potentiels : les combles, le sol de la terrasse, le mur entre l’appartement et la terrasse.

    Et c’est ainsi qu’est née l’idée de bidouille un système afin de pouvoir faire des enregistrements de la température en différents points tout au long de la journée !

     

    Spécification

    Je souhaite pouvoir enregistrer des températures entre 20 et 50° sans être encombré par un fil électrique si je veux déplacer mes capteurs.

    Je souhaite avoir un affichage des valeurs dans une page web.

     

    Matériel

    Capteur de température

    Le grand classique DHT11 fait l’affaire pour ma spécification de plage de température. Il permet d’enregistrer la température de 0 à 50° avec une répétabilité de 0.2°C et une variation d’un capteur à l’autre de +/- 2° C.

    Dans la mesure où ce qui m’intéresse est de mesurer une variation des écarts de température entre capteurs dans les différentes conditions, la précision est suffisante. Si je veux vraiment peaufiner je pourrai calibrer tous mes capteurs sur une source unique.

    Je ne surveille pas la cuve de refroidissement d’un réacteur nucléaire non plus 😄.

     

    Plateforme

    J’avais quelques Arduino qui trainaient en attente de projet et avec lesquels j’ai déjà une grande habitude de travailler. Je pensais les utiliser en y ajoutant un module Bluetooth pour la communication.

    Cependant après un weekend chez Anna et Léo à Toulouse, Léo m’a parlé de la plateforme NodeMCU basés sur les micro-contrôleurs ESP8266. Ceux-ci coutent 2€ pièce et disposent d’un modem wifi, et peuvent se programmer dans l’IDE Arduino.

    Des librairies logicielles permettent de les utiliser comme client ou serveur web, leur consommation est raisonnable et ils disposent d’un mode de mise en veille qui sera bien utile puisque je ne veux pas être branché au secteur.

    Ça semble répondre à ma spécification et comme j’aime toujours découvrir du nouveau matos, j’en ai commandé 5 chez Ali 🇨🇳 en même temps que les capteurs de température.

    Un de ceux que j’ai commandé

     

    Alimentation autonome

    Le capteur peut fonctionner en 3.3 volts, et l’ESP8266 fonctionne en 3.3 volts et est équipé d’un régulateur si l’alimentation est supérieure. Je m’oriente donc vers une batterie Li-ion au format pile qui délivre du 3.7 volts.

     

    A suivre

    À suivre dans les prochains articles, la réalisation électronique et logicielle !

    Partie 2 sur l’électronique ici !