Coverage for tests / test_estimate_photoz_task.py: 50%
34 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-04-18 08:45 +0000
« prev ^ index » next coverage.py v7.13.5, created at 2026-04-18 08:45 +0000
1# This file is part of meas_photoz_base
2#
3# Developed for the LSST Data Management System.
4# This product includes software developed by the LSST Project
5# (http://www.lsst.org).
6# See the COPYRIGHT file at the top-level directory of this distribution
7# for details of code ownership.
8#
9# This program is free software: you can redistribute it and/or modify
10# it under the terms of the GNU General Public License as published by
11# the Free Software Foundation, either version 3 of the License, or
12# (at your option) any later version.
13#
14# This program is distributed in the hope that it will be useful,
15# but WITHOUT ANY WARRANTY; without even the implied warranty of
16# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17# GNU General Public License for more details.
18#
19# You should have received a copy of the GNU General Public License
20# along with this program. If not, see <http://www.gnu.org/licenses/>.
23import numpy as np
24import pytest
26from lsst.meas.photoz.base.estimate_photoz_task import EstimatePhotozAlgoConfigBase, EstimatePhotozAlgoTask
29class EstimatePhotozAlgoConfigTest(EstimatePhotozAlgoConfigBase):
30 """A half-complete photo-z algo class."""
32 @classmethod
33 def stage_name(cls) -> str:
34 return "Test"
37@pytest.fixture(scope="module")
38def fluxes():
39 """Return logarithmically-spaced fluxes."""
40 return 10 ** np.linspace(0, 4, 100)
43@pytest.fixture(scope="module")
44def flux_errors(fluxes):
45 """Return sqrt(N) errors on fluxes."""
46 return np.sqrt(fluxes)
49@pytest.fixture(scope="module")
50def magnitudes(fluxes):
51 """Return AB mags of fluxes."""
52 return -2.5 * np.log10(fluxes) + 31.4
55@pytest.fixture(scope="module")
56def magnitude_errors(fluxes, flux_errors):
57 """Return magnitude errors from fluxes."""
58 return flux_errors / (fluxes * 0.4 * np.log(10))
61def test_flux_to_mag(fluxes, magnitudes):
62 """Test flux to magnitude conversions."""
63 mags_convert = EstimatePhotozAlgoTask._flux_to_mag(fluxes, 31.4, np.nan)
64 assert np.allclose(mags_convert, magnitudes, atol=1e-10, rtol=1e-12)
67def test_flux_err_to_mag_err(fluxes, flux_errors, magnitude_errors):
68 """Test flux error to magnitude error conversions."""
69 mags_convert = EstimatePhotozAlgoTask._flux_err_to_mag_err(fluxes, flux_errors, mag_conv=np.log(10) * 0.4)
70 assert np.allclose(mags_convert, magnitude_errors, atol=1e-10, rtol=1e-12)
73def test_algo_config():
74 """Test default initialization of base config class."""
75 config = EstimatePhotozAlgoConfigBase()
76 config.validate()
77 with pytest.raises(NotImplementedError):
78 config.stage_name()
79 config = EstimatePhotozAlgoConfigTest()
80 config.validate()
81 with pytest.raises(NotImplementedError):
82 config.estimator_class()