From 99eeb2f4a16cb2f72afc9943198e3ea05b50f3f3 Mon Sep 17 00:00:00 2001
From: pcain <pcain@usgs.gov>
Date: Wed, 25 Aug 2021 09:30:23 -0600
Subject: [PATCH 1/5] return desired channels when no channels are found

---
 geomagio/DerivedTimeseriesFactory.py | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/geomagio/DerivedTimeseriesFactory.py b/geomagio/DerivedTimeseriesFactory.py
index 273b18dd2..94abbe596 100644
--- a/geomagio/DerivedTimeseriesFactory.py
+++ b/geomagio/DerivedTimeseriesFactory.py
@@ -204,4 +204,6 @@ class DerivedTimeseriesFactory(TimeseriesFactory):
 def get_missing(input: Stream, desired: List[str]) -> List[str]:
     """Return missing channels from input"""
     present = TimeseriesUtility.get_channels(stream=input)
+    if present is None:
+        return desired
     return list(set(desired).difference(set(present)))
-- 
GitLab


From c866429c663cf65ea19141969bb5ce9009236e1e Mon Sep 17 00:00:00 2001
From: pcain <pcain@usgs.gov>
Date: Wed, 25 Aug 2021 10:01:43 -0600
Subject: [PATCH 2/5] add test for handling empty stream

---
 test/DerivedTimeseriesFactory_test.py | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/test/DerivedTimeseriesFactory_test.py b/test/DerivedTimeseriesFactory_test.py
index 5a8eeaea9..debb0b213 100644
--- a/test/DerivedTimeseriesFactory_test.py
+++ b/test/DerivedTimeseriesFactory_test.py
@@ -2,8 +2,9 @@ from typing import List
 
 from obspy import Stream
 
-from geomagio import DerivedTimeseriesFactory, TimeseriesUtility
+from geomagio import TimeseriesUtility
 from geomagio.algorithm import Algorithm, DeltaFAlgorithm, XYZAlgorithm
+from geomagio.DerivedTimeseriesFactory import DerivedTimeseriesFactory, get_missing
 from geomagio.iaga2002 import StreamIAGA2002Factory
 from geomagio.edge import EdgeFactory
 
@@ -91,6 +92,17 @@ def test_get_timeseries():
     assert set(TimeseriesUtility.get_channels(timeseries)) == set(["H", "D"])
 
 
+def test_get_missing():
+    """test.DerivedTimeseriesFactory_test.test_get_missing()"""
+    desired = ["X", "Y", "D", "G"]
+    assert set(get_missing(input=Stream(), desired=desired)) == set(desired)
+    desired = ["H", "E", "Z", "F"]
+    timeseries = get_derived_timeseries(
+        "etc/filter/BOU20200101vsec.sec", desired, "variation", "second"
+    )
+    assert get_missing(input=timeseries, desired=desired) == []
+
+
 def get_derived_timeseries(
     url: str, channels: List[str], data_type: str, interval: str
 ) -> Stream:
-- 
GitLab


From fe4e6fc827e63dd1f8cdedca0b80fad59b941b43 Mon Sep 17 00:00:00 2001
From: pcain <pcain@usgs.gov>
Date: Wed, 25 Aug 2021 15:15:14 -0600
Subject: [PATCH 3/5] add empty list as default

---
 geomagio/DerivedTimeseriesFactory.py | 2 --
 geomagio/TimeseriesUtility.py        | 2 +-
 2 files changed, 1 insertion(+), 3 deletions(-)

diff --git a/geomagio/DerivedTimeseriesFactory.py b/geomagio/DerivedTimeseriesFactory.py
index 94abbe596..273b18dd2 100644
--- a/geomagio/DerivedTimeseriesFactory.py
+++ b/geomagio/DerivedTimeseriesFactory.py
@@ -204,6 +204,4 @@ class DerivedTimeseriesFactory(TimeseriesFactory):
 def get_missing(input: Stream, desired: List[str]) -> List[str]:
     """Return missing channels from input"""
     present = TimeseriesUtility.get_channels(stream=input)
-    if present is None:
-        return desired
     return list(set(desired).difference(set(present)))
diff --git a/geomagio/TimeseriesUtility.py b/geomagio/TimeseriesUtility.py
index e0729c21b..79cc48263 100644
--- a/geomagio/TimeseriesUtility.py
+++ b/geomagio/TimeseriesUtility.py
@@ -304,7 +304,7 @@ def get_channels(stream):
         channel = trace.stats.channel
         if channel:
             channels[channel] = True
-    return [ch for ch in channels]
+    return [ch for ch in channels] or []
 
 
 def get_trace_value(traces, time, default=None):
-- 
GitLab


From 8410e9581d7b9dde6ed60a7d9aa9f1de5e2ecba0 Mon Sep 17 00:00:00 2001
From: pcain <pcain@usgs.gov>
Date: Wed, 25 Aug 2021 15:17:27 -0600
Subject: [PATCH 4/5] bump algorithms version

---
 code.json      | 2 +-
 pyproject.toml | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/code.json b/code.json
index fe72c15a4..f7ea8ea37 100644
--- a/code.json
+++ b/code.json
@@ -3,7 +3,7 @@
     "name": "geomag-algorithms",
     "organization": "U.S. Geological Survey",
     "description": "Library for processing Geomagnetic timeseries data.",
-    "version": "1.4.0",
+    "version": "1.4.1",
     "status": "Development",
 
     "permissions": {
diff --git a/pyproject.toml b/pyproject.toml
index a404d487e..7849afdf0 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -17,7 +17,7 @@ packages = [
   {include = "geomagio" }
 ]
 repository="https://code.usgs.gov/ghsc/geomag/geomag-algorithms"
-version = "1.4.0"
+version = "1.4.1"
 
 
 [tool.poetry.dependencies]
-- 
GitLab


From dad3c0a384336a2685780eb9eac5287e0d325ff7 Mon Sep 17 00:00:00 2001
From: pcain <pcain@usgs.gov>
Date: Wed, 25 Aug 2021 15:51:24 -0600
Subject: [PATCH 5/5] revert get channels method

---
 geomagio/TimeseriesUtility.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/geomagio/TimeseriesUtility.py b/geomagio/TimeseriesUtility.py
index 79cc48263..e0729c21b 100644
--- a/geomagio/TimeseriesUtility.py
+++ b/geomagio/TimeseriesUtility.py
@@ -304,7 +304,7 @@ def get_channels(stream):
         channel = trace.stats.channel
         if channel:
             channels[channel] = True
-    return [ch for ch in channels] or []
+    return [ch for ch in channels]
 
 
 def get_trace_value(traces, time, default=None):
-- 
GitLab