99import logging
1010
1111from delphi_utils import read_params
12-
12+ import covidcast
1313from .pull_api import GoogleHealthTrends , get_counts_states , get_counts_dma
1414from .map_values import derived_counts_from_dma
1515from .export import export_csv
16+ from .constants import *
1617
1718
1819def run_module ():
@@ -31,6 +32,7 @@ def run_module():
3132 static_dir = params ["static_file_dir" ]
3233 export_dir = params ["export_dir" ]
3334 cache_dir = params ["cache_dir" ]
35+ wip_signal = params ["wip_signal" ]
3436
3537 # if missing start_date, set to today (GMT) minus 5 days
3638 if start_date == "" :
@@ -58,17 +60,71 @@ def run_module():
5860 )
5961 df_hrr , df_msa = derived_counts_from_dma (df_dma , static_dir = static_dir )
6062
61- # export each geographic region, with both smoothed and unsmoothed data
62- export_csv (df_state , "state" , "raw_search" , smooth = False , receiving_dir = export_dir )
63- export_csv (
64- df_state , "state" , "smoothed_search" , smooth = True , receiving_dir = export_dir
65- )
66-
67- export_csv (df_dma , "dma" , "raw_search" , smooth = False , receiving_dir = export_dir )
68- export_csv (df_dma , "dma" , "smoothed_search" , smooth = True , receiving_dir = export_dir )
69-
70- export_csv (df_hrr , "hrr" , "raw_search" , smooth = False , receiving_dir = export_dir )
71- export_csv (df_hrr , "hrr" , "smoothed_search" , smooth = True , receiving_dir = export_dir )
63+ signal_names = add_prefix (SIGNALS , wip_signal , prefix )
64+
65+ for signal in signal_names :
66+ if signal .endswith (SMOOTHED ):
67+ # export each geographic region, with both smoothed and unsmoothed data
68+ export_csv (df_state , STATE , signal , smooth = True , receiving_dir = export_dir )
69+ export_csv (df_dma , DMA , signal , smooth = True , receiving_dir = export_dir )
70+ export_csv (df_hrr , HRR , signal , smooth = True , receiving_dir = export_dir )
71+ export_csv (df_msa , MSA , signal , smooth = True , receiving_dir = export_dir )
72+ elif signal .endswith (RAW ):
73+ export_csv (df_state , STATE , signal , smooth = False , receiving_dir = export_dir )
74+ export_csv (df_dma , DMA , signal , smooth = False , receiving_dir = export_dir )
75+ export_csv (df_hrr , HRR , signal , smooth = False , receiving_dir = export_dir )
76+ export_csv (df_msa , MSA , signal , smooth = False , receiving_dir = export_dir )
77+
78+
79+ def add_prefix (signal_names , wip_signal , prefix = "wip_" ):
80+ """Adds prefix to signal if there is a WIP signal
81+ Parameters
82+ ----------
83+ signal_names: List[str]
84+ Names of signals to be exported
85+ prefix : 'wip_'
86+ prefix for new/non public signals
87+ wip_signal : List[str] or bool
88+ a list of wip signals: [], OR
89+ all signals in the registry: True OR
90+ only signals that have never been published: False
91+ Returns
92+ -------
93+ List of signal names
94+ wip/non wip signals for further computation
95+ """
7296
73- export_csv (df_msa , "msa" , "raw_search" , smooth = False , receiving_dir = export_dir )
74- export_csv (df_msa , "msa" , "smoothed_search" , smooth = True , receiving_dir = export_dir )
97+ if wip_signal is True :
98+ return [prefix + signal for signal in signal_names ]
99+ if isinstance (wip_signal , list ):
100+ make_wip = set (wip_signal )
101+ return [
102+ (prefix if signal in make_wip else "" ) + signal
103+ for signal in signal_names
104+ ]
105+ if wip_signal in {False , "" }:
106+ return [
107+ signal if public_signal (signal )
108+ else prefix + signal
109+ for signal in signal_names
110+ ]
111+ raise ValueError ("Supply True | False or '' or [] | list()" )
112+
113+
114+ def public_signal (signal_ ):
115+ """Checks if the signal name is already public using COVIDcast
116+ Parameters
117+ ----------
118+ signal_ : str
119+ Name of the signal
120+ Returns
121+ -------
122+ bool
123+ True if the signal is present
124+ False if the signal is not present
125+ """
126+ epidata_df = covidcast .metadata ()
127+ for index in range (len (epidata_df )):
128+ if epidata_df ['signal' ][index ] == signal_ :
129+ return True
130+ return False
0 commit comments