Beispiel #1
0
    def test_getspaxel_matches_file_db_remote(self, galaxy):

        if galaxy.bintype != 'SPX':
            pytest.skip()

        modelcube_file = ModelCube(filename=galaxy.modelpath,
                                   bintype=galaxy.bintype,
                                   template=galaxy.template,
                                   release=galaxy.release)
        modelcube_db = ModelCube(mangaid=galaxy.mangaid,
                                 bintype=galaxy.bintype,
                                 template=galaxy.template,
                                 release=galaxy.release)
        modelcube_api = ModelCube(mangaid=galaxy.mangaid,
                                  mode='remote',
                                  bintype=galaxy.bintype,
                                  template=galaxy.template,
                                  release=galaxy.release)

        assert modelcube_file.data_origin == 'file'
        assert modelcube_db.data_origin == 'db'
        assert modelcube_api.data_origin == 'api'

        idx = galaxy.spaxel['specidx']
        flux = galaxy.spaxel['model_flux']
        ivar = galaxy.spaxel['model_ivar']
        mask = galaxy.spaxel['model_mask']

        xx_cen = galaxy.spaxel['x_cen']
        yy_cen = galaxy.spaxel['y_cen']

        try:
            spaxel_getspaxel_file = modelcube_file.getSpaxel(x=xx_cen,
                                                             y=yy_cen)
            spaxel_getspaxel_db = modelcube_db.getSpaxel(x=xx_cen, y=yy_cen)
            spaxel_getspaxel_api = modelcube_api.getSpaxel(x=xx_cen, y=yy_cen)
        except MarvinError as ee:
            assert 'do not correspond to a valid binid' in str(ee)
            pytest.skip()

        assert spaxel_getspaxel_file.binned_flux.value[idx] == pytest.approx(
            flux, abs=1e-6)
        assert spaxel_getspaxel_db.binned_flux.value[idx] == pytest.approx(
            flux, abs=1e-6)
        assert spaxel_getspaxel_api.binned_flux.value[idx] == pytest.approx(
            flux, abs=1e-6)

        assert spaxel_getspaxel_file.binned_flux.ivar[idx] == pytest.approx(
            ivar)
        assert spaxel_getspaxel_db.binned_flux.ivar[idx] == pytest.approx(ivar)
        assert spaxel_getspaxel_api.binned_flux.ivar[idx] == pytest.approx(
            ivar)

        assert spaxel_getspaxel_file.binned_flux.mask[idx] == pytest.approx(
            mask)
        assert spaxel_getspaxel_db.binned_flux.mask[idx] == pytest.approx(mask)
        assert spaxel_getspaxel_api.binned_flux.mask[idx] == pytest.approx(
            mask)
Beispiel #2
0
    def test_getspaxel_db_only_model(self):

        model_cube = ModelCube(plateifu=self.plateifu)
        spaxel = model_cube.getSpaxel(x=1,
                                      y=2,
                                      properties=False,
                                      spectrum=False)
        self._test_getspaxel(spaxel)
        self.assertIsNone(spaxel.cube)
        self.assertIsNone(spaxel.spectrum)
        self.assertIsNone(spaxel.maps)
        self.assertEqual(len(spaxel.properties), 0)
Beispiel #3
0
    def test_getspaxel_matches_file_db_remote(self):

        self._update_release('MPL-5')
        self.assertEqual(marvin.config.release, 'MPL-5')

        modelcube_file = ModelCube(filename=self.filename)
        modelcube_db = ModelCube(plateifu=self.plateifu)
        modelcube_api = ModelCube(plateifu=self.plateifu, mode='remote')

        self.assertEqual(modelcube_file.data_origin, 'file')
        self.assertEqual(modelcube_db.data_origin, 'db')
        self.assertEqual(modelcube_api.data_origin, 'api')

        xx = 12
        yy = 5
        spec_idx = 200

        spaxel_slice_file = modelcube_file[yy, xx]
        spaxel_slice_db = modelcube_db[yy, xx]
        spaxel_slice_api = modelcube_api[yy, xx]

        flux_result = 0.016027471050620079
        ivar_result = 361.13595581054693
        mask_result = 33

        self.assertAlmostEqual(spaxel_slice_file.model_flux.flux[spec_idx],
                               flux_result)
        self.assertAlmostEqual(spaxel_slice_db.model_flux.flux[spec_idx],
                               flux_result)
        self.assertAlmostEqual(spaxel_slice_api.model_flux.flux[spec_idx],
                               flux_result)

        self.assertAlmostEqual(spaxel_slice_file.model_flux.ivar[spec_idx],
                               ivar_result,
                               places=5)
        self.assertAlmostEqual(spaxel_slice_db.model_flux.ivar[spec_idx],
                               ivar_result,
                               places=3)
        self.assertAlmostEqual(spaxel_slice_api.model_flux.ivar[spec_idx],
                               ivar_result,
                               places=3)

        self.assertAlmostEqual(spaxel_slice_file.model_flux.mask[spec_idx],
                               mask_result)
        self.assertAlmostEqual(spaxel_slice_db.model_flux.mask[spec_idx],
                               mask_result)
        self.assertAlmostEqual(spaxel_slice_api.model_flux.mask[spec_idx],
                               mask_result)

        xx_cen = -5
        yy_cen = -12

        spaxel_getspaxel_file = modelcube_file.getSpaxel(x=xx_cen, y=yy_cen)
        spaxel_getspaxel_db = modelcube_db.getSpaxel(x=xx_cen, y=yy_cen)
        spaxel_getspaxel_api = modelcube_api.getSpaxel(x=xx_cen, y=yy_cen)

        self.assertAlmostEqual(spaxel_getspaxel_file.model_flux.flux[spec_idx],
                               flux_result)
        self.assertAlmostEqual(spaxel_getspaxel_db.model_flux.flux[spec_idx],
                               flux_result)
        self.assertAlmostEqual(spaxel_getspaxel_api.model_flux.flux[spec_idx],
                               flux_result)

        self.assertAlmostEqual(spaxel_getspaxel_file.model_flux.ivar[spec_idx],
                               ivar_result,
                               places=5)
        self.assertAlmostEqual(spaxel_getspaxel_db.model_flux.ivar[spec_idx],
                               ivar_result,
                               places=3)
        self.assertAlmostEqual(spaxel_getspaxel_api.model_flux.ivar[spec_idx],
                               ivar_result,
                               places=3)

        self.assertAlmostEqual(spaxel_getspaxel_file.model_flux.mask[spec_idx],
                               mask_result)
        self.assertAlmostEqual(spaxel_getspaxel_db.model_flux.mask[spec_idx],
                               mask_result)
        self.assertAlmostEqual(spaxel_getspaxel_api.model_flux.mask[spec_idx],
                               mask_result)
Beispiel #4
0
    def test_getspaxel_api(self):

        model_cube = ModelCube(plateifu=self.plateifu, mode='remote')
        spaxel = model_cube.getSpaxel(x=1, y=2)
        self._test_getspaxel(spaxel)
Beispiel #5
0
    def test_getspaxel_db(self):

        model_cube = ModelCube(plateifu=self.plateifu)
        spaxel = model_cube.getSpaxel(x=1, y=2)
        self._test_getspaxel(spaxel)
Beispiel #6
0
    def test_getspaxel_file(self):

        model_cube = ModelCube(filename=self.filename)
        spaxel = model_cube.getSpaxel(x=1, y=2)
        self._test_getspaxel(spaxel)