def test_meta_from_position(igmsp):
# One match
meta = igmsp.meta_from_position((0.0019,17.7737), 1*u.arcsec)
assert len(meta) == 1
# Blank
meta2 = igmsp.meta_from_position((10.038604,55.298477), 1*u.arcsec)
assert meta2 is None
# Multiple sources (insure rank order)
meta3 = igmsp.meta_from_position((0.0055,-1.5), 1*u.deg)
assert len(meta3) == 2
assert np.isclose(meta3['R'][0],meta3['R'][1])
# Multiple meta entries (GGG)
meta4 = igmsp.meta_from_position('001115.23+144601.8', 1*u.arcsec)
assert len(meta4) == 2
assert meta4['R'][0] != meta4['R'][1]
# Multiple but grab closest source
meta5 = igmsp.meta_from_position((0.0055,-1.5), 1*u.deg, max_match=1)
assert len(meta5) == 1
# Groups
meta = igmsp.meta_from_position((2.813500,14.767200), 20*u.deg, groups=['GGG','HD-LLS_DR1'])
for group in meta['GROUP'].data:
assert group in ['GGG', 'HD-LLS_DR1']
# Physical separation
meta6 = igmsp.meta_from_position('001115.23+144601.8', 300*u.kpc)
assert len(meta6) == 2
python类kpc()的实例源码
def test_a_proj_success():
lens = Lens(mass_1=1.0*u.solMass,mass_2=0.1*u.solMass,a_proj=1.0*u.au,
distance=6.*u.kpc)
assert lens.total_mass == 1.1*u.solMass
assert lens.q == 0.1
def distance(self):
"""
*astropy.Quantity*
The distance to the source. May be set as a *float*.
The distance should either be given in pc, or if no unit is
given, the value is assumed to be kpc (*u.kpc*).
"""
return self._distance
def distance(self, new_distance):
if new_distance is None:
self._distance = new_distance
else:
if not isinstance(new_distance, u.Quantity):
self._distance = new_distance * 1000. * u.pc
else:
if (new_distance.unit == "pc") or (new_distance.unit == "kpc"):
self._distance = new_distance
else:
raise u.UnitsError(
'Allowed units for Source distance are "pc" or "kpc"')
def test_nfw_density():
p = NFW_density_profile()
r_s = 100*ytu.kpc
rho_s = 1.0e8*ytu.Msun/ytu.kpc**3
p.set_param_values(r_s=r_s, rho_s=rho_s)
x = r_yt/r_s
assert_allclose(p(r_yt).v, (rho_s/(x*(1.+x)**2)).v)
assert str(p(r_yt).units) == str(rho_s.units)
def test_hernquist_density():
p = hernquist_density_profile()
a = 200.*ytu.kpc
M_0 = 1.0e14*ytu.Msun
p.set_param_values(a=a, M_0=M_0)
x = r_yt/a
assert_allclose(p(r_yt).v, (M_0/(2*np.pi*a**3)/(x*(1.+x)**3)).v)
assert str(p(r_yt).units) == str((M_0/a**3).units)
def test_hernquist_mass():
p = hernquist_mass_profile()
a = 350.*apu.kpc
M_0 = 1.0e15*apu.Msun
p.set_param_values(a=a, M_0=M_0)
assert_allclose(p(r_ap).to("solMass").value, (M_0*r_ap**2/(r_ap+a)**2).value)
def test_beta_model():
p = beta_model_profile()
r_c = 100.*apu.kpc
rho_c = 1.0e-25*apu.g/apu.cm**3
beta = 1.0
p.set_param_values(r_c=r_c, rho_c=rho_c, beta=beta)
assert_allclose(p(r_ap).value, (rho_c*(1.+(r_ap/r_c)**2)**(-1.5*beta)).value)
def test_AM06_temperature():
p = AM06_temperature_profile()
a_c = 60*ytu.kpc
a = 600.*ytu.kpc
c = 0.17
T_0 = 10.*ytu.keV
p.set_param_values(T_0=T_0, a_c=a_c, c=c, a=a)
assert_allclose(p(r_yt).value, (T_0/(1.+r_yt/a)*(c+r_yt/a_c)/(1.+r_yt/a_c)).value)
assert str(p(r_yt).units) == str(T_0.units)
def test_mass_rescaling_yt():
M = 6.0e14*ytu.Msun
R = 1500.0*ytu.kpc
pm = NFW_mass_profile()
pd = NFW_density_profile()
pd.set_param_values(r_s=350*ytu.kpc, rho_s=1.0*ytu.Msun/ytu.kpc**3)
rescale_profile_by_mass(pd, "rho_s", M, R)
pm.set_param_values(**pd.param_values)
assert_allclose(pm(R).in_units("Msun").v, M.v)
def test_mass_rescaling_astropy():
M = 6.0e14*apu.Msun
R = 1500.0*apu.kpc
pm = NFW_mass_profile()
pd = NFW_density_profile()
pd.set_param_values(r_s=350*apu.kpc, rho_s=1.0*apu.Msun/apu.kpc**3)
rescale_profile_by_mass(pd, "rho_s", M, R)
pm.set_param_values(**pd.param_values)
assert_allclose(pm(R).to("Msun").value, M.value)