Source code for tape.analysis.structure_function.schmidt_2010.calculator
import numpy as np
from tape.analysis.structure_function.base_argument_container import StructureFunctionArgumentContainer
from tape.analysis.structure_function.base_calculator import StructureFunctionCalculator
[docs]
SQRT_PI_OVER_2 = np.sqrt(np.pi / 2.0)
[docs]
class Schmidt2010StructureFunctionCalculator(StructureFunctionCalculator):
"""This class implements the structure function calculation described in
Eqn. 2 of Schmidt et al. 2010, 2010ApJ...714.1194S [https://arxiv.org/abs/1002.2642]
Schmidt et al. 2010, Erratum 2010ApJ...721.1941S
`SF(delta_t) = mean(sqrt(pi/2) * abs(delta_flux_i,j) - sqrt(err_i^2 + err_j^2))`
Note that the return value is structure function squared.
Additional references:
Graham et al. 2014MNRAS.439..703G [https://arxiv.org/abs/1401.1785]
"""
[docs]
def calculate(self):
values_to_be_binned = [
SQRT_PI_OVER_2 * np.abs(lc.sample_d_fluxes) - np.sqrt(lc.sample_sum_squared_error)
for lc in self._lightcurves
]
dts, sfs = self._calculate_binned_statistics(sample_values=values_to_be_binned)
sfs = [i**2 for i in sfs]
return dts, sfs
@staticmethod
[docs]
def name_id() -> str:
return "schmidt_2010"
@staticmethod
[docs]
def expected_argument_container() -> type:
return StructureFunctionArgumentContainer