From c6d3d893de37f6dda8b9f4c0760675eff40aaedb Mon Sep 17 00:00:00 2001 From: Arpit Jain Date: Wed, 17 Jun 2026 03:33:54 +0900 Subject: [PATCH] Use absolute values in TimeCOAPoly check Signed-off-by: Arpit Jain --- sarpy/io/complex/sicd_elements/validation_checks.py | 2 +- .../io/complex/sicd_elements/test_validation_checks.py | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/sarpy/io/complex/sicd_elements/validation_checks.py b/sarpy/io/complex/sicd_elements/validation_checks.py index 3d6ae007..59ebde93 100644 --- a/sarpy/io/complex/sicd_elements/validation_checks.py +++ b/sarpy/io/complex/sicd_elements/validation_checks.py @@ -422,7 +422,7 @@ def _pfa_check_stdeskew(PFA, Grid) -> bool: # If so, it logs a validity error and sets the return value to False. if Grid.TimeCOAPoly is not None: timecoa_poly = Grid.TimeCOAPoly.get_array(dtype='float64') - if timecoa_poly.shape == (1, 1) or numpy.all(timecoa_poly.flatten()[1:] < 1e-6): + if timecoa_poly.shape == (1, 1) or numpy.all(numpy.abs(timecoa_poly.flatten()[1:]) < 1e-6): PFA.log_validity_error( 'PFA.STDeskew.Applied is True, and the Grid.TimeCOAPoly is essentially constant.') cond = False diff --git a/tests/io/complex/sicd_elements/test_validation_checks.py b/tests/io/complex/sicd_elements/test_validation_checks.py index 7e214ba8..cd249be3 100644 --- a/tests/io/complex/sicd_elements/test_validation_checks.py +++ b/tests/io/complex/sicd_elements/test_validation_checks.py @@ -70,6 +70,14 @@ def test_timecoa_poly_constant(self): grid = DummyGrid(timecoa_poly=timecoa_poly) self.assertFalse(_pfa_check_stdeskew(pfa, grid)) + def test_timecoa_poly_negative_nontrivial_terms(self): + stdeskew = DummySTDeskew(applied=True) + pfa = DummyPFA(stdeskew=stdeskew) + arr = np.array([[1.0, -1e-2], [0.0, 0.0]]) + timecoa_poly = DummyPoly(arr) + grid = DummyGrid(timecoa_poly=timecoa_poly) + self.assertTrue(_pfa_check_stdeskew(pfa, grid)) + def test_row_deltakcoa_and_stdsphasepoly_agree(self): arr = np.array([[1.0, 2.0], [3.0, 4.0]]) stdeskew = DummySTDeskew(applied=True, stds_phase_poly=DummyPoly(arr)) @@ -104,4 +112,4 @@ def test_stdsphasepoly_none(self): self.assertTrue(_pfa_check_stdeskew(pfa, grid)) if __name__ == "__main__": - unittest.main() \ No newline at end of file + unittest.main()