diff --git a/docs/api/covidcast_meta.md b/docs/api/covidcast_meta.md index 08c3990c8..dc88284ee 100644 --- a/docs/api/covidcast_meta.md +++ b/docs/api/covidcast_meta.md @@ -38,6 +38,7 @@ None required. | `epidata[].max_value` | maximum value | float | | `epidata[].mean_value` | mean of value | float | | `epidata[].stdev_value` | standard deviation of value | float | +| `epidata[].min_issue` | oldest date data was issued (e.g., 20200710) | integer | | `epidata[].max_issue` | most recent date data was issued (e.g., 20200710) | integer | | `epidata[].min_lag` | smallest lag from observation to issue, in `time_type` units | integer | | `epidata[].max_lag` | largest lag from observation to issue, in `time_type` units | integer | @@ -51,19 +52,23 @@ https://api.delphi.cmu.edu/epidata/covidcast_meta/ { "result": 1, "epidata": [ - { + { "data_source": "doctor-visits", "signal": "smoothed_adj_cli", - "last_update": 1592707979, - "stdev_value": 2.6647410028331, - "num_locations": 2500, "time_type": "day", - "max_value": 87.190476, - "mean_value": 1.4439366759191, "geo_type": "county", - "min_value": 0, - "max_time": 20200617, - "min_time": 20200201 + "min_time": 20200201, + "max_time": 20240321, + "num_locations": 2586, + "min_value": 0.0, + "max_value": 87.670832, + "mean_value": 2.4972178, + "stdev_value": 3.6433783, + "last_update": 1711412545, + "min_issue": 20200507, + "max_issue": 20240325, + "min_lag": 2, + "max_lag": 129 }, ... ], diff --git a/integrations/acquisition/covidcast/test_covidcast_meta_caching.py b/integrations/acquisition/covidcast/test_covidcast_meta_caching.py index 30b6bbcf2..70b5f120f 100644 --- a/integrations/acquisition/covidcast/test_covidcast_meta_caching.py +++ b/integrations/acquisition/covidcast/test_covidcast_meta_caching.py @@ -137,6 +137,7 @@ def test_caching(self): 'max_value': 1, 'mean_value': 1, 'stdev_value': 0, + 'min_issue': 20200422, 'max_issue': 20200423, 'min_lag': 0, 'max_lag': 1, diff --git a/integrations/client/test_delphi_epidata.py b/integrations/client/test_delphi_epidata.py index 02a1a9275..54bf62c53 100644 --- a/integrations/client/test_delphi_epidata.py +++ b/integrations/client/test_delphi_epidata.py @@ -362,15 +362,19 @@ def test_covidcast_meta(self): # 1st issue: 0 10 20 # 2nd issue: 1 11 21 # 3rd issue: 2 12 22 - rows = [ - CovidcastTestRow.make_default_row( - time_value=DEFAULT_TIME_VALUE + t, - issue=DEFAULT_ISSUE + i, - value=t*10 + i - ) - for i in range(3) for t in range(3) - ] - self._insert_rows(rows) + for i in range(3): + for t in range(3): + row = CovidcastTestRow.make_default_row( + time_value=DEFAULT_TIME_VALUE + t, + issue=DEFAULT_ISSUE + i, + value=t*10 + i + ) + self._insert_rows([row]) + self._insert_rows([CovidcastTestRow.make_default_row( + time_value=DEFAULT_TIME_VALUE-1, + issue=DEFAULT_ISSUE, + value=12 + )]) # cache it update_covidcast_meta_cache(args=None) @@ -387,17 +391,18 @@ def test_covidcast_meta(self): del response['epidata'][0]['last_update'] expected = dict( - data_source=rows[0].source, - signal=rows[0].signal, - time_type=rows[0].time_type, - geo_type=rows[0].geo_type, - min_time=DEFAULT_TIME_VALUE, + data_source=row.source, + signal=row.signal, + time_type=row.time_type, + geo_type=row.geo_type, + min_time=DEFAULT_TIME_VALUE - 1, max_time=DEFAULT_TIME_VALUE + 2, num_locations=1, min_value=2., mean_value=12., max_value=22., - stdev_value=8.1649658, # population stdev, not sample, which is 10. + stdev_value=7.0710678, # population stdev, not sample, which is 10. + min_issue=DEFAULT_ISSUE, max_issue=DEFAULT_ISSUE + 2, min_lag=0, max_lag=0, # we didn't set lag when inputting data diff --git a/integrations/server/test_covidcast_meta.py b/integrations/server/test_covidcast_meta.py index 857422a41..e082afef3 100644 --- a/integrations/server/test_covidcast_meta.py +++ b/integrations/server/test_covidcast_meta.py @@ -129,6 +129,7 @@ def insert_placeholder_data(self): 'mean_value': 15, 'stdev_value': 5, 'last_update': 123, + 'min_issue': 1, 'max_issue': 2, 'min_lag': 0, 'max_lag': 0, diff --git a/src/acquisition/covidcast/database.py b/src/acquisition/covidcast/database.py index 871061b81..3f3752199 100644 --- a/src/acquisition/covidcast/database.py +++ b/src/acquisition/covidcast/database.py @@ -473,6 +473,7 @@ def compute_covidcast_meta(self, table_name=None, n_threads=None): ROUND(AVG(`value`),7) AS `mean_value`, ROUND(STD(`value`),7) AS `stdev_value`, MAX(`value_updated_timestamp`) AS `last_update`, + MIN(`issue`) as `min_issue`, MAX(`issue`) as `max_issue`, MIN(`lag`) as `min_lag`, MAX(`lag`) as `max_lag`