Changing serialized demographics parameters

Not every parameter can be changed after the creation of serialized files. The following overview is intended as high-level guidance for what changes can and cannot be made.

Population-level parameters

Cannot be changed

  • Age_Initialization_Distribution_Type

  • Birth_Rate_Boxcar_Forcing

  • Birth_Rate_Dependence

  • Birth_Rate_Time_Dependence

  • Birth_Rate_Sinusoidal

  • Death_Rate_Dependence

  • Enable_Birth

  • Enable_Demographics_Birth

  • Enable_Demographics_Risk

  • Enable_Initial_Prevalence

  • Enable_Natural_Mortality

  • Enable_Vital_Dynamics

  • Population_Scale_Type

  • x_Base_Population

  • x_Birth

  • x_Other_Mortality

Can be changed

  • Enable_Disease_Mortality


Cannot be changed

  • InitialPopulation

  • InitialVectorsPerSpecies

  • LarvalHabitatMultiplier This is read but not used. Both the LarvalHabitatMultiplier and the x_Temporary_Larval_Habitat are applied when a habitat is created at the beginning of a simulation. When the habitat is serialized, it is stored with the results of these multipliers. If you are reading from a serialized file and Serialization_Mask_Node_Read = 0, then you ignore both LarvalHabitatMultiplier and x_Temporary_Larval_Habitat settings and just use what was stored in the serialized file. If Serialization_Mask_Node_Read = 16, then we create new habitats and ignore what is in the serialized file. We do use the x_Temporary_Larval_Habitat setting to adjust the habitat, but it is a known issue that we don’t also use LarvalHabitatMultiplier.

Can be changed

  • Altitude

  • BirthRate

  • Latitude

  • Longitude

  • NodePropertyValues

  • Airport

  • Region

  • Seaport


Cannot be changed

  • AgeDistributionFlag, AgeDistribution1, AgeDistribution2

  • SusceptibilityDistributionFlag, SusceptibilityDistribution1, SusceptibilityDistribution2

  • PrevalenceDistributionFlag, PrevalenceDistribution1, PrevalenceDistribution2

Can be changed (with dependencies)

  • FertilityDistribution: If Birth_Rate_Dependence was serialized with the value INDIVIDUAL_PREGNANCIES_BY_AGE_AND_YEAR, then you can change this distribution.

  • MigrationHeterogeneityDistributionFlag, MigrationHeterogeneityDistribution1, MigrationHeterogeneityDistribution2: These values can be can be changed if Enable_Migration_Heterogeneity is set to 1 in config.json and Enable_Demographics_Birth was serialized true/on. Existing individuals will get new migration modifiers. For newborns to get it Enable_Demographics_Birth needed to be serialized with a value of 1.

  • MortalityDistributionFlag, MortalityDistribution1, MortalityDistribution2: These can be changed if Enable_Natural_Mortality was serialized as true/on. Which distribution is used depends on the serialized value of Death_Rate_Dependence.

  • RiskDistributionFlag, RiskDistribution1, RiskDistribution2: These can be changed if Enable_Demographics_Risk & Enable_Demographics_Birth were serialized as true/on. However, it will only impact newborns. If you had serialized Enable_Demographics_Risk and not Enable_Demographics_Birth, these parameters will do nothing.


Cannot be changed

  • Remove value from existing key You cannot remove an existing value from a key if the population that has been serialized has this value.

Can be changed

  • Add new value to existing key

  • Change Initial_Distribution You can change the Initial_Distribution if you just want to change the likelihood that a newborn will have a specific IndividualProperties value. It will not impact the how the IndividualProperties values are distributed in the population that is serialized.

Special cases

  • Add/Remove IP/Key Some may be changed, but it is not recommended. It is best practices to not add or remove IndividualProperties values unless you also update the serialized file. However, if you remove a value and do not ever reference it in the simulation that is running from the serialized file, the simulation may run without errors. If you add values and don’t add them to the people in the serialized file, then you should not reference it until all the people that came from the serialized file have died.