Menu Chiudi

Un’app per lo studio delle epidemie

SIR_ECovid

Frutto degli incontri con la dottoressa Caterina Rizzo (Ospedale pediatrico Bambin Gesù) e con il professor Eugenio Montefusco (Università La Sapienza di Roma) e del MeetUp Matematica per le epidemie, ragazze e ragazzi delle classi 5°E e 5°C hanno progettato e realizzato un’applicazione per lo studio della diffusione delle epidemie: SIR_ECovid.

L’applicazione è basata su un modello agent based, computazionale, quindi simula le interazioni tra gli individui di una popolazione controllando lo sviluppo del contagio che si propaga attraverso questi incontri.

Una simulazione ottenuta con SIR_ECovid. Ogni punto sulla mappa rappresenta un individuo, il colore indica lo stato di salute: -2 deceduto, -1 guarito, 0 suscettibile. Colori dal giallo al rosso scuro indicano un infettivi (un individuo che ha contratto la malattia) e da quanto tempo (giallo, appena contagiato).

Nella mappa la distanza tra individui (punti) rappresenta la distanza sociale più che quella geografica. Può essere più vicino socialmente una parente stretto che non abita con noi piuttosto che un vicino di casa che non incontriamo mai: nella mappa il parente stretto sarebbe un punto adiacente o quasi, il vicino un punto piuttosto distante.

L’applicazione

L’applicazione è stata realizzata con Blockly, il generatore di codice open source di Google, e una volta testata è stata fatta girare in Python (al codice generato da Blockly sono state aggiunte poche funzioni per la generazione delle mappe).

La struttura del programma, molto sintetica, è sostanzialmente quella di far incontrare ogni individuo della popolazione con un certo numero di altri, scelti a caso ma tenendo conto della distanza (la probabilità di incontrare un individuo vicino è più alta), controllare lo stato di salute dei due ed eventualmente propagare il contagio, con una probabilità che dipende dalla virulenza della malattia.

La struttura semplificata dell’applicazione così come formalizzata in fase di progettazione.

I parametri

Il modello è molto adattabile e può essere applicato a tutta una serie di situazioni diverse grazie alla dipendenza da alcuni parametri che ne modificano il comportamento:

  • lambda ?: il tasso di contagio per ogni infettivo nell’unità di tempo (in pratica , la probabilità che un individuo che ha contratto la malattia ne contagi un altro che è ancora sano)
  • gamma ?: tasso di guarigione (la probabilità che un malato guarisca, l’inverso 1/? indica quindi la durata media della malattia)
  • tau ?: tasso di mortalità per ogni infettivo nell’unità di tempo (la probabilità che un malato muoia)
  • sigma ?: governa la distanza a cui si trova l’individuo incontrato
  • interazioni: il numero di individui incontrati da uno specifico individuo nell’unità di tempo
  • durata : numero di unità di tempo della simulazione
  • distanziamento: misura l’efficacia (o l’assenza) di misure di distanziamento sociale, prese per limitare la diffusione della malattia.

Come esempio di dipendenza dai parametri, le due simulazioni che seguono, sono state realizzate con gli stessi valori dei parametri ma con differente impostazione per il distanziamento.

Simulazione con valore di distanziamento pari a 1.0. La malattia si propaga molto rapidamente (anche grazie al tasso di contagio molto alto).
La stessa malattia della figura precedente (con gli stessi valori dei parametri) ma con distanziamento fissato a 2.0. La diffusione è rallentata dalle misure di distanziamento sociale.
L’andamento delle due simulazioni precedenti nel tempo (sulle ascisse la durata della malattia in giorni). In rosso più scuro il numero di infettivi (individui che hanno contratto la malattia) nella prima simulazione, quella con distanziamento pari a 1.0, in colore arancione gli infettivi della seconda simulazione (con distanziamento sociale); si vede chiaramente che il contagio è sia più lento che meno violento.

Sviluppi

L’anno scolastico è praticamente finito e non c’è tempo per proseguire il lavoro, ma sicuramente sarà oggetto di laboratorio nel prossimo. Abbiamo pensato, e ci hanno suggerito, una miriade di possibili espansioni e miglioramenti per l’applicazione, ma sicuramente il primo task sarà quello di ricavare il valore dei parametri da una situazione reale, avendo i dati a disposizione, e passarli a SIR_ECovid per poi confrontare i risultati oggettivi con quelli forniti dall’applicazione: questo sarà davvero un bel test!

Articoli correlati