def test_function(self): # Polarization function is None, should not produce an error axis = Axis("STOKES", "cunit") axis_1d = CoordAxis1D(axis) polarization = PolarizationWCS(axis_1d) wcsvalidator._validate_polarization_wcs(polarization) # Polarization axis function with naxis=1 naxis = int(1) delta = float(2.5) ref_coord = wcs.RefCoord(float(1.0), float(2.0)) axis_1d.function = CoordFunction1D(naxis, delta, ref_coord) polarization = PolarizationWCS(axis_1d) wcsvalidator._validate_polarization_wcs(polarization) # Polarization axis function with naxis>1 naxis = int(3) delta = float(2.5) ref_coord = wcs.RefCoord(float(1.0), float(2.0)) axis_1d.function = CoordFunction1D(naxis, delta, ref_coord) polarization = PolarizationWCS(axis_1d) wcsvalidator._validate_polarization_wcs(polarization) # Polarization axis function with invalid naxis=0 naxis = int(0) delta = float(2.5) ref_coord = wcs.RefCoord(float(1.0), float(2.0)) axis_1d.function = CoordFunction1D(naxis, delta, ref_coord) polarization = PolarizationWCS(axis_1d) with pytest.raises(InvalidWCSError) as ex: wcsvalidator._validate_polarization_wcs(polarization) assert ('Invalid Polarization WCS' in str(ex.value)) assert ('Invalid naxis value' in str(ex.value))
def test_bounds(self): # Polarization bounds is None, should not produce an error axis = Axis("STOKES", "cunit") axis_1d = CoordAxis1D(axis) polarization = PolarizationWCS(axis_1d) wcsvalidator._validate_polarization_wcs(polarization) # Polarization axis bounds contains one valid range start = RefCoord(float(0.9), float(1.1)) end = RefCoord(float(9.9), float(10.1)) p_range = CoordRange1D(start, end) samples = caom_util.TypedList(CoordRange1D, p_range) axis_1d.bounds = CoordBounds1D(samples) polarization = PolarizationWCS(axis_1d) wcsvalidator._validate_polarization_wcs(polarization) # Polarization axis bounds contains more than one valid range start = RefCoord(float(0.9), float(1.1)) end = RefCoord(float(9.9), float(10.1)) p_range = CoordRange1D(start, end) start = RefCoord(float(-8.1), float(-7.9)) end = RefCoord(float(-1.1), float(-0.9)) n_range = CoordRange1D(start, end) samples = caom_util.TypedList(CoordRange1D, p_range, n_range) axis_1d.bounds = CoordBounds1D(samples) polarization = PolarizationWCS(axis_1d) wcsvalidator._validate_polarization_wcs(polarization) # Polarization axis bounds contains one invalid range start = RefCoord(float(0.9), float(1.1)) end = RefCoord(float(10.9), float(11.1)) p_range = CoordRange1D(start, end) samples = caom_util.TypedList(CoordRange1D, p_range) axis_1d.bounds = CoordBounds1D(samples) polarization = PolarizationWCS(axis_1d) with pytest.raises(InvalidWCSError) as ex: wcsvalidator._validate_polarization_wcs(polarization) assert ('Invalid Polarization WCS' in str(ex.value)) assert ('11' in str(ex.value)) # Polarization axis bounds contains more than one invalid range start = RefCoord(float(0.9), float(1.1)) end = RefCoord(float(9.9), float(10.1)) p_range = CoordRange1D(start, end) start = RefCoord(float(-9.1), float(-8.9)) end = RefCoord(float(-1.1), float(-0.9)) n_range = CoordRange1D(start, end) samples = caom_util.TypedList(CoordRange1D, p_range, n_range) axis_1d.bounds = CoordBounds1D(samples) polarization = PolarizationWCS(axis_1d) with pytest.raises(InvalidWCSError) as ex: wcsvalidator._validate_polarization_wcs(polarization) assert ('Invalid Polarization WCS' in str(ex.value)) assert ('-9' in str(ex.value))
def test_range(self): # Polarization range is None, should not produce an error axis = Axis("STOKES", "cunit") axis_1d = CoordAxis1D(axis) polarization = PolarizationWCS(axis_1d) wcsvalidator._validate_polarization_wcs(polarization) # Polarization axis range contains valid positive values start = RefCoord(float(0.9), float(1.1)) end = RefCoord(float(9.9), float(10.1)) p_range = CoordRange1D(start, end) axis_1d.range = p_range polarization = PolarizationWCS(axis_1d) wcsvalidator._validate_polarization_wcs(polarization) # Polarization axis range contains valid negative values start = RefCoord(float(-8.1), float(-7.9)) end = RefCoord(float(-1.1), float(-0.9)) n_range = CoordRange1D(start, end) axis_1d.range = n_range polarization = PolarizationWCS(axis_1d) wcsvalidator._validate_polarization_wcs(polarization) # Polarization axis range contains invalid positive values start = RefCoord(float(0.9), float(1.1)) end = RefCoord(float(10.9), float(11.1)) p_range = CoordRange1D(start, end) axis_1d.range = p_range polarization = PolarizationWCS(axis_1d) with pytest.raises(InvalidWCSError) as ex: wcsvalidator._validate_polarization_wcs(polarization) assert ('Invalid Polarization WCS' in str(ex.value)) assert ('11' in str(ex.value)) # Polarization axis range contains invalid negative values start = RefCoord(float(-9.1), float(-8.9)) end = RefCoord(float(-1.1), float(-0.9)) n_range = CoordRange1D(start, end) axis_1d.range = n_range polarization = PolarizationWCS(axis_1d) with pytest.raises(InvalidWCSError) as ex: wcsvalidator._validate_polarization_wcs(polarization) assert ('Invalid Polarization WCS' in str(ex.value)) assert ('-9' in str(ex.value)) # Polarization axis range contains an invalid value (0) within a range start = RefCoord(float(-8.1), float(-7.9)) end = RefCoord(float(9.9), float(10.1)) range = CoordRange1D(start, end) axis_1d.range = range polarization = PolarizationWCS(axis_1d) with pytest.raises(InvalidWCSError) as ex: wcsvalidator._validate_polarization_wcs(polarization) assert ('Invalid Polarization WCS' in str(ex.value)) assert ('0' in str(ex.value))
def test_augment_artifact_bounds_range_from_blueprint(): test_blueprint = ObsBlueprint(energy_axis=1, time_axis=2, polarization_axis=3, position_axes=(4, 5)) test_blueprint.set('Chunk.energy.axis.range.start.pix', '145.0') test_blueprint.set('Chunk.energy.axis.range.start.val', '-60000.0') test_blueprint.set('Chunk.energy.axis.range.end.pix', '-824.46002') test_blueprint.set('Chunk.energy.axis.range.end.val', '1') test_blueprint.set('Chunk.time.axis.range.start.pix', '145.0') test_blueprint.set('Chunk.time.axis.range.start.val', '-60000.0') test_blueprint.set('Chunk.time.axis.range.end.pix', '-824.46002') test_blueprint.set('Chunk.time.axis.range.end.val', '1') test_blueprint.set('Chunk.polarization.axis.range.start.pix', '145.0') test_blueprint.set('Chunk.polarization.axis.range.start.val', '-60000.0') test_blueprint.set('Chunk.polarization.axis.range.end.pix', '-824.46002') test_blueprint.set('Chunk.polarization.axis.range.end.val', '1') test_blueprint.set('Chunk.position.axis.range.start.coord1.pix', '145.0') test_blueprint.set('Chunk.position.axis.range.start.coord1.val', '-60000.0') test_blueprint.set('Chunk.position.axis.range.end.coord1.pix', '-824.46002') test_blueprint.set('Chunk.position.axis.range.end.coord1.val', '1') test_blueprint.set('Chunk.position.axis.range.start.coord2.pix', '145.0') test_blueprint.set('Chunk.position.axis.range.start.coord2.val', '-60000.0') test_blueprint.set('Chunk.position.axis.range.end.coord2.pix', '-824.46002') test_blueprint.set('Chunk.position.axis.range.end.coord2.val', '1') test_fitsparser = FitsParser(sample_file_4axes, test_blueprint, uri='ad:TEST/test_blueprint') test_chunk = Chunk() test_chunk.energy = SpectralWCS(CoordAxis1D(Axis('WAVE', 'm')), 'TOPOCENT') test_chunk.time = TemporalWCS(CoordAxis1D(Axis('TIME', 'd'))) test_chunk.polarization = PolarizationWCS(CoordAxis1D(Axis('STOKES'))) test_chunk.position = SpatialWCS( CoordAxis2D(Axis('RA', 'deg'), Axis('DEC', 'deg'))) test_fitsparser._try_range_with_blueprint(test_chunk, 0) assert test_chunk.energy.axis.range is not None, \ 'chunk.energy.axis.range should be declared' assert test_chunk.time.axis.range is not None, \ 'chunk.time.axis.range should be declared' assert test_chunk.polarization.axis.range is not None, \ 'chunk.polarization.axis.range should be declared' assert test_chunk.position.axis.range is not None, \ 'chunk.position.axis.range should be declared' ex = _get_from_str_xml(EXPECTED_ENERGY_RANGE_BOUNDS_XML, ObservationReader()._get_spectral_wcs, 'energy') assert ex is not None, \ 'energy string from expected output should be declared' result = get_differences(ex, test_chunk.energy) assert result is None ex = _get_from_str_xml(EXPECTED_TIME_RANGE_BOUNDS_XML, ObservationReader()._get_temporal_wcs, 'time') assert ex is not None, \ 'time string from expected output should be declared' result = get_differences(ex, test_chunk.time) assert result is None ex = _get_from_str_xml(EXPECTED_POL_RANGE_BOUNDS_XML, ObservationReader()._get_polarization_wcs, 'polarization') assert ex is not None, \ 'polarization string from expected output should be declared' result = get_differences(ex, test_chunk.polarization) assert result is None ex = _get_from_str_xml(EXPECTED_POS_RANGE_BOUNDS_XML, ObservationReader()._get_spatial_wcs, 'position') assert ex is not None, \ 'position string from expected output should be declared' result = get_differences(ex, test_chunk.position) assert result is None