Projet 2023-24 - Présentation générale
Simulation du traitement de tumeurs par inhibition de la glycolyse


But

Vous apprendrez à l'aide de ce projet à réaliser un programme complet et de taille plus importante que ceux avec lesquels vous avez travaillé jusqu'à présent. Votre programme comportera également une composante graphique. Sur le plan informatique, ce projet a pour but de consolider vos connaissances en programmation ainsi que de vous faire pratiquer les concepts essentiels de la programmation orientée-objet : abstraction et encapsulation, héritage, méthodes virtuelles et polymorphisme.


item item item
images tirées de : https://facts.net/science/biology/20-mind-blowing-facts-about-angiogenesis/ et https://openart.ai/discovery

1. Introduction

Le but du projet de cette année est de vous faire faire une modeste incursion dans l'univers de la simulation de systèmes biologiques.

Votre objectif sera de simuler de façon très simplifiée l'impact de l'inhibition de la glycolyse sur l'évolution de tumeurs1 affectant des rongeurs (hamsters) élevés en laboratoire2. Il s'agira de "monitorer" l'évolution de la pathologie sur différents hamsters, qui recevront chacun un traitement particulier via des nutriments et des inhibiteurs.

La simulation se fera selon deux "vues" différentes :

  1. la vue externe : très simple, où l'on simulera un petit élevage de hamsters. On pourra les sélectionner et leur administrer les différents traitements.

  2. la vue interne  : où l'on verra, pour chaque hamster, l'évolution de cellules tumorales et du réseau sanguin sur un fragment d'organe (les cellules tumorales influencent en effet le réseau sanguin selon le phénomène dit d'angiogenèse [6]).

Une description plus détaillée des éléments à simuler et des techniques employées est fournie un peu plus bas.

Objectifs pédagogiques :

Au delà du domaine d'application, ce projet vous permettra d'aborder de nombreuses facettes intéressantes de la programmation:

Vous trouverez dans ce qui suit une description des hypothèses et techniques de simulation qui seront implémentées dans le cadre de ce projet, des éléments relatifs à l'organisation du travail et un certain nombre de références sur le domaine.

2. Hypothèses et techniques de simulation

Le but ici est d'introduire les éléments principaux à considérer lors de la simulation. Il ne s'agit ici que d'une description générale. L'énoncé du projet vous donnera des spécifications détaillées pour chaque étape suggérée.

Les "vues"

La vue externe de la simulation permettra de visualiser un élevage de hamsters. Il s'agira de petits automates se déplaçant aléatoirement et capables de se nourrir. Afin d'en faciliter le repérage, chaque hamster sera confiné dans un cage qui lui est propre.

La vue interne permettra quant à elle de visualiser un fragment d'organe potentiellement atteint de tumeur pour un hamster donné. Par simplification, la nature de l'organe ne nous importera pas et l'on considérera simplement qu'il s'agit du même organe pour chaque animal. La vue interne sera échantillonnée en cases (grille en deux dimensions). Chaque case correspondra à une portion/cellule du fragment d'organe, saine ou malade, et au réseau sanguin l'irriguant.

Ce modèle très simplifié, notamment en raison du fait qu'il est seulement en deux dimensions, permettra de simuler les mécanismes suivants :

Chaque cellule de l'organe aura une durée de vie limitée, conditionnée par l'âge mais aussi par l'énergie disponible.

Le réseau sanguin

Le réseau sanguin sera constitué de fragments appartenant à une artère et de fragments appartenant au réseau de capillaires dérivant de cette artère. Les nutriments ne se diffuseront qu'à partir des capillaires selon une équation différentielle décrite en [7]. La création du réseau sanguin, pour chaque hamster, se fera selon un algorithme générant aléatoirement le cheminement des capillaires à partir de l'artère.

Les substances influençant l'évolution du système

L'évolution des cellules de l'organe sera dépendante des substances suivantes :

Dans le modèle que nous vous suggérerons, les deux premières substances seront administrées comme nutriments aux hamsters, en proportions variables, afin d'en étudier l'incidence sur l'évolution de la tumeur.

Techniques de simulation

Le but du projet est donc de simuler l'évolution temporelle de chaque vue, externe et interne. Il faudra bien sûr pour cela concevoir les classes/objets nécessaires et les organiser (héritage, encapsulation) de façon pertinente; ce que l'énoncé du projet vous aidera à faire.

La simulation minimale devra permettre de visualiser l'évolution du l'organe de chaque hamster en affichant des informations pertinentes (dosage des substances, pourcentage de cellules saines et malignes etc..)

Au niveau externe la simulation se fera pour tous les hamsters en même temps (on les verra se mouvoir dans leur cage). On devra alors pouvoir en sélectionner un et basculer alors sur sa vue interne qui nous montrera l'organe observé. Il sera à tout moment possible de revenir à la vue externe pour éventuellement sélectionner un autre hamster. Dans la version de base du programme, l'administration de substances se fera de façon interactive (appui des touches pour augmenter la quantité de nutriment par exemple)

Une façon simple de simuler l'évolution de chaque vue consiste à invoquer en boucle la mise à jour de ses constituants (les hamsters pour la vue externe et les cases pour la vue interne) sur un pas de temps donné. Chaque itération correspondra à un cycle de simulation. La mise à jour des hamsters dans la vue externe permettra de gérer les actions nécessaires à chaque cycle (déplacement, consommation de nourriture, fin de vie etc.). La mise à jour des cases/cellules dans la vue interne permettra par exemple de diffuser les substances.

Un inconvénient potentiel dans ce type de simulation est l'ordre de gestion des évènements. Dans la version de base que vous suggérera l'énoncé, les cases seront gérées les unes après les autres dans l'ordre de la liste, qui (à peu de choses près) est toujours le même. Cela induit en fait une synchronisation involontaire entre le système à simuler et l'«horloge de simulation» qui dans des cas plus réalistes peut être néfaste3. Pour éviter ce genre de problèmes, on pourra, dans une version améliorée, choisir de parcourir dans un ordre aléatoire la liste des entités à simuler. Cela peut par exemple se faire en insérant au hasard tout nouvel entrant et/ou en ajoutant une tâche «mélanger les cases à gérer» à chaque cycle de simulation.

Pistes d'extension

Et voici pour finir quelques pistes d'extension possibles :

3. Rendu

Le projet est à réaliser en groupe de 2 personnes. 

Il y aura au cours du projet un rendu intermédiaire et un rendu final. Le rendu intermédiaire compte dans la notation finale, mais de façon relativement peu importante (un barème vous sera fourni). Il nous permet surtout de suivre votre progression.

Aucun rapport (document) n'est à fournir sur le projet. Par contre, nous vous demandons de commenter abondamment et intelligemment les codes sources que vous nous rendrez (les commentaires remplaceront le rapport et seront donc pris en compte dans la notation du projet). De plus, la propreté du code (indentation, espaces, nom de variables, accolades, variable membre de classe, etc.) sera également pris en compte dans la notation (le code fourni est considéré comme acceptable).

Nous vous demanderons également de fournir trois fichiers complémentaires :

En particulier, en plus des commentaires usuels sur le code lui-même, vous avez tout loisir de porter un regard critique sur la modélisation du problème, d'identifier les faiblesses et insuffisances de ce modèle, et naturellement de proposer des solutions pour pallier ces faiblesses. 

La date limite du rendu final est le Lundi 27 mai à 14h00  

La séance de TP du  mardi 28 mai sera consacrée à la défense des projets. 

4. Réalisation

4.1. Répertoire de travail

Créez un sous-répertoire projet dans le répertoire cpp.

Tous les fichiers concernant ce projet devront se trouver dans le répertoire cpp/projet

4.2. Organisation du travail

Comme la programmation complète de notre projet, si simplifié soit-il, n'est pas envisageable dans les temps qui vous sont impartis, vous n'aurez pas à réaliser l'intégralité du programme. Les parties relatives à la programmation graphique seront fournies. Nous vous fournirons également au fil des semaines, dans l'énoncé du projet, un certain nombre de fichiers utilitaires. Ces fichiers vous permettront notamment de tester chaque étape de votre projet.

Les séances de TP seront principalement dédiées au projet (le corrigé des exercices peut être utilisé comme source d'information complémentaire au cours). Votre travail durant les séances de TP sera à compléter par une contribution personnelle hors de ces séances. Il s'agira essentiellement d'un travail de réflexion, en commun avec votre binôme, sur les décisions à prendre en matière de conception de votre programme et du codage qui en résulte (quoi coder? comment coder? quelles structures de données utiliser? etc...) .

Nous vous demandons de soigneusement sauvegarder votre travail à chaque étape, même incomplet, afin de pouvoir montrer régulièrement votre état d'avancement. 

L'équipe du cours est bien sûr à votre disposition pour vous aider tout au long de ce projet: pendant les TPs, pendant les séances d'appui (rattrapage) et via le forum.

Coachs : Une assistante ou un assistant responsable ("coach") sera nommé pour chaque binôme. Votre coach sera là pour vous aider de façon plus dédiée que les autres assistant·es. Vous aurez notamment à lui montrer votre JOURNAL toutes les deux semaines environ et vos rendus intermédiaires. C'est avec votre coach que vous discuterez en priorité des éventuelles difficultés que vous rencontrerez. C'est par contre à un·e autre assistant·e que vous ferez la présentation finale de votre projet.

La réalisation informatique du projet comporte les grandes étapes suivantes: 

4.3. Plan de travail

Un énoncé détaillé du projet complet vous sera livré, ainsi que la librairie graphique, ce qui vous permettra de travailler à votre rythme. Le plan de travail proposé dans le tableau ci-dessous coïncide avec le déroulement du cours, et vous donne une indication des temps que vous devriez consacrer à chaque tâche.

Très important: Ne prenez pas trop de retard par rapport à ce plan pour ne pas être dépassé en fin de semestre.

Semaine(s)

Tâches conseillées

2

Début des inscriptions au projet

4

Lecture de la description du projet

5

Lecture de l'énoncé | premières classes utilitaires
Fin des inscriptions au projet

6-8

Vue externe :  élevage de hamsters

9-10

Vue interne (1) :  réseau sanguin

11-12

Vue interne (2) : Organe, tumeurs et traitements

13

Améliorations/ finalisation

Quelques petites astuces pour vous faciliter la vie durant le projet:

6. Références



Notes

... tumeur1
ceci se fera évidemment de façon très simplifiée sur un organe fictif
... élevage de hamsters2
aucun animal vivant ne sera maltraité dans le cadre de ce projet.. ah les joies de l'expérimentation "in silico" :-)
... néfaste3
juste une illustration ici : l'ordre selon lequel sont traitées les cellules de l'organe peut influer sur la zone qui sera touchée en premier par la tumeur ce qui peut aussi influer sur l'évolution de la pathologie.