Physical quantities/constants/units

class astrophysix.units.unit.Unit(name='', base_unit=None, coeff=1.0, dims=None, descr=None, latex=None)

Dimensional physical unit class

Parameters
  • name (string) – Unit name

  • base_unit (Unit instance) – Composite unit from which this instance should be initialised

  • coeff (float) – dimensionless value of the unit instance.

  • dims (8-tuple of int) – dimension of the unit object expressed in the international unit system (kg, m, s, K, A, mol, rad, cd)

  • descr (string or None) – Unit description

  • latex (string or None) – Unit displayed name (latex format)

Examples

>>> cs_m_s = Unit(name="cs", coeff=340.0, dims=(0, 1, -1, 0, 0, 0, 0, 0), descr="sound speed unit")
>>> print("sound speed = {v:g} m/h".format(v=cs_m_s.express(km/hour)))
sound speed = 1224 km/h
>>>
>>> dens = Unit(name="Msun/kpc^3", base_unit=Msun/kpc**3, descr="Solar mass per cubic kiloparsec",
                latex="{u1:s}.{u2:s}^{{-3}}".format(u1=Msun.latex, u2=kpc.latex))
>>> print(dens)
(6.76957356533e-29 m^-3.kg)
UNKNOWN_PHYSICAL_TYPE = 'unknown'
__eq__(other)

Checks Unit instance equality

Parameters

other (Unit) – other unit instance to compare to

Returns

e – True if Unit.coeff and Unit.dimensions are identical, otherwise False.

Return type

bool

appropriate_unit(nearest_log10=1.0)

Try to find the better suited unit (among available equivalent units to represent this unit).

Parameters

nearest_log10 (float) – log of the nearest value to round to. Default 1.0.

Example

>>> u = 2426.2 * U.ly
>>> bv, bu = u.appropriate_unit()
>>> print("Appropriate unit : 2426.2 ly = {v:g} {bu:s}".format(v=bv, bu=bu.name))
Appropriate unit : 2426.2 ly = 0.743876 kpc
property coeff

Constant value of this unit

classmethod create_unit(name='', base_unit=None, coeff=1.0, dims=None, descr=None, latex=None)

Add a new Unit instance to the registry

Parameters
  • name (string) – Unit name

  • base_unit (Unit instance) – Composite unit from which this instance should be initialised

  • coeff (float) – dimensionless value of the unit instance.

  • dims (8-tuple of int) – dimension of the unit object expressed in the international unit system (kg, m, s, K, A, mol, rad, cd)

  • descr (string or None) – Unit description

  • latex (string or None) – Unit displayed name (latex format)

Raises

ValueError – If the provided name already corresponds to a unit in the registry.

property description

Unit description

property dimensions

Unit dimension array

equivalent_unit_list()

Get the equivalent unit list (with same physical type)

Example

>>> print(U.kg.equivalent_unit_list())
[g : (0.001 kg), t : (1000 kg), mH : (1.66e-27 kg), Msun : (1.9889e+30 kg), Mearth : (5.9722e+24 kg)]
express(unit)

Unit conversion method. Gives the conversion factor of this Unit expressed into another (dimension-compatible) given Unit.

Checks that :

  • the unit param. is also a Unit instance

  • the unit param. is dimension-compatible.

Parameters

unit (Unit) – unit in which the conversion is made

Returns

fact – conversion factor of this unit expressed in unit

Return type

float

Examples

  • Conversion of a kpc expressed in light-years :

    >>> factor = kpc.express(ly)
    >>> print("1 kpc = {fact:f} ly".format(fact=factor))
    1 kpc = 3261.563777 ly
    
  • Conversion of \(1 M_{\odot}\) into kpc/Myr :

    >>> print(Msun.express(kpc/Myr))
    UnitError: Incompatible dimensions between :
    - Msun : (1.9889e+30 kg) (type: mass) and
    - (977792 m.s^-1) (type: velocity)
    
classmethod from_name(unit_name)

Get a Unit from its name in the astrophysix unit registry.

Parameters

unit_name (string) – name of the unit to search.

Raises

AttributeError – if unit_name attribute does not correspond to any unit in the astrophysix unit registry.

identical(other_unit)

Strict unit instance comparison method

Parameters

other_unit (Unit) – other unit to compare to.

Returns

e – True only if other_unit is equals to self AND has identical name/description/LaTex formula. Otherwise returns False.

Return type

bool

info()

Print information about this unit. If any, print the name and description of this unit, then print the value of this unit and the list of equivalent unit contained in the built-in unit registry associated with their conversion factor.

Example

>>> U.kpc.info()
Unit : kpc
----------
Kiloparsec
Value
-----
3.0856775814671917e+19 m
Equivalent units
----------------
* m            :    3.24078e-20 kpc
* um           :    3.24078e-26 kpc
* mm           :    3.24078e-23 kpc
* cm           :    3.24078e-22 kpc
* nm           :    3.24078e-29 kpc
* km           :    3.24078e-17 kpc
* Angstrom     :    3.24078e-30 kpc
* au           :    4.84814e-09 kpc
* pc           :          0.001 kpc
* Mpc          :           1000 kpc
* Gpc          :          1e+06 kpc
* Rsun         :    2.25399e-11 kpc
* ly           :    0.000306601 kpc
is_base_unit()

Checks whether the Unit is a base SI Unit (kg, m, s, K, A, mol, rad, cd).

Returns

b – True only if unit is a base SI unit(kg, m, s, K, A, mol, rad, cd). Otherwise returns False.

Return type

bool

classmethod iterate_units(phys_type=None)

Unit iterator method. Iterates over all units in the astrophysix unit registry.

Parameters

phys_type (string) – Name of the physical quantity type of the units to iterate over. Default None (all physical quantities).

Yields

u (Unit) – unit of the required physical quantity type, if any given.

property latex

Unit displayed name (LaTex format)

property name

Unit name

property physical_type

Get the unit physical type (dimensioned physical quantity).

Returns

t – The name of the physical quantity, or Unit.UNKNOWN_PHYSICAL_TYPE if the physical quantity is unknown.

Return type

string