Coverage for tests/test_fit_source.py: 100%

23 statements  

« prev     ^ index     » next       coverage.py v7.16.0, created at 2026-09-22 02:34 -0700

1# This file is part of multiprofit. 

2# 

3# Developed for the LSST Data Management System. 

4# This product includes software developed by the LSST Project 

5# (https://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 <https://www.gnu.org/licenses/>. 

21 

22import pytest 

23 

24import lsst.gauss2d.fit as g2f 

25from lsst.multiprofit import ( 

26 ComponentGroupConfig, 

27 GaussianComponentConfig, 

28 ModelConfig, 

29 ModelFitConfig, 

30 SourceConfig, 

31) 

32from lsst.multiprofit.fitting.fit_source import CatalogSourceFitterConfig, CatalogSourceFitterConfigData 

33from lsst.multiprofit.utils import get_params_uniq 

34 

35 

36@pytest.fixture(scope="module") 

37def channels() -> tuple[g2f.Channel]: 

38 """Return dict of generic RGB channels.""" 

39 channels = tuple(g2f.Channel.get(band) for band in ("R", "G", "B")) 

40 return channels 

41 

42 

43@pytest.fixture(scope="module") 

44def fitter_config() -> CatalogSourceFitterConfig: 

45 """Return a default source fitter config.""" 

46 config = CatalogSourceFitterConfig( 

47 config_fit=ModelFitConfig(), 

48 config_model=ModelConfig( 

49 sources={ 

50 "": SourceConfig( 

51 component_groups={ 

52 "": ComponentGroupConfig( 

53 components_gauss=({"gauss": GaussianComponentConfig()}), 

54 ) 

55 } 

56 ), 

57 }, 

58 ), 

59 fit_psmodel_final=True, 

60 ) 

61 return config 

62 

63 

64@pytest.fixture(scope="module") 

65def fitter_config_data(channels, fitter_config) -> CatalogSourceFitterConfigData: 

66 """Return a default source fitter.""" 

67 config_data = CatalogSourceFitterConfigData(channels=channels, config=fitter_config) 

68 return config_data 

69 

70 

71def test_fitter_config_data(fitter_config_data): 

72 """Test that the source fitter cached data are sensible.""" 

73 parameters = fitter_config_data.parameters 

74 assert len(parameters) > 0 

75 sources, priors = fitter_config_data.sources_priors 

76 same = (p1 is p2 for p1, p2 in zip(parameters.values(), get_params_uniq(sources[0], fixed=False))) 

77 assert all(same)