Projet 2025-2026:«Cultures microbiennes»
Présentation générale


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

1. Introduction

Ce projet a pour but de vous faire une modeste incursion dans le domaine de la simulation de phénomènes biologiques par le biais de techniques informatiques.

Il s'agit de simuler de façon simplifiée la culture de bactéries dans des boites de Petri. Ces bactéries se déplaceront dans ces boites en quête de nutriments. Elles pourront se diviser et mourront dans certaines conditions. Elles seront également dotées de caractéristiques, comme leur vitesse de déplacement, qui pourront muter au cours du temps. La mutation de certaines caractéristiques pourra conditionner leur aptitude à survivre et à se développer. Le déplacement et la division ont un coût énergétique pour les bactéries. Ces dernières meurent lorsqu'elles atteignent un niveau d'énergie nul.

Les aspects comportementaux simulés sont inspirés de références bibliographiques citées en fin de page .

Le modèle de base considérera une seule variété de bactéries, les bactéries à flagelle unique, sans interactions directes entre elles et dont le seul lien avec l'environnement sera la consommation de nutriments; ce qui permettra d'augmenter leur niveau d'énergie. Ces bactéries auront une perception de gradients de nutriments facilitant leur accès à ces ressources.

Puis différentes extensions seront apportées comme :

L'outil que vous allez construire partira d'un modèle simplifié où le système à simuler est vu comme un ensemble de bactéries (de différents types) se mouvant dans un environnement particulier et interagissent avec des composants externes tels que (nutriments, éventuellement obstacles etc..). Vous utiliserez des techniques de simulation informatique (évolution pas à pas du système) pour obtenir un rendu visuel plausible du processus global. 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

Il s'agit donc de réaliser un programme permettant de visualiser, par des techniques de simulation, l'évolution de population de bactéries de différents types dans différentes boites de culture. Cette évolution sera tributaire de divers paramètres comme la quantité et le placement des nutriments ou certaines caractéristiques des bactéries.

L'outil de simulation devra permettre de "jouer" interactivement sur les différents paramètres pour essayer de dégager les conditions optimales de survie et de développement.

Les bactéries se déplaceront dans un environnement (fluide) et seront en interaction avec des éléments de l'environnement (nutriments, éventuellement obstacles).

Les sources de nutriments seront considérées comme fixes dans la version de base du projet, mais pourront être amenées à devenir mobiles. Elles pourront croître en fonction de la température de la boite de culture.

Bactéries en compétition

Pour permettre de mettre plusieurs espèces de bactéries en compétition pour la survie dans une boite de culture, nous introduirons des bactéries dotées de facultés de mobilité particulières. Par exemple, des bactéries à grappin [3] qui différeront des bactéries à flagelle unique dans leur façon  :

Des bactéries dotées de comportements de groupes [4] seront également introduites.

Simulation

Les deux points les plus fondamentaux pour la simulation d'un tel système sont : le calcul du déplacement des bactéries et la gestion de leurs interactions avec leur environnement.

Pour ce qui est du déplacement, nous adopterons un modèle classique selon lequel le déplacement (d'une bactérie) est régi par une équation différentielle du type:

item

v est la vitesse de déplacement et f représente est une force s'exerçant sur la bactérie lorsqu'elle occupe la position x(t) et qu'elle a la vitesse v(t): par exemple l'attraction exercée par des substances émises par d'autres bactéries.

L'une des approches classiques (voir complément mathématique [6]) consiste alors à intégrer numériquement l'équation différentielle du mouvement. Ceci permet de calculer l'évolution de la position et de la vitesse de chaque bactérie après l'écoulement d'un intervalle de temps dt. Une fois qu'une nouvelle position est calculée il faut alors simuler les interactions que ce changement de position induit sur elle et sur l'environnement (par exemple lorsqu'une bactérie devient suffisamment proche d'une source de nutriments elle pourra en consommer).

Dans le cas des bactéries à flagelle unique on considérera la force régissant le mouvement comme nulle : elles se déplaceront donc à vitesse constante (mouvement rectiligne uniforme).

L'évolution du système au cours du temps sera donc simulée en calculant l'évolution des différentes entités (bactéries, sources de nutriments etc.) pas de temps après pas de temps. Chaque pas de temps dt correspond à un cycle de simulation.

Pour résumer, une modélisation naturelle du monde à simuler consiste à le voir comme:

Pistes d'extension

Et voici pour finir quelques pistes d'extension possibles :

Un cycle de simulation consistera alors à :

  1. simuler l'évolution des nutriments (croissance en fonction de la température) après écoulement d'un pas de temps dt;
  2. simuler le déplacement de chaque bactérie par la technique décrite ci-dessus sur le même pas de temps;
  3. une fois leurs nouvelles positions calculées, voir comment elles interagissent avec les composants (et éventuellement les bactéries) de leur voisinage;

L'affichage de courbes d'évolution des populations au cours du temps ainsi que des menus de paramétrage compléteront votre outil.

3. Rendu

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

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, noms de variables, accolades, variables membres de classe, etc.) sera également prise 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 25 mai à 14h  

La séance de TP du  mardi 26 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 ~/Desktop/myfiles/Programmation/cpp.

Tous les fichiers concernant ce projet devront se trouver dans le répertoire ~/Desktop/myfiles/Programmation/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 : Un.e assistant.e responsable («coach») sera nommé.e pour chaque binôme. Son rôle sera de vous aider de façon plus dédiée. Vous aurez notamment à lui montrer votre JOURNAL toutes les deux semaines environ. 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

3

Début des inscriptions au projet
Lecture de la description du projet

4

Lecture de l'énoncé | première classe utilitaire
Fin des inscriptions au projet

5

Boites de culture et nutriments

6-7

Bactéries à flagelle unique (déplacement)
Nutriments différenciés

8-10

Bactéries à flagelle unique (division et mutation)
Bactéries à grappin
Bactéries avec déplacement groupé

11-12

Intéractions diffférenciées avec les nutriments
Paramétrages et statistiques

13

Extensions libres/ finalisation

5. Conseils

Voici quelques petites astuces pour vous faciliter la vie durant le projet:

6. Références