# Cartographie Biométrique par Spectrométrie de masse

Paul Chaillou

► To cite this version:

Paul Chaillou. Cartographie Biométrique par Spectrométrie de masse. Robotics [cs.RO]. 2021. hal-04713994

HAL Id: hal-04713994

https://inria.hal.science/hal-04713994v1

Submitted on 30 Sep 2024

HAL is a multi-disciplinary open access
archive for the deposit and dissemination of sci-
entific research documents, whether they are pub-
lished or not. The documents may come from
teaching and research institutions in France or
abroad, or from public or private research centers.

L'archive ouverte pluridisciplinaire HAL, est
destinée au dépôt et à la diffusion de documents
scientifiques de niveau recherche, publiés ou non,
émanant des établissements d'enseignement et de
recherche français ou étrangers, des laboratoires
publics ou privés.

<figure><img src="image_1.png" /></figure>

Distributed under a Creative Commons Attribution 4.0 International License
POLYTECH Montpellier

Stage industriel de fin d'études
Département MEA

ANNEE 2020 - 2021

Cartographie Biométrique
par Spectrométrie de masse

Paul
Chaillou

<figure><img src="image_2.png" /></figure>

MEA

ECOLE POLYTECH Montpellier

UNIVERSITE DE MONTPELLIER - Campus Triolet

Place Eugène Bataillon 34095 MONTPELLIER CEDEX 5

Tél. : 04 67 14 31 60 - Fax : 04 67 14 45 1

E-mail : scola@polytech.univ-montp2.fr

STAGE

<figure><img src="image_3.png" /></figure>

POLYTECH®
MONTPELLIER
Remerciements

Je tiens à remercier Christian Duriez et Alexandre Kruszewski, mes tuteurs au sein de l'Inria, pour m'avoir suivi, encadré et conseillé tout au long du projet.

Je tiens aussi à remercier nos collaborateurs de l'Inserm : Isabelle Fournier, pour sa qualité d'encadrante, ainsi que Philippe Saudemont, Nina Ogrinc et Lucas Roussel, doctorants et post-doctorant avec qui j'ai étroitement collaboré tout le long du projet. Leurs implications et leurs expériences m'ont formé et m'ont poussé à me surpasser.
Table des matières

<table><tr><td>Introduction</td><td>3</td></tr><tr><td>1 – Présentation succincte</td><td>3</td></tr><tr><td>2 – Définitions</td><td>3</td></tr><tr><td>Présentation du projet</td><td>4</td></tr><tr><td>1 – Etat initial</td><td>5</td></tr><tr><td>2 – Directions du stage</td><td>7</td></tr><tr><td>A – Simplifications du système</td><td>7</td></tr><tr><td>B – Réalisation du scan en une étape</td><td>8</td></tr><tr><td>Réalisation – Détails techniques</td><td>9</td></tr><tr><td>1 – Connectique</td><td>9</td></tr><tr><td>2 – Mesure de profondeur</td><td>10</td></tr><tr><td>A – Nouveau capteur</td><td>10</td></tr><tr><td>B – Acquisition</td><td>10</td></tr><tr><td>C – Etalonnage de la mesure de profondeur</td><td>10</td></tr><tr><td>3 – Cartographie / Réalisation des cartes</td><td>11</td></tr><tr><td>4 – Réalisation du nouvel effecteur</td><td>12</td></tr><tr><td>A – Design de la pièce</td><td>12</td></tr><tr><td>5 – Acquisition des données biométriques</td><td>15</td></tr><tr><td>A – Déclenchement du laser Opotek</td><td>15</td></tr><tr><td>B – Récupérations des informations des spectres de masse</td><td>16</td></tr><tr><td>C – Détection des pics</td><td>16</td></tr><tr><td>D – Fusion des pics</td><td>17</td></tr><tr><td>E – Pre-processing</td><td>18</td></tr><tr><td>6 – Reconstruction des cartes biométriques</td><td>19</td></tr><tr><td>A – Carte biométrique</td><td>19</td></tr><tr><td>B – Problème de décalages des points sur la carte</td><td>20</td></tr><tr><td>C – Carte 2D</td><td>20</td></tr><tr><td>Exploitation du dispositif</td><td>21</td></tr><tr><td>1 – Interface</td><td>21</td></tr><tr><td>2 – Logiciel Autonome</td><td>21</td></tr><tr><td>3 – Corrélation entre deux spectres</td><td>21</td></tr><tr><td>4 – Modalités d'affichage</td><td>22</td></tr></table>
<table><tr><td>A – Détection des masses d'ionisation les plus intenses</td><td>22</td></tr><tr><td>B – Superposition de cartes</td><td>23</td></tr><tr><td>C – Interpolation polynomiale</td><td>24</td></tr><tr><td>5 – Validation du système de cartographie</td><td>24</td></tr><tr><td>A – Scanner 3D</td><td>24</td></tr><tr><td>B – Estimation de la précision de notre système de cartographie</td><td>25</td></tr><tr><td>6 – Analyse en composantes principales (ACP)</td><td>26</td></tr><tr><td>A – Première Méthode</td><td>26</td></tr><tr><td>B – Deuxième méthode plus globale</td><td>27</td></tr><tr><td>Conclusion du stage</td><td>29</td></tr><tr><td>Pour aller plus loin</td><td>30</td></tr><tr><td>1 – Problème de décalage</td><td>30</td></tr><tr><td>2 – Surfaces translucides/réfléchissantes</td><td>30</td></tr><tr><td>3 – Temps de cartographie</td><td>30</td></tr><tr><td>4 – Evaluation de la précision de reconstruction</td><td>31</td></tr><tr><td>Annexes</td><td>32</td></tr><tr><td>1 – Développement durable – Responsabilité Sociétale</td><td>32</td></tr><tr><td>A – Méthodes et moyens de production</td><td>32</td></tr><tr><td>B – Production</td><td>32</td></tr><tr><td>C – Dialogue</td><td>33</td></tr><tr><td>2 – Tutorial – Mass Spectrometry Mapping Application</td><td>34</td></tr><tr><td>3 – Tableaux comparatifs des capteurs à triangulation laser</td><td>37</td></tr></table>
# Introduction

## 1 – Présentation succincte

J'ai réalisé mon stage de fin d'études au sein du laboratoire Defrost, à l'Inria et en collaboration avec le laboratoire Prism, de l'Inserm. J'ai poursuivi le projet que j'avais commencé l'année dernière lors de mon stage de quatrième année. Je vous transmets en pièce jointe le compte rendu de l'année dernière, pour éviter les redondances sans perdre d'informations.

L'objectif du projet était de réaliser la commande d'un bras manipulateur robotique 6 axes pour réaliser la cartographie biométrique d'un organe ou d'une parcelle de peau. Je vais cette année pousser le prototype plus loin, en ajoutant des fonctionnalités, en améliorant ses performances et en facilitant son utilisation.

## 2 – Définitions

(1) - Laparoscopie : La laparoscopie (ou cœlioscopie) est une technique de chirurgie permettant d'accéder à l'intérieur de l'abdomen par de petites incisions de la paroi abdominale. Cet acte se pratique pour diagnostiquer ou traiter certaines maladies, notamment gynécologiques ou digestives.

(2) – Désorption : Phénomène dans lequel les liaisons entre les ions, molécules et substrats disparaissent. Les ions et molécules se détachent donc du substrat. La désorption est un phénomène contraire à l'absorption.

(3) – Microprobe : Sonde permettant le dosage des éléments et l'analyse sur des quantités de matière très petites. Ici, la sonde équipé d'une lentille pour amener le laser de désorption jusqu'à la surface à analyser.

(4) – Effecteur : en robotique, un effecteur est l'outil mis en mouvement par les actionneurs (ressort, vérin, moteur, ...) via une chaîne cinématique. Ici, la pièce imprimée en 3D qui permet d'équiper le robot de ses différents outils (capteur et microprobe).

(5) – Flashlamp : Source d'énergie interne du laser de pompe Opotek.

(6) – Shunt de mesure : Résistance de très faible impédance relative qui permet de mesurer le courant électrique la traversant.

(7) - Watchdog : fonction logicielle pour s'assurer qu'un programme ne reste pas bloqué à une étape particulière du traitement qu'il effectue.
## Présentation du projet

Ce projet s'inscrit dans la continuité du projet de recherche SpiderMass, réalisé par le laboratoire *Prism* qui a été l'objet d'une publication dans *Nature-protocols* en Novembre 2019 (N. Ogrinc, P. Saudemont, J. Balog, Y.M. Robin, J.P. Gimeno, Q. Pascal, D. Tierny, Z. Takats, M. Salzet, I. Fournier, Water-assisted laser desorption/ionization mass spectrometry for minimally invasive *in vivo* and real-time analysis using SpiderMass, https://doi.org/10.1038/s41596-019-0217-8).

Ce projet utilise la spectrométrie de masse pour extraire des informations biologiques sur la composition d'un tissu. A l'aide d'un laser réglable, le dispositif vaporise quelques cellules, qui sont ensuite aspiré à l'aide d'un tube jusqu'à un spectromètre de masse. C'est du spectre de masse ainsi généré que nous pouvons extraire les informations biométriques. En effet, un spectre de masse peut être caractéristique d'une molécule, et en le comparant avec le contenu d'une banque de spectres, il est possible de l'identifier.

Cette version du projet est pilotée manuellement. Mon travail consiste à automatiser la prise d'information, pour pouvoir reconstruire les informations ainsi extraites sur une carte en 3 dimensions.

Pour ce faire, nous associons le système SpiderMass à un bras robotisé qui balaie la parcelle de peau. Equipé d'un dispositif de télémétrie, nous pouvons ainsi créer une carte en 3 dimensions de la surface, puis y ajouter des informations sur les cellules qui la compose. On pourrait ainsi imaginer recréer une carte 3D de la peau affichant, par exemple, les zones cancéreuses dans une couleur différente. Ce dispositif est développé pour servir de support d'information au chirurgien, pour lui permettre de localiser le cancer avec précision et d'agir en conséquence.

<figure><img src="image_4.png" /><figcaption>Figure 1 : Photo de l'installation de notre système</figcaption></figure>

<figure><img src="image_5.png" /></figure>
L'équipe Defrost, au sein de laquelle je fais mon stage, travaille à la confection et au pilotage de robots déformables. Le nouveau prototype, Echelon III (Figure 2), a lui aussi fait l'objet d'une publication en avril 2020 dans le journal *The International Journal of Robotics* (T. Morales Bieze, A. Kruszewski, B. Carrez, C. Duriez, Design, implementation, and control of a deformable manipulator robot based on a compliant spine, https://doi.org/10.1177/0278364920910487).

<figure><img src="image_6.png" /><figcaption>Figure 2 : Exemple de robot souple : Echelon III, développé par Defrost</figcaption></figure>

A termes, l'objectif est de développer un robot souple dédié à la cartographie biométrique par spectrométrie de masse, pour pouvoir utiliser ce système lors de laparoscopie(1). En effet, les robots souples, du fait de leur nature déformables, permettent de s'introduire dans le corps humain en limitant au maximum leurs impacts sur ce dernier. Les parties souples ont en effet un contact bien plus harmonieux avec les muqueuses que n'en n'aurait un robot rigide classique.

## 1 – Etat initial

Le projet, tel que je l'avais laissé l'année dernière, souffrait de quelques lourdeurs techniques. Mon premier stage n'était que de 3 mois, et je n'avais pas eu le temps de finaliser proprement tout ce qui avait été entrepris.

L'utilisation du dispositif nécessitait 3 ordinateurs : le premier, connecté au robot, lançait la cartographie. Le deuxième, connecté au spectromètre de masse, récupérait les informations de ce dernier. Pour finir, le troisième ordinateur, connecté au laser de désorption(2), permettait de le déclencher. La synchronisation lors de la cartographie se faisant par un clicker fonctionnant par Arduino entre le premier et le troisième ordinateur : on utilisait le premier ordinateur pour cliquer au bon endroit sur le logiciel *Opotek* sur le troisième ordinateur, ce qui déclenchait le « tir » laser (cf compte rendu 2019, p.16).
<figure><img src="image_7.png" /><figcaption>Figure 3 : Schéma du montage initial</figcaption></figure>

L'utilisation du système était fastidieuse, et nécessitait de récupérer les cartes générées sur le premier ordinateur pour reconstruire les cartes biométriques sur le second.

<figure><img src="image_8.png" /><figcaption>Figure 4 : Photo de la caméra utilisée pour la première version du prototype</figcaption></figure>

J'avais réalisé l'année dernière un premier dispositif de mesure de profondeur utilisant une caméra et un pointeur laser. (cf compte rendu 2019 – p.12)

Ce dispositif fonctionne bien, mais est parfois un peu imprécis. De plus, le pointeur laser que nous utilisons crée un gros point rouge qui est diffus sur des surfaces semi-translucides (comme des échantillons de chair de poulet), rendant leur cartographie totalement impossible. (Les cartes ainsi générées étaient totalement fausses).

De plus, ce dispositif avait un temps de réponse plutôt long comparé à ce que proposent les capteurs de télémétrie sur le marché. En effet, il fallait laisser le temps à la caméra de faire le point avant de pouvoir effecteur la prise de mesure.

L'année dernière, c'est Philippe Saudemont, doctorant à l'Inserm, qui avait réalisé la première version de l'effecteur(4) sur Fusion360. C'est ce logiciel qui avait été choisi car c'est un logiciel de conception paramétrique. Ainsi, s'il y avait un problème à l'impression, ou si on a besoin d'une nouvelle version de cette pièce, il est plus aisé de juste changer les paramètres, on ne doit pas recommencer la pièce depuis le début.

<figure><img src="image_9.png" /></figure>

AUTODESK®
FUSION 360™

<figure><img src="image_10.png" /></figure>
Cette ancienne pièce contenait un emplacement pour la caméra et pour le pointeur laser, et les éléments n'étaient pas pensés de manière à faire converger le laser de télémétrie et le laser de désorption. Les différents éléments étaient en parallèle, et le décalage entre les deux laser étaient prises en compte et corrigés dans le code.

<figure><img src="image_11.png" /><figcaption>Figure 5 : Modèles 3D de l'effecteur de la première version du prototype, équipé du système de télémétrie et du microprobe(3)</figcaption></figure>

Le projet, tel qu'il était à la fin du premier stage, fait l'objet d'une publication en cours de soumission (N. Ogrinc, A. Kruszewski, P. Chaillou, P. Saudemont, C. Lagadec, M. Salzet, C. Duriez, I. Fournier, Robot-Assisted SpiderMass for in vivo Real-Time Topography Mass Spectrometry Imaging, https://doi.org/10.1101/2020.12.15.422889 ).

## 2 – Directions du stage

### A – Simplifications du système

Le système tel que je l'avais laissé l'année dernière était fonctionnel, mais très peu pratique. En plus d'être complexe à mettre en place et à utiliser, les différents choix techniques qui avaient été fait pouvaient induire des erreurs. (Par exemple la souris qui se déplace sur le logiciel Opotek, les problèmes de connexion avec la caméra, etc.).

Pour simplifier le système, nous voulions réunir toutes ces étapes au sein d'un même ordinateur, pour faciliter son utilisation, limiter les problèmes techniques, et améliorer la portabilité.

Il a aussi été choisi de remplacer notre système de télémétrie fait maison par un capteur réalisé par des professionnels, afin d'améliorer la qualité de nos cartes 3D. (cf – *Nouveau Capteur*, p.10)
Lors de mon premier stage, j'avais laissé le prototype se commander grâce à des scripts matlab à lancer dans le bon ordre. Cette méthode fonctionnait, mais rendait l'utilisation fastidieuse et nécessitait un support tutoriel long et précis pour savoir quels codes exécuter. De plus, l'approche « script » est contre-intuitive pour toute personne n'ayant pas l'habitude d'exécuter du code ou d'utiliser matlab. J'avais réuni plusieurs étapes au sein d'un même script (connexion des appareils, lancement de l'étalonnage, de la cartographie, etc.) pour que les biologistes ne se perdent pas dans un trop grand nombre de script à lancer dans un ordre précis. L'interface graphique permet de diviser ces étapes pour les rendre indépendantes, sans complexifier son utilisation. L'interface permet aussi de mettre en avant les valeurs et les variables à entrer pour utiliser le système, tandis qu'il est plus facile d'oublier d'en paramétrer quelques-uns lorsqu'ils sont tous réunis dans le code.

Il a donc été décidé de réaliser une interface graphique pour rendre son utilisation la plus facile et intuitive possible. (cf – *Interface*, p.21)

## B – Réalisation du scan en une étape

Lors de la première version du projet, la cartographie biométrique était divisée en deux étapes distinctes : la cartographie topographique puis le scan biométrique. J'avais effectué des tests théoriques (avec le modèle Matlab, cf compte rendu 2019 – p.3), et à cause du décalage entre le microprobe(3) et le laser de télémétrie, effectuer le scan biométrique et la cartographie en même temps prenait plus de temps que de faire les deux séparément. En effet, le petit aller-retour pour recaler le microprobe(3) au bon endroit et à distance focale (40mm), ne prenait qu'un peu plus de temps, mais devait être répété pour chaque point, et alourdissait donc beaucoup le processus. De plus, comme le temps entre chaque prise de mesure moléculaire aurait varié de manière plus importante entre chaque point, cela aurait grandement complexifié la détection de pics, qui permet de remettre les informations biométriques sur la carte.

Ainsi, l'acquisition des informations nécessaires à la réalisation des cartes étaient très longue et ne comprenais pas le preprocessing des données et la reconstruction des cartes (elles aussi plutôt chronophages).

Nous avons donc voulu accélérer le processus en réalisant l'acquisition topographique et biométrique lors du même passage. Pour éviter les petits allers-retours à chaque point entre le laser de télémétrie et de désorption, il a été décidé de faire converger les deux lasers à distance focale du microprobe(3). Il n'y aurait donc qu'un minuscule déplacement pour s'ajuster à la distance focale en fonction de la distance à faire, ce qui va nous permettre de réaliser les cartes plus rapidement. De plus, réaliser en même temps la cartographie topographique et biométrique pourra permettre à l'avenir d'afficher en temps réel les informations biométriques sur la carte 3D.

Cependant, ce scan en une seule étape ne permet pas de prendre en compte l'orientation de la surface, ni d'utiliser l'interpolation polynomiale (cf compte rendu 2019 – p.5) pour l'acquisition biométrique (il faut en effet attendre que la carte soit terminée pour réaliser son interpolation).
# Réalisation – Détails techniques

## 1 – Connectique

Tout d'abord, nous avons porté le code de cartographie sur l'ordinateur responsable de la spectrométrie et connecté le robot à ce dernier. De ce fait, nous utilisions désormais le même ordinateur pour la cartographie et la reconstruction.

Nous avons découvert par la suite qu'il était possible de se connecter au laser via port série ou TCP/IP. Le robot et le spectromètre de masse étant connectés par TCP/IP, c'est ce qui a été choisi afin d'uniformiser le système.

Cependant, les adresses IP des différents outils étant sous des sous-réseaux différents, j'ai voulu établir une table de routage entre les différents appareils. Il s'avérait en fait que l'adresse IP du laser Opotek (169.254.0.1) était modifiable, et je l'ai changé (192.168.0.59) pour qu'elle soit dans le même sous-réseau que celle du robot (192.168.0.100) ou du spectromètre (192.168.0.2). Ainsi, nous avons pu tout connecter ensemble à l'aide d'un commutateur réseau (switch).

Il a aussi été choisi d'ajouter une nouvelle carte réseau USB à l'ordinateur pour y connecter la switch. En effet, l'ordinateur est livré avec le spectromètre de masse pour son utilisation, et il semblerait que l'ajout d'une switch entre le spectromètre de masse et sa carte réseau dédié epuisse créer des problèmes de communication. Pour éviter tout problème, nous avons ajouté une carte réseau USB sur laquelle nous connectons la switch, elle-même connecté au laser de désorption et au robot. Le spectromètre est connecté seul à sa carte réseau dédiée, pour assurer une connexion fluide (il y beaucoup de transfert de données entre le spectromètre et l'ordinateur).

<figure><img src="image_12.png" /><figcaption>Figure 6 : Schéma du montage final</figcaption></figure>

<figure><img src="image_13.png" /></figure>
## 2 – Mesure de profondeur

### A – Nouveau capteur

Ainsi, pour améliorer la vitesse d'acquisition, la précision et la robustesse de notre système, nous avons voulu remplacer notre système de télémétrie par un capteur à triangulation laser.

Plusieurs entreprises proposaient des capteurs pouvant convenir (Baumer, SickAG, etc.), mais c'est les capteurs de l'entreprise MicroEpsilon qui ont finalement retenu notre attention, car ils correspondaient mieux à notre application. J'ai mis le tableau récapitulatif des caractéristiques des différents capteurs que nous avons envisagés en annexe.

Nous avons envisagé d'utiliser le ILD1750-20BL, qui utilise un laser bleu pour la triangulation. On éviterait ainsi dans une certaine mesure les problèmes dus à la présence de rouge sur les biopsies et atténuerai la diffusion de la lumière dans les tissus translucides. Mais le coût de ce capteur est très élevé, à 4 506 € H.T. De plus, en gardant à l'esprit que le projet a pour finalité d'être porté sur robot souple, c'est sa masse importante (550g) qui a posé problème. Le MECA500 n'a que 500g de charge utile. Un capteur si gros et si lourd ne convenait finalement pas du tout à notre application. De plus, sa masse importante rendrait tout test avec des robots souples impossible : Echelon III, qui est pourtant plus gros que tout futur prototype ayant vocation à réaliser des laparoscopies(1), ne peut supporter que 100g de charge utile, et on ne pourrait donc pas effectuer de tests avec.

C'est finalement le ILD1320-25, qui a été choisi pour sa précision (5µm) et sa plage de mesure (entre 25 et 50 mm) qui permettait de réaliser la convergence avec la distance focale du microprobe(3) (40mm) au milieu de cette plage de mesure. Ainsi, quand le capteur est à la distance à laquelle il converge avec le laser de désorption, il peut mesurer des variations positives ou négatives d'altitude. Son prix est raisonnable (780€ H.T.), et sa masse moins importante (30g) pourra permettre de réutiliser ce capteur pour réaliser des tests avec des robots déformables.

<figure><img src="image_14.png" /><figcaption>Figure 7 : Capteur ILD1320-25</figcaption></figure>

### B – Acquisition

La sortie analogique du capteur est une sortie analogique courant, il faut donc réaliser un montage d'acquisition avec une shunt de mesure(6) et une Arduino.

La sortie analogique du capteur varie entre 4 et 20mA, et les pins analogiques de l'Arduino mesurent la tension entre 0 et 5V. J'ai donc besoin d'une résistance de shunt de 250 Ω. Pour ne pas faire de commande inutile, j'ai préféré utiliser les résistances normalisées qui étaient déjà présente au laboratoire, et j'ai donc utilisé deux résistances de 100 et 150 Ω connectées en série.

### C – Etalonnage de la mesure de profondeur

Pour l'étalonnage du capteur, j'ai réutilisé la même méthode que l'année dernière, quand bien même nous ne sommes plus sujet aux problèmes de distorsion de lentille vu que nous n'utilisons plus de caméra.

<figure><img src="image_15.png" /></figure>
J'ai considéré que même si cette étape était moins indispensable, il s'agissait d'une sécurité supplémentaire pour s'assurer que les valeurs de la carte topographique soient les plus justes possibles. Cette étape permet de vérifier que le capteur est bien connecté, et que les valeurs renvoyées sont justes et cohérentes. Il arrive parfois que le tube soit sur la trajectoire de la caméra, etc. Cette étape d'étalonnage nous a permis de repérer les problèmes avant de lancer la cartographie, afin d'avoir directement des cartes justes.

J'effectue un étalonnage des tensions renvoyés par le capteur en fonction de la hauteur de l'effecteur(4) final du robot. J'effectue deux mesures, une ou je fais monter l'effecteur(4) final entre deux hauteurs choisies et une ou je le fais descendre entre ces mêmes hauteurs. Je réalise ainsi deux tableaux, qui associent la tension mesurée à une hauteur correspondante. Je compare ensuite ces deux tableaux, pour que le tableau final soit cohérent. En effet si deux mesures à la même hauteur ne renvoient pas la même tension équivalente, la mesure n'est pas utilisée par la suite. Car j'ai estimé qu'il était préférable de ne garder que les valeurs précises dans le tableau, quitte à ce qu'il y ait moins de points dans ma courbe représentant l'évolution de la hauteur en fonction de la tension mesurée.

J'affiche ensuite la courbe d'étalonnage, pour qu'on puisse vérifier en un coup d'œil que tout c'est bien passé avant de lancer la cartographie.

<figure><img src="image_16.png" /><figcaption>Figure 8 : Courbe d'étalonnage : tension mesurée en fonction de la hauteur de la position du robot</figcaption></figure>

## 3 – Cartographie / Réalisation des cartes

Pour réaliser la carte topographique et biométrique en un seul passage, je positionne le robot à distance focale de la surface et j'opère à une mesure de la distance. Je rectifie la position en fonction de la distance réelle mesurée. Le décalage entre le niveaux zéro et la hauteur à laquelle se placer est stockée dans la variable delta, qui est réutilisé pour enregistrer les bonnes valeurs topographiques dans la carte. Cette valeur delta est actualisée à chaque prise de mesure.

<figure><img src="image_17.png" /><figcaption>Figure 9 : a – Photo de la souris entière ouverte. b - Carte topographique de la même souris. Les intensités des points de la carte dépendent des hauteurs mesurées en ces points.</figcaption></figure>
Nous avons réalisé une cartographie d'une souris entière, pour réaliser une cartographie proche des conditions réelles d'utilisation de notre dispositif.

# 4 – Réalisation du nouvel effecteur

## A – Design de la pièce

Nous réalisons un nouvel effecteur pour faire converger le laser de télémétrie et celui responsable de la désorption, pour effectuer la cartographie et le scan biométrique en une seule étape. J'ai choisi de pencher le microprobe(3) plutôt que le capteur, malgré l'augmentation du travail sur la fibre optique, pour s'assurer que les position selon les axes x et y de la carte soient justes. En effet, la position du robot est impacté par les mesures de hauteur effectué par le capteur, et si quelque chose venait obstruer cette prise de mesure sur la diagonale, il est possible que le robot fasse un mouvement brusque pour essayer de se mettre à la distance focale du microprobe(3), brisant ainsi la fibre optique qui amène le laser jusqu'à la surface que nous voulons analyser. De plus, si les informations biométriques sont mal placées sur la carte, il est toujours possible de les corriger en aval. Si la carte topographique est fausse, on est forcément obligé de tout recommencer (en effet, le robot suit la carte topographique à la distance focale du microprobe(3), donc si la carte topographique est fausse, l'acquisition biométriques est impossible).

<figure><img src="image_18.png" /><figcaption>Figure 10 : Modèle 3D du nouvel effecteur, vue de profil mettant en avant la convergence des faisceaux laser</figcaption></figure>

<figure><img src="image_19.png" /></figure>
<figure><img src="image_20.png" /><figcaption>Figure 11 : Modèles 3D de l'effecteur</figcaption></figure>

Pour l'emplacement du capteur de télémétrie laser, j'ai opté pour une stratégie de mise en position et de maintien en position : Pour la mise en position, j'ai ajouté un petit cran qui permet de s'assurer que le capteur est bien placé. Pour le maintien en position, j'ai ajouté un emplacement pour mettre une vis, qui bloque le capteur dans cette bonne position.

<figure><img src="image_21.png" /><figcaption>Figure 12 : A gauche, tranche du modèle 3D de l'effecteur. A droite, photo des cran de mise en position et vis de maintien</figcaption></figure>

Ce n'est pas moi qui l'ai réalisé, mais le support du microprobe(3) suit la même logique, avec une boucle de soutien pour la mise en position et un boulon pour le maintien en position. Pour qu'il soit maintenu de manière fixe dans son emplacement, ce dernier est chauffé au fer à
souder, ce qui fait fondre très légèrement le plastique environnant, qui épouse ainsi parfaitement la forme du boulon.

## B – Rectifications du modèle

Une chute accidentelle de la pièce a permis de mettre en lumière une de ses faiblesses. Suite à la casse de l'anneau de la première version, j'ai renforcé l'anneau qui sert de soutien au micro-probe :

<figure><img src="image_22.png" /><figcaption>Figure 13 : A gauche, une photo de l'anneau cassé du Microprobe. A droite, le modèle 3D l'anneau de support du microprobe avant et après renforcement</figcaption></figure>

La version suivante présentait quant à elle un problème de convergence entre le laser pour la désorption et le laser de télémétrie. J'ai supposé que le problème pouvait venir du positionnement du capteur dans la pièce. J'ai réalisé alors une nouvelle version, comportant un deuxième emplacement pour une seconde vis de maintien selon l'autre axe, ainsi que de nouveaux chanfreins et butées pour m'assurer que le capteur soit bien placé. (Figure 14)

Cette nouvelle pièce a très bien fonctionné, réglant le problème d'alignement. La boite est tellement sur mesure que les vis de maintien en position ne sont plus indispensables : le capteur s'emboite parfaitement dans la pièce, et reste naturellement maintenu en bonne position. Je laisse les vis de maintien en position juste pour être sûr que le capteur de change pas de position au milieu de la cartographie. En effet une toute petite variation dans sa position peut nuire à la convergence des deux faisceaux.
<figure><img src="image_23.png" /><figcaption>Figure 14 : Modèle 3D : A gauche, tranche laissant voir les nouveaux crans de mise en position. A droite, nouveau trou de maintien en position.</figcaption></figure>

Ensuite, même si les deux lasers convergeaient bien, cette convergence ne s'effectuait pas exactement à la distance focale du laser de désorption(2). Ainsi, j'ai réalisé une nouvelle pièce, ou l'angle d'orientation du microprobe(3) passe de 26.25° à 30°. Ensuite en remodifiant légèrement sa position, j'ai appliqué le bon décalage pour que la convergence se fasse bien à distance focale. J'en ai profité pour épaissir la paroi ou se trouvait le deuxième trou de maintien en position. En effet cette dernière était trop fragile, et risquait de se déformer lors de la mise en place de la vis. De même, il a été choisi de fusionner les trois bandes qui servent de soutien au microprobe(3), pour que la qualité d'impression ne puisse pas avoir d'impact sur la position de l'emplacement du boulon. En effet, lors d'une impression qui ne s'était pas parfaitement déroulée, nous avons observé une très légère variation de la position du microprobe(3), qui nuisait à la convergence des deux faisceaux lasers.

Cette dernière pièce permet de faire converger les deux lasers exactement à la distance focale du microprobe(3).

# 5 – Acquisition des données biométriques

## A – Déclenchement du laser Opotek

Le laser Radiant IR 2731 de la société californienne Opotek permet, par sa grande précision, de vaporiser quelques cellules, qui après avoir été aspirées, sont analysées par le spectromètre de masse. Le prototype présent au laboratoire a été réalisé sur mesure lors de l'élaboration du projet SpiderMass. Pour pouvoir réaliser nos cartes biométriques, il faut donc pouvoir déclencher automatiquement ce laser pour déclencher une prise de mesure à chaque position.

Le laser Opotek est relié au microprobe(3) qui amène le laser jusqu'à la surface par une fibre optique très fragile. Tous les mouvements du robot doivent prendre en compte cette contrainte, car le remplacement de la fibre optique est très long et complexe. Il est en effet nécessaire de polir les extrémités avant de tout remettre en place de façon minutieuse : la quantité d'énergie qui passe dans la fibre est proche du maximum qu'elle peut supporter, donc si l'alignement n'est pas parfait, la fibre peut casser lors du déclenchement du laser.
L'année dernière j'avais réalisé un cliquez automatique à l'aide d'une souris et d'une arduino (cf compte rendu 2019-p.16), qui cliquait au bon endroit sur le logiciel Opotek pour déclencher le « tir » laser. Ce système fonctionnait, mais pour le simplifier et en améliorer la robustesse, nous avons réalisé une commande du laser Opotek par TCP/IP.

La communication par TCP/IP a été dans un premier temps très laborieuse. Le laser se déconnectait régulièrement, et il était nécessaire de le redémarrer pour pouvoir le déclencher à nouveau. Il y avait en fait un Watchdog(7), qui une fois que la flash lamp(6) a été allumée, vérifie qu'il est bien connecté pour ne pas laisser le laser ouvert en continu. Il est en fait nécessaire d'envoyer une trame (quelle qu'elle soit) toutes les 4 secondes pour que le laser ne se bloque pas dans son mode de sécurité. Une fois que l'on communique avec lui en continu (boucle while interruptible), il n'y a plus aucun problème.

Pour avoir la bonne quantité de matière aspirée dans le tube, il faut que le laser envoie une quantité d'énergie précise à la surface du matériau. Ce dernier doit envoyer 4mj sur une surface précise, d'où l'importance de la distance focale. En effet, par l'effet de la lentille, le faisceau laser a une forme conique. La bonne taille de zone d'impact pour que la bonne quantité de matière soit vaporisé ne s'effectue qu'à la distance focale. De même, il est possible que les conditions d'expérimentation (température, pression atmosphérique, etc.) fassent fluctuer la puissance du faisceau laser. Sur le logiciel Opotek qui était utilisé sur la version précédente du prototype, il était possible de choisir la puissance du faisceau laser comme un pourcentage de la puissance totale possible. En envoyant des trames TCP/IP, nous n'avons pas accès à ce paramètre directement, mais nous pouvons régler le voltage de la flashlamp(6). J'ai mis ce voltage comme une valeur modifiable au sein du code, accessible via l'interface, pour pouvoir ajuster le niveau d'énergie si nécessaire.

Sur le logiciel *Opotek* officiel, pour réaliser la désorption, les biologistes utilisaient la fonction « burst mode », qui déclenche un nombre choisi de tirs à la suite, à une fréquence de 10Hz. J'ai reprogrammé le même mode de déclenchement sur Matlab, avec un nombre de tir paramétrable, pour que la quantité d'énergie envoyé à la surface soit toujours identique.

## B – Récupérations des informations des spectres de masse

J'ai aussi connecté l'Arduino (la même que celle de l'acquisition des informations du capteur de télémétrie) directement au spectromètre de masse grâce à un interrupteur switch, pour pouvoir synchroniser le lancement de la cartographie et de l'acquisition des informations de spectrométrie de masse.

Les informations sont enregistrées par le logiciel du spectromètre de masse sous la forme d'un fichier brut .raw. Il faut alors les convertir pour les rendre utilisables dans Matlab. Nous utilisons le logiciel *ProteoWizard* qui permet de les convertir au format .mzXML.

Ces informations seront traitées et normalisées, puis replacées sur la carte.

## C – Détection des pics

Un fichier .mzXML représentatif d'une carte de 400 points contient au moins 1800 spectres de masses. Cependant, un seul spectre de masse représente les informations biométriques relative à un seul point. Il faut donc opérer à un tri, pour savoir quels sont les spectres qui sont représentatifs des molécules aspirées par notre dispositif. Pour ce faire nous utilisons la variable totIonCurrent, qui représente le total des courants d'ionisation contenus dans le spectre. Cette variable est proportionnelle à la quantité de matière qui passe dans le tube. Nous savons que le « tir » laser libère des vapeurs qui sont aspirés dans le spectromètre de masse. Donc, lorsque nous avons un pic d'intensité dans le courant d'ionisation total, c'est représentatif de la matière
libéré lors d'un « tir » laser, et c'est donc le spectre associé à ce pic qui est représentatif d'un point sur la carte.

Pour m'aider, j'ai représenté le courant total d'ionisation en fonction du temps, et je cherche à détecter tous les pics représentatifs des différents points de la carte.

<figure><img src="image_24.png" /><figcaption>Figure 15 : A gauche, le courbe des courants totaux d'ionisation en fonction du temps. A droite, la même courbe avec les pics détectés comme étant ceux vecteurs d'informations.</figcaption></figure>

J'avais déjà réalisé une première détection de pic l'année dernière qui comparait toutes les valeurs entre elles, mais cette version avait des lacunes et j'ai choisi d'en réaliser une seconde basée sur la fonction *findpeak()* de Matlab.

Tous les pics ainsi récupérés sont triés pour ne garder que ceux qui sont vraiment représentatif d'un point sur la carte. Les écarts temporels entre tous les points sont stockés dans un tableau. Si l'écart temporel est trop long, on ajoute un point nul, représentatif d'un tir laser qui n'a pas vaporisé de matière (tir sur une lame en verre, etc.). Si l'écart temporel est trop court, je fusionne les deux pics ensemble.

A la fin de la détection de pic, j'affiche la courbe des courants d'ionisation totaux en fonction du temps et les points qui ont été détectés comme vecteurs d'informations, pour pouvoir effectuer une vérification visuelle avant de lancer l'étape du preprocessing. En effet, si les pics ne sont pas correctement détectés, les cartes ainsi générées seront nécessairement fausses.

## D – Fusion des pics

Il arrive parfois que les informations contenues dans un pic du spectromètre de masse se divise en deux lignes du fichier *mzXML*, soit deux pics sur la courbe des courants total d'ionisation en fonction du temps. Il faut donc fusionner ces deux pics pour ne perdre aucune information.

```
l1 = tab_in(1:ind_dec,:);
l2 = tab_in(ind_dec+1:length.tab_in),:
[C,I] = sort([l1(:,1)',l2(:,1)]);
for i = 1 : length(I)
    if I(i) > length(l1)
        D(i) = l2(I(i) - length(l1),2);
    else
        D(i) = l1(I(i),2);
    end
end
tab_out2 = [C; D];
```

<figure><img src="image_25.png" /><figcaption>Figure 16 : Exemples de pics problématiques</figcaption></figure>

Chacun de ces pics représente un spectre de masse, mais il faut ici fusionner les deux spectres, car les deux sont représentatifs de la matière vaporisée lors du tir laser. Les spectres sont enregistrés sous la forme d'un tableau, avec les intensités correspondantes à chaque rapport masse/charge. Cependant, il a fallu trouver un moyen de remettre toutes les données ensemble dans le même tableau. J'ai divisé la fusion en deux fonctions distinctes, une qui met les deux tableaux bout à bout (fusion_p1()), et une deuxième qui remet toutes les valeurs dans l'ordre sous la forme d'un seul
tableau (*fusion_p2*()). Pour se faire j'utilise la fonction matlab *sort()*, qui permet de trier une banque de données dans l'ordre croissant. J'utilise les indices des valeurs stockées dans la variable *I* pour retrouver les intensités d'ionisation correspondants aux masses précédemment triées. Cela permet de ne pas faire les calculs avant l'étape de preprocessing, qui n'est calculé que si les points choisis sont justes.

## E - Pre-processing

Les fichiers *mzXML* contiennent énormément d'informations, et le traitement de ces données peut prendre beaucoup de temps.

Ainsi, à la demande des biologistes, j'ai réalisé une fonction de preprocessing pour ne garder que les informations utiles pour la reconstruction de l'image finale. Ces informations sont stockées dans un fichier au format matlab .mat. Ainsi, lorsqu'on veut générer une carte à une masse d'ionisation précise, le temps de calcul est très rapide, toutes les opérations nécessitant du temps de calcul ayant déjà été effectuées en amont.

Pour ce faire, je ne garde que les spectres de masse associés à un point de la carte et je supprime toutes ses valeurs nulles, qui ne sont jamais utilisés de toute façon. J'opère ensuite à un groupement des valeurs (bining) pour limiter le nombre de données. En effet le spectre de masse fourni par le spectromètre est parfois extrêmement précis, et regrouper ainsi les valeurs permets ensuite de traiter les données plus rapidement. Surtout qu'un seul échantillon peut fournir plusieurs cartes à des rapport masse/charge différents. Prendre du temps lors du prétraitement pour pouvoir ainsi générer rapidement plusieurs cartes à des rapport masse/charge différents fait donc sens.

<figure><img src="image_26.png" /><figcaption>Figure 18 : Représentation des étapes successives du preprocessing</figcaption></figure>
De ce fait, pour réaliser les cartes, il faut d'abord prétraiter le fichier *mzXML*, puis utiliser ces informations triés (fichier *.mat*) pour reconstruire une carte, affichant les intensités du spectre selon le rapport *masse/charge* (m/z) qui nous intéresse.

# 6 – Reconstruction des cartes biométriques

## A – Carte biométrique

Une fois que nous avons réalisé la cartographie topographique et le preprocessing des informations biométriques, il faut réaliser la reconstruction des informations issues de la spectrométrie de masse sur la carte en 3 dimensions. Les données ont été prétraitées, et les

<figure><img src="image_27.png" /><figcaption>Figure 19 : Représentation du système de reconstruction des cartes biométriques</figcaption></figure>
fichiers `.mat` ne contiennent déjà plus que les spectres de masses associés à des points de la carte. Pour savoir quel spectre correspond à quel point, je rebalaye la carte avec le même pattern que lors de la cartographie : je remets le premier spectre associé à un point sur le premier point, etc. Ainsi, je peux remettre toutes les informations biométriques sur les cartes en 3D.

Ainsi, nous pouvons afficher sur la carte en 3D l'intensité d'ionisation entre les rapports masses/charges choisis. On choisit ainsi par exemple l'intervalle 616.1 – 615.3 m/z, et on affiche sur la carte l'intensité correspondante pour chaque pixel. Cette fonctionnalité fonctionne bien, mais peut parfois être un peu laborieuse. En effet, sans informations préalable sur la carte, il fallait soit regarder les spectres en amont, soit générer des cartes au hasard. J'ai donc poussé les fonctionnalités d'affichage pour rendre son utilisation plus rapide, simple et intuitive. (cf *Utilisation et fonctionnalité – 4 - Modalités d'affichage*, p.22)

## B – Problème de décalages des points sur la carte

Lors de la reconstruction des cartes, il se créait parfois des décalages entre les différents points. En effet, le logiciel détecte les pics toutes les 3 secondes, mais il arrive parfois que ces pics ne soient pas exactement ceux attendus (poussière dans le tube, délai imprévu, etc.). Ces mauvais points créent un décalage qui fausse toute la carte. Pour y palier, le rajoute un point lorsque qu'aucun pic n'est détecté pendant 6 secondes, de même je fusionne les points lorsqu'ils sont trop proches. C'est pourquoi avoir une détection de pics fiable et robuste est important.

<figure><img src="image_28.png" /><figcaption>Figure 20 : Exemple d'une carte, avant et après rectification du décalage des informations biométriques, sous deux angles différents</figcaption></figure>

## C – Carte 2D

Notre système peut aussi être utilisé pour réaliser des cartographies biométriques 2D. En effet, le laboratoire *Prism* dispose de nombreux échantillons en 2D sur des plaques en verre, et cette fonctionnalité permet l'utilisation de notre système sur un plus grand nombre d'échantillons.

<figure><img src="image_29.png" /><figcaption>Figure 21 : Exemple de carte biométrique 2D, tranche de cerveau de rat</figcaption></figure>
Ces cartes sont intéressantes, car les plaques en verres sur lesquelles sont stockées les échantillons 2D ne libèrent aucun matériau, et ont donc nécessité de reprendre ma détection de pic pour la généraliser. Il existe déjà des spectromètres de masses capables de générer des cares 2D, et nous pourrons donc les comparer à celles issues de notre dispositif.

# Exploitation du dispositif

## 1 – Interface

Il a été décidé de réaliser une interface graphique pour rendre l'utilisation de notre système la plus facile et intuitive possible. Pour se faire, je vais utiliser la fonctionnalité « App Designer » de Matlab.

J'ai implémenté les différents outils que j'ai mis à disposition de l'Inserm au sein de cette interface.

Pour ne pas surcharger mon rapport, j'ai choisi de mettre le tutoriel que j'ai réalisé pour l'utilisation de notre dispositif en annexe. (cf Annexes – 3 – Tutorial – Mass Spectometry Mapping App – p.34).

Pour que l'application ne génère pas d'erreur, notamment avec les connexions TCP/IP aux différents appareils, j'ai ajouté une « StartUp Function » et une « CloseRequest Callback », des fonctions qui s'exécutent respectivement au lancement de l'application, pour initialiser les variables et les flags, et à sa fermeture, pour fermer proprement les connexions aux différents appareils (nécessaire pour que les appareils ne soit pas en état d'erreur, et pour pouvoir s'y reconnecter sans redémarrer Matlab).

J'utilise les différents flags pour pouvoir savoir quelles connexions ont déjà été initialisé, pour pouvoir refermer ces connexions proprement. Ils me permettent aussi d'afficher à l'aide d'une LED sur l'interface si tous les appareils ont bien été connectés pour lancer telle ou telle fonctionnalité.

J'ai aussi réinitialisé les valeurs des variables de cartographie lorsqu'on lance une seconde cartographie, pour éviter les superpositions de cartes.

## 2 – Logiciel Autonome

J'ai préparé tous les scripts pour pouvoir générer un programme autonome grâce au compilateur de Matlab. En effet, nous voulions pouvoir utiliser notre dispositif sans dépendre d'une version ou d'une licence Matlab. De plus, un logiciel autonome permettrait une meilleure portabilité de nos logiciels d'un ordinateur à un autre.

Cependant, cette version du projet et les codes associés ne sont que des prototypes. Et ce prototype, en permanente évolution, ne se prête pas bien à une compilation définitive. Il a été choisi de laisser l'application en format .mlapp, le format des applications de Matlab, qui grâce à l'interface que j'ai développé, permet de lancer les scripts matlab correspondant.

Cette version logicielle de notre projet correspond mieux aux attentes de ses utilisateurs, il y est plus facile de modifier des portions de codes ou d'ajouter de nouvelles fonctionnalités.

## 3 – Corrélation entre deux spectres

A la demande de l'Inserm, j'ai aussi implémenté une méthode pour évaluer la corrélation entre deux spectres, provenant de deux instruments différents. En effet il y a différents spectromètres
de masse au laboratoire, et permettre de comparer leurs spectres peut élargir les fichiers utilisables dans leurs banques de données.

Pour ce faire, j'importe les fichiers .mzXML et des spectres de masses stockées sur des fichiers .xlsx (excel).

Pour ce faire, j'ai développé une nouvelle fonction de bining, `bining_2()`. Qui remet les informations dans un format comparable. En effet, les masses d'ionisation stockées sont celles qui sont jugées significatives par le logiciel, et est donc répartie sur l'ensemble des masses possibles de manière aléatoire. La fonction `bining_2()`, remet le tableau dans un format fixe en fonction des paramètres choisis, c'est à dire la bande de masse à prendre en compte, ainsi que la taille de fenêtre de bining. Cette fonction, est énormément réutilisée dans la suite des analyses de données, pour pouvoir comparer les spectres entre eux (Analyse en composants principaux, 3 masses principales sur la carte, etc.).

Après avoir remis les informations dans des formats comparables, j'utilise la fonction `corrcoef()` de Matlab.

<figure><img src="image_30.png" /><figcaption>Figure 22 : Exemple de remise des tableaux des spectres de masse dans un format fixe</figcaption></figure>

# 4 – Modalités d'affichage

## A – Détection des masses d'ionisation les plus intenses

J'ai développé une autre fonctionnalité de représentation, qui permet d'afficher sur la carte, non pas les intensités pour une fourchette de masse d'ionisation choisie, mais les masses d'ionisation pour lesquelles on observe un maximum d'intensité.

Ainsi pour chaque pixel, l'intensité lumineuse dépendra de la masse à laquelle il y a plus forte ionisation sur son spectre.

Cela permet de savoir, zone par zone, quelle masse représentera au mieux la surface.

A partir de ces informations, j'ai généré une deuxième carte, qui représente par trois zones distinctes de couleurs rouge, verte et bleu, les masses les plus présentes sur la première carte.

Cela leur permet d'avoir tout de suite les 3 masses les plus représentatives de la carte biométrique et les zones auxquelles elles sont associées.

Ces cartes donnent des informations préalables permettant aux biologistes d'avoir des premières pistes de recherche, et une première idée des informations de la carte. (Figure 23)
<figure><img src="image_31.png" /><figcaption>Figure 23 : A gauche, carte des maximums d'intensité, la couleur dépend de la masse à laquelle on trouve ces maximums. A droite, la carte des trois masses les plus représentatives de l'échantillon.</figcaption></figure>

## B – Superposition de cartes

Toujours à la demande de l'Inserm, j'ai développé une fonctionnalité qui permet de superposer trois cartes biométriques sur une seule carte. Pour ce faire, il faut d'abord reconstruire les trois cartes avec les masses choisies de manière classique. On peut alors superposer les trois cartes sur une seule. Chaque masse d'ionisation se verra attribuer une des trois couleurs primaires (RGB), qui vont se superposer sur la carte Rgb finale.

<figure><img src="image_32.png" /><figcaption>Figure 24 : Carte RGB superposant 3 rapports masse/charge</figcaption></figure>

De ce fait, nous pouvons représenter 3 rapports masse/charges distincts sur une seule carte.
## C – Interpolation polynomiale

L'année dernière, j'avais réalisé une interpolation polynomiale pour augmenter la précision des cartes sans augmenter le temps de cartographie (cf compte rendu 2019 – p.5), en ajoutant des points entre deux prises de mesure.

Cette fonctionnalité n'est plus utilisée pour l'acquisition biométrique, et est donc moins utile que l'année dernière. Cependant, cette représentation plus précise de la carte peut s'avérer utile, car les cartes sont souvent plus lisibles après interpolation.

<figure><img src="image_33.png" /><figcaption>Figure 25 : Carte topographique du patient "SpongeBob", avant et après l'interpolation polynomiale</figcaption></figure>

De plus, ces cartes plus précises, avec plus de points, sont de bien meilleurs supports pour utiliser notre système comme un scanner 3D.

## 5 – Validation du système de cartographie

### A – Scanner 3D

Notre dispositif permet de faire des cartes topographiques en 3D. Ces cartes peuvent être réutilisés comme modèle pour une future impression. Couplé à une imprimante 3D, nous pouvons donc utiliser notre système comme une photocopieuse 3D. En effet, les cartes topographiques, enregistrés dans le format .map, sont sous forme de nuages de points. Certains logiciels, comme MeshLab, permettent d'importer des nuages de points comme base pour réaliser des modèles 3D. Ainsi, après avoir importé les nuages de points, on peut exporter notre modèle de format .stl. (Format classique très utilisés dans le domaine des impressions 3D).

Ce modèle .stl est creux, et on peut alors soit retraiter le fichier avec une application comme MeshMixer, pour refermer le modèle,

<figure><img src="image_34.png" /><figcaption>Figure 26 : Représentation de notre système de photocopie 3D</figcaption></figure>

<figure><img src="image_35.png" /></figure>
ou alors imprimer la surface telle quelle, en comptant sur la génération de support automatique du slicer.

Pouvoir réimprimer les cartes que nous avons généré permet de s'assurer de leurs précisions. En effet, les représentations 3D peuvent être trompeuses, et avoir une copie physique peut permettre de voir des problèmes durs à percevoir sur les représentations 3D.

Nous avons réalisé des tests de cartographie biométrique sur des éponges, en leur faisant absorber des substances de compositions connues à certains endroits, pour valider le système de reconstruction. Ce test n'a pas marché, car les éponges ont été trop absorbante, et aucune information biométrique significative n'a été récupéré. Le patient « SpongeBob » a tout de même été gardé, très bon exemple pour réaliser des cartographies topographiques. J'en ai réalisé des photocopies pour pouvoir estimer la précision du système à l'œil.

<figure><img src="image_36.png" /><figcaption>Figure 27 : Photo du patient « SpongeBob » et de ses photocopies 3D</figcaption></figure>

## B – Estimation de la précision de notre système de cartographie

J'ai utilisé ce système pour estimer la précision de notre système de cartographie. J'ai réalisé un nuage de point sous matlab (une rampe) que j'ai ensuite converti en .stl avec *MeshLab*. J'ai ensuite imprimé ce modèle, que je cartographie à l'aide de notre dispositif. Je compare ensuite le nuage de point initial et celui issu de la cartographie, censé être identique.

Avec cette méthode, j'obtiens un écart maximal entre les deux nuages de points de 0.59mm, une moyenne d'écart de 0.09mm et une médiane de 0.07mm.

Ces résultats, au vu de la précision du robot 6 axes (5 µm) et celle du capteur de télémétrie (5 µm), sont plutôt mauvais.

<figure><img src="image_37.png" /><figcaption>Figure 28 : Rampe générée sur Matlab et sa carte topographique réalisée avec notre système</figcaption></figure>

On peut voir ci-dessus, à gauche, le modèle initial généré sur matlab et à droite, la carte obtenue après le scan de la surface imprimé. Pour estimer la précision de notre système, j'ai comparé la
carte initiale à celle obtenue lors de la cartographie. Les mauvais résultats obtenus sont dus, à mon sens, à la méthode utilisée plus qu'à la précision réelle de notre système. En effet les cartes ont un rendu très propre, et je ne pense pas avoir une si mauvaise précision.

La méthode que j'ai utilisée introduit beaucoup de sources d'imprécisions : Tout d'abord les logiciels qui convertissent les nuages de point en .stl réalisent des approximations lors du calcul des surfaces 3D. Ensuite, l'impression du modèle en 3D elle aussi est source d'imprécision, même avec une qualité d'impression maximale.

Et pour finir, les impressions 3D en PLA ont des surfaces lisses plutôt réfléchissantes, ce qui peut fausser les valeurs renvoyées par le capteur de télémétrie.

De plus, pour comparer les cartes, je les superpose moi-même sur Matlab, ce qui peut aussi induire de légères imprécisions.

<figure><img src="image_38.png" /><figcaption>Figure 29 : Photo de notre système pendant la cartographie de la rampe montrant les réflexions sur la surface</figcaption></figure>

Tous ces facteurs d'imprécisions justifient les mauvais résultats obtenus. Je vois cette estimation de précision de mesure comme une estimation des erreurs maximales que peuvent générer notre système, sa précision réelle étant meilleure que celle qui est estimée ici. Réaliser un autre protocole d'estimation de la précision de cartographie qui introduit moins de sources d'imprécision permettrait de mieux mettre en valeur notre système.

De plus, étudier la réaction de notre système aux cas critiques (surface brillante) est intéressant, car ces cas risquent de se produire dans les conditions réelles d'utilisation.

## 6 – Analyse en composantes principales (ACP)

A la demande de l'Inserm, j'ai réalisé une analyse des données des spectres de masse par ACP (Analyse en Composantes Principales). Cette méthode de réduction de variable permet de transformer des variables corrélées en "composantes principales", décorrélées entre elles. On affiche aussi un cercle des corrélations, qui nous représente sous la forme d'un cercle les corrélations entre les différentes variables.

En effet, connaître les corrélations entre les présences d'intensité sur tel ou tel rapport masse/charge peut permettre aux chercheurs de PRISM d'étudier les corrélations entre la présence des différentes molécules.

Pour l'implémentation sur Matlab, je me suis basé sur la fonction officielle pca() développé par Matlab pour réaliser des analyses en composantes principales.

### A – Première Méthode

J'ai d'abord réalisé une première analyse, qui prend en entrée les carte biométriques .biomap que nous avons réalisés avec notre dispositif. Ainsi, nous pouvons étudier les corrélations entre toutes les masses qui ont déjà été représentés sur une carte topographique 3D.

Pour notre application, nous considérerons chaque intensité de masse d'ionisation comme une variable, et chaque point de la carte comme un individu de la population statistique.

Ainsi, nous cherchons à trouver des corrélations entre les intensités d'ionisation des différentes masses.

<figure><img src="image_39.png" /></figure>
J'affiche un cercle des corrélations, qui permet d'afficher sous forme d'un cercle les corrélations entre les différentes masses d'ionisation. J'affiche aussi une carte factorielle, qui affiche les différents points selon les valeurs des nouvelles composantes principales qui ont été calculées. J'affiche ensuite une carte 3D, sur laquelle sont représenté pour chaque point la valeur selon la première composante principale. J'affiche aussi une autre carte 3D, sur laquelle est représentée les trois premières composantes celons les couleurs RGB.

<figure><img src="image_40.png" /><figcaption>Figure 30 : Ensemble des figures générées : a - cercle des corrélations, b - la carte factorielle des différents points, c - carte représentant l'intensité de chaque point selon la première composante principale, d - carte représentant l'intensité des trois premières composantes principales en RGB pour chaque point</figcaption></figure>

Cette méthode fonctionne, et permet de choisir précisément toutes les masses d'ionisations que nous voulions étudier. On peut ainsi étudier l'impact de l'ajout de telle ou telle masse d'ionisation sur la corrélation. Cependant, cette méthode avait aussi un inconvénient, elle nécessitait aussi de générer une carte biométrique pour chaque masse que nous voulions inclure, ce qui peut être long si nous voulons avoir assez de masse pour être représentatif de l'ensemble du spectre. De plus, l'ACP est parfois utilisé en amont pour savoir quelles masses il peut être intéressant de représenter sur les cartes.

J'ai donc réalisé une deuxième version, qui prend en compte l'ensemble des masses d'ionisation.

## B – Deuxième méthode plus globale

Cette deuxième version, plus globale, prend en compte l'ensemble du spectre de chaque point.

<figure><img src="image_41.png" /></figure>
Cette méthode affiche l'ensemble des masses d'ionisations sur un cercle des corrélations globales. Ce dernier cercle est peu lisible, car il contient trop de points, mais permet d'avoir une première idée des différentes corrélations (positive, négative, indépendance etc.) entre les différentes masses d'ionisation.

J'ai ensuite réalisé un deuxième cercle de corrélation, n'affichant cette fois que les masses d'ionisations les plus représentatives de la carte (celles avec les plus fortes intensités). Le nombre de rapport masse/charge affichée est choisie à chaque exécution comme une variable par l'utilisateur, permettant une meilleure lisibilité.

Cette méthode peut permettre d'avoir directement un aperçu des corrélations entre les différentes masses de corrélation, et de savoir quelles semblent être les plus représentatives, sur l'ensemble des valeurs du spectres.

<figure><img src="image_42.png" /><figcaption>Figure 31 : Cercles de corrélation issus de l'ACP, deuxième méthode plus globale</figcaption></figure>
Conclusion du stage

Mes stages à l'Inria ont été des expériences particulièrement formatrices pour moi : en effet, c'étaient les premières expériences de projet, à réalisation concrète sur le long terme. La multidisciplinarité de ce travail m'a particulièrement plu, me poussant à m'ouvrir et stimulant ma curiosité.

Les objectifs du stage ont été atteints : Nous avons centralisé tout le code sur un seul ordinateur, la réalisation des cartes en un seul passage grâce à la convergence des faisceaux laser fonctionne, et l'interface permet une utilisation fluide et conciliante de notre système.

Voir le projet se concrétiser était très plaisant. En effet, voir le fruit du travail devenir tangibles, obtenir les premiers résultats encourageants est vraiment grisant, donnant du sens aux efforts fournis. La finalité du projet me plaît aussi, et j'espère qu'un jour notre dispositif sera vraiment utiles aux chirurgiens lors de leurs opérations.

Finalement, nous avons un projet fonctionnel, avec une interface et une certaine robustesse, que ce soit dans la connexion des différents appareils ou lors de la reconstruction. Je suis fier de l'outil que je laisse à la disposition des biologistes.
# Pour aller plus loin

## 1 – Problème de décalage

Je pense que le principal défaut de ce dispositif, est ce décalage qui apparaît parfois lors de la reconstruction des cartes biométriques. En effet, les causes de décalages sont multiples, et je n'ai pas réussi à réaliser un code qui fonctionne pour tous les types/causes de décalage.

Avec mes différents systèmes (fusion des pics, ajout de points nuls, etc.), j'ai grandement amélioré la robustesse de notre système, mais je regrette de n'avoir su généraliser ces corrections de manière totalement stable, pour pouvoir fournir un outil parfaitement fiable à l'Inserm. Ces cartes servant de bases à l'Inserm pour leur analyse, il est nécessaire de réaliser un code de rectification qui permet de s'assurer que les positions des informations biométriques sont parfaitement justes, pour toutes les cartes. En effet, le problème n'a lieu que pour certaines cartes, mais celles-ci sont de fait inutilisables.

En fait, l'idéal serait de réussir à remettre en temps réel les informations biométriques extraites des spectres de masse directement sur la carte, en fonction de l'application. En effet, cela permettrait de régler le problème de correspondance entre les cartes topographiques et biométriques, et de donner l'information plus rapidement au chirurgien. D'autant qu'en fonction des informations récupérées en temps réel, le chirurgien pourrait choisir de cartographier de manière plus ciblée les zones à risque. Réduire le temps de l'opération augmente la praticité et le confort d'utilisation de l'outil.

## 2 – Surfaces translucides/réfléchissantes

Ensuite, la difficulté qu'a notre système à cartographier les surfaces translucides et réfléchissantes est problématique : En effet, la plupart des échantillons que l'Inserm cherche à cartographier sont au moins un peu translucides ou brillants. L'achat d'un nouveau capteur a amélioré la robustesse, mais sans résoudre totalement le problème.

En effet, nous avons réalisé des cartographies sur des échantillons de chair de poulet, et les cartes étaient globalement fidèles à la réalité, et nous avons pu voir les lasers de désorption(2) et de télémétrie converger à la surface de l'échantillon, rendant son analyse biométrique possible. Mais la carte aurait pu être encore mieux, notamment sur les bords de l'échantillon, qui eux sont très sujets aux reflets et aux transparences.

De plus, nous avons remarqué que ces aléas de mesure nuisaient à la précision de cartographie sur les surfaces lisses et brillants, comme les pièces imprimées en 3D.

Améliorer encore notre système pour le rendre capable de cartographier avec une grande précision tout type de surface serait un grand plus pour notre système et le rendrait bien plus utile auprès de ceux qui seront amenés à l'utiliser. Pour ce genre d'appareil, le confort d'utilisation et la confiance en ses résultats sont primordiaux pour sa commercialisation.

## 3 – Temps de cartographie

Les cartographies sont malheureusement plutôt chronophages. En effet, il a été choisi d'attendre 3 secondes entre deux points, pour pouvoir différencier les pics lors de la reconstruction.

On peut cependant augmenter la résolution des spectres de masses, pour permettre de différencier deux points plus proches temporellement. Mais lorsque l'on augmente la résolution
temporelle du spectromètre, la qualité des informations données par ce dernier diminue. C'est donc un compromis à trouver entre un temps de cartographie respectable et des informations biométriques valables.

## 4 – Evaluation de la précision de reconstruction

Comme j'ai cherché à estimer la précision de cartographie, on pourrait chercher à démontrer la précision de reconstruction des cartes, c'est à dire la précision avec laquelle on replace les informations biométriques sur la carte.

Plusieurs méthodes ont été évoqués, comme réaliser des moules dans lequel on viendrait couler de la silicone couplée à des fluides de composition connues.

Le sujet de thèse de Lucas Roussel, consiste à réaliser des impressions cellulaires. Ainsi, si je parvenais à cartographier une de ses impressions, nous pourrions valider nos deux systèmes.
# Annexes

## 1 – Développement durable – Responsabilité Sociétale

L'Inria est un laboratoire très conscient des enjeux en ce qui concerne le développement durable et la responsabilité sociétale. Etant une organisation nationale, l'Inria dispose de plusieurs leviers pour améliorer son impact : Travailler sur les méthodes et les moyens de productions, sur les productions en elles-mêmes, et sur les dialogues autour de ceux-ci.

### A – Méthodes et moyens de production

Pour réduire son impact écologique et sociétal, l'Inria peut faire en sorte que les employés Inria polluent un minimum lorsqu'ils exercent leurs activités professionnelles.

Par exemple, la cantine de l'Inria a été choisi de manière collective, par suffrage direct, et c'est la Table de la Cordée qui a été choisie. En effet, cette entreprise s'engage à accompagner la transition alimentaire vers une alimentation plus respectueuse des équilibres biologiques naturels et s'inscrit dans une démarche 0 déchets, en n'utilisant que des bocaux en verre pour remplacer les emballages jetables.

De même, l'Inria trie l'ensemble de ces déchets et optimise au mieux l'utilisation des énergies nécessaire à son bon fonctionnement.

L'Inria a aussi participé cette année au Challenge de la mobilité 2020, qui pousse les salariés à favoriser les mobilités douces pour se rendre sur leurs lieux de travail. L'Inria a même reçu le Lauréat de Mobilisation, étant l'organisme dont les employés ont le plus participé à l'étude.

### B – Production

Il existe aussi au sein de l'Inria l'équipe InriaSoft, qui cherche à développer, industrialiser et diffuser des logiciels d'envergures open source. Les logiciels open-source, développé dans l'optique de fournir un service et non de générer des profits, sont des alternatives bien plus respectueuse des utilisateurs. En effet, en plus d'être gratuit, ces logiciels ont des codes sources accessibles, donc modifiable, et il est possible d'adapter un logiciel à son application, là ou une entreprise privée demanderait des frais importants de développement, ou pourrait refuser de le faire si le développement en question pouvait lui faire de l'ombre. En plus de posséder les capitaux, les grandes entreprises détiennent aussi les moyens logiciels d'en générer. Les logiciels open-source constituent le seul contre-pouvoir à cette suprématie. Pour imager mes propos, nous pourrions prendre l'exemple d'une petite entreprise, obligé de payer une licence Word à Microsoft pour pouvoir faire du traitement de texte. Microsoft a depuis fort longtemps amorti les frais de développement, et profite de son monopole pour continuer à générer des profits sans fournir de service supplémentaire.

La logique d'Inriasoft, à l'inverse, est de mutualiser le développement logiciel pour le pérenniser : développer des logiciels par tous pour tous, et non par des entreprises qui ne le rendront accessible qu'à ceux qui y mettent le prix. Il y a environ 1500 références logicielles dans la bibliothèque Inria, et rassembler des communautés autour de ceux qui prennent de l'ampleur peut permettre de créer des leviers de contre-pouvoir, des alternatives aux solutions payantes. Les logiciels, comme les autres formes de propriétés purement intellectuelles, peuvent être partagés gratuitement après leurs développements, les rendant accessibles à tous. Cette logique de développement a pour objectif le changement de paradigme : créons-nous des logiciels pour générer des profits, ou parce que ce logiciel est utile ? Si ce genre de questionnement était systématiquement posé lors de la création d'activité, peut-être vivrions
nous dans des sociétés plus saines. Cette initiative s'inscrit totalement dans une démarche de responsabilité sociétale consciente.

## C – Dialogue

Je pourrais citer, par exemple, l'initiative « Inri'à vélo », ou Peter Sturm, chercheur à l'Inria, a réalisé le tour des centres Inria à vélo. A chaque étape, il organisait dans le centre d'accueil une conférence, pour présenter son action, et offrir une occasion à tout le monde de discuter tous ensemble sur les enjeux qui lui semble importants vis à vis du développement durable. Outre le défi sportif, c'est vraiment le dialogue autour de ces enjeux qui est mis en avant.

J'étais présent, le 21 Juin 2019, lorsqu'il a réalisé son étape à Lille, et prendre une après-midi pour se poser et discuter tous ensemble des enjeux, en proposant nos points de vue, était une initiative très positive et constructive.

<figure><img src="image_43.png" /><figcaption>Carte du plan de route de l'initiative « Inir'à Vélo »</figcaption></figure>
<figure><img src="image_44.png" /></figure>

# 2 – Tutorial – Mass Spectrometry Mapping Application

## MAPPING TAB

<figure><img src="image_45.png" /></figure>

It's better to launch the sensor calibration before turning the flashlamp on, because once the flashlamp is on, the laser wait a frame for the watchdog. During the calibration step, the software don't send any frame to the laser, and so the laser would block itself in the security mode, and you will have to restart it to be able to trigger it again.

It's also useful to put the robot in the first point position with the "Go to Position" button, to know how to place your sample on the table.

<figure><img src="image_46.png" /></figure>
PROCESSING TAB

<figure><img src="image_47.png" /></figure>

The "Mat file name" and the "Map file name" parameters are used as input for the classic reconstruction and for the displaying of the 3 main masses on the map.

<figure><img src="image_48.png" /></figure>
PCA ANALYSIS TAB

<figure><img src="image_49.png" /></figure>

<figure><img src="image_50.png" /></figure>
# 3 – Tableaux comparatifs des capteurs à triangulation laser

## SICK AG

OD Value (OD2-x50) :

CL2 – 40 to 60 mm – 5µm – 60*50*20,4mm - poids 70g

<table><thead><tr><td>Type</td><td>Connectique</td><td>Sortie</td><td>Référence</td><td>Prix HT</td></tr></thead><tbody><tr><td>OD2-N50W10I2</td><td>câble</td><td>Courant</td><td>6036584</td><td>781.15 €</td></tr><tr><td>OD2-P50W10I0</td><td>Connecteur M12, 8 pôles</td><td>Courant</td><td>6036597</td><td>747.15 €</td></tr><tr><td>OD2-P50W10U0</td><td>Connecteur M12, 8 pôles</td><td>Tension</td><td>6036598</td><td>747.15 €</td></tr><tr><td>OD2-N50W10A2</td><td>câble</td><td>RS-422</td><td>6036587</td><td>781.15 €</td></tr><tr><td>OD2-P50W10A0</td><td>Connecteur M12, 8 pôles</td><td>RS-422</td><td>6036600</td><td>747.15 €</td></tr></tbody></table>

## BAUMER

OADM 12 :

M8, 4 pôles - 2µm – 12,4*37*34,5 mm – poids 80g

<table><thead><tr><td>Portée</td><td>Classe laser</td><td>Sortie</td><td>N° commande</td><td>Prix HT</td></tr></thead><tbody><tr><td>30 to 50 mm</td><td>1</td><td>RS485</td><td>11177259</td><td>1 470.96 €</td></tr><tr><td rowspan="4">16 to 120 mm</td><td rowspan="2">2</td><td>courant</td><td>10147122</td><td>1 461.87 €</td></tr><tr><td>tension</td><td>10152994</td><td>1 461.87 €</td></tr><tr><td rowspan="3">1</td><td>courant</td><td>11090598</td><td>1 419.39 €</td></tr><tr><td>tension</td><td>11090596</td><td>1 419.39 €</td></tr><tr><td>RS485</td><td>11159058</td><td>1 470.96 €</td></tr></tbody></table>

FADK (14I4470/S35A/IO) :

courant – 50-400mm – 0.1 mm - 14.8*31*43mm – poids = 19g – P.U.H.T = 396.81 €

## MICRO-EPSILON

ILD1220-25 :

courant – CL2 – 25-50mm – 25µm – 30*46*20mm – poids = 30g – P.U.H.T = 560.00 €

ILD1320-25 : courant/RS422 – CL2 – 25-50mm – 5µm – 30*46*20mm – poids = 30g – P.U.H.T = 780.00 €

ILD1420-25 (ILD1420-25CL1) : courant/RS422 – CL1/CL2 – 25-50mm – 1µm – 30*46*20mm – poids = 60 g – P.U.H.T = 1 280.00 €

## ILD1720-20BL : LASER BLEU

courant/tension/RS422 – CL2 – 40-60mm – 0.8µm – 75*97*30mm – poids = 550g – P.U.H.T = 4 506.00 €