Ingénieur.e développement logiciel spécialiste en Python pour la simulation numérique - Modélisation numérique du système cardiovasculaire

Type de contrat : CDD

Contrat renouvelable : Oui

Niveau de diplôme exigé : Bac + 5 ou équivalent

Fonction : Ingénieur scientifique contractuel

Contexte et atouts du poste

L'équipe-projet M3DISIM développe depuis une vingtaine d'années des modèles mathématiques et biomécaniques du coeur et du système cardiovasculaire, et des méthodes de simulation numérique adaptées à ces modèles. Les modèles en question sont de différents types, allant des équations aux dérivées partielles en 3D pour les plus fins, à des versions simplifiées sous forme de systèmes d'équations aux dérivées ordinaires, dits "modèles 0D".

Les modèles 0D permettent des simulations numériques très rapides - potentiellement en temps réel - tout en rendant compte des "aspects systèmes" des modèles cardiovasculaires, c'est à dire des couplages entre les différentes composantes du système cardiovasculaire (coeur, artères, veines, voire poumons, etc.). L'équipe développe notamment des applications de monitorage cardiovasculaire augmenté fondées sur des "jumeaux numériques", en particulier pour l'anesthésie-réanimation, qui exploitent de tels modèles.

Dans le cadre du projet i-Démo intitulé "MediTwin" qui vise à développer des méthodes permettant de construire des jumeaux numériques en médecine, avec diverses applications sur lesquelles ces méthodes donneront lieu à des preuves de concept, l'équipe M3DISIM est responsable d'une tâche visant à développer une bibliothèque logicielle permettant la simulation numérique de modèles simplifiés 0D ou 1D du système cardiovasculaire, avec 3 caractéristiques à privilégier :

  • Facilité de développement / portabilité qui motivent le choix du langage Python
  • Modularité pour que l’ajout d’une nouvelle brique de modélisation ne requière qu’un travail minimal d’intégration en dehors du code dédié au modèle lui-même
  • Vision hiérarchique de la modélisation entre les modèles de différentes dimensions, à l’intérieur de la bibliothèque elle-même (limitée au 0D et 1D), et vis-à-vis des modèles 3D développés par l'équipe par ailleurs

Les utilisateurs visés sont principalement :

  • les chercheurs en modélisation cardiovasculaire (dont le personnel de l'équipe M3DISIM elle-même), pour qui la bibliothèque devrait constituer un outil précieux pour tester rapidement des nouvelles briques de modélisation et des méthodes numériques associées
  • les médecins, pour qui la bibliothèque devrait représenter une voie d'accès facilitée à la modélisation
  • les étudiants (en modélisation ou en médecine) pour accompagner leur apprentissage des concepts de modélisation et/ou de physiologie du système cardiovasculaire

Une partie substantielle de la bibliothèque sera diffusée sous licence opensource, certains développements pointus ayant par ailleurs vocation à demeurer logiciel propriétaire, notamment pour en permettre des valorisations économiques ou entrepreneuriales le cas échéant. La diffusion en opensource s'accompagnera d'un déploiement dans un JupyterHub.

Mission confiée

L'ingénieur.e recruté.e, pour une durée de 2 ans éventuellement renouvelable, aura pour mission de développer la bibliothèque en Python ci-dessus, et sera rattaché.e à l'équipe M3DISIM du centre Inria-Saclay, sur le campus de l'Ecole polytechnique. Elle ou il sera encadré.e par un chercheur de l’équipe, et par ailleurs accompagné.e par un spécialiste du langage Python du service expérimentation et développement (SED) du centre Inria de Saclay.

Principales activités

Activités principales :

  • Conception de la bibliothèque (en s'inspirant du logiciel HELEN préalablement développé en C++ dans l'équipe avec une visée de mise en œuvre opérationnelle au détriment de la modularité et de la facilité du développement d’éléments nouveaux)
  • Développement complet de la bibliothèque en Python
  • Tests détaillés initiaux par comparaison avec le logiciel HELEN
  • Mise en place de tests unitaires, de tests d’intégration et de tests fonctionnels dans une démarche d'intégration continue
  • Rédaction et présentation de documentation
  • Aide à la prise en main des utilisateurs avancés de l'équipe et cercles proches
  • Mise en place de simulateurs cardiovasculaires de différentes complexités s'appuyant sur les briques de la librairie
  • Déploiement dans un JupyterHub
  • Elaboration de notebooks Jupyter pour différents types d'utilisateurs (étudiants en modélisation, en médecine, etc.)

Compétences

  • Expertise en développement Python
  • Expérience de développement souhaitable dans le champ de la simulation numérique
  • Connaissances solides et expérience en développement logiciel : architecture logicielle et paradigmes de programmation, génie logiciel, bonnes pratiques et outils de développement logiciel (versionning, documentation, packaging, CI, CD …)
  • Aptitudes à la conduite de projet
  • Capacité à rédiger, à publier et à présenter, en français voire en anglais
  • Capacité à comprendre les contextes et besoins scientifiques, et à les traduire dans des implémentations technologiques
  • Acculturation préalable à la modélisation mathématique et/ou au calcul scientifique appréciable
  • Savoir être : ouverture d'esprit, goût pour le travail en équipe

Avantages

  • Restauration subventionnée
  • Transports publics remboursés partiellement
  • 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)
  • Possibilité de télétravail (après 6 mois d'ancienneté) et aménagement du temps de travail
  • Équipements professionnels à disposition (visioconférence, prêts de matériels informatiques, etc.)
  • Prestations sociales, culturelles et sportives (Association de gestion des œuvres sociales d'Inria)
  • Accès à la formation professionnelle
  • Sécurité sociale