diff --git a/geomagio/edge/LegacySNCL.py b/geomagio/edge/LegacySNCL.py index 22b5770b84984c041cd4070a2faa6265c99bb995..0f4479546a18d5a18947185b99052bb98d9777f3 100644 --- a/geomagio/edge/LegacySNCL.py +++ b/geomagio/edge/LegacySNCL.py @@ -44,7 +44,9 @@ class LegacySNCL(SNCL): return LegacySNCL( station=station, network=network, - channel=get_channel(element=element, interval=interval), + channel=get_channel( + element=element, interval=interval, data_type=location or data_type + ), location=location or get_location(element=element, data_type=data_type), ) @@ -68,9 +70,10 @@ class LegacySNCL(SNCL): raise ValueError(f"Unexcepted interval code: {channel_start}") -def get_channel(element: str, interval: str) -> str: +def get_channel(element: str, interval: str, data_type: str) -> str: return _check_predefined_channel(element=element, interval=interval) or ( - _get_channel_start(interval=interval) + _get_channel_end(element=element) + _get_channel_start(interval=interval) + + _get_channel_end(element=element, data_type=data_type) ) @@ -133,7 +136,7 @@ def _check_predefined_channel(element: str, interval: str) -> Optional[str]: return None -def _get_channel_end(element: str) -> str: +def _get_channel_end(element: str, data_type: str) -> str: channel_middle = "V" if "_Volt" in element: channel_middle = "E" @@ -144,6 +147,16 @@ def _get_channel_end(element: str) -> str: elif element in ["F", "G"]: channel_middle = "S" channel_end = element.split("_")[0] + if data_type == "variation" or data_type[0] == "R": + # this may not actually be necessary since UVW were + # never used as legacy channels; it is included here + # solely for consistency with SNCL.py, but should be safe + if channel_end == "U": + channel_end = "H" + elif channel_end == "V": + channel_end = "Y" + elif channel_end == "W": + channel_end = "Z" return channel_middle + channel_end diff --git a/geomagio/edge/SNCL.py b/geomagio/edge/SNCL.py index 3028f82ddf31b875f025d0f17803e62de2ec2d71..421190d86340ad78b2d79b5169feb6eea2f4ae89 100644 --- a/geomagio/edge/SNCL.py +++ b/geomagio/edge/SNCL.py @@ -46,7 +46,7 @@ class SNCL(BaseModel): station=station, network=network, channel=get_channel( - element=element, interval=interval, data_type=data_type + element=element, interval=interval, data_type=location or data_type ), location=location or get_location(element=element, data_type=data_type), ) @@ -178,7 +178,7 @@ def _get_channel_end(element: str, data_type: str) -> str: elif "_Temp" in element: channel_middle = "K" channel_end = element.split("_")[0] - if data_type == "variation": + if data_type == "variation" or data_type[0] == "R": if channel_end == "H": channel_end = "U" elif channel_end == "E":