Coverage for pesummary/gw/cosmology.py: 100.0%

23 statements  

« prev     ^ index     » next       coverage.py v7.4.4, created at 2024-05-02 08:42 +0000

1# Licensed under an MIT style license -- see LICENSE.md 

2 

3from pesummary import conf 

4from astropy import cosmology as cosmo 

5from astropy.cosmology import parameters 

6 

7__author__ = ["Charlie Hoy <charlie.hoy@ligo.org>"] 

8_astropy_cosmologies = [i.lower() for i in parameters.available] 

9available_cosmologies = _astropy_cosmologies + ["planck15_lal"] 

10available_cosmologies += [ 

11 _cosmology + "_with_riess2019_h0" for _cosmology in available_cosmologies 

12] 

13 

14 

15def get_cosmology(cosmology=conf.cosmology): 

16 """Return the cosmology that is being used 

17 

18 Parameters 

19 ---------- 

20 cosmology: str 

21 name of a known cosmology 

22 """ 

23 if cosmology.lower() not in available_cosmologies: 

24 raise ValueError( 

25 "Unrecognised cosmology {}. Available cosmologies are {}".format( 

26 cosmology, ", ".join(available_cosmologies) 

27 ) 

28 ) 

29 elif cosmology.lower() in _astropy_cosmologies: 

30 ind = [ 

31 num for num, name in enumerate(_astropy_cosmologies) if 

32 name == cosmology.lower() 

33 ][0] 

34 return getattr(cosmo, list(parameters.available)[ind]) 

35 elif cosmology.lower() == "planck15_lal": 

36 return Planck15_lal_cosmology() 

37 elif "_with_riess2019_h0" in cosmology.lower(): 

38 base_cosmology = cosmology.lower().split("_with_riess2019_h0")[0] 

39 return Riess2019_H0_cosmology(base_cosmology) 

40 

41 

42def Planck15_lal_cosmology(): 

43 """Return the Planck15 cosmology coded up in lalsuite 

44 """ 

45 return cosmo.LambdaCDM(H0=67.90, Om0=0.3065, Ode0=0.6935) 

46 

47 

48def Riess2019_H0_cosmology(base_cosmology): 

49 """Return the base cosmology but with the Riess2019 H0 value. For details 

50 see https://arxiv.org/pdf/1903.07603.pdf. 

51 

52 Parameters 

53 ---------- 

54 base_cosmology: str 

55 name of cosmology to use as the base 

56 """ 

57 _base_cosmology = get_cosmology(base_cosmology) 

58 return cosmo.LambdaCDM( 

59 H0=74.03, Om0=_base_cosmology.Om0, Ode0=_base_cosmology.Ode0 

60 )