Démographie multi-nœuds

Générer des données démographiques pour plusieurs nœuds

Pour effectuer des simulations simultanées dans plusieurs nœuds, créez un fichier d’entrée “my_nodes.csv” avec une ligne pour chaque nœud.

Ex. “my_nodes.csv”

nodeid lat lon population
1 12.11 -1.47 1000
2 12.03 -1.44 1000
3 12.13 -1.59 1000
17 12.06 -1.48 1000
Note
  • Les ID des nœuds doivent être des nombres entiers positifs, mais il n’est pas nécessaire qu’ils soient séquentiels.
  • les valeurs lat/lon doivent représenter des lieux réels dont le climat est propice à la transmission du paludisme (si les fichiers météorologiques sont générés à partir des données démographiques)

Then, you can generate demographics for each node in every simulation, by adding this code to build_demog()

def build_demog():
    """
    Cette fonction construit un fichier d'entrée démographique pour le DTK en utilisant emod_api.
    """
    
    # Du noeud de modèle #
    ######################
    # Cet extrait vous permet de spécifier manuellement les détails du noeud au lieu d'utiliser un fichier .csv
# demog = Demographics.from_template_node(lat=1, lon=2, pop=1000, name="Example_Site")

    # A partir du fichier d'entrée csv #
    #######################
    demog = Demographics.from_csv(input_file = os.path.join(<path_to_file>,"my_nodes.csv"),
                                  id_ref='spatial_example', 
                                  init_prev = 0.01, 
                                  include_biting_heterogeneity = True)
    
    demog.SetEquilibriumVitalDynamics()
    age_distribution = Distributions.AgeDistribution_SSAfrica
    demog.SetAgeDistribution(age_distribution)

    return demog

Définir des paramètres spécifiques à un nœud

Parfois, nous voulons faire varier les propriétés entre les noeuds en se basant sur des connaissances préalables. Pour tous les paramètres NodeAttribute, ceux-ci peuvent être créés simplement en les spécifiant dans le fichier my_nodes.csv en tant que colonnes et en mettant load_other_columns_as_attributes=True dans l’appel à DemographicsGenerator().

Pour définir IndividualAttributes ou IndividualProperties, voir l’exemple suivant. Imaginons que nous connaissions la proportion d’individus “à haut risque” dans chaque nœud et que nous souhaitions utiliser cette désignation pour les cibler en vue d’une intervention.

Tout d’abord, nous ajouterions une colonne à notre fichier d’entrée représentant la proportion de personnes à haut risque dans chaque nœud.

Ex. ” my_nodes.csv”

nodeid lat lon population high_risk
1 12.11 -1.47 1000 0.05
2 12.03 -1.44 1000 0.10
3 12.13 -1.59 1000 0.15
17 12.06 -1.48 1000 0.50

Ensuite, lorsque nous pouvons attribuer la propriété “high_risk” aux individus de chaque nœud avec la probabilité indiquée dans le tableau, en ajoutant le code suivant à la fin de la définition de la fonction generate_demographics(), avant d’écrire le fichier .json.

:: : callout-caution ## Prochainement :: :

Ajouter la migration entre les noeuds

Les simulations multi-nœuds prévoient la possibilité que des humains ou des vecteurs se déplacent entre les nœuds. EMOD permet 6 types de migration pour les humains (locale, régionale, maritime, aérienne, familiale et campagne) et deux pour les vecteurs (locale et régionale). En dehors du type campagne, tous les autres types de migration sont définis via des fichiers d’entrée et des facteurs d’échelle dans config.json, et ces taux de migration resteront les mêmes tout au long de la simulation : nous les appellerons “migration continue” pour les distinguer de la “migration forcée” qui est définie via les campagnes.

Plusieurs modes de migration peuvent être utilisés simultanément pour chaque type d’agent (humain ou vecteur). Par exemple, nous pouvons mettre en place une simulation utilisant la migration locale, maritime et de campagne pour les humains et la migration locale et régionale pour les vecteurs.