# Pilotage déporté d'IRM précliniques Bruker

Vick Foëx, Frédéric Cervenansky, Kevin Tse Ve Koon, Denis Grenier

► To cite this version:

Vick Foëx, Frédéric Cervenansky, Kevin Tse Ve Koon, Denis Grenier. Pilotage déporté d'IRM pré-cliniques Bruker. Société Française de Résonance Magnétique en Biologie et Médecine, 7e congrès, Mar 2025, Saint-Malo, France. hal-05280526

HAL Id: hal-05280526

https://hal.science/hal-05280526v1

Submitted on 24 Sep 2025

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
# Pilotage déporté d'IRM précliniques Bruker

Vick Foëx, Frédéric Cervenansky, Kevin Tse-Ve Koon, Denis Grenier

INSA-Lyon, Universite Claude Bernard Lyon 1, CNRS, Inserm, CREATIS UMR 5220, U1294, F-69616, LYON, France,

vick.foex@creatis.insa-lyon.fr

## Introduction

PERMIS est une librairie Python permettant le pilotage des acquisitions réalisées sur des IRM Bruker via un ordinateur tiers (ordinateur, cluster...). Elle permet de recevoir des données en cours d'acquisition et en fonction, de modifier des paramètres d'acquisition. Deux fonctionnalités permettent d'accomplir cela :

* Le pilotage des paramètres de la séquence

* Le partage des données hors de l'étape de reconstruction

Le tout est encapsulé dans deux serveurs Python (voir ci-dessous) communiquant via WSocket avec les outils de Bruker.

<figure><img src="image_2.png" /><figcaption>Figure 1. Fonctionnement général de PERMIS</figcaption></figure>

## Exemples d'applications :

* Création d'ajustement complexe

* Application de filtres IA lors de la reconstruction d'une image

* Optimisation de l'algorithme de suppression d'eau standard :

Spectres d'acquisition en fonctions des algorithmes de suppression d'eau et bruit mis à l'échelle

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

Figure 2. Exemple d'acquisition réalisée avec un algorithme de suppression d'eau optimisé, mis en œuvre via PERMIS, comparé à l'original de Bruker.

Acquisition réalisée sur une fiole de sérum physiologique.

## Example de code :

```python
data = server()  # "data" correspond à a une ligne de l'espace-k
filteredData = customFilter(data)  # Les données sont filtrées
server.send(filteredData)  # Les données filtrées sont renvoyées dans leur pipeline
```

```python
paramValue = server.getParam("paramNameA")
if paramValue == "Yes":  # La valeur du paramètre ParaVision A va influer celle de B
    server.setParam("paramNameB", 1)
else:
    server.setParam("paramNameB", 0)
```

## Temps d'exécution :

Avec l'utilisation de PERMIS, les phases de reconstruction d'une image voient leur temps allongé par les temps de calcul et d'échange :

* 100 ms pour changer la valeur d'un paramètre via le serveur de commande

* 40 ms pour la réception des données via le serveur de données

* 80 ms pour la réception et le renvoie des données via le serveur de données (le temps de filtrage dépend du filtre implémenté par l'utilisateur et n'est ici pas comptabilisé)

*Ces mesures sont données à titre indicatif et sont susceptibles de changer en fonction de la qualité du réseau.

Ces ajouts de temps ne nuisent pas à la bonne réalisation des acquisitions, car acquisition et reconstructions sont deux processus réalisés en parallèle. Il est cependant important de garder ces temps au plus court pour éviter un déphasage trop important entre les deux processus, ce qui nuirait aux modifications "en temps réel" des paramètres d'acquisition.

## Outils de PERMIS :

### Serveur de commande (ordinateur tiers/ cluster) :

Le serveur de commande permet une interaction directe avec les paramètres d'une acquisition sous ParaVision pour :

* en amont d'une acquisition, paramétrer rapidement une séquence

* au cours d'une acquisition, ajuster les résultats en temps réel.

L'interfaçage se limite à deux méthodes :

* getParam : récupère la valeur d'un paramètre

* setParam : fixe la valeur d'un paramètre

### Lancement du Daemon (environnement ParaVision) :

Pour permettre la communication avec le serveur, un programme daemon fournis par la librairie doit être lancé dans l'environnement de ParaVision avec les paramètres suivant :

* IP du serveur (ou du cluster)

* Le chemin de ParaVision : propre a chaque installation

Exemple : `./runDaemon.py /opt/PV-7.0.0 -a 123.456.789.123`

### Serveur de donnée (ordinateur tiers/ cluster) :

Le serveur de données permet de récupérer les signaux acquis au fur et à mesure de leur arrivée dans le pipeline de reconstruction de ParaVision. Ce serveur permet de :

* Prendre des décisions en fonction des résultats en temps réel (par exemple, changer les paramètres d'acquisition via le serveur de commande)

* Appliquer un filtrage aux données avant de les réinsérer dans le pipeline.

<figure><img src="image_4.png" /><figcaption>Figure 1. Pipeline de reconstruction d'une acquisition avec PERMIS</figcaption></figure>

### Installation (environnement ParaVision) :

Pour permettre la communication avec le serveur de données, le pipeline de reconstruction d'une séquence doit être modifié pour accueillir le module permettant l'envoi de données.

Pour ce faire, il suffit d'utiliser le script réalisant cette opération automatiquement avec les paramètres suivants :

* Le chemin de ParaVision : propre a chaque installation

* Le nom de la séquence sur laquelle appliquer la modification

* Le nom de la nouvelle séquence

Exemple : `./installMethod.sh /opt/PV360 RARE permis_RARE`

## Conclusion :

Malgré les limitations imposées par le constructeur, la librairie open source permet déjà de s'affranchir avantageusement des possibilités logicielles limitées offertes sur l'IRM, et ceci, tout en conservant les verrous de sécurités mis en place par le constructeur pour protéger à la fois la machine et le sujet d'étude.

## Git PERMIS →

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