Closed philipp128 closed 2 years ago
Describe the bug The method schechter_smf (here) in skypy.galaxies._schechter.py accepts the parameters m_star and 'alpha' as a callables.
schechter_smf
skypy.galaxies._schechter.py
m_star
However, an error is returned such that a callable is not accepted at the moment.
To Reproduce Steps to reproduce the behavior: 1) Run:
import numpy as np from skypy.galaxies import schechter_smf from astropy.cosmology import FlatLambdaCDM from astropy.modeling.models import Linear1D, Exponential1D from astropy.units import Quantity redshift_range = [0,2] m_min = 10**7 m_max = 10**14 cosmology = FlatLambdaCDM(H0=70, Om0=0.3) sky_area = Quantity(1.27, "deg2") phi_star = np.exp(-5.215 - 1.675 * 0) M_star = Exponential1D(10**10.626, np.log(10)*1/0.095) alpha = 0.357 ### no evolution allowed redshift, mass = schechter_smf(redshift_range, M_star, phi_star, alpha, m_min, m_max, sky_area, cosmology)
2) The following error is returned:
TypeError Traceback (most recent call last) <ipython-input-6-e4a8c8eb2786> in <module> 26 27 print("Check M_star callable") ---> 28 redshift, mass = schechter_smf(redshift_range, M_star, phi_star, alpha, m_min, m_max, sky_area, cosmology) 29 print(len(redshift)) /Applications/anaconda3/lib/python3.7/site-packages/astropy/units/decorators.py in wrapper(*func_args, **func_kwargs) 232 # Call the original function with any equivalencies in force. 233 with add_enabled_equivalencies(self.equivalencies): --> 234 return_ = wrapped_function(*func_args, **func_kwargs) 235 if wrapped_signature.return_annotation not in (inspect.Signature.empty, None): 236 return return_.to(wrapped_signature.return_annotation) /Applications/anaconda3/lib/python3.7/site-packages/skypy/galaxies/_schechter.py in schechter_smf(redshift, m_star, phi_star, alpha, m_min, m_max, sky_area, cosmology, noise) 138 139 # sample galaxy mass for redshifts --> 140 m = schechter_smf_mass(z, alpha, m_star, m_min, m_max) 141 142 return z, m /Applications/anaconda3/lib/python3.7/site-packages/skypy/galaxies/stellar_mass.py in schechter_smf_mass(redshift, alpha, m_star, m_min, m_max, size, resolution) 68 69 # convert m_min, m_max to units of m_star ---> 70 x_min = m_min / m_star 71 x_max = m_max / m_star 72 TypeError: unsupported operand type(s) for /: 'int' and 'Exponential1D'
Expected behavior No error but the redshift z and mass m should be returned
z
m
Desktop (please complete the following information):
Additional context The problem is that the @dependent_argument decorator is missing. Compare to schechter_lf calling schechter_lf_magnitude (here)
@dependent_argument
schechter_lf
schechter_lf_magnitude
One should add decorator to schechter_smf_mass.
schechter_smf_mass
Describe the bug The method
schechter_smf
(here) inskypy.galaxies._schechter.py
accepts the parametersm_star
and 'alpha' as a callables.However, an error is returned such that a callable is not accepted at the moment.
To Reproduce Steps to reproduce the behavior: 1) Run:
2) The following error is returned:
Expected behavior No error but the redshift
z
and massm
should be returnedDesktop (please complete the following information):
Additional context The problem is that the
@dependent_argument
decorator is missing. Compare toschechter_lf
callingschechter_lf_magnitude
(here)