def test_augment_observation(): test_obs_blueprint = ObsBlueprint(position_axes=(1, 2)) test_obs_blueprint.set('Observation.target.name', 'CGPS Mosaic MA1') test_obs_blueprint.set('Observation.target.standard', False) test_obs_blueprint.set('Observation.telescope.name', 'DRAO-ST') test_obs_blueprint.set('Observation.instrument.name', 'DRAO-ST') test_obs_blueprint.set('Observation.telescope.geoLocationX', '-2100330.87517') test_obs_blueprint.set('Observation.telescope.geoLocationY', '-3694247.82445') test_obs_blueprint.set('Observation.telescope.geoLocationZ', '4741018.33097') test_obs_blueprint.set('Plane.dataProductType', 'cube') test_obs_blueprint.set('Artifact.productType', 'info') test_obs_blueprint.set('Artifact.releaseType', 'data') test_obs_blueprint.set('Plane.calibrationLevel', '2') test_fitsparser = FitsParser(sample_file_4axes_obs, test_obs_blueprint) test_fitsparser.blueprint = test_obs_blueprint test_obs = SimpleObservation('collection', 'MA1_DRAO-ST', Algorithm('exposure')) test_fitsparser.augment_observation(test_obs, sample_file_4axes_uri, product_id='HI-line') assert test_obs is not None assert test_obs.planes is not None assert len(test_obs.planes) == 1 test_plane = test_obs.planes['HI-line'] assert test_plane.artifacts is not None assert len(test_plane.artifacts) == 1 test_artifact = test_plane.artifacts[sample_file_4axes_uri] assert test_artifact is not None test_part = test_artifact.parts['0'] # remove the chunk bit, as it's part of other tests - # results in <caom2:chunks/> xml output test_part.chunks.pop() output = BytesIO() ow = ObservationWriter(False, False, "caom2", obs_reader_writer.CAOM20_NAMESPACE) ow.write(test_obs, output) result = output.getvalue().decode('UTF-8') output.close() expected = _get_obs(EXPECTED_OBS_XML) actual = _get_obs(result) diff_result = get_differences(expected, actual, 'Observation') assert diff_result is None
def test_augment_observation(test_file, test_file_uri): # logging.basicConfig(level=logging.DEBUG, stream=sys.stdout) test_obs_blueprint = ObsBlueprint(position_axis=(1, 2)) test_obs_blueprint.set('Observation.target.name', 'CGPS Mosaic MA1') test_obs_blueprint.set('Observation.telescope.name', 'DRAO-ST') test_obs_blueprint.set('Observation.instrument.name', 'DRAO-ST') test_obs_blueprint.set('Observation.telescope.geoLocationX', '-2100330.87517') test_obs_blueprint.set('Observation.telescope.geoLocationY', '-3694247.82445') test_obs_blueprint.set('Observation.telescope.geoLocationZ', '4741018.33097') test_obs_blueprint.set('Plane.dataProductType', 'cube') test_obs_blueprint.set('Plane.calibrationLevel', '2') test_fitsparser = FitsParser(test_file, test_obs_blueprint) test_fitsparser.blueprint = test_obs_blueprint test_obs = Observation('collection', 'MA1_DRAO-ST', Algorithm('exposure')) test_fitsparser.augment_observation(test_obs, test_file_uri, product_id='HI-line') assert test_obs is not None assert test_obs.planes is not None assert len(test_obs.planes) == 1 test_plane = test_obs.planes['HI-line'] assert test_plane.artifacts is not None assert len(test_plane.artifacts) == 1 test_artifact = test_plane.artifacts[test_file_uri] assert test_artifact is not None test_part = test_artifact.parts['0'] # remove the chunk bit, as it's part of other tests - # results in <caom2:chunks/> xml output test_part.chunks.pop() output = BytesIO() ow = ObservationWriter(False, False, "caom2", obs_reader_writer.CAOM20_NAMESPACE) ow.write(test_obs, output) result = output.getvalue().decode('UTF-8') output.close() compare = re.sub(r'caom2:id=".*"', 'caom2:id=""', result) assert compare == EXPECTED_OBS_XML # , result
def test_update_fits_headers(): # The rules for the values: # all upper case - a FITS keyword # has an '{' or an '}' - a FITS keyword with an index # # The rules for the keys: # has a '.' - a config keyword # all upper case - a FITS keyword hdr1 = fits.Header() hdr2 = fits.Header() hdr3 = fits.Header() hdr4 = fits.Header() hdr5 = fits.Header() hdr6 = fits.Header() hdr7 = fits.Header() test_blueprint = ObsBlueprint() test_blueprint.configure_time_axis(3) test_parser = FitsParser(src=[hdr1, hdr2, hdr3, hdr4, hdr5, hdr6, hdr7]) test_uri = 'ad:CFHT/1709071g.fits.gz' update_blueprint(test_blueprint, test_uri, config={}, defaults={}, overrides={}) assert test_parser.blueprint._get('Observation.type') == \ (['OBSTYPE'], None), 'unmodified blueprint' test_defaults = { 'CTYPE1': 'RA---TAN', 'CTYPE2': 'DEC--TAN', 'CTYPE3': 'TIME', 'CTYPE4': 'WAVE', 'CDELT4': '1.2', 'CRVAL4': '32' } update_blueprint(test_blueprint, test_uri, config={}, defaults=test_defaults, overrides={}) assert test_blueprint._get('Chunk.position.axis.axis1.ctype') == \ (['CTYPE1'], 'RA---TAN'), 'default value assigned' assert test_blueprint._get('Chunk.position.axis.axis2.ctype') == \ (['CTYPE2'], 'DEC--TAN'), 'default value assigned' assert test_blueprint._get('Chunk.time.axis.axis.ctype') == \ (['CTYPE3'], 'TIME'), 'default value assigned, value all upper case' # print(test_parser.blueprint) test_defaults = { 'CTYPE1': 'RA--TAN', 'CTYPE2': 'DEC--TAN', 'CTYPE3': 'TIME', 'plane.dataProductType': 'image', 'provenance.producer': 'CFHT', 'provenance.project': 'STANDARD PIPELINE' } test_config = load_config(java_config_file) test_overrides = load_config(override_file) update_blueprint(test_blueprint, test_uri, test_config, test_defaults, test_overrides) assert test_blueprint._get('Plane.dataProductType') == \ 'image', 'default value assigned to configuration' assert test_blueprint._get('Plane.provenance.producer') == \ (['ORIGIN'], 'CFHT'), \ 'default value assigned to configuration, all upper-case' assert test_blueprint._get('Plane.provenance.project') == \ (['ADC_ARCH'], 'STANDARD PIPELINE'), \ 'default value assigned to configuration, with white-space' assert test_blueprint._get('Observation.type') == 'OBJECT', \ 'default value over-ridden, value all upper case' assert test_blueprint._get( 'Chunk.position.axis.function.refCoord.coord1.val', 0) == '210.551666667', 'override HDU 0' assert test_blueprint._get( 'Chunk.position.axis.function.refCoord.coord1.val', 1) == \ '210.551666667', 'override HDU 1' assert test_blueprint._get( 'Chunk.position.axis.function.refCoord.coord1.val', 2) == '210.508333333', 'override HDU 2' assert test_blueprint._get( 'Chunk.position.axis.function.refCoord.coord1.val', 3) == '210.898333333', 'override HDU 3' assert test_blueprint._get( 'Chunk.position.axis.function.refCoord.coord1.val', 4) == '210.942083333', 'override HDU 4' assert test_blueprint._get( 'Chunk.position.axis.function.refCoord.coord1.val', 5) == '0.000000000', 'override HDU 5' test_parser.blueprint = test_blueprint assert test_parser._headers[0]['CRVAL1'] == 210.551666667, 'override HDU 0' assert test_parser._headers[1]['CRVAL1'] == 210.551666667, 'override HDU 1' assert test_parser._headers[2]['CRVAL1'] == 210.508333333, 'override HDU 2' assert test_parser._headers[3]['CRVAL1'] == 210.898333333, 'override HDU 3' assert test_parser._headers[4]['CRVAL1'] == 210.942083333, 'override HDU 4' assert test_parser._headers[5]['CRVAL1'] == 0.000000000, 'override HDU 5' assert test_parser._headers[0][ 'CRVAL3'] == 56789.429806900000, 'override HDU 0' # this will fail because of CompositeObservation.members errors assert len(test_parser._errors) == 0, test_parser._errors
def test_get_from_list(): test_fitsparser = FitsParser(sample_file_4axes) test_fitsparser.blueprint = ObsBlueprint() result = test_fitsparser._get_from_list('Observation.intent', 0, ObservationIntentType.SCIENCE) assert result == ObservationIntentType.SCIENCE