• Aucun résultat trouvé

Exemple pour motiver notre approche

3.2 Retour d’expérience

4.1.1 Exemple pour motiver notre approche

4.1.3 Les problèmes que nous voulons résoudre . . . . 66

4.2 Le méta-modèle mathématique de la dynamique des populations en compartiments . . . . 67 4.3 La séparation des préoccupations en épidémiologie . . . . 73 4.4 Combiner des préoccupations . . . . 74

4.4.1 Combiner deux préoccupations additives . . . . 74 4.4.2 Appliquer une préoccupation à un modèle . . . . 76 4.4.3 Combiner deux préoccupations ad hoc . . . . 78

4.5 Gérer les dépendances entre les préoccupations . . . . 80

4.5.1 Gérer les dépendances structurelles . . . . 80 4.5.2 Gérer des dépendances non-structurelles : le taux de transition fonctionnel 81 4.5.3 Intérêts du taux fonctionnel . . . . 84

4.6 Exemples . . . . 85

4.6.1 Exemple 1 - Le modèle SIR spatial . . . . 85 4.6.2 Exemple 2 - Le modèle SIS avec vaccination . . . . 87

4.7 Préoccupations de l’épidémiologie . . . . 88

4.7.1 Les préoccupations de base de l’épidémiologie . . . . 89 4.7.2 Les préoccupations spatiales de l’épidémiologie . . . . 90

4.8 Conclusion . . . . 92

Ce chapitre est le cœur de la thèse et présente les bases formelles de la solution propo-sée. Nous commençons par analyser les difficultés de la modélisation en épidémiologie causées par le mélange des préoccupations. Un exemple sera utilisé comme support pour motiver notre proposition sur la séparation des préoccupations. Nous nous concentrons ensuite sur la présentation de notre solution qui vise à faciliter l’écriture et l’évolution des modèles en séparant des préoccupations.

Dans un premier temps, nous présentons le méta-modèle mathématique qui exprime la dynamique d’une population à base de compartiments. Les questions de modélisation

57

et les hypothèses de recherche seront également abordées. Ce méta-modèle sera utilisé pour représenter des modèles et des préoccupations de l’épidémiologie.

Dans un deuxième temps, nous donnons une définition formelle des préoccupations et décrivons certains types de dépendances entre elles. Nous proposons ensuite un moyen de les composer pour la composition des préoccupations et montrons comment elles interagissent dans un modèle. Quelques exemples à la fin du chapitre illustrerons notre approche.

Publication :

Thi Mai Anh Bui, Mikal Ziane, Serge Stinckwich, Tuong Vinh Ho, Benjamin Roche, and Nick Papoulias. 2016. Separation of concerns in epidemiological modelling. In Compa-nion Proceedings of the 15th International Conference on Modularity (MODULARITY Companion 2016). ACM, New York, NY, USA, 196-200.

4.1. Problèmes de la modélisation en épidémiologie 58

4.1 Problèmes de la modélisation en épidémiologie

4.1.1 Exemple pour motiver notre approche

La plupart des modèles épidémiologiaue reposent sur une structure SIR ou des va-riantes de celle-ci (voir section 2.2). À partir de cette structure de base, de nombreuses modifications biologiques peuvent être ajoutées pour étudier des structures plus com-plexe concernant les individus hôtes et leurs effets sur la propagation des maladies infectieuses (voir section ??).

Après avoir étudié l’implémentation des modèles publiés que nous avons trouvés dans la littérature, le plus souvent écrit en MATLAB, nous avons constaté que les préoccu-pations se mélangent les unes avec les autres dans ces modèles et sont dispersées dans l’ensemble du programme.

Pour illustrer ce fait, nous allons prendre un exemple qui porte sur la grippe aviaire [13]. Dans cet exemple, on représente le cycle de transmission par le modèle SEIR avec démographie dans lequel l’immunité n’est pas permanente (c.a.d après un certain temps, les individus immunisés redeviennent susceptibles). La population se décompose en quatre classes : tout d’abord, des nouveaux-nés entrent dans la classe Susceptible (statut S) au taux µ, puis deviennent Exposé (statut S), c.a.d infectés mais pas encore infectieux, au taux λ = βI/N . Les Exposés deviennent Infectieux (I) après une période de latence donné par 1/σ et ensuite, entrent dans la classe Rétabli (R) après 1/γ unités de temps. Finalement, après 1/ν unités de temps, les Rétabli redeviennent Susceptible (la perte de l’immunité). Les individus dans toutes les classes sont supposés mourir au taux µ. Le modèle SEIRS s’exprime de façon mathématique par le système d’EDO :

dS dt = µN + νR − λS − µS dE dt = λS − σE − µE dI

dt = σE − γI − µI

dR

dt = γI − µR − νR

(4.1)

Supposons que l’on veuille étudier la transmission de la maladie des oiseaux aux hu-mains, entre n patchs (i.e. zones géographiques telles que pays, cités etc.). On va consi-dérer donc deux préoccupations : multi-espèces et spatiale. Les quatre compartiments S, E, I, R vont être divisé chacun en deux pour chaque espèce et en n zones1 résultant en 4 × 2 × n compartiments Sps, Eps, Ips, Rps avec s ∈ {humains, oiseaux} et p ∈ [1..n]. La migration des individus a lieu entre les patchs voisins. L’équation de mobilité pour chaque zone p est :

dNp dt = n X q=1 ρpqNqn X q=1 ρqpNp (4.2)

où Np est la taille de la population dans la zone p et ρpq désigne le taux d’immigration des individus de la zone q à la zone p. Le premier terme dans la partie droite de l’équation 4.2 représente l’immigration dans la zone p, tandis que le deuxième décrit l’émigration à partir de p.

4.1. Problèmes de la modélisation en épidémiologie 59

En raison des hétérogénéités qui sont issues des deux préoccupations multi-espèces et spatiale, différents taux de transition sont souvent considérés pour chaque espèce dans chaque zone. Cela peut être modélisé en remplaçant les paramètres µ, σ, γ, ν, λ dans l’équation 4.1 par les matrices : µsp, σsp, γps, νps, λps. En outre, dans une population hétérogène, la transmission de l’infection entre les différents sous-groupes doit être prise en compte, contrairement à une population considérée comme homogène où tous les individus ont un risque identique de contracter l’infection ce qui se traduit par (λ = βI/N ). Dans cet exemple, le taux auquel un individu susceptible de l’espèce s dans le patch p devient infecté est modélisée par λps = humains,oiseauxP

i

βispIpi/Npi avec s ∈ {humains, oiseaux}.

Cette formule a été construite en supposant que, l’infection peut être transmise lors-qu’un individu susceptible de l’espèce s contacte les infectieux de deux espèces dans le même patch. L’infection entre les patchs est modélisée par la mobilité des individus d’un patch à un autre. D’autres formules peuvent être considérées en modifiant la façon de faire le contact entre susceptibles et infectieux pour transmettre l’infection [69]. Le seul paramètre β est donc remplacé par une matrice de trois dimensions. Les équations 4.1 sont remplacées par le système d’EDO 4.3 pour décrire le modèle multi-espèces spatial de la grippe aviaire. L’équation 4.2 est prise en compte pour chaque comparti-ment Sps, Eps, Ips, Rps, la matrice à deux dimensions ρpq est remplacée par une à trois dimensions pour décrire la différence entre les groupes d’espèces dans chaque patch.

dSps dt = µpsNps+ νpsRps− λpsSps− µpsSps +Pn q=1ρpqsSqsPn q=1ρqpsSps dEps dt = λpsSps− σpsEps− µpsEps +Pn q=1ρpqsEqsPn q=1ρqpsEps dIps dt = σpsEps− γpsIps− µpsIps +Pn q=1ρpqsIqsPn q=1ρqpsIps dRps dt = γpsIps− µpsRps− νpsRps +Pn q=1ρpqsRqsPn q=1ρqpsRps λps = humans,birdsP i βispIpi/Npi (4.3)

Le système d’équations 4.3 montre que les préoccupations SEIRS, multi-espèces, spa-tiales se mélangent les unes avec les autres même dans la définition des paramètres et des variables. Ceci est sans doute acceptable2 dans un modèle mathématique de petite taille mais dans une implémentation dans un langage de programmation c’est nette-ment plus gênant comme nous allons le voir, ne serait que parce ces préoccupations sont de plus mêlées à de nombreux détails de bas niveau.

Pour illustrer et valider notre démarche nous utiliserons un exemple écrit en MAT-LAB qui est l’un des langages les plus utilisés en modélisation épidémiologique (cf. http ://www.modelinginfectiousdiseases.org ).

2. Même pour un modélisateur mathématicien, il faudra un peu temps pour qu’il comprenne un modèle aussi complexe !

4.1. Problèmes de la modélisation en épidémiologie 60

19 I=zeros(5,2);I(1,2)=10;

20 E=zeros(5,2);R=E; %...

23 S = reshape(S,[1 ns*np]); E = reshape(E,[1 ns*np]);

24 I = reshape(I,[1 ns*np]);R = reshape(R,[1 ns*np]);

25 [T,Y]=ode45(@rightSideAIModel,[0 tMax],[S E I R],options); %...

35 function res=rightSideAIModel(t, pop)

40 I=reshape(pop(2*np*ns+1:3*np*ns),[np ns]); %... 43 lambda=zeros(np,ns); 44 for p=1:np 45 for s=1:ns 46 lambda(p,s)=sum(beta(s,:,p).*I(p,:)./N(p,:)); 47 end 48 end %...

51 deltaI = zeros(np,ns); deltaR = zeros(np,ns);%...

52 for s=1:ns

55 deltaI(:,s)=rho(:,:,s)*I(:,s)−sum(rho(:,:,s))'.*I(:,s); %...

57 end

58 dSdt = mu.*N + nu.*R − lambda.*S − mu.*S + deltaS;

59 dEdt = lambda.*S − sigma.*E − mu.*E + deltaE;

60 dIdt = sigma.*E − gamma.*I − mu.*I + deltaI;

61 dRdt = gamma.*I − mu.*R − nu.*R + deltaR;%...

Figure 4.1 – Partie du modèle de grippe aviaire en Matlab

La figure 4.1 montre une partie du modèle écrit en MATLAB3. Bien que MATLAB permette de spécifier les EDO en utilisant une syntaxe compacte (voir les lignes de 58 à 61), on peut constater deux problèmes : (1) La dispersion du code traitant une préoc-cupation dans différent emplacement du programme (2) L’enchevêtrement du code des différentes préoccupations : les préoccupations spatiales et multi-espèces sont croisées avec la préoccupation SEIRS dans certains fragments de code. C’est le cas notamment pour les déclarations de paramètres et de variables (voir les lignes 19, 20, les variables S, E, I, R sont des matrices de deux dimensions, une dimension représente l’espèce et l’autre la zone géographique). En outre, dans la fonction rightSideAIModel qui calcule les parties à droite des EDOs, ces préoccupations sont également entremêlées lors du calcul du paramètre λ (la préoccupation SEIRS) (lignes 44-48) et les expressions de la mobilité (la préoccupation spatiale) (lignes 52-57). Le traitement de la préoccupation SEIRS, par ailleurs, est dispersée dans l’ensemble du programme.

La dispersion et l’entrecroisement des préoccupations rend plus difficile leur réutilisa-tion mais de façon encore plus manifeste, sans doute, modifier certains détails concer-nant une préoccupation, induit des modifications à plusieurs endroits où cette préoc-cupation est mêlée avec d’autres.

Impact d’un changement

Supposons, par exemple, que l’on veuille distinguer différentes souches de pathogène de la grippe aviaire parce que certaines sont plus virulentes ou résistent mieux à tel ou tel traitement. Nous allons donc introduire une préoccupation multi-souches dans le modèle ci-dessus. Cette préoccupation va diviser la classe I en plusieurs petites classes pour représenter l’infection causée par différentes souches de pathogène.

Distinguons donc deux souches du pathogène : I1 et I2. On doit alors remplacer I par

4.1. Problèmes de la modélisation en épidémiologie 61

19 I1=zeros(5,2) ;I2=zeros(5,2) ;I1(1,2)=10 ;I2(1,2)=10

20 E=zeros(5,2);R=E; %...

23 S = reshape(S,[1 ns*np]); E = reshape(E,[1 ns*np]);

24 I1 = reshape(I1,[1 ns*np]) ; I2 = reshape(I2,[1 ns*np]) ; R = reshape(R,[1 ns*np]);

25 [T,Y]=ode45(@rightSideAIModel,[0 tMax], [S E I1 I2 R] ,options); %...

35 function res=rightSideAIModel(t, pop)

40 I1=reshape(pop(2*np*ns+1 :3*np*ns),[np ns]) ; I2=reshape(pop(3*np*ns+1 :4*np*ns),[np ns]) ; %...

43 lambda=zeros(np,ns);

44 for p=1:np

45 for s=1:ns

46 lambda(p,s)=sum( ((beta1(s, :,p).*I1(p, :)) +(beta2(s, :,p).*I2(p, :))) ./N(p,:)); 47 end 48 end %... 51 deltaI1 = zeros(np,ns) ; deltaI2 = zeros(np,ns) ; deltaR = zeros(np,ns); %... 52 for s=1:ns

55 deltaI1( :,s)=rho( :, :,s)*I1( :,s) - sum(rho( :, :,s))’.*I1( :,s) ; deltaI2( :,s)=rho( :, :,s)*I2( :,s) - sum(rho( :, :,s))’.*I2( :,s) ;

57 end

58 dSdt = mu.*N + nu.*R − lambda.*S − mu.*S + deltaS;

59 dEdt = lambda.*S − sigma1.*E - sigma2.*E − mu.*E + deltaE;

60 dI1dt = sigma1.*E - mu.*I1 - gamma1.*I1 + deltaI1 ; dI2dt = sigma2.*E - gamma2.*I2 - mu.*I2 + deltaI2 ;

61 dRdt = gamma1.*I1 + gamma2.*I2 − mu.*R − nu.*R + deltaR;%...

Figure 4.2 – Les changements affectant le code du modèle lors de la modification du cycle de transmission.

4.1. Problèmes de la modélisation en épidémiologie 62

I1 et I2 dans le code du modèle. Les lignes 19, 24, 25, 40, 46, 51, 55, 59, 60et61 dans la figure 4.1 sont modifiées comme indiqué (en jaune) sur la figure 4.2.

Dans cet exemple, nous avons considéré le modèle déterministe de la grippe aviaire. Le problème serait similaire pour un modèle stochastique.

Pour réduire l’impact des changements et faciliter la réutilisation, nous voulons donc séparer les préoccupations autant que possible. Pour ce faire on peut tout d’abord, lorsque le code est monolithique comme dans notre exemple, tenter d’effectuer une découpe fonctionnelle. On essaye donc de le diviser en modules, représentant chacun une fonctionnalité particulière. Toutefois une préoccupation est justement, par hypothèse, un aspect de la fonctionnalité qu’il n’est pas facile de découper en modules (fonctions ou classes).

Dans le modèle MATLAB de notre exemple, après consultation d’experts, une seule fonction a pu être définie : function rightSideAIModel. Cependant, on n’a pas pu localiser chaque préoccupation du modèle dans une fonction. Il aurait été possible de séparer la visualisation mais selon les experts consultés ce n’est pas habituel. De même, bien que MATLAB permette de programmer avec des objets, ce n’est pas utilisées par les modélisateurs.