From 2b96e6b65e32f0dbeae31b61b3180a36c3d1499b Mon Sep 17 00:00:00 2001
From: Jean-Baptiste Bayle <j2b.bayle@gmail.com>
Date: Thu, 2 Dec 2021 01:21:32 -0800
Subject: [PATCH] Add version check for glitch files

---
 lisainstrument/instrument.py | 26 ++++++++++++++++----------
 1 file changed, 16 insertions(+), 10 deletions(-)

diff --git a/lisainstrument/instrument.py b/lisainstrument/instrument.py
index 7ae2f08..bce2bbc 100644
--- a/lisainstrument/instrument.py
+++ b/lisainstrument/instrument.py
@@ -550,6 +550,7 @@ class Instrument:
             self.gw_file = gws
             with File(self.gw_file, 'r') as gwf:
                 version = gwf.attrs['version']
+                logger.debug("Using GW file version %s", version)
                 if version in SpecifierSet('~= 0.1') or version in SpecifierSet('~= 1.0'):
                     self.gws = ForEachMOSA(lambda mosa: InterpolatedUnivariateSpline(
                         gwf['t'][:], gwf[f'l_{mosa}'][:], k=5, ext='zeros')(self.physics_t)
@@ -578,16 +579,21 @@ class Instrument:
             self.glitch_file = glitches
             logger.info("Interpolating glitch signals from glitch file '%s'", self.glitch_file)
             with File(self.glitch_file, 'r') as glitchf:
-                self.glitch_tms = ForEachMOSA(lambda mosa:
-                    0 if f'tm_{mosa}' not in glitchf else \
-                    InterpolatedUnivariateSpline(
-                        glitchf['t'][:], glitchf[f'tm_{mosa}'][:], k=5, ext='const')(self.physics_t)
-                )
-                self.glitch_lasers = ForEachMOSA(lambda mosa:
-                    0 if f'laser_{mosa}' not in glitchf else \
-                    InterpolatedUnivariateSpline(
-                        glitchf['t'][:], glitchf[f'laser_{mosa}'][:], k=5, ext='const')(self.physics_t)
-                )
+                version = glitchf.attrs['version']
+                logger.debug("Using glitch file version %s", version)
+                if version in SpecifierSet('~= 1.0'):
+                    self.glitch_tms = ForEachMOSA(lambda mosa:
+                        0 if f'tm_{mosa}' not in glitchf else \
+                        InterpolatedUnivariateSpline(
+                            glitchf['t'][:], glitchf[f'tm_{mosa}'][:], k=5, ext='const')(self.physics_t)
+                    )
+                    self.glitch_lasers = ForEachMOSA(lambda mosa:
+                        0 if f'laser_{mosa}' not in glitchf else \
+                        InterpolatedUnivariateSpline(
+                            glitchf['t'][:], glitchf[f'laser_{mosa}'][:], k=5, ext='const')(self.physics_t)
+                    )
+                else:
+                    raise ValueError(f"unsupported glitch file version '{version}'")
         elif glitches is None:
             logger.debug("No glitches")
             self.glitch_file = None
-- 
GitLab