import numpy as np
import scipy.constants as constants
# njit cache status
# Physical constants
[docs]
clight = constants.speed_of_light
# Mathematical constants
[docs]
sig_2_fwhm = 2 * np.sqrt(2 * np.log(2))
# frequency units
[docs]
freq_units = ["Hz", "kHz", "MHz", "GHz", "THz"]
# From Hz to unit
[docs]
freq_factors = [1, 1e3, 1e6, 1e9, 1e12]
# Length units
[docs]
length_units = ["km", "mi", "m", "yd", "ft", "in", "cm", "mm", "um", "mils"]
# From m to unit
[docs]
length_factors = [
1e3,
1609.34,
1.0,
0.9144,
0.3048,
0.0254,
1e-2,
1e-3,
1e-6,
25.4 / 1e6,
]
# Trigonometric units
[docs]
trigo_units = ["rad", "deg", "hour", "asec", "amin", "masec", "uasec"]
# from rad to unit
[docs]
trigo_factors = [
1.0,
constants.pi / 180.0,
constants.pi / 12.0,
constants.pi / 180.0 / 3.6e3,
constants.pi / 180.0 / 60.0,
constants.pi / 180.0 / 3.6e6,
constants.pi / 180.0 / 3.6e9,
]
# Time units
[docs]
time_units = ["nsec", "usec", "msec", "sec", "min", "hour", "day"]
# from sec to unit
[docs]
time_factors = [1e-9, 1e-6, 1e-3, 1.0, 60.0, 3600.0, 86400.0]
[docs]
unit_dict = {
"length": length_units,
"trigonometric": trigo_units,
"time": time_units,
"frequency": freq_units,
}
[docs]
fact_dict = {
"length": length_factors,
"trigonometric": trigo_factors,
"time": time_factors,
"frequency": freq_factors,
}
# Trigonometric unit conversions
[docs]
twopi = 2.0 * constants.pi
[docs]
fourpi = 4.0 * constants.pi
# https://github.com/casacore/casacore/blob/dbf28794ef446bbf4e6150653dbe404379a3c429/measures/Measures/Stokes.h
[docs]
pol_codes_RL = np.array([5, 6, 7, 8]) # 'RR','RL','LR','LL'
[docs]
pol_codes_XY = np.array([9, 10, 11, 12]) # ['XX','XY','YX','YY']
[docs]
pol_str = np.array(
["0", "I", "Q", "U", "V", "RR", "RL", "LR", "LL", "XX", "XY", "YX", "YY"]
)
# possible complex splits:
[docs]
possible_splits = ["cartesian", "polar"]
# Plot convenience
[docs]
plot_types = ["deviation", "phase", "ancillary", "all"]
[docs]
minimum_xdtree_version = "0.10.1"