private void LoadSetupFiles(CovidScenario scenario) { Wards = WardRecord.LoadFromCsv(scenario.GeographyFile); AgeDistributions = AgeDistributionCollection.LoadFromCsv(scenario.AgeDistributionsFile); HouseHoldSizeDistributions = HouseSizeDistributionCollection.LoadFromCsv(scenario.HouseHoldSizesFile); HomeContactMatrix = ContactMatrix.LoadFromCsv(scenario.HomeContactMatrixFile); OtherContactMatrix = ContactMatrix.LoadFromCsv(scenario.OtherContactMatrixFile); TravelMatrix = TravelMatrix.LoadFromCsv(scenario.TravelMatrixFile); }
public void GenerateGraph(CovidPopulation populationDynamics, IEnumerable <Ward> localAreas, TravelMatrix travelMatrix, ContactMatrix contactMatrix, IRandomProvider random) { var allAgents = populationDynamics.EnumeratePopulation(); foreach (var agent in allAgents) { var travelWardId = travelMatrix.RandomDestination(agent.WardId, random); var destinationWard = localAreas.First(p => p.WardId == travelWardId); var potentialContacts = populationDynamics.OtherAgentsInArea(destinationWard, agent.HouseHold.Members); if (potentialContacts.Count > 0) { var p = contactMatrix.ContactWeightedAgentList(potentialContacts, populationDynamics, agent); var numberOfContacts = contactMatrix.SampleNoOfContacts(agent, random); var selected = CovidPopulation.SampleWeightedAgents(potentialContacts, p, numberOfContacts, random); foreach (var contact in selected) { populationDynamics.AddConnection(agent.Id, contact, ContactSetting.Other); } } } }