BeHive est un projet conçu pour répondre aux besoins d'automatisation du labo Kloosterman : piloter leur labyrinthe à l'aide de deux types de matériel, des portes et des distributeurs de nourriture. La difficulté de cette automatisation tient à sa dépendance au comportement de l'animal et au paradigme expérimental.
Pour répondre aux besoins propres à chaque expérimentateur, la première étape essentielle a été de mettre en place un système de plugins souple. Il permet à chacun de décrire facilement son paradigme et de l'intégrer à l'application sans toucher aux composants centraux comme l'interface graphique ou la journalisation.
Dépôt · Documentation (en anglais)
L'architecture du code donne la priorité à la séparation des responsabilités : le code de contrôle du matériel, celui de l'interface et celui des tâches personnalisées sont séparés. Chaque composant respecte une interface définie et est enregistré sous un nom de classe dans un registre central. Les utilisateurs assemblent ensuite ces composants grâce à un fichier de configuration qui décrit précisément les actions, les événements et les tâches souhaités. La souplesse du système se voit dans le grand nombre de combinaisons possibles, toutes conformes à une couche d'interface standardisée.
Les objets sont instanciés indépendamment à la lecture du fichier de configuration. Les instances d'événements et d'actions sont créées dynamiquement selon un patron observateur-fabrique : elles peuvent notifier la tâche principale ou être notifiées par elle, ce qui permet de traiter rapidement les événements et d'exécuter les actions sur les actionneurs.
Cette tâche personnalisée, modélisée comme un graphe de transitions d'états, enchaîne une série d'essais représentés par des nœuds, chacun avec une issue de réussite ou d'échec déterminée par les essais précédents. Cette structure permet de traiter les événements et d'exécuter les actions sur les actionneurs selon la logique inscrite dans le graphe.
Les événements comme les actions gèrent la communication avec les différents éléments matériels, pour un fonctionnement fluide.
L'interface est découpée en deux parties : un tableau de bord général pour configurer le fichier, saisir les informations de l'utilisateur et suivre les résultats de l'expérience. Une fois un fichier de configuration chargé, la partie propre à la tâche se met à jour pour afficher l'état de tout le matériel du dispositif, y compris le niveau des batteries et les réserves de nourriture.
En conclusion, ce logiciel a nettement fait progresser nos recherches : il a permis à trois chercheurs de mener des expériences en parallèle dans trois salles pendant trois ans. L'automatisation complète de l'expérience a amélioré la reproductibilité d'un jour à l'autre et d'un expérimentateur à l'autre, tout en libérant du temps aux chercheurs. Plus besoin d'appuyer manuellement sur des boutons : ils pouvaient se concentrer sur l'observation des images des caméras, pour un travail de recherche plus efficace et plus fluide. Le succès de ce logiciel montre son rôle clé dans l'amélioration des méthodes expérimentales et la bonne utilisation des ressources de notre laboratoire.
Publication ayant utilisé ce logiciel : Awake hippocampal replay is not required for short-term memory (préprint), Lies Deceuninck, Fabian Kloosterman