Marche à suivre

  1. Dans un nouveau programme python, définir les variables susceptibles, malades, gueris, et morts qui représentent respectivement le nombres de personnes susceptibles d’attraper la maladie, le nombre de malades, le nombre de guéris et le nombre de morts de la maladie. On commence avec une population d’un million de personnes dont une seule est malade, aucune n’est guéries et aucune n’est morte de la maladie. Déterminer les valeurs initiales de ces quatre variables.

  2. Définir ensuite des variables pour les probabilités suivantes:

    1. la probabilité qu’un malade donné croise et contamine une personne susceptible donnée en l’espace d’un jour

      p_contamination = 0.00001 # probabilité de contamination
      
    2. la probabilité qu’un malade donné guérisse en l’espace d’un jour

      p_guerison = 0.1 # probabilité de guérison
      
    3. la probabilité qu’un malade donné meure en l’espace d’un jour

      p_deces = 0.0001 # probabilité de deces
      
  3. Définir les variables suivantes et trouver comment calculer leur valeur en fonction des variables définies précédemment

    1. Le nombre de nouvelles infections en un jour infections

    2. Le nombre de guérisons en un jour guerisons

    3. Le nombre de décès en un jour deces

    et compléter le code suivant avec

    infections = 
    guerisons = 
    deces = 
    

    Réfléchir à la cohérence de votre modèle, en particulier pour des valeurs particulières (par exemples 0) de malades et de susceptibles.

  4. En fonction des trois variables définies ci-dessus, calculer les nouvelles valeurs des variables susceptibles, malades, gueris et morts après le premier jour et compléter le code suivant en avec le résultat:

    susceptibles = 
    malades = 
    gueris = 
    morts = 
    

    Combien y a-t-il de malades après le premier jour selon ce modèle? Est-ce que cela vous semble cohérent? Sinon, quelle modification pouvez-vous apporter à votre modèle?

    Que peut-on dire du nombre total de personnes (susceptibles, malades, guéries ou décédées) dans votre modèle? Cela vous semble-t-il logique?

  5. Placer une boucle for jour in range(10): au bon endroit de votre code pour que chaque répétition de la boucle corresponde au passage d’un jour. Attention à bien adapter l’indentation du code.

    Combien y a-t-il de malades après 10 jours? Et après 20 jours?

  6. On souhaite tracer la courbe des nouvelles infections. Pour ceci définir (avant la boucle for) une liste vide appelée courbe_infection. Le premier élément de cette liste contiendra le nombre de nouvelles infections le premier jour, le deuxième le nombre de nouvelles infections les deuxième jours etc. Pour remplir cette liste, placer l’instruction

    courbe_infection.append(infections) 
    

    dans la boucle for.

    Afficher le nombre d’infection les dix premiers jours. Est-ce que cela vous semble cohérent? Sinon quelle modification pouvez-vous apporter à votre modèle?

  7. Afin de pouvoir utiliser matplotlib, un module python pour faire des graphique, ajouter l’instruction suivante en début de programme

    import matplotlib.pyplot as plt
    
  8. En utilisant les instructions suivantes en fin de programme, vous devriez pouvoir tracer un graphe des nouvelles infections sur les dix premiers jours.

    plt.plot(courbe_infection,'-')
    plt.xlabel('jours')
    plt.ylabel("nombre d'infections")
    plt.show()
    

    Vous pouvez fermer la fenêtre du graphique pour terminer le programme.

    Modifier le programme pour tracer un graphique du nombre d’infections les 50 premiers jours.

  9. Ajouter l’instruction plt.savefig('courbe_infection.png') en fin de programme pour sauvegarder votre graphique dans le fichier nommé dans la parenthèse ci-dessus.

  10. Modifier le programme pour tracer également la courbe des décès sur les 50 premiers jours.

  11. Modifier les paramètres du modèle et relancer la simulation. Est-ce que vous observez des choses bizarres? Si oui, essayer d’en déterminer la cause.

  12. On souhaite comparer le modèle à l’épidémie de Covid-19 dans le canton de Vaud. Le code suivant vous permet de lire le fichier ‘covid_vd.csv’ et d’obtenir une liste contenant le nombre de nouveaux cas chaque jour.

    import csv
    
    cas = []
    date = []
    
    with open ("covid_vd.csv") as covid_file:
        reader = csv.reader(covid_file)
        entete = next(reader)
        for row in reader:
            date.append(row[0])
            if row[1]== '':
                cas.append(0)
            else:
                cas.append(float(row[1]))
    

Essayer de trouver les paramètre de votre modèle qui correspondent le mieux à la première vague, puis à la seconde vague. Quelle vague reflète selon vous le mieux la réelle propagation du virus?