Add NATA cancer risk and respiratory hazard to definition L (#1001)

This commit is contained in:
Lucas Merrill Brown 2021-12-07 12:45:45 -05:00 committed by GitHub
parent 5a6d6d8557
commit 5706837956
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 41 additions and 7 deletions

View file

@ -322,7 +322,7 @@ class ScoreETL(ExtractTransformLoad):
field_names.FEMA_RISK_FIELD, field_names.FEMA_RISK_FIELD,
field_names.URBAN_HEURISTIC_FIELD, field_names.URBAN_HEURISTIC_FIELD,
field_names.AIR_TOXICS_CANCER_RISK_FIELD, field_names.AIR_TOXICS_CANCER_RISK_FIELD,
field_names.RESPITORY_HAZARD_FIELD, field_names.RESPIRATORY_HAZARD_FIELD,
field_names.DIESEL_FIELD, field_names.DIESEL_FIELD,
field_names.PM25_FIELD, field_names.PM25_FIELD,
field_names.OZONE_FIELD, field_names.OZONE_FIELD,

View file

@ -8,6 +8,12 @@ logger = get_module_logger(__name__)
class EJSCREENETL(ExtractTransformLoad): class EJSCREENETL(ExtractTransformLoad):
"""Load EJSCREEN data.
Data dictionary:
https://gaftp.epa.gov/EJSCREEN/2019/2019_EJSCREEN_columns_explained.csv
"""
def __init__(self): def __init__(self):
self.EJSCREEN_FTP_URL = "https://edap-arcgiscloud-data-commons.s3.amazonaws.com/EJSCREEN2020/EJSCREEN_Tract_2020_USPR.csv.zip" self.EJSCREEN_FTP_URL = "https://edap-arcgiscloud-data-commons.s3.amazonaws.com/EJSCREEN2020/EJSCREEN_Tract_2020_USPR.csv.zip"
self.EJSCREEN_CSV = self.TMP_PATH / "EJSCREEN_Tract_2020_USPR.csv" self.EJSCREEN_CSV = self.TMP_PATH / "EJSCREEN_Tract_2020_USPR.csv"
@ -19,7 +25,7 @@ class EJSCREENETL(ExtractTransformLoad):
field_names.TOTAL_POP_FIELD, field_names.TOTAL_POP_FIELD,
# pylint: disable=duplicate-code # pylint: disable=duplicate-code
field_names.AIR_TOXICS_CANCER_RISK_FIELD, field_names.AIR_TOXICS_CANCER_RISK_FIELD,
field_names.RESPITORY_HAZARD_FIELD, field_names.RESPIRATORY_HAZARD_FIELD,
field_names.DIESEL_FIELD, field_names.DIESEL_FIELD,
field_names.PM25_FIELD, field_names.PM25_FIELD,
field_names.OZONE_FIELD, field_names.OZONE_FIELD,
@ -61,7 +67,7 @@ class EJSCREENETL(ExtractTransformLoad):
# but I think that's the direction we'd like to move all ETL classes. - LMB # but I think that's the direction we'd like to move all ETL classes. - LMB
"ACSTOTPOP": field_names.TOTAL_POP_FIELD, "ACSTOTPOP": field_names.TOTAL_POP_FIELD,
"CANCER": field_names.AIR_TOXICS_CANCER_RISK_FIELD, "CANCER": field_names.AIR_TOXICS_CANCER_RISK_FIELD,
"RESP": field_names.RESPITORY_HAZARD_FIELD, "RESP": field_names.RESPIRATORY_HAZARD_FIELD,
"DSLPM": field_names.DIESEL_FIELD, "DSLPM": field_names.DIESEL_FIELD,
"PM25": field_names.PM25_FIELD, "PM25": field_names.PM25_FIELD,
"OZONE": field_names.OZONE_FIELD, "OZONE": field_names.OZONE_FIELD,

View file

@ -479,7 +479,7 @@
"comparison_fields = [\n", "comparison_fields = [\n",
" field_names.POVERTY_LESS_THAN_100_FPL_FIELD,\n", " field_names.POVERTY_LESS_THAN_100_FPL_FIELD,\n",
" field_names.POVERTY_LESS_THAN_200_FPL_FIELD,\n", " field_names.POVERTY_LESS_THAN_200_FPL_FIELD,\n",
" field_names.MEDIAN_INCOME_PERCENT_AMI_FIELD,\n", " field_names.MEDIAN_INCOME_AS_PERCENT_OF_AMI_FIELD,\n",
" field_names.LINGUISTIC_ISO_FIELD,\n", " field_names.LINGUISTIC_ISO_FIELD,\n",
" field_names.UNEMPLOYMENT_FIELD,\n", " field_names.UNEMPLOYMENT_FIELD,\n",
" field_names.HIGH_SCHOOL_ED_FIELD,\n", " field_names.HIGH_SCHOOL_ED_FIELD,\n",

View file

@ -89,6 +89,7 @@ RMP_FIELD = "Proximity to Risk Management Plan (RMP) facilities"
TSDF_FIELD = "Proximity to TSDF sites" TSDF_FIELD = "Proximity to TSDF sites"
NPL_FIELD = "Proximity to NPL sites" NPL_FIELD = "Proximity to NPL sites"
AIR_TOXICS_CANCER_RISK_FIELD = "Air toxics cancer risk" AIR_TOXICS_CANCER_RISK_FIELD = "Air toxics cancer risk"
RESPIRATORY_HAZARD_FIELD = "Respiratory hazard index"
# Housing # Housing
HOUSING_BURDEN_FIELD = "Housing burden (percent)" HOUSING_BURDEN_FIELD = "Housing burden (percent)"
@ -104,7 +105,6 @@ DIABETES_FIELD = "Diagnosed diabetes among adults aged >=18 years"
ASTHMA_FIELD = "Current asthma among adults aged >=18 years" ASTHMA_FIELD = "Current asthma among adults aged >=18 years"
HEART_DISEASE_FIELD = "Coronary heart disease among adults aged >=18 years" HEART_DISEASE_FIELD = "Coronary heart disease among adults aged >=18 years"
LIFE_EXPECTANCY_FIELD = "Life expectancy (years)" LIFE_EXPECTANCY_FIELD = "Life expectancy (years)"
RESPITORY_HAZARD_FIELD = "Respiratory hazard index"
CANCER_FIELD = "Cancer (excluding skin cancer) among adults aged >=18 years" CANCER_FIELD = "Cancer (excluding skin cancer) among adults aged >=18 years"
HEALTH_INSURANCE_FIELD = ( HEALTH_INSURANCE_FIELD = (
"Current lack of health insurance among adults aged 18-64 years" "Current lack of health insurance among adults aged 18-64 years"
@ -260,6 +260,8 @@ IMPENETRABLE_SURFACES_LOW_INCOME_FIELD = (
RMP_LOW_INCOME_FIELD = f"At or above the {PERCENTILE}th percentile for proximity to RMP sites and is low income" RMP_LOW_INCOME_FIELD = f"At or above the {PERCENTILE}th percentile for proximity to RMP sites and is low income"
SUPERFUND_LOW_INCOME_FIELD = f"At or above the {PERCENTILE}th percentile for proximity to superfund sites and is low income" SUPERFUND_LOW_INCOME_FIELD = f"At or above the {PERCENTILE}th percentile for proximity to superfund sites and is low income"
HAZARDOUS_WASTE_LOW_INCOME_FIELD = f"At or above the {PERCENTILE}th percentile for proximity to hazardous waste facilities and is low income" HAZARDOUS_WASTE_LOW_INCOME_FIELD = f"At or above the {PERCENTILE}th percentile for proximity to hazardous waste facilities and is low income"
AIR_TOXICS_CANCER_RISK_LOW_INCOME_FIELD = f"At or above the {PERCENTILE}th percentile for air toxics cancer risk and is low income"
RESPIRATORY_HAZARD_LOW_INCOME_FIELD = f"At or above the {PERCENTILE}th percentile for respiratory hazard index and is low income"
# Critical Clean Water and Waste Infrastructure # Critical Clean Water and Waste Infrastructure
WASTEWATER_DISCHARGE_LOW_INCOME_FIELD = f"At or above the {PERCENTILE}th percentile for wastewater discharge and is low income" WASTEWATER_DISCHARGE_LOW_INCOME_FIELD = f"At or above the {PERCENTILE}th percentile for wastewater discharge and is low income"

View file

@ -54,7 +54,7 @@ class ScoreC(Score):
[ [
field_names.AIR_TOXICS_CANCER_RISK_FIELD field_names.AIR_TOXICS_CANCER_RISK_FIELD
+ field_names.PERCENTILE_FIELD_SUFFIX, + field_names.PERCENTILE_FIELD_SUFFIX,
field_names.RESPITORY_HAZARD_FIELD field_names.RESPIRATORY_HAZARD_FIELD
+ field_names.PERCENTILE_FIELD_SUFFIX, + field_names.PERCENTILE_FIELD_SUFFIX,
field_names.DIESEL_FIELD + field_names.PERCENTILE_FIELD_SUFFIX, field_names.DIESEL_FIELD + field_names.PERCENTILE_FIELD_SUFFIX,
field_names.PM25_FIELD + field_names.PERCENTILE_FIELD_SUFFIX, field_names.PM25_FIELD + field_names.PERCENTILE_FIELD_SUFFIX,

View file

@ -36,7 +36,7 @@ class ScoreF(Score):
) )
| ( | (
self.df[ self.df[
field_names.RESPITORY_HAZARD_FIELD field_names.RESPIRATORY_HAZARD_FIELD
+ field_names.PERCENTILE_FIELD_SUFFIX + field_names.PERCENTILE_FIELD_SUFFIX
] ]
> 0.9 > 0.9

View file

@ -407,6 +407,8 @@ class ScoreL(Score):
field_names.RMP_LOW_INCOME_FIELD, field_names.RMP_LOW_INCOME_FIELD,
field_names.SUPERFUND_LOW_INCOME_FIELD, field_names.SUPERFUND_LOW_INCOME_FIELD,
field_names.HAZARDOUS_WASTE_LOW_INCOME_FIELD, field_names.HAZARDOUS_WASTE_LOW_INCOME_FIELD,
field_names.AIR_TOXICS_CANCER_RISK_LOW_INCOME_FIELD,
field_names.RESPIRATORY_HAZARD_LOW_INCOME_FIELD,
] ]
rmp_sites_threshold = ( rmp_sites_threshold = (
@ -426,6 +428,22 @@ class ScoreL(Score):
>= self.ENVIRONMENTAL_BURDEN_THRESHOLD >= self.ENVIRONMENTAL_BURDEN_THRESHOLD
) )
air_toxics_cancer_risk_threshold = (
self.df[
field_names.AIR_TOXICS_CANCER_RISK_FIELD
+ field_names.PERCENTILE_FIELD_SUFFIX
]
>= self.ENVIRONMENTAL_BURDEN_THRESHOLD
)
respiratory_hazard_risk_threshold = (
self.df[
field_names.RESPIRATORY_HAZARD_FIELD
+ field_names.PERCENTILE_FIELD_SUFFIX
]
>= self.ENVIRONMENTAL_BURDEN_THRESHOLD
)
# individual series-by-series # individual series-by-series
self.df[field_names.RMP_LOW_INCOME_FIELD] = ( self.df[field_names.RMP_LOW_INCOME_FIELD] = (
rmp_sites_threshold & self.df[field_names.FPL_200_SERIES] rmp_sites_threshold & self.df[field_names.FPL_200_SERIES]
@ -436,6 +454,14 @@ class ScoreL(Score):
self.df[field_names.HAZARDOUS_WASTE_LOW_INCOME_FIELD] = ( self.df[field_names.HAZARDOUS_WASTE_LOW_INCOME_FIELD] = (
tsdf_sites_threshold & self.df[field_names.FPL_200_SERIES] tsdf_sites_threshold & self.df[field_names.FPL_200_SERIES]
) )
self.df[field_names.AIR_TOXICS_CANCER_RISK_LOW_INCOME_FIELD] = (
air_toxics_cancer_risk_threshold
& self.df[field_names.FPL_200_SERIES]
)
self.df[field_names.RESPIRATORY_HAZARD_LOW_INCOME_FIELD] = (
respiratory_hazard_risk_threshold
& self.df[field_names.FPL_200_SERIES]
)
self._increment_total_eligibility_exceeded( self._increment_total_eligibility_exceeded(
pollution_eligibility_columns pollution_eligibility_columns