From 351333dd24dd1e6a3afa5ed7c8b054c23998c206 Mon Sep 17 00:00:00 2001
From: Nicholas Shavers <nshavers@contractor.usgs.gov>
Date: Thu, 16 Jan 2025 14:31:48 -0800
Subject: [PATCH] expand allowed elements - to any. units set to known,
 validmin/max set to default.

---
 geomagio/imagcdf/ImagCDFFactory.py | 27 +++++++++++++++++----------
 1 file changed, 17 insertions(+), 10 deletions(-)

diff --git a/geomagio/imagcdf/ImagCDFFactory.py b/geomagio/imagcdf/ImagCDFFactory.py
index 914bba78..b68f03d5 100644
--- a/geomagio/imagcdf/ImagCDFFactory.py
+++ b/geomagio/imagcdf/ImagCDFFactory.py
@@ -506,7 +506,8 @@ class ImagCDFFactory(TimeseriesFactory):
     ) -> dict:
         channel = trace.stats.channel.upper()
         fieldnam = f"Geomagnetic Field Element {channel}"  # “Geomagnetic Field Element ” + the element code or “Temperature ” + the name of the location where the temperature was recorded.
-        units = ""  # Must be one of “nT”, “Degrees of arc” or “Celsius”
+        units = ""  # Should be one of “nT”, “Degrees of arc” or “Celsius” to adhere to standard.
+        depend_0 = ""
         if channel == "D":
             units = "Degrees of arc"
             validmin = -360.0
@@ -535,16 +536,22 @@ class ImagCDFFactory(TimeseriesFactory):
             units = "nT"
             validmin = -79_999.0
             validmax = 79_999.0
+        else:
+            units = "Unknown"  # unknown or possibly assume to be nT
+            validmin = -79_999  # largest valid min for all other elements
+            validmax = 79_999  # largest valid max for all other elements
+            depend_0 = "DataTimes"  # can be used for nonstandard element
 
-        # Determine DEPEND_0 based on channel type
-        if not isUniqueTimes:
-            depend_0 = "DataTimes"
-        elif channel in self._get_vector_elements():
-            depend_0 = "GeomagneticVectorTimes"
-        elif channel in self._get_scalar_elements():
-            depend_0 = "GeomagneticScalarTimes"
-        # elif channel in REAL_TEMPERATURES:
-        #     depend_0 = f"Temperature{temperature_index}Times"
+        # Determine DEPEND_0 based on channel type if necessary
+        if not depend_0:
+            if not isUniqueTimes:
+                depend_0 = "DataTimes"
+            elif channel in self._get_vector_elements():
+                depend_0 = "GeomagneticVectorTimes"
+            elif channel in self._get_scalar_elements():
+                depend_0 = "GeomagneticScalarTimes"
+            # elif channel in REAL_TEMPERATURES:
+            #     depend_0 = f"Temperature{temperature_index}Times"
 
         var_attrs = {
             "FIELDNAM": fieldnam,
-- 
GitLab