distanceModulus¶
- utilipy.astro.distanceModulus(arg, A=<Quantity 0. mag>, obs=True, *, unit: typing.Optional[astropy.units.core.Unit] = None, to_value: bool = False, equivalencies: typing.Sequence = [], decompose: typing.Union[bool, typing.Sequence] = False, assumed_units: dict = {'A': Unit("mag")}, _skip_decorator: bool = False, **kw) Any[source]¶
Distance Modulus.
\[DM = 5 log10(d / 10) + A\]- Parameters
- d: array_like, optional
no units to parsecs
- A: Quantity array_like, optional
extinction in magnitudes (default \(0 \rm{mag}\))
- obs: bool
(default True goes to \(mobs - M\)) whether to return (\(mobs - M\)) or (\(mtrue - M\)) .. note:: don’t change unless specifically required
- Returns
- DM: Quantity array_like
default MAG
- Other Parameters
- unitastropy Unit or Quantity or str
sets the unit for the function evaluation. (default None) must be astropy-compatible unit specification. equivalent to
func(*args, **kw).to(unit)if None, skips unit conversion. function arguments override decorator and function annotation arguments- to_valuebool
whether to return
.to_value(unit)(default False) seeastropy.units.Quantity.to_valuefunction arguments override decorator and function annotation arguments- equivalencieslist
equivalencies for any units provided (default []) used by
.to()and.to_value()function arguments override decorator and function annotation arguments- decomposebool or list
Decompose the unit into base units, can provide base as list. (default []) function arguments override decorator and function annotation arguments if bool, then do/don’t decompose if list, bases for
.decompose(bases=[])will first decompose, then apply unit, to_value, equivalenciesDecomposing then converting wastes time, since
to(unit, equivalencies)internally does conversions. The only use for combining decompose with other params is with:unit=None, to_value=True, equivalencies=[], decompose=[bases]
since this will decompose to desired bases then return the value
Note
for things which are not (u.Unit, u.core.IrreducibleUnit), tries wrapping in Unit() this allows things such as:
>>> x = 10 * u.km * u.s >>> bases = [u.Unit(2 * u.km), u.s] >>> x.decompose(bases=bases) <Quantity 5. 2 km s>
(this would normally return an error)
- assumed_units: dict
dictionary of default units (default {})
>>> from utilipy.units.decorators import QuantityInputOutput >>> dfu = {'x': u.km} >>> x = 10 >>> y = 20*u.km >>> @QuantityInputOutput.as_decorator(assumed_units=dfu) ... def add(x, y): ... return x + y >>> add(x, y) <Quantity 30.0 km>
Notes
\(mtrue - M = 5 log10(d / 10)\) if there is line-of-sight extinction \(mobs = mtrue + A\) \(mobs - M = 5 log10(d / 10) + A\) \(true - M = 5 log10(d / 10) - A\)