This module provides functionality to create spatial risk maps for H5N1 outbreaks at the zip code level.
The RiskMap class calculates composite risk scores for zip codes based on multiple risk factors relevant to H5N1 transmission:
- Population Density: Higher population density increases contact rates
- Bird/Poultry Density: Primary reservoir for H5N1
- Water Proximity: Wild bird habitats (migration routes)
- Healthcare Capacity: Ability to respond to outbreaks
- Socioeconomic Vulnerability: Factors affecting outbreak response
Install required dependencies:
pip install -r requirements.txtfrom risk_map import RiskMap
import pandas as pd
# Load your zip code data
data = pd.read_csv('data/raw/zip_codes.csv')
# Initialize RiskMap
risk_map = RiskMap(zip_code_data=data)
# Calculate risk scores
risk_scores = risk_map.calculate_risk_scores()
# Get high-risk zip codes
high_risk = risk_map.get_high_risk_zips(top_n=10)
# Export results
risk_map.export_risk_data('output/risk_scores.csv', format='csv')# Customize risk factor weights
custom_weights = {
'population_density': 0.25,
'bird_density': 0.45, # Higher weight for avian flu
'water_proximity': 0.20,
'healthcare_capacity': 0.05,
'vulnerability_index': 0.05
}
risk_map = RiskMap(
zip_code_data=data,
risk_weights=custom_weights
)# Load from GeoJSON
risk_map = RiskMap()
gdf = risk_map.load_zip_code_data('data/raw/nyc_zip_codes.geojson')
# Calculate risk scores
risk_scores = risk_map.calculate_risk_scores()
# Create visualizations
risk_map.visualize_risk_map(output_path='output/risk_map.png')
risk_map.create_interactive_map(output_path='output/risk_map.html')Your zip code data should include the following columns:
zip_code: Zip code identifierpopulation: Population countarea_km2: Area in square kilometers (or geometry for automatic calculation)
bird_density: Density of birds/poultrywater_proximity: Proximity to water bodies (0-1 scale)healthcare_capacity: Healthcare capacity index (0-1 scale)vulnerability_index: Socioeconomic vulnerability index (0-1 scale)geometry: GeoSeries geometry (for spatial visualizations)
Risk scores are calculated as a weighted sum of normalized risk factors:
risk_score = Σ (normalized_factor_i × weight_i)
Each factor is normalized to a 0-1 scale using min-max normalization. Risk scores range from 0 (lowest risk) to 1 (highest risk).
Risk categories:
- Low: 0.0 - 0.25
- Medium: 0.25 - 0.5
- High: 0.5 - 0.75
- Very High: 0.75 - 1.0
Calculates composite risk scores for all zip codes.
Returns zip codes with risk scores above a threshold or top N zip codes.
Creates a static choropleth map visualization (requires geometry data).
Creates an interactive Folium map (requires geometry data).
Exports risk scores to CSV, GeoJSON, or Shapefile format.
- Prepare Data: Collect zip code data with population, area, and risk factors
- Load Data: Use
load_zip_code_data()or pass DataFrame toRiskMap() - Calculate Risk: Call
calculate_risk_scores() - Analyze: Use
get_high_risk_zips()to identify priority areas - Visualize: Create maps for reporting and communication
- Export: Save results for further analysis or integration
For NYC-specific implementation, you'll need:
-
Zip Code Boundaries:
- NYC Open Data: https://data.cityofnewyork.us/Business/Zip-Code-Boundaries/i8iw-xf4u
- Or US Census Bureau TIGER/Line files
-
Population Data:
- US Census Bureau ACS data
- NYC Department of City Planning
-
Bird/Poultry Data:
- USDA poultry facility locations
- Wild bird migration data
- Waterfowl habitat maps
-
Healthcare Capacity:
- Hospital locations and bed counts
- ICU capacity data
-
Socioeconomic Data:
- CDC Social Vulnerability Index
- NYC Department of Health data
- Temporal risk mapping (risk over time/stages of outbreak)
- Integration with epidemiological models
- Real-time data updates
- Scenario modeling with different parameter sets
- API endpoints for rapid deployment
- H5N1 epidemiological parameters from literature review
- Spatial risk assessment methodologies
- NYC public health data sources