Skip to content

Commit 714ed3d

Browse files
committed
Update to new enum nancodes
1 parent fbed79b commit 714ed3d

File tree

4 files changed

+40
-40
lines changed

4 files changed

+40
-40
lines changed

quidel/delphi_quidel/data_tools.py

+7-7
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import numpy as np
44
import pandas as pd
55

6-
from delphi_utils import NAN_CODES
6+
from delphi_utils import Nans
77

88
def _prop_var(p, n):
99
"""
@@ -168,9 +168,9 @@ def raw_positive_prop(positives, tests, min_obs, missing_val, missing_se, missin
168168
positive_prop = positives / tests
169169
se = np.sqrt(_prop_var(positive_prop, tests))
170170
sample_size = tests
171-
missing_val[np.isnan(tests) | (tests < min_obs) | np.isnan(positive_prop)] = NAN_CODES["Data Insufficient"]
172-
missing_se[np.isnan(se)] = NAN_CODES["Data Insufficient"]
173-
missing_sample_size[np.isnan(tests) | (tests < min_obs)] = NAN_CODES["Data Insufficient"]
171+
missing_val[np.isnan(tests) | (tests < min_obs) | np.isnan(positive_prop)] = Nans.DATA_INSUFFICIENT
172+
missing_se[np.isnan(se)] = Nans.DATA_INSUFFICIENT
173+
missing_sample_size[np.isnan(tests) | (tests < min_obs)] = Nans.DATA_INSUFFICIENT
174174

175175
return positive_prop, se, sample_size, missing_val, missing_se, missing_sample_size
176176

@@ -310,9 +310,9 @@ def raw_tests_per_device(devices, tests, min_obs, missing_val, missing_se, missi
310310
se = np.repeat(np.nan, len(devices))
311311
sample_size = tests
312312

313-
missing_val[np.isnan(tests) | (tests < min_obs)] = NAN_CODES["Data Insufficient"]
314-
missing_se = np.repeat(NAN_CODES["Not Applicable"], len(devices))
315-
missing_sample_size[np.isnan(tests) | (tests < min_obs)] = NAN_CODES["Data Insufficient"]
313+
missing_val[np.isnan(tests) | (tests < min_obs)] = Nans.DATA_INSUFFICIENT
314+
missing_se = np.repeat(Nans.NOT_APPLICABLE, len(devices))
315+
missing_sample_size[np.isnan(tests) | (tests < min_obs)] = Nans.DATA_INSUFFICIENT
316316

317317
return tests_per_device, se, sample_size, missing_val, missing_se, missing_sample_size
318318

quidel/delphi_quidel/run.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
add_prefix,
1414
create_export_csv,
1515
get_structured_logger,
16-
NAN_CODES
16+
Nans
1717
)
1818

1919
from .constants import (END_FROM_TODAY_MINUS, EXPORT_DAY_RANGE,
@@ -86,9 +86,9 @@ def run_module(params: Dict[str, Any]):
8686
data = dfs[test_type].copy()
8787

8888
# Default missingness values
89-
data["missing_val"] = NAN_CODES["Not Missing"]
90-
data["missing_se"] = NAN_CODES["Not Missing"]
91-
data["missing_sample_size"] = NAN_CODES["Not Missing"]
89+
data["missing_val"] = Nans.NOT_MISSING
90+
data["missing_se"] = Nans.NOT_MISSING
91+
data["missing_sample_size"] = Nans.NOT_MISSING
9292

9393
state_groups = geo_map("state", data, map_df).groupby("state_id")
9494
first_date, last_date = data["timestamp"].min(), data["timestamp"].max()

quidel/tests/test_data_tools.py

+25-25
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import pytest
66

77
from delphi_quidel import data_tools
8-
from delphi_utils import NAN_CODES
8+
from delphi_utils import Nans
99

1010

1111
class TestDataTools:
@@ -99,17 +99,17 @@ def test__geographical_pooling(self, min_obs, max_borrow_obs, expected):
9999
np.array([np.nan, 1/2, 1/2, 4/10]),
100100
np.array([np.nan, np.sqrt(0.25/4), np.sqrt(0.25/6), np.sqrt(0.24/10)]),
101101
np.array([np.nan, 4, 6, 10]),
102-
np.array([NAN_CODES["Data Insufficient"], NAN_CODES["Not Missing"], NAN_CODES["Not Missing"], NAN_CODES["Not Missing"]]),
103-
np.array([NAN_CODES["Data Insufficient"], NAN_CODES["Not Missing"], NAN_CODES["Not Missing"], NAN_CODES["Not Missing"]]),
104-
np.array([NAN_CODES["Data Insufficient"], NAN_CODES["Not Missing"], NAN_CODES["Not Missing"], NAN_CODES["Not Missing"]])
102+
np.array([Nans.DATA_INSUFFICIENT, Nans.NOT_MISSING, Nans.NOT_MISSING, Nans.NOT_MISSING]),
103+
np.array([Nans.DATA_INSUFFICIENT, Nans.NOT_MISSING, Nans.NOT_MISSING, Nans.NOT_MISSING]),
104+
np.array([Nans.DATA_INSUFFICIENT, Nans.NOT_MISSING, Nans.NOT_MISSING, Nans.NOT_MISSING])
105105
),
106106
(1, # no cases of tests < min_obs
107107
np.array([1/2, 2/4, 3/6, 4/10]),
108108
np.array([np.sqrt(0.25/2), np.sqrt(0.25/4), np.sqrt(0.25/6), np.sqrt(0.24/10)]),
109109
np.array([2, 4, 6, 10]),
110-
np.repeat(NAN_CODES["Not Missing"], 4),
111-
np.repeat(NAN_CODES["Not Missing"], 4),
112-
np.repeat(NAN_CODES["Not Missing"], 4))
110+
np.repeat(Nans.NOT_MISSING, 4),
111+
np.repeat(Nans.NOT_MISSING, 4),
112+
np.repeat(Nans.NOT_MISSING, 4))
113113
])
114114
def test_raw_positive_prop(self, min_obs, expected_pos_prop, expected_se, expected_sample_sz, expected_missing_val, expected_missing_se, expected_missing_sample_size):
115115
positives = np.array([1, 2, 3, 4])
@@ -145,9 +145,9 @@ def test_raw_positive_prop(self, min_obs, expected_pos_prop, expected_se, expect
145145
np.array([np.nan, 1/2, 1/2, 7/16]),
146146
np.array([np.nan, np.sqrt(0.25/6), np.sqrt(0.25/10), np.sqrt(63/256/16)]),
147147
np.array([np.nan, 6, 10, 16]),
148-
np.array([NAN_CODES["Data Insufficient"], NAN_CODES["Not Missing"], NAN_CODES["Not Missing"], NAN_CODES["Not Missing"]]),
149-
np.array([NAN_CODES["Data Insufficient"], NAN_CODES["Not Missing"], NAN_CODES["Not Missing"], NAN_CODES["Not Missing"]]),
150-
np.array([NAN_CODES["Data Insufficient"], NAN_CODES["Not Missing"], NAN_CODES["Not Missing"], NAN_CODES["Not Missing"]])
148+
np.array([Nans.DATA_INSUFFICIENT, Nans.NOT_MISSING, Nans.NOT_MISSING, Nans.NOT_MISSING]),
149+
np.array([Nans.DATA_INSUFFICIENT, Nans.NOT_MISSING, Nans.NOT_MISSING, Nans.NOT_MISSING]),
150+
np.array([Nans.DATA_INSUFFICIENT, Nans.NOT_MISSING, Nans.NOT_MISSING, Nans.NOT_MISSING])
151151
),
152152
(3, # parents case
153153
3,
@@ -157,9 +157,9 @@ def test_raw_positive_prop(self, min_obs, expected_pos_prop, expected_se, expect
157157
np.array([1.6/3, 1/2, 1/2, 7/16]),
158158
np.array([np.sqrt(56/225/3), np.sqrt(0.25/6), np.sqrt(0.25/10), np.sqrt(63/256/16)]),
159159
np.array([3, 6, 10, 16]),
160-
np.repeat(NAN_CODES["Not Missing"], 4),
161-
np.repeat(NAN_CODES["Not Missing"], 4),
162-
np.repeat(NAN_CODES["Not Missing"], 4)
160+
np.repeat(Nans.NOT_MISSING, 4),
161+
np.repeat(Nans.NOT_MISSING, 4),
162+
np.repeat(Nans.NOT_MISSING, 4)
163163
),
164164
])
165165
def test_smoothed_positive_prop(self, min_obs, max_borrow_obs, pool_days, parent_positives,
@@ -209,16 +209,16 @@ def test_smoothed_positive_prop(self, min_obs, max_borrow_obs, pool_days, parent
209209
(3, # one case of tests < min_obs
210210
np.array([np.nan, 2, 1/2, 10/4]),
211211
np.array([np.nan, 4, 3, 10]),
212-
np.array([NAN_CODES["Data Insufficient"], NAN_CODES["Not Missing"], NAN_CODES["Not Missing"], NAN_CODES["Not Missing"]]),
213-
np.repeat(NAN_CODES["Not Applicable"], 4),
214-
np.array([NAN_CODES["Data Insufficient"], NAN_CODES["Not Missing"], NAN_CODES["Not Missing"], NAN_CODES["Not Missing"]])
212+
np.array([Nans.DATA_INSUFFICIENT, Nans.NOT_MISSING, Nans.NOT_MISSING, Nans.NOT_MISSING]),
213+
np.repeat(Nans.NOT_APPLICABLE, 4),
214+
np.array([Nans.DATA_INSUFFICIENT, Nans.NOT_MISSING, Nans.NOT_MISSING, Nans.NOT_MISSING])
215215
),
216216
(1, # no cases of tests < min_obs
217217
np.array([2, 2, 1/2, 10/4]),
218218
np.array([2, 4, 3, 10]),
219-
np.repeat(NAN_CODES["Not Missing"], 4),
220-
np.repeat(NAN_CODES["Not Applicable"], 4),
221-
np.repeat(NAN_CODES["Not Missing"], 4)
219+
np.repeat(Nans.NOT_MISSING, 4),
220+
np.repeat(Nans.NOT_APPLICABLE, 4),
221+
np.repeat(Nans.NOT_MISSING, 4)
222222
),
223223
])
224224
def test_raw_tests_per_device(self, min_obs, expected_tests_per_device, expected_sample_sz, expected_missing_val, expected_missing_se, expected_missing_sample_size):
@@ -252,9 +252,9 @@ def test_raw_tests_per_device(self, min_obs, expected_tests_per_device, expected
252252
np.array([np.nan, 2, 5/6, 8/7]),
253253
np.repeat(np.nan, 4),
254254
np.array([np.nan, 6, 10, 16]),
255-
np.array([NAN_CODES["Data Insufficient"], NAN_CODES["Not Missing"], NAN_CODES["Not Missing"], NAN_CODES["Not Missing"]]),
256-
np.repeat(NAN_CODES["Not Applicable"], 4),
257-
np.array([NAN_CODES["Data Insufficient"], NAN_CODES["Not Missing"], NAN_CODES["Not Missing"], NAN_CODES["Not Missing"]])
255+
np.array([Nans.DATA_INSUFFICIENT, Nans.NOT_MISSING, Nans.NOT_MISSING, Nans.NOT_MISSING]),
256+
np.repeat(Nans.NOT_APPLICABLE, 4),
257+
np.array([Nans.DATA_INSUFFICIENT, Nans.NOT_MISSING, Nans.NOT_MISSING, Nans.NOT_MISSING])
258258
),
259259
(3, # no parents case
260260
3,
@@ -264,9 +264,9 @@ def test_raw_tests_per_device(self, min_obs, expected_tests_per_device, expected
264264
np.array([3/1.6, 2, 5/6, 8/7]),
265265
np.repeat(np.nan, 4),
266266
np.array([3, 6, 10, 16]),
267-
np.repeat(NAN_CODES["Not Missing"], 4),
268-
np.repeat(NAN_CODES["Not Applicable"], 4),
269-
np.repeat(NAN_CODES["Not Missing"], 4)
267+
np.repeat(Nans.NOT_MISSING, 4),
268+
np.repeat(Nans.NOT_APPLICABLE, 4),
269+
np.repeat(Nans.NOT_MISSING, 4)
270270
),
271271
])
272272
def test_smoothed_tests_per_device(self, min_obs, max_borrow_obs, pool_days, parent_devices,

quidel/tests/test_generate_sensor.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from delphi_quidel.generate_sensor import (MIN_OBS, MAX_BORROW_OBS, POOL_DAYS,
55
generate_sensor_for_states,
66
generate_sensor_for_other_geores)
7-
from delphi_utils import NAN_CODES
7+
from delphi_utils import Nans
88

99
class TestGenerateSensor:
1010
def test_generate_sensor(self):
@@ -20,9 +20,9 @@ def test_generate_sensor(self):
2020
# State Level
2121
data = pd.read_csv("./test_data/state_data.csv", sep = ",",
2222
parse_dates=['timestamp'])
23-
data["missing_val"] = NAN_CODES["Not Missing"]
24-
data["missing_se"] = NAN_CODES["Not Missing"]
25-
data["missing_sample_size"] = NAN_CODES["Not Missing"]
23+
data["missing_val"] = Nans.NOT_MISSING
24+
data["missing_se"] = Nans.NOT_MISSING
25+
data["missing_sample_size"] = Nans.NOT_MISSING
2626
state_groups = data.groupby("state_id")
2727

2828
# raw pct_positive

0 commit comments

Comments
 (0)