PyTransit 2.6.14__tar.gz → 2.6.16__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.
Files changed (146) hide show
  1. {pytransit-2.6.14 → pytransit-2.6.16}/PKG-INFO +1 -1
  2. {pytransit-2.6.14 → pytransit-2.6.16}/PyTransit.egg-info/PKG-INFO +1 -1
  3. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/__init__.py +1 -1
  4. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/models/eclipse_model.py +70 -1
  5. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/models/ma_quadratic.py +2 -2
  6. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/models/ma_uniform.py +2 -2
  7. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/models/numba/udmodel.py +2 -1
  8. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/models/qpower2.py +3 -2
  9. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/models/roadrunner/model_trspec.py +36 -17
  10. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/models/roadrunner/opmodel_full.py +2 -1
  11. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/param/parameter.py +1 -1
  12. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/stars/btsettl.py +1 -1
  13. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/stars/husser2013.py +1 -1
  14. {pytransit-2.6.14 → pytransit-2.6.16}/LICENSE +0 -0
  15. {pytransit-2.6.14 → pytransit-2.6.16}/MANIFEST.in +0 -0
  16. {pytransit-2.6.14 → pytransit-2.6.16}/PyTransit.egg-info/SOURCES.txt +0 -0
  17. {pytransit-2.6.14 → pytransit-2.6.16}/PyTransit.egg-info/dependency_links.txt +0 -0
  18. {pytransit-2.6.14 → pytransit-2.6.16}/PyTransit.egg-info/requires.txt +0 -0
  19. {pytransit-2.6.14 → pytransit-2.6.16}/PyTransit.egg-info/top_level.txt +0 -0
  20. {pytransit-2.6.14 → pytransit-2.6.16}/README.md +0 -0
  21. {pytransit-2.6.14 → pytransit-2.6.16}/pyproject.toml +0 -0
  22. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/contamination/__init__.py +0 -0
  23. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/contamination/contamination.py +0 -0
  24. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/contamination/data/spectra.h5 +0 -0
  25. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/contamination/data/transmission.nc +0 -0
  26. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/contamination/filter.py +0 -0
  27. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/contamination/instrument.py +0 -0
  28. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/contamination/plotting.py +0 -0
  29. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/limb_darkening.py +0 -0
  30. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/lpf/__init__.py +0 -0
  31. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/lpf/baselines/__init__.py +0 -0
  32. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/lpf/baselines/legendrebaseline.py +0 -0
  33. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/lpf/baselines/linearbaseline.py +0 -0
  34. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/lpf/cntlpf.py +0 -0
  35. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/lpf/eclipselpf.py +0 -0
  36. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/lpf/loglikelihood/__init__.py +0 -0
  37. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/lpf/loglikelihood/celeriteloglikelihood.py +0 -0
  38. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/lpf/loglikelihood/clloglikelihood.py +0 -0
  39. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/lpf/loglikelihood/fmcloglikelihood.py +0 -0
  40. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/lpf/loglikelihood/logisticloglikelihood.py +0 -0
  41. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/lpf/loglikelihood/multiceleriteloglikelihood.py +0 -0
  42. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/lpf/loglikelihood/wnloglikelihood.py +0 -0
  43. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/lpf/logposteriorfunction.py +0 -0
  44. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/lpf/lpf.py +0 -0
  45. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/lpf/mclpf.py +0 -0
  46. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/lpf/mptlpf.py +0 -0
  47. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/lpf/ocllpf.py +0 -0
  48. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/lpf/ocltdvlpf.py +0 -0
  49. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/lpf/oclttvlpf.py +0 -0
  50. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/lpf/phasecurvelpf.py +0 -0
  51. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/lpf/rvlpf.py +0 -0
  52. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/lpf/tdvlpf.py +0 -0
  53. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/lpf/tess/__init__.py +0 -0
  54. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/lpf/tess/ctesslpf.py +0 -0
  55. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/lpf/tess/tessttvlpf.py +0 -0
  56. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/lpf/tess/tgclpf.py +0 -0
  57. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/lpf/tess/tgcmplpf.py +0 -0
  58. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/lpf/tess/tmpclpf.py +0 -0
  59. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/lpf/tesslpf.py +0 -0
  60. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/lpf/tessoclttvlpf.py +0 -0
  61. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/lpf/transitanalysis.py +0 -0
  62. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/lpf/transitlpf.py +0 -0
  63. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/lpf/ttvlpf.py +0 -0
  64. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/models/__init__.py +0 -0
  65. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/models/gdmodel.py +0 -0
  66. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/models/general.py +0 -0
  67. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/models/ldmodel.py +0 -0
  68. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/models/ldtkldm.py +0 -0
  69. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/models/limb_darkening/__init__.py +0 -0
  70. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/models/limb_darkening/general.py +0 -0
  71. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/models/limb_darkening/linear.py +0 -0
  72. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/models/limb_darkening/nonlinear.py +0 -0
  73. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/models/limb_darkening/power_2.py +0 -0
  74. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/models/limb_darkening/quadratic.py +0 -0
  75. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/models/limb_darkening/quadratic_tri.py +0 -0
  76. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/models/limb_darkening/uniform.py +0 -0
  77. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/models/ma_chromosphere.py +0 -0
  78. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/models/ma_quadratic_cl.py +0 -0
  79. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/models/ma_uniform_cl.py +0 -0
  80. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/models/numba/__init__.py +0 -0
  81. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/models/numba/gdmodel.py +0 -0
  82. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/models/numba/general_nb.py +0 -0
  83. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/models/numba/ldmodels.py +0 -0
  84. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/models/numba/ldtkldm.py +0 -0
  85. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/models/numba/ma_chromosphere_nb.py +0 -0
  86. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/models/numba/ma_quadratic_nb.py +0 -0
  87. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/models/numba/ma_uniform_nb.py +0 -0
  88. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/models/numba/phasecurves.py +0 -0
  89. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/models/numba/qpower2_nb.py +0 -0
  90. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/models/numba/rrmodel.py +0 -0
  91. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/models/numba/spmodel.py +0 -0
  92. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/models/opencl/ma_quadratic.cl +0 -0
  93. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/models/opencl/ma_uniform.cl +0 -0
  94. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/models/opencl/orbits.cl +0 -0
  95. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/models/opencl/qpower2.cl +0 -0
  96. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/models/osmodel.py +0 -0
  97. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/models/qpower2_cl.py +0 -0
  98. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/models/roadrunner/__init__.py +0 -0
  99. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/models/roadrunner/common.py +0 -0
  100. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/models/roadrunner/ecintersection.py +0 -0
  101. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/models/roadrunner/model.py +0 -0
  102. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/models/roadrunner/model_full.py +0 -0
  103. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/models/roadrunner/model_simple.py +0 -0
  104. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/models/roadrunner/opmodel.py +0 -0
  105. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/models/roadrunner/rrmodel.cl +0 -0
  106. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/models/roadrunner/rrmodel.py +0 -0
  107. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/models/roadrunner/rrmodel_cl.py +0 -0
  108. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/models/roadrunner/tsmodel.py +0 -0
  109. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/models/transitmodel.py +0 -0
  110. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/models/uniform.py +0 -0
  111. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/orbits/__init__.py +0 -0
  112. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/orbits/orbits.py +0 -0
  113. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/orbits/orbits_py.py +0 -0
  114. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/orbits/taylor_z.py +0 -0
  115. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/param/__init__.py +0 -0
  116. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/param/prior.py +0 -0
  117. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/param/utilities.py +0 -0
  118. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/stars/__init__.py +0 -0
  119. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/stars/data/avg_bt_settl.fits +0 -0
  120. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/stars/data/avg_husser2013.fits +0 -0
  121. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/utils/__init__.py +0 -0
  122. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/utils/astrometry.py +0 -0
  123. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/utils/constants.py +0 -0
  124. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/utils/de.py +0 -0
  125. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/utils/downsample.py +0 -0
  126. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/utils/eclipses.py +0 -0
  127. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/utils/io/__init__.py +0 -0
  128. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/utils/io/lightcurvedata.py +0 -0
  129. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/utils/keplerlc.py +0 -0
  130. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/utils/mdwarfs.py +0 -0
  131. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/utils/misc.py +0 -0
  132. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/utils/mocklc.py +0 -0
  133. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/utils/octasphere.py +0 -0
  134. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/utils/phasecurves.py +0 -0
  135. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/utils/physics.py +0 -0
  136. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/utils/rv.py +0 -0
  137. {pytransit-2.6.14 → pytransit-2.6.16}/pytransit/utils/tess.py +0 -0
  138. {pytransit-2.6.14 → pytransit-2.6.16}/requirements.txt +0 -0
  139. {pytransit-2.6.14 → pytransit-2.6.16}/setup.cfg +0 -0
  140. {pytransit-2.6.14 → pytransit-2.6.16}/tests/test_contamination.py +0 -0
  141. {pytransit-2.6.14 → pytransit-2.6.16}/tests/test_ma_quadratic.py +0 -0
  142. {pytransit-2.6.14 → pytransit-2.6.16}/tests/test_ma_quadratic_nb.py +0 -0
  143. {pytransit-2.6.14 → pytransit-2.6.16}/tests/test_qpower2_nb.py +0 -0
  144. {pytransit-2.6.14 → pytransit-2.6.16}/tests/test_uniform_model.py +0 -0
  145. {pytransit-2.6.14 → pytransit-2.6.16}/tests/test_uniform_model_nb.py +0 -0
  146. {pytransit-2.6.14 → pytransit-2.6.16}/tests/test_z.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PyTransit
3
- Version: 2.6.14
3
+ Version: 2.6.16
4
4
  Summary: Fast and painless exoplanet transit light curve modelling.
5
5
  Author-email: Hannu Parviainen <hpparvi@gmail.com>
6
6
  License: GPLv2
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PyTransit
3
- Version: 2.6.14
3
+ Version: 2.6.16
4
4
  Summary: Fast and painless exoplanet transit light curve modelling.
5
5
  Author-email: Hannu Parviainen <hpparvi@gmail.com>
6
6
  License: GPLv2
@@ -41,7 +41,7 @@ Date
41
41
 
42
42
  """
43
43
 
44
- __version__ = '2.6.14'
44
+ __version__ = '2.6.16'
45
45
 
46
46
  # Generic
47
47
  # -------
@@ -38,7 +38,7 @@ class EclipseModel(TransitModel):
38
38
  Parameters
39
39
  ----------
40
40
  k
41
- Radius ratio(s) either as a single float or a 1D vector.
41
+ Radius ratio(s) either as a single float, 1D vector, or 2D array.
42
42
  t0
43
43
  Transit center(s) as a float or a 1D vector.
44
44
  p
@@ -97,3 +97,72 @@ 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)
@@ -127,8 +127,8 @@ class QuadraticModel(TransitModel):
127
127
  t0 = t0.reshape((t0.size, 1))
128
128
 
129
129
  npv = p.size
130
- e = zeros(npv) if e is None else e
131
- w = zeros(npv) if w is None else w
130
+ e = zeros(npv) if e is None else asarray(e)
131
+ w = zeros(npv) if w is None else asarray(w)
132
132
 
133
133
  if ldc.ndim == 3:
134
134
  ldc = ldc.reshape([npv, -1])
@@ -76,8 +76,8 @@ class UniformModel(TransitModel):
76
76
  # ---------------------------
77
77
  else:
78
78
  npv = t0.size
79
- e = zeros(npv) if e is None else e
80
- w = zeros(npv) if w is None else w
79
+ e = zeros(npv) if e is None else asarray(e)
80
+ w = zeros(npv) if w is None else asarray(w)
81
81
 
82
82
  if k.ndim == 1:
83
83
  k = k.reshape((k.size,1))
@@ -80,7 +80,8 @@ 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, lcids, pbids, epids, nsamples, exptimes):
83
+ def uniform_model_v(times, k, t0, p, dkdp, cfs, dcfs, with_derivatives,
84
+ lcids, pbids, epids, nsamples, exptimes):
84
85
  k = atleast_1d(asarray(k))
85
86
  dkdp = atleast_1d(asarray(dkdp))
86
87
  t0 = atleast_1d(asarray(t0))
@@ -90,12 +90,13 @@ class QPower2Model(TransitModel):
90
90
  e, w = 0., 0.
91
91
 
92
92
  flux = qpower2_model_s(self.time, k, ldc, t0, p, a, i, e, w, self.lcids, self.pbids, self.nsamples, self.exptimes)
93
+
93
94
  # Parameter population branch
94
95
  # ---------------------------
95
96
  else:
96
97
  npv = t0.size
97
- if e is None:
98
- e, w = zeros(npv), zeros(npv)
98
+ e = zeros(npv) if e is None else asarray(e)
99
+ w = zeros(npv) if w is None else asarray(w)
99
100
 
100
101
  if k.ndim == 1:
101
102
  k = k.reshape((k.size,1))
@@ -1,6 +1,6 @@
1
1
  from math import fabs, floor
2
2
  from numba import njit, prange, get_num_threads, set_num_threads
3
- from numpy import zeros, dot, ndarray, isnan, full, nan, mean, floor, fabs
3
+ from numpy import zeros, dot, ndarray, isnan, full, nan, mean, floor, fabs, max
4
4
 
5
5
  from meepmeep.xy.position import solve_xy_p5s, pd_t15sc
6
6
  from meepmeep.utils import d_from_pkaiews
@@ -40,6 +40,7 @@ def tsmodel_serial(times: ndarray,
40
40
  continue
41
41
 
42
42
  kmean = mean(k[ipv])
43
+ kmax = max(k[ipv])
43
44
  afac = k[ipv] ** 2 / kmean ** 2
44
45
 
45
46
  # -----------------------------------#
@@ -78,10 +79,16 @@ def tsmodel_serial(times: ndarray,
78
79
  for isample in range(1, nsamples[0] + 1):
79
80
  time_offset = exptimes[0] * ((isample - 0.5) / nsamples[0] - 0.5)
80
81
  z = pd_t15sc(tc + time_offset, xyc)
81
- aplanet = ccia(1.0, kmean, z)[0]
82
- for ipb in range(npb):
83
- iplanet = interpolate_mean_limb_darkening_s(z / (1.0 + kmean), dg, ldm[ipb])
84
- flux[ipv, ipb, ipt] += (istar[ipv, ipb] - iplanet * aplanet * afac[ipb]) / istar[ipv, ipb]
82
+ ap0, kappa = ccia(1.0, kmean, z)
83
+ dadk = 2.0*kmean*kappa
84
+ if z <= 1.0 - kmax:
85
+ for ipb in range(npb):
86
+ iplanet = interpolate_mean_limb_darkening_s(z / (1.0 + kmean), dg, ldm[ipb])
87
+ flux[ipv, ipb, ipt] += (istar[ipv, ipb] - iplanet * ap0 * afac[ipb]) / istar[ipv, ipb]
88
+ else:
89
+ for ipb in range(npb):
90
+ iplanet = interpolate_mean_limb_darkening_s(z / (1.0 + kmean), dg, ldm[ipb])
91
+ flux[ipv, ipb, ipt] += (istar[ipv, ipb] - iplanet * (ap0 + (k[ipv, ipb]-kmean)*dadk)) / istar[ipv, ipb]
85
92
  flux[ipv, :, ipt] /= nsamples[0]
86
93
  return flux
87
94
 
@@ -93,8 +100,8 @@ def tsmodel_parallel(times: ndarray,
93
100
  weights: ndarray, dk: float, kmin: float, kmax: float, ng: int, dg: float, z_edges: ndarray,
94
101
  nthreads: int) -> ndarray:
95
102
 
96
- #nthreads_current = get_num_threads()
97
- #set_num_threads(nthreads)
103
+ nthreads_current = get_num_threads()
104
+ set_num_threads(nthreads)
98
105
 
99
106
  if k.ndim != 2:
100
107
  raise ValueError(" The radius ratios must be given as a 2D array with shape (npv, npb)")
@@ -115,12 +122,13 @@ def tsmodel_parallel(times: ndarray,
115
122
  ldm = zeros((npb, ng)) # Limb darkening means
116
123
  xyc = zeros((2, 5)) # Taylor series coefficients for the (x, y) position
117
124
 
118
- for ipv in prange(npv):
125
+ for ipv in range(npv):
119
126
  if isnan(a[ipv]) or (a[ipv] <= 1.0) or (e[ipv] < 0.0):
120
127
  flux[ipv, :, :] = nan
121
128
  continue
122
129
 
123
130
  kmean = mean(k[ipv])
131
+ kmax = max(k[ipv])
124
132
  afac = k[ipv] ** 2 / kmean ** 2
125
133
 
126
134
  # -----------------------------------#
@@ -133,8 +141,8 @@ def tsmodel_parallel(times: ndarray,
133
141
  ldm[ipb, :] = (1.0 - ak) * dot(weights[ik], ldp[ipv, ipb, :]) + ak * dot(weights[ik + 1],
134
142
  ldp[ipv, ipb, :])
135
143
  else:
136
- _, dg, wg = calculate_weights_2d(kmean, z_edges, ng)
137
- for ipb in range(npb):
144
+ dk, dg, wg = calculate_weights_2d(kmean, z_edges, ng)
145
+ for ipb in prange(npb):
138
146
  ldm[ipb, :] = dot(wg, ldp[ipv, ipb, :])
139
147
 
140
148
  # -----------------------------------------------------#
@@ -151,16 +159,27 @@ def tsmodel_parallel(times: ndarray,
151
159
  # --------------------------#
152
160
  # Calculate the light curve #
153
161
  # --------------------------#
154
- for ipt in range(npt):
162
+ for ipt in prange(npt):
155
163
  epoch = floor((times[ipt] - t0[ipv] + 0.5 * p[ipv]) / p[ipv])
156
164
  tc = times[ipt] - (t0[ipv] + epoch * p[ipv])
157
165
  if fabs(tc) > hww:
158
166
  flux[ipv, :, ipt] = 1.0
159
167
  else:
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)
168
+ for isample in range(1, nsamples[0] + 1):
169
+ time_offset = exptimes[0] * ((isample - 0.5) / nsamples[0] - 0.5)
170
+ z = pd_t15sc(tc + time_offset, xyc)
171
+ ap0, kappa = ccia(1.0, kmean, z)
172
+ dadk = 2.0*kmean*kappa
173
+ for ipb in range(npb):
174
+ if z <= 1.0 - kmax:
175
+ for ipb in range(npb):
176
+ iplanet = interpolate_mean_limb_darkening_s(z / (1.0 + kmean), dg, ldm[ipb])
177
+ flux[ipv, ipb, ipt] += (istar[ipv, ipb] - iplanet * ap0 * afac[ipb]) / istar[ipv, ipb]
178
+ else:
179
+ for ipb in range(npb):
180
+ iplanet = interpolate_mean_limb_darkening_s(z / (1.0 + kmean), dg, ldm[ipb])
181
+ flux[ipv, ipb, ipt] += (istar[ipv, ipb] - iplanet * (
182
+ ap0 + (k[ipv, ipb] - kmean) * dadk)) / istar[ipv, ipb]
183
+ flux[ipv, :, ipt] /= nsamples[0]
184
+ set_num_threads(nthreads_current)
166
185
  return flux
@@ -27,6 +27,7 @@ def op_full(times: ndarray, k: ndarray, f: ndarray, alpha: ndarray,
27
27
  parallelize: bool, nlc: int, npb: int, nep: int, npl: int,
28
28
  lcids: ndarray, pbids: ndarray, epids: ndarray, nsamples: ndarray, exptimes: ndarray,
29
29
  ldp: ndarray, istar: ndarray, weights: ndarray, dk: float, kmin: float, kmax: float, dg: float, z_edges: ndarray):
30
+ """Full RoadRunner model for heterogeneous light curves."""
30
31
 
31
32
  #if parallelize:
32
33
  # return op_full_parallel(times, k, f, alpha, t0, p, a, i, e, w, nlc, npb, nep, npl,
@@ -44,7 +45,7 @@ def op_full_serial(times: ndarray, k: ndarray, f: ndarray, alpha: ndarray,
44
45
  nlc: int, npb: int, nep: int, npl: int,
45
46
  lcids: ndarray, pbids: ndarray, epids: ndarray, nsamples: ndarray, exptimes: ndarray,
46
47
  ldp: ndarray, istar: ndarray, weights: ndarray, dk: float, kmin: float, kmax: float, dg: float, z_edges: ndarray):
47
-
48
+ """Full RoadRunner model for heterogeneous light curves."""
48
49
  npv = k.shape[0]
49
50
  npt = times.size
50
51
  ng = weights.shape[1]
@@ -108,10 +108,10 @@ class LParameterBlock(GParameterBlock):
108
108
 
109
109
  class ParameterSet(list):
110
110
  def __init__(self, *args):
111
+ super().__init__(*args)
111
112
  self.blocks = []
112
113
  self.bounds = None
113
114
  self.frozen = False
114
- super().__init__(*args)
115
115
 
116
116
  def add_global_block(self, name, pars):
117
117
  start = len(self)
@@ -113,7 +113,7 @@ def write_table(df):
113
113
 
114
114
 
115
115
  def read_bt_settl_table():
116
- spectra = pf.getdata(bt_settl_file)
116
+ spectra = pf.getdata(bt_settl_file).astype('d')
117
117
  teff = pf.getdata(bt_settl_file, 1)['TEff'].astype('d')
118
118
  wl = pf.getval(bt_settl_file, 'CRVAL1') + arange(spectra.shape[1]) * pf.getval(bt_settl_file, 'CDELT1')
119
119
  return pd.DataFrame(spectra, index=pd.Index(teff, name='TEff [K]'), columns=pd.Index(wl, name='Wavelength [nm]'))
@@ -123,7 +123,7 @@ def write_table(df):
123
123
 
124
124
 
125
125
  def read_husser2013_table():
126
- spectra = pf.getdata(husser2013_file)
126
+ spectra = pf.getdata(husser2013_file).astype('d')
127
127
  teff = pf.getdata(husser2013_file, 1)['TEff'].astype('d')
128
128
  wl = pf.getval(husser2013_file, 'CRVAL1') + arange(spectra.shape[1]) * pf.getval(husser2013_file, 'CDELT1')
129
129
  return pd.DataFrame(spectra, index=pd.Index(teff, name='TEff [K]'), columns=pd.Index(wl, name='Wavelength [nm]'))
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes