diff --git a/lvcnrpy/format/specs.py b/lvcnrpy/format/specs.py index 26631ce93417a2955ffce00508e3761ca3016d15..f8710df33a72c459b451cc2f2b0b9173dd67887f 100644 --- a/lvcnrpy/format/specs.py +++ b/lvcnrpy/format/specs.py @@ -924,6 +924,9 @@ class PhaseSense(InterfieldSpec): # Determine sense from middle of pre-merger waveform phase = np.array([sim['phase_l2_m2/X'][:], sim['phase_l2_m2/Y'][:]]) t0 = phase[0][0]*(3.0/4.0) + if t0 >= 0: + self.invalidMsg = "no (2,2) phase before 0M" + return err.InvalidInterfields(self) t1 = t0*(1.0/3.0) X = np.arange(t0, t1, 0.1) Y = IUS(*phase, k=5)(X) diff --git a/lvcnrpy/test/test_lvcnrcheck.py b/lvcnrpy/test/test_lvcnrcheck.py index 20a73357d7fd7758839b878facdbc88d0af31a2c..369b281c7ffb4e8f6d73065f29012ec494e9419f 100644 --- a/lvcnrpy/test/test_lvcnrcheck.py +++ b/lvcnrpy/test/test_lvcnrcheck.py @@ -1898,3 +1898,29 @@ class TestPhaseSense(TestInterfield): (output, returncode) = helper.lvcnrcheck(['-f', '3', self.f.name], returncode=True) assert output.strip() == self.output assert returncode == 1 + + def test_invalid_phase_zero_inspiral(self): + self.setOutput( + ('- [INVALID FIELDS] phase-sense ' + '(Field dependencies are invalid)')) + + nr = h5.File(self.f.name) + nr['phase_l2_m2']['X'][:] -= nr['phase_l2_m2']['X'][0] + nr.close() + + (output, returncode) = helper.lvcnrcheck(['-f', '3', self.f.name], returncode=True) + assert output.strip() == self.output + assert returncode == 1 + + def test_invalid_phase_positive_inspiral(self): + self.setOutput( + ('- [INVALID FIELDS] phase-sense ' + '(Field dependencies are invalid)')) + + nr = h5.File(self.f.name) + nr['phase_l2_m2']['X'][:] += 10.0 - nr['phase_l2_m2']['X'][0] + nr.close() + + (output, returncode) = helper.lvcnrcheck(['-f', '3', self.f.name], returncode=True) + assert output.strip() == self.output + assert returncode == 1