Skip to content

Sensorization #568

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 20 commits into
base: dv-package
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 18 additions & 4 deletions _delphi_utils_python/.pylintrc
Original file line number Diff line number Diff line change
@@ -1,8 +1,22 @@
[DESIGN]

min-public-methods=1
[MESSAGES CONTROL]

disable=logging-format-interpolation,
too-many-locals,
too-many-arguments,
# Allow pytest functions to be part of a class.
no-self-use,
# Allow pytest classes to have one test.
too-few-public-methods

[MESSAGES CONTROL]
[BASIC]

# Allow arbitrarily short-named variables.
variable-rgx=[a-z_][a-z0-9_]*
argument-rgx=[a-z_][a-z0-9_]*
attr-rgx=[a-z_][a-z0-9_]*

[DESIGN]

disable=R0801, C0330, E1101, E0611, C0114, C0116, C0103, R0913, R0914, W0702
# Don't complain about pytest "unused" arguments.
ignored-argument-names=(_.*|run_as_module)
24 changes: 24 additions & 0 deletions _delphi_utils_python/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
.PHONY = venv, lint, test, clean

dir = $(shell find ./delphi_* -name __init__.py | grep -o 'delphi_[_[:alnum:]]*')

venv:
python3.8 -m venv env

install: venv
. env/bin/activate; \
pip install wheel ; \
pip install -e .

lint:
. env/bin/activate; \
pylint $(dir); \
pydocstyle $(dir)

test:
. env/bin/activate ;\
(cd tests && ../env/bin/pytest --cov=$(dir) --cov-report=term-missing)

clean:
rm -rf env
rm -f params.json
71 changes: 66 additions & 5 deletions _delphi_utils_python/data_proc/geomap/geo_data_proc.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
FIPS_MSA_OUT_FILENAME = "fips_msa_table.csv"
FIPS_HRR_OUT_FILENAME = "fips_hrr_table.csv"
FIPS_ZIP_OUT_FILENAME = "fips_zip_table.csv"
FIPS_HHS_FILENAME = "fips_hhs_table.csv"
FIPS_POPULATION_OUT_FILENAME = "fips_pop.csv"

ZIP_HSA_OUT_FILENAME = "zip_hsa_table.csv"
Expand All @@ -42,8 +43,9 @@
ZIP_MSA_OUT_FILENAME = "zip_msa_table.csv"
ZIP_POPULATION_OUT_FILENAME = "zip_pop.csv"
ZIP_STATE_CODE_OUT_FILENAME = "zip_state_code_table.csv"
ZIP_HHS_FILENAME = "zip_hhs_table.csv"
STATE_OUT_FILENAME = "state_codes_table.csv"
STATE_HHS_OUT_FILENAME = "state_code_hhs_region_number_table.csv"
STATE_HHS_OUT_FILENAME = "state_code_hhs_table.csv"
JHU_FIPS_OUT_FILENAME = "jhu_uid_fips_table.csv"


Expand Down Expand Up @@ -217,6 +219,12 @@ def create_jhu_uid_fips_crosswalk():
{"jhu_uid": "63072999", "fips": "72000", "weight": 1.0},
]
)
cruise_ships = pd.DataFrame(
[
{"jhu_uid": "84088888", "fips": "88888", "weight": 1.0},
{"jhu_uid": "84099999", "fips": "99999", "weight": 1.0},
]
)

jhu_df = (
pd.read_csv(JHU_FIPS_URL, dtype={"UID": str, "FIPS": str})
Expand All @@ -234,7 +242,7 @@ def create_jhu_uid_fips_crosswalk():
# Drop the JHU UIDs that were hand-modified
dup_ind = jhu_df["jhu_uid"].isin(
pd.concat(
[hand_additions, unassigned_states, out_of_state, puerto_rico_unassigned]
[hand_additions, unassigned_states, out_of_state, puerto_rico_unassigned, cruise_ships]
)["jhu_uid"].values
)
jhu_df.drop(jhu_df.index[dup_ind], inplace=True)
Expand Down Expand Up @@ -326,12 +334,12 @@ def create_state_hhs_crosswalk():
hhs_state_pairs.append((9, "Northern Mariana Islands"))

# Make dataframe
hhs_df = pd.DataFrame(hhs_state_pairs, columns=["hhs_region_number", "state_name"])
hhs_df["hhs_region_number"] = hhs_df["hhs_region_number"].astype(str)
hhs_df = pd.DataFrame(hhs_state_pairs, columns=["hhs", "state_name"])
hhs_df["hhs"] = hhs_df["hhs"].astype(str)

(
ss_df.merge(hhs_df, on="state_name", how="left")
.dropna()[["state_code", "hhs_region_number"]]
.dropna()[["state_code", "hhs"]]
.to_csv(join(OUTPUT_DIR, STATE_HHS_OUT_FILENAME), index=False)
)

Expand Down Expand Up @@ -391,6 +399,7 @@ def create_fips_population_table():
df_pr = df_pr.groupby("fips").sum().reset_index()
df_pr = df_pr[~df_pr["fips"].isin(census_pop["fips"])]
census_pop_pr = pd.concat([census_pop, df_pr])

census_pop_pr.to_csv(join(OUTPUT_DIR, FIPS_POPULATION_OUT_FILENAME), index=False)


Expand Down Expand Up @@ -524,6 +533,56 @@ def derive_zip_to_state_code():
)


def derive_fips_hhs_crosswalk():
"""
Builds a crosswalk between FIPS county codes and HHS regions.
"""
if not isfile(join(OUTPUT_DIR, STATE_HHS_OUT_FILENAME)):
create_state_hhs_crosswalk()
if not isfile(join(OUTPUT_DIR, FIPS_POPULATION_OUT_FILENAME)):
create_fips_population_table()

fips_pop = pd.read_csv(
join(OUTPUT_DIR, FIPS_POPULATION_OUT_FILENAME), dtype={"fips": str, "pop": int}
)
state_hhs = pd.read_csv(
join(OUTPUT_DIR, STATE_HHS_OUT_FILENAME),
dtype={"state_code": str, "hhs": str},
)

fips_pop["state_code"] = fips_pop["fips"].str[:2]
(
fips_pop.merge(state_hhs, on="state_code", how="left")
.drop(columns=["state_code", "pop"])
.to_csv(join(OUTPUT_DIR, FIPS_HHS_FILENAME), index=False)
)


def derive_zip_hhs_crosswalk():
"""
Builds a crosswalk between zip code and HHS regions.
"""
if not isfile(join(OUTPUT_DIR, STATE_HHS_OUT_FILENAME)):
create_state_hhs_crosswalk()
if not isfile(join(OUTPUT_DIR, ZIP_STATE_CODE_OUT_FILENAME)):
derive_zip_to_state_code()

zip_state = pd.read_csv(
join(OUTPUT_DIR, ZIP_STATE_CODE_OUT_FILENAME),
dtype={"zip": str, "pop": int, "state_code": str}
)
state_hhs = pd.read_csv(
join(OUTPUT_DIR, STATE_HHS_OUT_FILENAME),
dtype={"state_code": str, "hhs": str},
)

(
zip_state.merge(state_hhs, on="state_code", how="left")
.drop(columns=["state_code", "state_id", "state_name"])
.to_csv(join(OUTPUT_DIR, ZIP_HHS_FILENAME), index=False)
)


if __name__ == "__main__":
create_fips_zip_crosswalk()
create_zip_hsa_hrr_crosswalk()
Expand All @@ -538,3 +597,5 @@ def derive_zip_to_state_code():
derive_zip_to_state_code()
derive_fips_state_crosswalk()
derive_zip_population_table()
derive_fips_hhs_crosswalk()
derive_zip_hhs_crosswalk()
8 changes: 6 additions & 2 deletions _delphi_utils_python/delphi_utils/__init__.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,16 @@
# -*- coding: utf-8 -*-
"""Common Utility Functions to Support DELPHI Indicators
"""
"""Common Utility Functions to Support DELPHI Indicators."""

from __future__ import absolute_import

from .archive import ArchiveDiffer, GitArchiveDiffer, S3ArchiveDiffer
from .export import create_export_csv
from .utils import read_params

from .slack_notifier import SlackNotifier
from .logger import get_structured_logger
from .geomap import GeoMapper
from .smooth import Smoother
from .signal import add_prefix, public_signal

__version__ = "0.1.0"
Loading