Pierre Mallinjoud

Pierre Mallinjoud

Expert technique, ingénieur bioinformatique, développeur web et base de données

Je suis un développeur web et base de données, passionné de science. Cela m’a conduit à étudier la génomique et les statistiques afin de travailler dans la recherche en biologie. Aujourd’hui, je m’intéresse également à l’IA et à la blockchain, que j’explore à travers plusieurs projets personnels.

Expérience chez EnyoPharma

Chez EnyoPharma, j’ai travaillé en tant qu’ingénieur en bioinformatique au sein de l’équipe R&D, en collaboration étroite avec des biologistes sur les interactions protéine-protéine entre l’humain et les virus. Les biologistes effectuaient une curation manuelle des publications scientifiques pour extraire ces interactions.

Pour soutenir ce travail, j’ai développé deux applications full-stack :

  • Drakkar : Une base de données et une interface web permettant aux biologistes d’annoter manuellement les interactions protéine-protéine via des formulaires riches, stockées dans une base PostgreSQL.
  • Vinland : Une version plus petite et en lecture seule de Drakkar, offrant une interface web publique pour interroger les interactions protéine-protéine et visualiser les réseaux d’interactions.

Les deux applications reposent sur la même stack technologique :

  • Une base de données PostgreSQL
  • Un backend PHP développé sur mesure
  • Un frontend React
  • Une conteneurisation avec Docker

J’ai également développé des scripts Perl pour générer la base de données Vinland à partir de Drakkar. Ce travail et les données produites ont servi de base à un article scientifique publié.

Meyniel-Schicklin L, Amaudrut J, Mallinjoud P, et al. Viruses traverse the human proteome through peptide interfaces that can be biomimetically leveraged for drug discovery. Proc Natl Acad Sci U S A. 2024;121(5):e2308776121. doi:10.1073/pnas.2308776121

typescript javascript php perl python sql reactjs docker database postgresql uniprot

Expérience au CRCL

Au CRCL (Centre de Recherche en Cancérologie de Lyon), j’ai conçu une base de données répertoriant les événements d’épissage alternatif des génomes humain et souris. Pour cela, je suis parti des séquences d’ARN messager disponibles dans GenBank, que j’ai alignées sur les génomes de référence humain et souris.

J’ai ensuite mappé les sondes des puces Affymetrix exon array sur cette annotation. Cela m’a permis de créer une autre base de données recensant les données d’expression différentielle des événements d’épissage issues de nombreuses expériences, à la fois publiques et internes au laboratoire.

Ce travail a contribué à une publication scientifique et est accessible en ligne à l’adresse suivante : FASTERDB.

Mallinjoud P, Villemin JP, Mortada H, et al. Endothelial, epithelial, and fibroblast cells exhibit specific splicing programs independently of their tissue of origin. Genome Res. 2014;24(3):511-521. doi:10.1101/gr.162933.113

perl R sql mysql genbank microarrays affymetrix blast

Construire un dataset propre de paires peptide-récepteur à partir de la PDB

Dans le cadre de mon travail actuel sur une future version de Mímir, j’explore la PDB pour construire un dataset propre de paires peptide-récepteur destiné au machine learning.

Le projet part des entrées publiques de la RCSB PDB et applique des filtres structuraux conservateurs pour ne garder que des paires faciles à justifier et à auditer. Plutôt que d’essayer de corriger les cas ambigus, je préfère les rejeter et garder une logique de sélection explicite. L’objectif n’est pas de maximiser le nombre d’échantillons, mais de construire un dataset fiable pour le machine learning.

Le dataset final est stocké dans LMDB et conserve des informations structurales comme les séquences, les identités de résidus, les coordonnées atomiques, les B-factors et les valeurs d’occupation. J’ai également développé un viewer en Next.js par-dessus pour inspecter des paires de chaînes sélectionnées et explorer plus facilement le dataset.

python bioinformatics data engineering pdb lmdb nextjs

Fine-tuning d'ESM3 pour la biologie générative

En explorant l’IA générative appliquée à la biologie, j’ai cherché à créer Mímir, un modèle capable de générer de nouveaux peptides liants à partir de la structure 3D de protéines cibles. Il repose sur un fine-tuning d’ESM3, un modèle de langage protéique de 1,4 milliard de paramètres. J’ai développé toute la pipeline d’entraînement moi-même, de la préparation des données à l’entraînement et à l’évaluation sur GPU dans le cloud.

Plutôt que de m’appuyer sur des tutoriels basiques, j’ai développé une pipeline de fine-tuning complète et sur-mesure. Cela a impliqué le déploiement et l’entraînement du modèle de bout en bout sur une infrastructure cloud (GPU H100 via Lightning AI). J’ai dû relever des défis d’ingénierie majeurs pour faire tenir un modèle de cette taille en mémoire, en implémentant des techniques telles que l’optimiseur AdamW 8-bit, le gradient checkpointing, Flash Attention et le bucket batching dynamique.

Au-delà de l’aspect technique, ce projet m’a permis de comprendre en profondeur le fonctionnement interne d’ESM3. J’ai appris à manipuler ses entrées multi-pistes (séquence, coordonnées 3D, accessibilité au solvant), à comprendre comment l’attention géométrique traite les relations spatiales, et à concevoir une fonction de perte (loss) personnalisée pour le “masked language modeling”. Même si le modèle n’a pas totalement atteint l’objectif de “transfer learning” à cause de la complexité de représentation des structures 3D multi-domaines, mener à bien ce processus - de la préparation des données à l’exécution dans le cloud et l’analyse post-mortem - m’a apporté une expérience pratique inestimable de l’entraînement des “Large Language Models”.

Le projet, incluant son document de conception et un post-mortem détaillé, est disponible sur son dépôt GitHub.

python pytorch esm3 deep learning fine tuning llm cloud

Fine tuning d'un modèle de classification binaire

J’ai utilisé un jeu de données issu de mon travail passé chez EnyoPharma pour apprendre à fine-tuner un modèle. Il contient environ 80 000 abstracts de publications scientifiques annotés manuellement selon qu’ils décrivent ou non des interactions protéine-protéine.

Avec la bibliothèque Hugging Face, j’ai fine-tuné un modèle préentraîné en classificateur binaire. L’objectif n’était pas de construire un modèle de production, mais de parcourir tout le workflow de fine-tuning sur un cas réel et de comprendre où se situent les principaux leviers d’amélioration.

L’étude est documentée dans son dépôt GitHub et les notebooks Jupyter.

python jupyter deep learning fine tuning huggingface transformers data science

Pipeline RAG en ligne de commande pour sites web

J’ai créé RAG-URL pour explorer l’architecture complète d’un système RAG agentique.

Le projet couvre tout le workflow, depuis l’extraction et le nettoyage du contenu jusqu’au découpage sémantique, aux embeddings, à la recherche vectorielle et à la génération de réponses avec un LLM.

Le pipeline comprend quatre étapes :

  • Scrape : Exploration du site et extraction du contenu en Markdown nettoyé
  • Chunk : Segmentation sémantique avec un modèle Gemini
  • Embed : Vectorisation avec Gemini et stockage dans LanceDB
  • Agent : Agent interactif en ligne de commande, construit avec PydanticAI, interrogeant la base via Gemini

Le pipeline repose entièrement sur les modèles Gemini et n’est pas encore agnostique ni extensible.

python ai agent rag llm prompting gemini pydantic-ai lancedb

Framework conversationnel multi-agents

J’ai créé MC Architecture (Master of Ceremony) comme une expérimentation autour des conversations multi-agents.

Plutôt que de s’appuyer sur un contrôleur central qui orchestre chaque échange, MC Architecture laisse les agents prendre la parole à tour de rôle en fonction du contexte partagé. Le modèle d’interaction se rapproche d’une discussion de groupe où tous les participants voient le même historique, mais un seul parle à la fois.

Le framework est agnostique vis-à-vis des agents comme des modèles et fonctionne comme une couche légère au-dessus de bibliothèques d’IA existantes. Je l’ai intégré à PydanticAI, avec une logique de sélection des intervenants pour garder un dialogue cohérent.

Je l’ai d’abord conçu pour la narration créative et les simulations, mais il montrait aussi un vrai potentiel pour des scénarios de résolution collaborative où le contexte partagé et la dynamique conversationnelle comptent.

python ai agent llm prompting openai anthropic gemini pydantic-ai