Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
-------
a : ufloat or float
The rear frame offset.
b : ufloat or float
The fork offset.
c : ufloat or float
The steer axis distance.
'''
# extract the values
h1, h2, h3, h4, h5 = h
d1, d2, d3, d4, d = d
# get the perpendicular distances
a = h1 + h2 - h3 + .5 * d1 - .5 * d2
b = h4 - .5 * d3 - h5 + .5 * d4
c = umath.sqrt(-(a - b)**2 + (d + .5 * (d2 + d3))**2)
return a, b, c
)
eps2 = ufloat(
self.model.EPS2.quantity.value,
self.model.EPS2.uncertainty.value,
)
tasc = ufloat(
# This is a time in MJD
self.model.TASC.quantity.mjd,
self.model.TASC.uncertainty.to(u.d).value,
)
pb = ufloat(
self.model.PB.quantity.to(u.d).value,
self.model.PB.uncertainty.to(u.d).value,
)
s += "Conversion from ELL1 parameters:\n"
ecc = um.sqrt(eps1 ** 2 + eps2 ** 2)
s += "ECC = {:P}\n".format(ecc)
om = um.atan2(eps1, eps2) * 180.0 / np.pi
if om < 0.0:
om += 360.0
s += "OM = {:P}\n".format(om)
t0 = tasc + pb * om / 360.0
s += "T0 = {:SP}\n".format(t0)
s += pint.utils.ELL1_check(
self.model.A1.quantity,
ecc.nominal_value,
self.resids.rms_weighted(),
self.toas.ntoas,
outstring=True,
)
s += "\n"
mpsr=1.4 * u.solMass,
)
s += "Companion mass min, median (assuming Mpsr = 1.4 Msun) = {:.4f}, {:.4f} Msun\n".format(
mcmin, mcmed
)
if hasattr(self.model, "SINI"):
try:
# Put this in a try in case SINI is UNSET or an illegal value
if not self.model.SINI.frozen:
si = ufloat(
self.model.SINI.quantity.value,
self.model.SINI.uncertainty.value,
)
s += "From SINI in model:\n"
s += " cos(i) = {:SP}\n".format(um.sqrt(1 - si ** 2))
s += " i = {:SP} deg\n".format(
um.asin(si) * 180.0 / np.pi
)
psrmass = pint.utils.pulsar_mass(
self.model.PB.quantity,
self.model.A1.quantity,
self.model.M2.quantity,
np.arcsin(self.model.SINI.quantity),
)
s += "Pulsar mass (Shapiro Delay) = {}".format(psrmass)
except:
pass
return s
* 6 : uncertainties'''
mathlib = 1
if ANYMATH:
import math
import numpy as np
import scipy
import sympy
import mpmath
import uncertainties.umath as umath
expfuncs = {1: math.exp, 2: np.exp, 3: scipy.exp, 4: mpmath.exp, 5:sympy.exp, 6: umath.exp}
logfuncs = {1: math.log, 2: np.log, 3: scipy.log, 4: mpmath.log, 5:sympy.log, 6: umath.log}
log10funcs = {1: math.log10, 2: np.log10, 3: scipy.log10, 4: mpmath.log, 5:lambda x : sympy.log(x, 10), 6: umath.log10} # Sympy doesn't support log10
sqrtfuncs = {1: math.sqrt, 2: np.sqrt, 3: scipy.sqrt, 4: mpmath.sqrt, 5:sympy.sqrt, 6: umath.sqrt}
sinfuncs = {1: math.sin, 2: np.sin, 3: scipy.sin, 4: mpmath.sin, 5:sympy.sin, 6: umath.sin}
coshfuncs = {1: math.cosh, 2: np.cosh, 3: scipy.cosh, 4: mpmath.cosh, 5:sympy.cosh, 6: umath.cosh}
sinhfuncs = {1: math.sinh, 2: np.sinh, 3: scipy.sinh, 4: mpmath.sinh, 5:sympy.sinh, 6: umath.sinh}
pifuncs = {1: math.pi, 2: np.pi, 3: scipy.pi, 4: mpmath.pi, 5: sympy.pi, 6: math.pi} # uncertainties doesn't support pi
pi = pifuncs[mathlib]
def exp(x):
return expfuncs[mathlib](x)
def log(x):
return logfuncs[mathlib](x)
def log10(x):
return log10funcs[mathlib](x)
def sin(x):
-------
a : ufloat or float
The rear frame offset.
b : ufloat or float
The fork offset.
c : ufloat or float
The steer axis distance.
'''
# extract the values
h1, h2, h3, h4, h5 = h
d1, d2, d3, d4, d = d
# get the perpendicular distances
a = h1 + h2 - h3 + .5 * d1 - .5 * d2
b = h4 - .5 * d3 - h5 + .5 * d4
c = umath.sqrt(-(a - b)**2 + (d + .5 * (d2 + d3)))
return a, b, c