Contexte et atouts du poste
L’Institut du Cerveau et de la Moelle épinière est une Fondation privée reconnue d’utilité publique dont l’objet est la recherche fondamentale et clinique sur le système nerveux. Sur un même lieu, 1000 chercheurs, ingénieurs et médecins couvrent l’ensemble des disciplines de la neurologie, dans le but d’accélérer les découvertes sur le fonctionnement du cerveau, et les développements de traitements sur les maladies comme : Alzheimer, Parkinson, Sclérose en plaques, épilepsie, dépression, paraplégies, tétraplégies, etc. Inauguré en septembre 2010, l’Institut connait une croissance importante de son activité qui nécessite l’appui d’un pôle juridique renforcé.
Ce poste d’ingénieur en développement logiciel et optimisation de calcul appliqué aux séries temporelles (électroencéphalographie) est à pourvoir dans le laboratoire NERV ( à l’Institut du Cerveau à Paris (Paris Brain Institute).
Le projet a pour point de départ la réalisation d’expériences d’utilisation d’interfaces cerveau-machine (BCI) par des sujets qui, par la modulation de leur activité cérébrale, contrôlent un dispositif externe. Lors des sessions d’enregistrement, les données cérébrales sont acquises par électroencéphalographie (EEG), puis analysées hors-ligne afin d’entrainer des algorithmes IA de classification dans le but d’optimiser les performances en ligne du BCI.
Le poste s’intègre dans le contexte d’un projet de recherche visant à améliorer la traduction de signaux cérébraux en commandes. L’analyse des données EEG pour l’entrainement d’algorithmes de machine-learning est réalisée via HappyFeat, un logiciel Python avec une interface Qt développé par l’équipe ( s’interfaçant avec d’autres logiciels BCI (OpenViBE, Timeflux). Il permet de simplifier la mise en place des expériences BCI, et d’automatiser la sélection de caractéristiques optimales pour la classification des signaux via des outils graphiques d’analyse statistique.
Mission confiée
Rattaché(e) à l'Ingénieur R&D en charge du projet, l'ingénieur développeur logiciel confirmé aura pour mission de concevoir, intégrer et optimiser en C++ des algorithmes complexes utilisés en neurosciences computationnelles et BCI (graphes connectés, traitement du signal, machine learning), avec un fort enjeu de performance (multi-threading, GPU). Les différents travaux incluent :
· L’intégration (C++) d’algorithmes de traitement du signal (connectivité fonctionnelle), de traitement de graphes connectés, et de classification (géométrie Riemannienne, modèles de fondation…),
· La validation des algorithmes via tests unitaires, benchmarking et évaluation de leurs performances sur signaux simulés et réels,
· L’optimisation au cas par cas des algorithmes pour leur utilisation en temps réel, notamment via l’utilisation de multithreading et d’implémentation sur GPU.
· La participation à un effort de refonte de l’architecture du logiciel pour en accroître la modularité,
· La contribution technique à une campagne d’expériences BCI (environ soixante sessions) : analyse des données, soutien à l’exploitation des résultats, soutien technique.
· La rédaction de documentation technique
L’ingénieur(e) participera à l’amélioration générale du logiciel : mise en place de tests automatisés, contrôle de version via git, intégration continue, maintenabilité et reproductibilité.
Principales activités
· L’intégration (C++) d’algorithmes de traitement du signal (connectivité fonctionnelle), de traitement de graphes connectés, et de classification (géométrie Riemannienne, modèles de fondation…),
· La validation des algorithmes via tests unitaires, benchmarking et évaluation de leurs performances sur signaux simulés et réels,
· L’optimisation au cas par cas des algorithmes pour leur utilisation en temps réel, notamment via l’utilisation de multithreading et d’implémentation sur GPU.
· La participation à un effort de refonte de l’architecture du logiciel pour en accroître la modularité,
· La contribution technique à une campagne d’expériences BCI (environ soixante sessions) : analyse des données, soutien à l’exploitation des résultats, soutien technique.
· La rédaction de documentation technique
Compétences
Compétences techniques:
1. Maîtrise du C++. Les normes modernes (14/17 ou supérieur) sont un plus.
2. Bonnes connaissances en traitement du signal et/ou en machine-learning.
3. Expérience significative en développement d’algorithmes temps-réel et en optimisation de performances (profilage, parallélisme)
4. Expérience en programmation GPU (CUDA)
5. Excellentes pratiques logicielles collaboratives : git, Github, tests automatisés, intégration continue
6. Bonnes connaissances en Python et packages scientifiques (numpy, scipy, scikit-learn)
7. Des connaissances en neurosciences, BCI, statistiques ou théorie des graphes seraient un plus.
Savoir-être:
8. Capacité à travailler avec une équipe pluridisciplinaire
9. Autonomie, synthèse, initiative
10. Intérêt pour le monde de la recherche et les neurosciences
11. Bonne communication et rédaction en anglais et français.
Avantages
12. Restauration subventionnée
13. Transports publics remboursés partiellement
14. Congés: 7 semaines de congés annuels + 10 jours de RTT (base temps plein) + possibilité d'autorisations d'absence exceptionnelle (ex : enfants malades, déménagement)
15. Possibilité de télétravail et aménagement du temps de travail
16. Équipements professionnels à disposition (visioconférence, prêts de matériels informatiques, etc.)
17. Prestations sociales, culturelles et sportives (Association de gestion des œuvres sociales d'Inria)
En cliquant sur "JE DÉPOSE MON CV", vous acceptez nos CGU et déclarez avoir pris connaissance de la politique de protection des données du site jobijoba.com.