Skip to content

Commit 7044056

Browse files
authored
Catch and reissue fluview imputation errors as warnings to avoid failures (#1686)
* catch and reissue imputation errors as warnings to avoid failures * tests to look for warnings instead * warn() goes to stderr instead of stdout, so print all messages * drop warn import
1 parent ec723a9 commit 7044056

File tree

2 files changed

+18
-6
lines changed

2 files changed

+18
-6
lines changed

src/acquisition/fluview/impute_missing_values.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,11 @@ def impute_missing_values(database, test_mode=False):
293293
known_values["pr"] = (0, 0, 0)
294294

295295
# get the imputation matrix and lists of known and unknown locations
296-
F, known, unknown = get_fusion_parameters(known_values.keys())
296+
try:
297+
F, known, unknown = get_fusion_parameters(known_values.keys())
298+
except StatespaceException as e:
299+
print(e)
300+
continue
297301

298302
# finally, impute the missing values
299303
z = np.array([known_values[k] for k in known])

tests/acquisition/fluview/test_impute_missing_values.py

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,17 @@
22

33
# standard library
44
import argparse
5+
import sys
56
import unittest
67
from unittest.mock import MagicMock
8+
from io import StringIO
79

810
# first party
911
from delphi.utils.geo.locations import Locations
1012
from delphi.epidata.acquisition.fluview.impute_missing_values import (
1113
get_argument_parser,
1214
get_lag_and_ili,
1315
impute_missing_values,
14-
StatespaceException,
1516
)
1617

1718
# py3tester coverage target
@@ -87,8 +88,12 @@ def test_impute_missing_values_vipr(self):
8788
db.get_known_values.return_value = known_data
8889

8990
db.find_missing_rows.return_value = [(201340, 201340)]
90-
with self.assertRaises(Exception):
91-
impute_missing_values(db, test_mode=True)
91+
92+
capturedOutput = StringIO()
93+
sys.stdout = capturedOutput
94+
impute_missing_values(db, test_mode=True)
95+
sys.stdout = sys.__stdout__
96+
self.assertTrue("system is underdetermined" in capturedOutput.getvalue().split("\n"))
9297

9398
db.find_missing_rows.return_value = [(201339, 201339)]
9499
impute_missing_values(db, test_mode=True)
@@ -131,5 +136,8 @@ def test_impute_missing_values_underdetermined(self):
131136
db.find_missing_rows.return_value = [(201740, 201740)]
132137
db.get_known_values.return_value = known_data
133138

134-
with self.assertRaises(StatespaceException):
135-
impute_missing_values(db, test_mode=True)
139+
capturedOutput = StringIO()
140+
sys.stdout = capturedOutput
141+
impute_missing_values(db, test_mode=True)
142+
sys.stdout = sys.__stdout__
143+
self.assertTrue("system is underdetermined" in capturedOutput.getvalue().split("\n"))

0 commit comments

Comments
 (0)