PyTransit 2.6.4__tar.gz → 2.6.5__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pytransit-2.6.4 → pytransit-2.6.5}/PKG-INFO +1 -1
- {pytransit-2.6.4 → pytransit-2.6.5}/PyTransit.egg-info/PKG-INFO +1 -1
- {pytransit-2.6.4 → pytransit-2.6.5}/pyproject.toml +1 -1
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/lpf/rvlpf.py +16 -9
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/models/eclipse_model.py +1 -70
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/models/ldtkldm.py +12 -4
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/models/numba/udmodel.py +1 -2
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/models/roadrunner/model_trspec.py +12 -15
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/models/roadrunner/opmodel.py +8 -1
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/models/roadrunner/tsmodel.py +5 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/LICENSE +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/MANIFEST.in +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/PyTransit.egg-info/SOURCES.txt +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/PyTransit.egg-info/dependency_links.txt +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/PyTransit.egg-info/requires.txt +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/PyTransit.egg-info/top_level.txt +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/README.md +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/__init__.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/contamination/__init__.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/contamination/contamination.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/contamination/data/spectra.h5 +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/contamination/data/transmission.nc +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/contamination/filter.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/contamination/instrument.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/contamination/plotting.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/limb_darkening.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/lpf/__init__.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/lpf/baselines/__init__.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/lpf/baselines/legendrebaseline.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/lpf/baselines/linearbaseline.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/lpf/cntlpf.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/lpf/eclipselpf.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/lpf/loglikelihood/__init__.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/lpf/loglikelihood/celeriteloglikelihood.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/lpf/loglikelihood/clloglikelihood.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/lpf/loglikelihood/fmcloglikelihood.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/lpf/loglikelihood/logisticloglikelihood.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/lpf/loglikelihood/multiceleriteloglikelihood.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/lpf/loglikelihood/wnloglikelihood.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/lpf/logposteriorfunction.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/lpf/lpf.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/lpf/mclpf.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/lpf/mptlpf.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/lpf/ocllpf.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/lpf/ocltdvlpf.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/lpf/oclttvlpf.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/lpf/phasecurvelpf.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/lpf/tdvlpf.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/lpf/tess/__init__.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/lpf/tess/ctesslpf.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/lpf/tess/tessttvlpf.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/lpf/tess/tgclpf.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/lpf/tess/tgcmplpf.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/lpf/tess/tmpclpf.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/lpf/tesslpf.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/lpf/tessoclttvlpf.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/lpf/transitanalysis.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/lpf/transitlpf.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/lpf/ttvlpf.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/models/__init__.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/models/gdmodel.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/models/general.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/models/ldmodel.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/models/limb_darkening/__init__.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/models/limb_darkening/general.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/models/limb_darkening/linear.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/models/limb_darkening/nonlinear.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/models/limb_darkening/power_2.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/models/limb_darkening/quadratic.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/models/limb_darkening/quadratic_tri.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/models/limb_darkening/uniform.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/models/ma_chromosphere.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/models/ma_quadratic.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/models/ma_quadratic_cl.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/models/ma_uniform.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/models/ma_uniform_cl.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/models/numba/__init__.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/models/numba/gdmodel.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/models/numba/general_nb.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/models/numba/ldmodels.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/models/numba/ldtkldm.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/models/numba/ma_chromosphere_nb.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/models/numba/ma_quadratic_nb.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/models/numba/ma_uniform_nb.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/models/numba/phasecurves.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/models/numba/qpower2_nb.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/models/numba/rrmodel.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/models/numba/spmodel.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/models/opencl/ma_quadratic.cl +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/models/opencl/ma_uniform.cl +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/models/opencl/orbits.cl +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/models/opencl/qpower2.cl +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/models/osmodel.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/models/qpower2.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/models/qpower2_cl.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/models/roadrunner/__init__.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/models/roadrunner/common.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/models/roadrunner/ecintersection.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/models/roadrunner/model.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/models/roadrunner/model_full.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/models/roadrunner/model_simple.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/models/roadrunner/opmodel_full.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/models/roadrunner/rrmodel.cl +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/models/roadrunner/rrmodel.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/models/roadrunner/rrmodel_cl.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/models/transitmodel.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/models/uniform.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/orbits/__init__.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/orbits/orbits.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/orbits/orbits_py.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/orbits/taylor_z.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/param/__init__.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/param/parameter.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/param/prior.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/param/utilities.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/stars/__init__.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/stars/btsettl.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/stars/data/avg_bt_settl.fits +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/stars/data/avg_husser2013.fits +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/stars/husser2013.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/utils/__init__.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/utils/astrometry.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/utils/constants.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/utils/de.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/utils/downsample.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/utils/eclipses.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/utils/io/__init__.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/utils/io/lightcurvedata.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/utils/keplerlc.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/utils/mdwarfs.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/utils/misc.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/utils/mocklc.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/utils/octasphere.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/utils/phasecurves.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/utils/physics.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/utils/rv.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/utils/tess.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/pytransit/version.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/setup.cfg +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/tests/test_contamination.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/tests/test_ma_quadratic.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/tests/test_ma_quadratic_nb.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/tests/test_qpower2_nb.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/tests/test_uniform_model.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/tests/test_uniform_model_nb.py +0 -0
- {pytransit-2.6.4 → pytransit-2.6.5}/tests/test_z.py +0 -0
|
@@ -57,7 +57,7 @@ def lnlike_normal(o, m, e):
|
|
|
57
57
|
|
|
58
58
|
|
|
59
59
|
class RVLPF(LogPosteriorFunction):
|
|
60
|
-
def __init__(self, name: str, nplanets: int, times, rvs, rves, rvis=None):
|
|
60
|
+
def __init__(self, name: str, nplanets: int, times, rvs, rves, rvis=None, slope_order: int = 1):
|
|
61
61
|
super().__init__(name)
|
|
62
62
|
|
|
63
63
|
def transform_input(a):
|
|
@@ -77,7 +77,7 @@ class RVLPF(LogPosteriorFunction):
|
|
|
77
77
|
rvis = zeros(len(times), 'int')
|
|
78
78
|
|
|
79
79
|
self._tref = concatenate(times).mean()
|
|
80
|
-
self.rvm: RVModel = RVModel(self, nplanets, times, rvs, rves, rvis)
|
|
80
|
+
self.rvm: RVModel = RVModel(self, nplanets, times, rvs, rves, rvis, slope_order=slope_order)
|
|
81
81
|
|
|
82
82
|
def model(self, pv):
|
|
83
83
|
return self.rvm.rv_model(pv)
|
|
@@ -103,7 +103,7 @@ class RVModel:
|
|
|
103
103
|
|
|
104
104
|
def __init__(self, lpf: LogPosteriorFunction, nplanets: int,
|
|
105
105
|
times, rvs: Iterable, rves: Iterable, rvis: Iterable,
|
|
106
|
-
tref: Optional[float] = None):
|
|
106
|
+
tref: Optional[float] = None, slope_order: int = 1):
|
|
107
107
|
self.lpf = lpf
|
|
108
108
|
|
|
109
109
|
if hasattr(lpf, 'nplanets'):
|
|
@@ -125,6 +125,7 @@ class RVModel:
|
|
|
125
125
|
self._rva = None
|
|
126
126
|
self._rvea = None
|
|
127
127
|
self._rv_ids = None
|
|
128
|
+
self.slope_order = slope_order
|
|
128
129
|
|
|
129
130
|
self.setup_data(times, rvs, rves, rvis)
|
|
130
131
|
|
|
@@ -183,7 +184,7 @@ class RVModel:
|
|
|
183
184
|
self._start_rvk = ps.blocks[-1].start
|
|
184
185
|
self._sl_rvk = ps.blocks[-1].slice
|
|
185
186
|
|
|
186
|
-
psl = [GParameter('
|
|
187
|
+
psl = [GParameter(f'rv_slope_{i}', 'rv slope', '', NP(0.0, 1.0), (-inf, inf)) for i in range(1, self.slope_order+1)]
|
|
187
188
|
ps.add_global_block('rv_slope', psl)
|
|
188
189
|
self._start_rv_slope = ps.blocks[-1].start
|
|
189
190
|
self._sl_rv_slope = ps.blocks[-1].slice
|
|
@@ -202,7 +203,10 @@ class RVModel:
|
|
|
202
203
|
|
|
203
204
|
def rv_slope(self, pvp, times):
|
|
204
205
|
pvp = atleast_2d(pvp)
|
|
205
|
-
|
|
206
|
+
slope = times * pvp[:, self._start_rv_slope : self._start_rv_slope + 1]
|
|
207
|
+
if self.slope_order == 2:
|
|
208
|
+
slope += times**2 * pvp[:, self._start_rv_slope + 1: self._start_rv_slope + 2]
|
|
209
|
+
return slope
|
|
206
210
|
|
|
207
211
|
def rv_model(self, pvp, times=None, planets=None, add_sv=True, add_slope=True):
|
|
208
212
|
times = self._timea if times is None else times - self._tref
|
|
@@ -264,10 +268,10 @@ class RVModel:
|
|
|
264
268
|
rv_time = linspace(self._timea.min() - 1, self._timea.max() + 1, num=ntimes) + self._tref
|
|
265
269
|
|
|
266
270
|
if pvp is None:
|
|
267
|
-
rv_model = self.rv_model(pv, rv_time, add_sv=False)
|
|
271
|
+
rv_model = self.rv_model(pv, rv_time, add_sv=False, add_slope=slope)
|
|
268
272
|
rv_model_limits = None
|
|
269
273
|
else:
|
|
270
|
-
rv_percentiles = percentile(self.rv_model(pvp, rv_time, add_sv=False), [50, 16, 84, 2.5, 97.5], 0)
|
|
274
|
+
rv_percentiles = percentile(self.rv_model(pvp, rv_time, add_sv=False, add_slope=slope), [50, 16, 84, 2.5, 97.5], 0)
|
|
271
275
|
rv_model = rv_percentiles[0]
|
|
272
276
|
rv_model_limits = rv_percentiles[1:]
|
|
273
277
|
|
|
@@ -279,10 +283,13 @@ class RVModel:
|
|
|
279
283
|
colors = len(self.rvis) * ['k']
|
|
280
284
|
if markers is None:
|
|
281
285
|
markers = len(self.rvis) * ['.']
|
|
282
|
-
rvs = self._rva - self.rv_shifts(pv)
|
|
286
|
+
rvs = self._rva - self.rv_shifts(pv)
|
|
287
|
+
if not slope:
|
|
288
|
+
rvs -= squeeze(self.rv_slope(pv, self._timea))
|
|
289
|
+
|
|
283
290
|
for iid, instrument in enumerate(self.rvis):
|
|
284
291
|
m = self._rv_ids == iid
|
|
285
|
-
axs[0].errorbar(self._timea[m] + self._tref, rvs[m], self._rvea[m],
|
|
292
|
+
axs[0].errorbar(self._timea[m] + self._tref, rvs[m], self._rvea[m], marker=markers[iid], ls='',
|
|
286
293
|
c=colors[iid], ms=4, label=instrument)
|
|
287
294
|
axs[1].errorbar(self._timea[m] + self._tref, self._rva[m] - squeeze(self.rv_model(pv))[m], self._rvea[m],
|
|
288
295
|
fmt='ok', ms=4)
|
|
@@ -38,7 +38,7 @@ class EclipseModel(TransitModel):
|
|
|
38
38
|
Parameters
|
|
39
39
|
----------
|
|
40
40
|
k
|
|
41
|
-
Radius ratio(s) either as a single float
|
|
41
|
+
Radius ratio(s) either as a single float or a 1D vector.
|
|
42
42
|
t0
|
|
43
43
|
Transit center(s) as a float or a 1D vector.
|
|
44
44
|
p
|
|
@@ -97,72 +97,3 @@ class EclipseModel(TransitModel):
|
|
|
97
97
|
flux = 1.0 + (flux - 1.0) / k**2
|
|
98
98
|
|
|
99
99
|
return squeeze(flux)
|
|
100
|
-
|
|
101
|
-
def evaluate_ps(self, k: float, t0: float, p: float, a: float, i: float, e: float = 0., w: float = 0., fr: Optional[float] = None) -> ndarray:
|
|
102
|
-
"""Evaluate the transit model for a set of scalar parameters.
|
|
103
|
-
|
|
104
|
-
Parameters
|
|
105
|
-
----------
|
|
106
|
-
k : array-like
|
|
107
|
-
Radius ratio(s) either as a single float or an 1D array.
|
|
108
|
-
t0 : float
|
|
109
|
-
Transit center as a float.
|
|
110
|
-
p : float
|
|
111
|
-
Orbital period as a float.
|
|
112
|
-
a : float
|
|
113
|
-
Orbital semi-major axis divided by the stellar radius as a float.
|
|
114
|
-
i : float
|
|
115
|
-
Orbital inclination(s) as a float.
|
|
116
|
-
e : float, optional
|
|
117
|
-
Orbital eccentricity as a float.
|
|
118
|
-
w : float, optional
|
|
119
|
-
Argument of periastron as a float.
|
|
120
|
-
fr : float, optional
|
|
121
|
-
Planet-star flux ratio as a float.
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
Notes
|
|
125
|
-
-----
|
|
126
|
-
This version of the `evaluate` method is optimized for calculating a single transit model (such as when using a
|
|
127
|
-
local optimizer). If you want to evaluate the model for a large number of parameters simultaneously, use either
|
|
128
|
-
`evaluate` or `evaluate_pv`.
|
|
129
|
-
|
|
130
|
-
Returns
|
|
131
|
-
-------
|
|
132
|
-
ndarray
|
|
133
|
-
Modelled flux as a 1D ndarray.
|
|
134
|
-
"""
|
|
135
|
-
if self.time is None:
|
|
136
|
-
raise ValueError("Need to set the data before calling the transit model.")
|
|
137
|
-
|
|
138
|
-
k = asarray(k)
|
|
139
|
-
flux = uniform_model_s(self.time, k, t0, p, a, i, e, w, self.lcids, self.pbids, self.nsamples, self.exptimes, zsign=-1.0)
|
|
140
|
-
if fr is not None:
|
|
141
|
-
flux = 1.0 + (flux - 1.0) * fr
|
|
142
|
-
return squeeze(flux)
|
|
143
|
-
|
|
144
|
-
def evaluate_pv(self, pvp: ndarray, fr = None) -> ndarray:
|
|
145
|
-
"""Evaluate the transit model for a 2D parameter array.
|
|
146
|
-
|
|
147
|
-
Parameters
|
|
148
|
-
----------
|
|
149
|
-
pvp
|
|
150
|
-
Parameter array with a shape `(npv, npar)` where `npv` is the number of parameter vectors, and each row
|
|
151
|
-
contains a set of parameters `[k, t0, p, a, i, e, w]`. The radius ratios can also be given per passband,
|
|
152
|
-
in which case the row should be structured as `[k_0, k_1, k_2, ..., k_npb, t0, p, a, i, e, w]`.
|
|
153
|
-
|
|
154
|
-
Notes
|
|
155
|
-
-----
|
|
156
|
-
This version of the `evaluate` method is optimized for calculating several models in parallel, such as when
|
|
157
|
-
using *emcee* for MCMC sampling.
|
|
158
|
-
|
|
159
|
-
Returns
|
|
160
|
-
-------
|
|
161
|
-
ndarray
|
|
162
|
-
Modelled flux either as a 1D or 2D ndarray.
|
|
163
|
-
"""
|
|
164
|
-
assert self.time is not None, "Need to set the data before calling the transit model."
|
|
165
|
-
flux = uniform_model_pv(self.time, pvp, self.lcids, self.pbids, self.nsamples, self.exptimes, zsign=-1.0)
|
|
166
|
-
if fr is not None:
|
|
167
|
-
flux = 1.0 + (flux - 1.0) * fr
|
|
168
|
-
return squeeze(flux)
|
|
@@ -18,7 +18,7 @@ from typing import Tuple, Optional, Union
|
|
|
18
18
|
from pathlib import Path
|
|
19
19
|
|
|
20
20
|
from numba import njit
|
|
21
|
-
from numpy import zeros, interp, pi, ndarray, linspace, meshgrid, transpose
|
|
21
|
+
from numpy import zeros, interp, pi, ndarray, linspace, meshgrid, transpose, asarray, newaxis, errstate
|
|
22
22
|
from scipy.interpolate import interpn, interpnd, RegularGridInterpolator as RGI
|
|
23
23
|
|
|
24
24
|
from .ldmodel import LDModel
|
|
@@ -67,13 +67,21 @@ class LDTkLDModel(LDModel):
|
|
|
67
67
|
self.logg0, self.dlogg, self.nlogg = loggs[0], loggs[1]-loggs[0], self.sc.client.nlogg
|
|
68
68
|
self.metal0, self.dmetal, self.nmetal = zs[0], zs[1]-zs[0], self.sc.client.nz
|
|
69
69
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
70
|
+
with errstate(divide='ignore'):
|
|
71
|
+
self.ps = self.sc.create_profiles(teff=teffg.ravel(), logg=loggg.ravel(), metal=zg.ravel())
|
|
72
|
+
self.ps.resample(mu=self.mu)
|
|
73
|
+
self.profiles = transpose(self.ps._ldps.copy(), axes=(1, 0, 2)).reshape((self.nteff, self.nlogg, self.nmetal, self.npb, self.nmu))
|
|
73
74
|
|
|
74
75
|
def __call__(self, mu: ndarray, x: ndarray) -> Tuple[ndarray, ndarray]:
|
|
75
76
|
if self.mu is None or id(mu) != id(self.mu):
|
|
76
77
|
self._init_interpolation(mu)
|
|
78
|
+
|
|
79
|
+
x = asarray(x)
|
|
80
|
+
if x.ndim == 1:
|
|
81
|
+
x = x[newaxis, newaxis, :]
|
|
82
|
+
elif x.ndim == 2:
|
|
83
|
+
x = x[:, newaxis, :]
|
|
84
|
+
|
|
77
85
|
ldp = trilinear_interpolation_set(self.profiles, x[:, 0, 0], x[:, 0, 1], x[:, 0, 2],
|
|
78
86
|
self.teff0, self.dteff, self.nteff,
|
|
79
87
|
self.logg0, self.dlogg, self.nlogg,
|
|
@@ -80,8 +80,7 @@ def uniform_model_simple(times, k, t0, p, a, i, e, w, with_derivatives):
|
|
|
80
80
|
|
|
81
81
|
|
|
82
82
|
@njit
|
|
83
|
-
def uniform_model_v(times, k, t0, p, dkdp, cfs, dcfs, with_derivatives,
|
|
84
|
-
lcids, pbids, epids, nsamples, exptimes):
|
|
83
|
+
def uniform_model_v(times, k, t0, p, dkdp, cfs, dcfs, with_derivatives, lcids, pbids, epids, nsamples, exptimes):
|
|
85
84
|
k = atleast_1d(asarray(k))
|
|
86
85
|
dkdp = atleast_1d(asarray(dkdp))
|
|
87
86
|
t0 = atleast_1d(asarray(t0))
|
|
@@ -93,8 +93,8 @@ def tsmodel_parallel(times: ndarray,
|
|
|
93
93
|
weights: ndarray, dk: float, kmin: float, kmax: float, ng: int, dg: float, z_edges: ndarray,
|
|
94
94
|
nthreads: int) -> ndarray:
|
|
95
95
|
|
|
96
|
-
nthreads_current = get_num_threads()
|
|
97
|
-
set_num_threads(nthreads)
|
|
96
|
+
#nthreads_current = get_num_threads()
|
|
97
|
+
#set_num_threads(nthreads)
|
|
98
98
|
|
|
99
99
|
if k.ndim != 2:
|
|
100
100
|
raise ValueError(" The radius ratios must be given as a 2D array with shape (npv, npb)")
|
|
@@ -115,7 +115,7 @@ def tsmodel_parallel(times: ndarray,
|
|
|
115
115
|
ldm = zeros((npb, ng)) # Limb darkening means
|
|
116
116
|
xyc = zeros((2, 5)) # Taylor series coefficients for the (x, y) position
|
|
117
117
|
|
|
118
|
-
for ipv in
|
|
118
|
+
for ipv in prange(npv):
|
|
119
119
|
if isnan(a[ipv]) or (a[ipv] <= 1.0) or (e[ipv] < 0.0):
|
|
120
120
|
flux[ipv, :, :] = nan
|
|
121
121
|
continue
|
|
@@ -133,8 +133,8 @@ def tsmodel_parallel(times: ndarray,
|
|
|
133
133
|
ldm[ipb, :] = (1.0 - ak) * dot(weights[ik], ldp[ipv, ipb, :]) + ak * dot(weights[ik + 1],
|
|
134
134
|
ldp[ipv, ipb, :])
|
|
135
135
|
else:
|
|
136
|
-
|
|
137
|
-
for ipb in
|
|
136
|
+
_, dg, wg = calculate_weights_2d(kmean, z_edges, ng)
|
|
137
|
+
for ipb in range(npb):
|
|
138
138
|
ldm[ipb, :] = dot(wg, ldp[ipv, ipb, :])
|
|
139
139
|
|
|
140
140
|
# -----------------------------------------------------#
|
|
@@ -151,19 +151,16 @@ def tsmodel_parallel(times: ndarray,
|
|
|
151
151
|
# --------------------------#
|
|
152
152
|
# Calculate the light curve #
|
|
153
153
|
# --------------------------#
|
|
154
|
-
for ipt in
|
|
154
|
+
for ipt in range(npt):
|
|
155
155
|
epoch = floor((times[ipt] - t0[ipv] + 0.5 * p[ipv]) / p[ipv])
|
|
156
156
|
tc = times[ipt] - (t0[ipv] + epoch * p[ipv])
|
|
157
157
|
if fabs(tc) > hww:
|
|
158
158
|
flux[ipv, :, ipt] = 1.0
|
|
159
159
|
else:
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
flux[ipv, ipb, ipt] += (istar[ipv, ipb] - iplanet * aplanet * afac[ipb]) / istar[ipv, ipb]
|
|
167
|
-
flux[ipv, :, ipt] /= nsamples[0]
|
|
168
|
-
set_num_threads(nthreads_current)
|
|
160
|
+
z = pd_t15sc(tc, xyc)
|
|
161
|
+
aplanet = ccia(1.0, kmean, z)[0]
|
|
162
|
+
for ipb in range(npb):
|
|
163
|
+
iplanet = interpolate_mean_limb_darkening_s(z / (1.0 + kmean), dg, ldm[ipb])
|
|
164
|
+
flux[ipv, ipb, ipt] += (istar[ipv, ipb] - iplanet * aplanet * afac[ipb]) / istar[ipv, ipb]
|
|
165
|
+
#set_num_threads(nthreads_current)
|
|
169
166
|
return flux
|
|
@@ -41,6 +41,13 @@ __all__ = ['OblatePlanetModel']
|
|
|
41
41
|
|
|
42
42
|
|
|
43
43
|
class OblatePlanetModel(RoadRunnerModel):
|
|
44
|
+
def __init__(self, ldmodel: Union[str, Callable, Tuple[Callable, Callable]] = 'quadratic',
|
|
45
|
+
precompute_weights: bool = False, klims: tuple = (0.005, 0.5), nk: int = 256,
|
|
46
|
+
nzin: int = 20, nzlimb: int = 20, zcut: float = 0.7, ng: int = 100, nlines: int = 100,
|
|
47
|
+
nthreads: int = 1, small_planet_limit: float = 0.05, **kwargs):
|
|
48
|
+
super().__init__(ldmodel, precompute_weights, klims, nk, nzin, nzlimb, zcut, ng, nthreads, small_planet_limit, **kwargs)
|
|
49
|
+
self.nlines = nlines
|
|
50
|
+
|
|
44
51
|
def evaluate(self, k: Union[float, ndarray], f: Union[float, ndarray], alpha: Union[float, ndarray],
|
|
45
52
|
ldc: Union[ndarray, List],
|
|
46
53
|
t0: Union[float, ndarray], p: Union[float, ndarray], a: Union[float, ndarray],
|
|
@@ -97,7 +104,7 @@ class OblatePlanetModel(RoadRunnerModel):
|
|
|
97
104
|
istar[ipv, ipb] = 2 * pi * trapz(self._ldz * ldpi[ipv, ipb], self._ldz)
|
|
98
105
|
|
|
99
106
|
flux = opmodel(self.time, k, f, alpha, t0, p, a, i, e, w, self.parallel,
|
|
100
|
-
self.nlc, self.npb, self.nep,
|
|
107
|
+
self.nlc, self.npb, self.nep, self.nlines,
|
|
101
108
|
self.lcids, self.pbids, self.epids, self.nsamples, self.exptimes,
|
|
102
109
|
ldp, istar, self.weights, self.dk, self.klims[0], self.klims[1], self.dg, self.ze)
|
|
103
110
|
|
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
29
29
|
from typing import Union, List, Optional
|
|
30
30
|
|
|
31
|
+
from numba import get_num_threads, set_num_threads
|
|
31
32
|
from numpy import ndarray, isscalar, atleast_2d, atleast_1d, array
|
|
32
33
|
from pytransit.models.roadrunner.common import calculate_weights_3d
|
|
33
34
|
from scipy.integrate import trapz
|
|
@@ -84,6 +85,9 @@ class TransmissionSpectroscopyModel(RoadRunnerModel):
|
|
|
84
85
|
t0, p, a, i, e, w = map(atleast_1d, (t0, p, a, i, e, w))
|
|
85
86
|
npv = k.shape[0]
|
|
86
87
|
|
|
88
|
+
nthreads_cur = get_num_threads()
|
|
89
|
+
set_num_threads(self.nthreads)
|
|
90
|
+
|
|
87
91
|
# Limb darkening
|
|
88
92
|
# --------------
|
|
89
93
|
ldc = array(ldc)
|
|
@@ -127,6 +131,7 @@ class TransmissionSpectroscopyModel(RoadRunnerModel):
|
|
|
127
131
|
flux = tsmodel_serial(self.time, k, t0, p, a, i, e, w, self.nsamples, self.exptimes,
|
|
128
132
|
ldp, istar, weights, dk, self.klims[0], self.klims[1], self.ng, dg, self.ze)
|
|
129
133
|
|
|
134
|
+
set_num_threads(nthreads_cur)
|
|
130
135
|
return flux.squeeze()
|
|
131
136
|
|
|
132
137
|
def __call__(self, k: Union[float, ndarray], ldc: Union[ndarray, List],
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pytransit-2.6.4 → pytransit-2.6.5}/pytransit/lpf/loglikelihood/multiceleriteloglikelihood.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|