コード例 #1
0
ファイル: tfstep.py プロジェクト: hpparvi/opents
 def _init_p_limb_darkening(self):
     pld = concatenate([
         [PParameter(f'q1', 'q1 coefficient', '', UP(0, 1), bounds=(0, 1)),
          PParameter(f'q2', 'q2 coefficient', '', UP(0, 1), bounds=(0, 1))]
         for i, pb in enumerate(self.passbands)])
     self.ps.add_passband_block('ldc', 2, self.npb, pld)
     self._sl_ld = self.ps.blocks[-1].slice
     self._start_ld = self.ps.blocks[-1].start
コード例 #2
0
ファイル: tfstep.py プロジェクト: hpparvi/opents
 def _init_p_orbit(self):
     """Orbit parameter initialisation.
     """
     porbit = [
         GParameter('tc',  'zero epoch',       'd',      NP(0.0,  0.1), (-inf, inf)),
         GParameter('p',   'period',           'd',      NP(1.0, 1e-5), (0,    inf)),
         GParameter('rho', 'stellar density',  'g/cm^3', UP(0.1, 25.0), (0,    inf)),
         GParameter('g',   'grazing parameter', 'R_s',   UP(0.0,  1.0), (0,      1))]
     self.ps.add_global_block('orbit', porbit)
コード例 #3
0
 def _init_p_planet(self):
     ps = self.ps
     pk2 = [
         PParameter('k2_true', 'true_area_ratio', 'A_s',
                    UP(0.10**2, 0.75**2), (0.10**2, 0.75**2)),
         PParameter('k2_app', 'apparent_area_ratio', 'A_s',
                    UP(0.10**2, 0.50**2), (0.10**2, 0.50**2))
     ]
     ps.add_passband_block('k2', 1, 2, pk2)
     self._pid_k2 = repeat(ps.blocks[-1].start, self.npb)
     self._start_k2 = ps.blocks[-1].start
     self._sl_k2 = ps.blocks[-1].slice
     self.add_prior(lambda pv: where(pv[:, 5] < pv[:, 4], 0, -inf))
コード例 #4
0
 def _init_parameters(self):
     self.ps = ParameterSet()
     ppc = [
         GParameter('ab', 'Bond albedo', '', UP(0, 1), (0, 1)),
         GParameter('mp', 'log10 planet mass', 'MJup',
                    UP(log10(0.1), log10(300)), (0, inf)),
         GParameter('ms', 'Star mass', 'MSun', NP(1.0, 0.1), (0, inf)),
         GParameter('teffh', 'Host effective temperature', '',
                    UP(2000, 10000), (0, inf)),
         GParameter('teffc', 'Companion effective temperature', '',
                    UP(500, 10000), (0, inf)),
         GParameter('bl', 'Baseline level', '', NP(1, 0.005), (0, inf))
     ]
     self.ps.add_global_block('phase_curve', ppc)
     self.ps.freeze()
コード例 #5
0
ファイル: tfstep.py プロジェクト: hpparvi/opents
 def init_parameters(self):
     """Baseline parameter initialisation.
     """
     fptp = self.lpf.ofluxa.ptp()
     bls = []
     bls.append(LParameter(f'c_sin', f'sin phase', '', UP(0.0, 1.0), bounds=(0, 1)))
     for i in range(self.n):
         bls.append(LParameter(f'a_sin_{i}', f'sin {i} amplitude', '', UP(0, fptp), bounds=(0, inf)))
     self.lpf.ps.thaw()
     self.lpf.ps.add_global_block(self.name, bls)
     self.lpf.ps.freeze()
     self.pv_slice = self.lpf.ps.blocks[-1].slice
     self.pv_start = self.lpf.ps.blocks[-1].start
     setattr(self.lpf, f"_sl_{self.name}", self.pv_slice)
     setattr(self.lpf, f"_start_{self.name}", self.pv_start)
コード例 #6
0
    def __init__(self,
                 name: str,
                 fname: Union[Path, str],
                 zero_epoch: Union[float, UFloat],
                 period: Union[float, UFloat],
                 nsamples: int = 2,
                 bldur: float = 0.1,
                 trdur: float = 0.04,
                 use_pdc: bool = True):

        if isinstance(zero_epoch, float):
            zero_epoch: UFloat = ufloat(zero_epoch, 1e-3)

        if isinstance(period, float):
            period: UFloat = ufloat(period, 1e-5)

        super().__init__(name,
                         fname,
                         zero_epoch=zero_epoch.n,
                         period=period.n,
                         nsamples=nsamples,
                         bldur=bldur,
                         trdur=trdur,
                         use_pdc=use_pdc)

        self.set_prior('zero_epoch', NP(zero_epoch.n, 3 * zero_epoch.s))
        self.set_prior('period', NP(period.n, 3 * period.s))
        self.set_prior('k2_true', UP(0.1**2, 0.75**2))
コード例 #7
0
    def __init__(self,
                 name: str,
                 flux_type: str,
                 use_ldtk: bool = False,
                 nsamples: int = 2,
                 nlegendre: int = 0,
                 bldur: float = 0.1,
                 trdur: float = 0.04):

        assert flux_type.lower() in (
            'sap', 'pdc'), "Flux type needs to be either 'sap' or 'pdc'"
        super().__init__(name,
                         tess_file,
                         zero_epoch.n,
                         period.n,
                         nsamples=nsamples,
                         nlegendre=nlegendre,
                         bldur=bldur,
                         trdur=trdur,
                         use_pdc=(flux_type.lower() == 'pdc'),
                         separate_noise=True)

        self.result_dir = Path('results')
        self.set_prior('zero_epoch',
                       NP(zero_epoch.n - self.bjdrefi, 3 * zero_epoch.s))
        self.set_prior('period', NP(period.n, 3 * period.s))
        self.set_prior('k2_true', UP(0.1**2, 0.75**2))
        if use_ldtk:
            self.add_ldtk_prior(star_teff,
                                star_logg,
                                star_z,
                                passbands=(tess, ))
コード例 #8
0
    def _init_p_rv(self):
        self.ps.thaw()
        ps = self.ps
        prv = [
            GParameter(f'rv_shift_{self.rvis[i]}',
                       f'systemic velocity {self.rvis[i]}', 'm/s',
                       NP(0.0, 0.1), (-inf, inf))
            for i in range(len(self.times))
        ]
        ps.add_global_block('rv_shifts', prv)
        self._start_rvs = ps.blocks[-1].start
        self._sl_rvs = ps.blocks[-1].slice

        prv = [
            GParameter(f'rv_err_{self.rvis[i]}', 'additional rv error', 'm/s',
                       UP(0.0, 1.0), (-inf, inf))
            for i in range(len(self.times))
        ]
        ps.add_global_block('rv_errors', prv)
        self._start_rv_err = ps.blocks[-1].start
        self._sl_rv_err = ps.blocks[-1].slice

        prv = []
        for i in range(1, self.nplanets + 1):
            prv.append(
                GParameter(f'rv_k_{i}', f'rv semiamplitude {i}', 'm/s',
                           UP(0.0, 1.0), (0, inf)))
        ps.add_global_block('rv_semiamplitudes', prv)
        self._start_rvk = ps.blocks[-1].start
        self._sl_rvk = ps.blocks[-1].slice

        psl = [
            GParameter('rv_slope', 'linear rv slope', 'm/s', NP(0.0, 1.0),
                       (-inf, inf))
        ]
        ps.add_global_block('rv_slope', psl)
        self._start_rv_slope = ps.blocks[-1].start
        self._sl_rv_slope = ps.blocks[-1].slice
        self.ps.freeze()

        pnames = "rv_k_{} tc_{} p_{} secw_{} sesw_{}".split()
        self.pids = zeros((self.nplanets, 5), 'int')
        for ipl in range(self.nplanets):
            for ip, p in enumerate(pnames):
                name = p.format(ipl + 1)
                self.pids[ipl, ip] = self.ps.names.index(name)
コード例 #9
0
 def _init_parameters(self):
     self.ps = ps = ParameterSet([])
     pp = []
     for i in range(1, self.nplanets + 1):
         pp.extend([
             GParameter(f'tc_{i}', f'zero epoch {i}', 'd', NP(0.0, 0.1),
                        (-inf, inf)),
             GParameter(f'p_{i}', f'period {i}', 'd', NP(1.0, 1e-5),
                        (0, inf)),
             GParameter(f'secw_{i}', f'sqrt(e) cos(w) {i}', '',
                        UP(-1.0, 1.0), (-1, 1)),
             GParameter(f'sesw_{i}', f'sqrt(e) sin(w) {i}', '',
                        UP(-1.0, 1.0), (-1, 1)),
         ])
     ps.add_global_block('planets', pp)
     self._start_pl = ps.blocks[-1].start
     self._sl_pl = ps.blocks[-1].slice
コード例 #10
0
ファイル: tmpclpf.py プロジェクト: shashankdholakia/PyTransit
 def _init_p_orbit(self):
     """Orbit parameter initialisation.
     """
     porbit = [
         GParameter('rho', 'stellar_density', 'g/cm^3', UP(0.1, 25.0),
                    (0, inf))
     ]
     self.ps.add_global_block('orbit', porbit)
コード例 #11
0
ファイル: tmpclpf.py プロジェクト: shashankdholakia/PyTransit
 def _init_p_planet(self):
     ps = self.ps
     pp = [
         GParameter('ctess', 'tess_contamination', '', UP(0.0, 0.99),
                    (0, 1))
     ]
     for i in range(1, self.nplanets + 1):
         pp.extend([
             GParameter(f'tc_{i}', f'zero_epoch_{i}', 'd', NP(0.0, 0.1),
                        (-inf, inf)),
             GParameter(f'p_{i}', f'period_{i}', 'd', NP(1.0, 1e-5),
                        (0, inf)),
             GParameter(f'b_{i}', f'impact_parameter_{i}', 'R_s',
                        UP(0.0, 1.0), (0, inf)),
             GParameter(f'k2_true_{i}', f'true_area_ratio_{i}', 'A_s',
                        UP(0.02**2, 0.1**2), (0.02**2, 0.1**2))
         ])
     ps.add_global_block('planets', pp)
     self._start_pl = ps.blocks[-1].start
     self._sl_pl = ps.blocks[-1].slice
コード例 #12
0
 def init_parameters(self):
     name = self.name
     pgp = [
         LParameter(f'{name}_loge_{i}',
                    f'{name} log10 sigma {i}',
                    '',
                    UP(-4, 0),
                    bounds=(-inf, inf)) for i in self.global_noise_ids
     ]
     self.lpf.ps.thaw()
     self.lpf.ps.add_global_block(self.name, pgp)
     self.lpf.ps.freeze()
     self.pv_slice = self.lpf.ps.blocks[-1].slice
     self.pv_start = self.lpf.ps.blocks[-1].start
     setattr(self.lpf, f"_sl_{name}", self.pv_slice)
     setattr(self.lpf, f"_start_{name}", self.pv_start)
コード例 #13
0
    def set_prior(self, parameter, prior, *nargs) -> None:
        if isinstance(parameter, str):
            descriptions = self.ps.descriptions
            names = self.ps.names
            if parameter in descriptions:
                parameter = descriptions.index(parameter)
            elif parameter in names:
                parameter = names.index(parameter)
            else:
                params = ', '.join([f"{ln} ({sn})" for ln, sn in zip(self.ps.descriptions, self.ps.names)])
                raise ValueError(f'Parameter "{parameter}" not found from the parameter set: {params}')

        if isinstance(prior, str):
            if prior.lower() in ['n', 'np', 'normal']:
                prior = NP(nargs[0], nargs[1])
            elif prior.lower() in ['u', 'up', 'uniform']:
                prior = UP(nargs[0], nargs[1])
            else:
                raise ValueError(f'Unknown prior "{prior}". Allowed values are (N)ormal and (U)niform.')

        self.ps[parameter].prior = prior