ExoIris 0.23.2__tar.gz → 1.1.0__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 (64) hide show
  1. {exoiris-0.23.2 → exoiris-1.1.0}/.github/workflows/python-package.yml +1 -1
  2. {exoiris-0.23.2 → exoiris-1.1.0}/CHANGELOG.md +29 -0
  3. {exoiris-0.23.2 → exoiris-1.1.0}/ExoIris.egg-info/PKG-INFO +1 -1
  4. {exoiris-0.23.2 → exoiris-1.1.0}/ExoIris.egg-info/SOURCES.txt +6 -1
  5. {exoiris-0.23.2 → exoiris-1.1.0}/PKG-INFO +1 -1
  6. {exoiris-0.23.2 → exoiris-1.1.0}/doc/requirements.txt +2 -1
  7. {exoiris-0.23.2 → exoiris-1.1.0}/doc/source/api/exoiris.rst +54 -4
  8. {exoiris-0.23.2 → exoiris-1.1.0}/doc/source/api/tsdata.rst +1 -1
  9. {exoiris-0.23.2 → exoiris-1.1.0}/doc/source/examples/e01/01a_not_so_short_intro.ipynb +114 -169
  10. exoiris-1.1.0/doc/source/examples/e01/02_increasing_knot_resolution.ipynb +488 -0
  11. {exoiris-0.23.2 → exoiris-1.1.0}/doc/source/examples/setup_multiprocessing.py +4 -5
  12. {exoiris-0.23.2 → exoiris-1.1.0}/doc/source/index.rst +2 -0
  13. exoiris-1.1.0/exoiris/bin1d.py +97 -0
  14. exoiris-1.1.0/exoiris/bin2d.py +218 -0
  15. {exoiris-0.23.2 → exoiris-1.1.0}/exoiris/exoiris.py +30 -42
  16. exoiris-1.1.0/exoiris/lmlikelihood.py +172 -0
  17. exoiris-1.1.0/exoiris/prtretrieval.py +164 -0
  18. {exoiris-0.23.2 → exoiris-1.1.0}/exoiris/spotmodel.py +4 -4
  19. {exoiris-0.23.2 → exoiris-1.1.0}/exoiris/tsdata.py +85 -5
  20. {exoiris-0.23.2 → exoiris-1.1.0}/exoiris/tslpf.py +103 -33
  21. {exoiris-0.23.2 → exoiris-1.1.0}/exoiris/util.py +1 -69
  22. exoiris-1.1.0/tests/test_binning.py +300 -0
  23. exoiris-1.1.0/tests/test_import.py +123 -0
  24. exoiris-0.23.2/doc/source/examples/e01/02_increasing_knot_resolution.ipynb +0 -472
  25. exoiris-0.23.2/tests/test_binning.py +0 -50
  26. {exoiris-0.23.2 → exoiris-1.1.0}/.gitignore +0 -0
  27. {exoiris-0.23.2 → exoiris-1.1.0}/.readthedocs.yaml +0 -0
  28. {exoiris-0.23.2 → exoiris-1.1.0}/CODE_OF_CONDUCT.md +0 -0
  29. {exoiris-0.23.2 → exoiris-1.1.0}/ExoIris.egg-info/dependency_links.txt +0 -0
  30. {exoiris-0.23.2 → exoiris-1.1.0}/ExoIris.egg-info/requires.txt +0 -0
  31. {exoiris-0.23.2 → exoiris-1.1.0}/ExoIris.egg-info/top_level.txt +0 -0
  32. {exoiris-0.23.2 → exoiris-1.1.0}/LICENSE +0 -0
  33. {exoiris-0.23.2 → exoiris-1.1.0}/README.md +0 -0
  34. {exoiris-0.23.2 → exoiris-1.1.0}/doc/Makefile +0 -0
  35. {exoiris-0.23.2 → exoiris-1.1.0}/doc/make.bat +0 -0
  36. {exoiris-0.23.2 → exoiris-1.1.0}/doc/source/_static/css/custom.css +0 -0
  37. {exoiris-0.23.2 → exoiris-1.1.0}/doc/source/api/binning.rst +0 -0
  38. {exoiris-0.23.2 → exoiris-1.1.0}/doc/source/conf.py +0 -0
  39. {exoiris-0.23.2 → exoiris-1.1.0}/doc/source/examples/e01/01b_short_intro.ipynb +0 -0
  40. {exoiris-0.23.2 → exoiris-1.1.0}/doc/source/examples/e01/03_increasing_data_resolution.ipynb +0 -0
  41. {exoiris-0.23.2 → exoiris-1.1.0}/doc/source/examples/e01/04_gaussian_processes.ipynb +0 -0
  42. {exoiris-0.23.2 → exoiris-1.1.0}/doc/source/examples/e01/05a_ldtkldm.ipynb +0 -0
  43. {exoiris-0.23.2 → exoiris-1.1.0}/doc/source/examples/e01/A2_full_data_resolution.ipynb +0 -0
  44. {exoiris-0.23.2 → exoiris-1.1.0}/doc/source/examples/e01/appendix_1_data_preparation.ipynb +0 -0
  45. {exoiris-0.23.2 → exoiris-1.1.0}/doc/source/examples/e01/data/README.txt +0 -0
  46. {exoiris-0.23.2 → exoiris-1.1.0}/doc/source/examples/e01/data/nirHiss_order_1.h5 +0 -0
  47. {exoiris-0.23.2 → exoiris-1.1.0}/doc/source/examples/e01/data/nirHiss_order_2.h5 +0 -0
  48. {exoiris-0.23.2 → exoiris-1.1.0}/doc/source/examples/e01/example1.png +0 -0
  49. {exoiris-0.23.2 → exoiris-1.1.0}/doc/source/examples/e01/plot_1.ipynb +0 -0
  50. {exoiris-0.23.2 → exoiris-1.1.0}/doc/source/examples/figures.ipynb +0 -0
  51. {exoiris-0.23.2 → exoiris-1.1.0}/doc/source/examples/friendly_introduction.ipynb +0 -0
  52. {exoiris-0.23.2 → exoiris-1.1.0}/doc/source/examples/index.rst +0 -0
  53. {exoiris-0.23.2 → exoiris-1.1.0}/doc/source/examples/k_knot_example.svg +0 -0
  54. {exoiris-0.23.2 → exoiris-1.1.0}/doc/source/install.rst +0 -0
  55. {exoiris-0.23.2 → exoiris-1.1.0}/exoiris/__init__.py +0 -0
  56. {exoiris-0.23.2 → exoiris-1.1.0}/exoiris/binning.py +0 -0
  57. {exoiris-0.23.2 → exoiris-1.1.0}/exoiris/ephemeris.py +0 -0
  58. {exoiris-0.23.2 → exoiris-1.1.0}/exoiris/ldtkld.py +0 -0
  59. {exoiris-0.23.2 → exoiris-1.1.0}/exoiris/loglikelihood.py +0 -0
  60. {exoiris-0.23.2 → exoiris-1.1.0}/exoiris/tsmodel.py +0 -0
  61. {exoiris-0.23.2 → exoiris-1.1.0}/exoiris/wlpf.py +0 -0
  62. {exoiris-0.23.2 → exoiris-1.1.0}/pyproject.toml +0 -0
  63. {exoiris-0.23.2 → exoiris-1.1.0}/requirements.txt +0 -0
  64. {exoiris-0.23.2 → exoiris-1.1.0}/setup.cfg +0 -0
@@ -16,7 +16,7 @@ jobs:
16
16
  strategy:
17
17
  fail-fast: false
18
18
  matrix:
19
- python-version: ["3.10", "3.11", "3.12"]
19
+ python-version: ["3.10", "3.11", "3.12", "3.13" ]
20
20
 
21
21
  steps:
22
22
  - uses: actions/checkout@v4
@@ -5,6 +5,35 @@ All notable changes to ExoIris will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.1.0] - Unreleased
9
+
10
+ ### Added
11
+ - Added `TSData.create_white_light_curve()` method for creating white light curves with weighted averaging.
12
+ - Added `white_profiled` and `white_marginalized` noise model options in TSLPF:
13
+ - `white_profiled` (default): computes likelihood with baseline coefficients estimated via least-squares profiling
14
+ - `white_marginalized`: uses analytically marginalized log-likelihood that integrates out baseline coefficients
15
+ - Added `TSData.bin()` method for combined wavelength and time binning.
16
+
17
+ ### Fixed
18
+ - Several minor bugs.
19
+
20
+ ## [1.0.0] - 2026-01-28
21
+
22
+ ### Added
23
+ - Added support for setting custom interpolation models for limb darkening via `set_limb_darkening_interpolator` method.
24
+ - Added support for setting custom interpolation models for radius ratios via `set_radius_ratio_interpolator` method.
25
+ - Added ability to set priors for offset parameters in the analysis workflow.
26
+ - Added interpolation type tracking in FITS header metadata (`INTERP_LD` for limb darkening interpolation).
27
+
28
+ ### Changed
29
+ - Improved reinitialization logic for MCMC and differential evolution populations with updated limb darkening coefficients and knots.
30
+ - Refactored interpolation handling in `TSLPF` to separately manage radius ratio and limb darkening interpolators.
31
+ - Updated documentation for API methods and workflow.
32
+
33
+ ### Fixed
34
+ - Fixed incorrect FWHM scaling in `spot_model` function. The scaling factor now correctly uses `log(4)^(1/shape)` for
35
+ proper full width at half maximum calculations in generalized Gaussian spot models.
36
+
8
37
  ## [0.23.1] - 2025-12-18
9
38
 
10
39
  ### Fixed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ExoIris
3
- Version: 0.23.2
3
+ Version: 1.1.0
4
4
  Summary: Easy and robust exoplanet transmission spectroscopy.
5
5
  Author-email: Hannu Parviainen <hannu@iac.es>
6
6
  License: GPLv3
@@ -41,15 +41,20 @@ doc/source/examples/e01/data/README.txt
41
41
  doc/source/examples/e01/data/nirHiss_order_1.h5
42
42
  doc/source/examples/e01/data/nirHiss_order_2.h5
43
43
  exoiris/__init__.py
44
+ exoiris/bin1d.py
45
+ exoiris/bin2d.py
44
46
  exoiris/binning.py
45
47
  exoiris/ephemeris.py
46
48
  exoiris/exoiris.py
47
49
  exoiris/ldtkld.py
50
+ exoiris/lmlikelihood.py
48
51
  exoiris/loglikelihood.py
52
+ exoiris/prtretrieval.py
49
53
  exoiris/spotmodel.py
50
54
  exoiris/tsdata.py
51
55
  exoiris/tslpf.py
52
56
  exoiris/tsmodel.py
53
57
  exoiris/util.py
54
58
  exoiris/wlpf.py
55
- tests/test_binning.py
59
+ tests/test_binning.py
60
+ tests/test_import.py
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ExoIris
3
- Version: 0.23.2
3
+ Version: 1.1.0
4
4
  Summary: Easy and robust exoplanet transmission spectroscopy.
5
5
  Author-email: Hannu Parviainen <hannu@iac.es>
6
6
  License: GPLv3
@@ -13,4 +13,5 @@ celerite2
13
13
  pandas
14
14
  xarray
15
15
  seaborn
16
- astropy
16
+ astropy
17
+ scikit-learn
@@ -64,9 +64,25 @@ transmission spectrum, and even the observational data can be changed to improve
64
64
  ExoIris.set_data
65
65
  ExoIris.set_radius_ratio_knots
66
66
  ExoIris.add_radius_ratio_knots
67
+ ExoIris.set_limb_darkening_knots
68
+ ExoIris.free_radius_ratio_knot_locations
67
69
  ExoIris.create_dense_radius_ratio_block
68
70
  ExoIris.plot_setup
69
71
 
72
+ Interpolation configuration
73
+ ---------------------------
74
+
75
+ ExoIris uses interpolation to model the wavelength-dependent radius ratio and limb darkening
76
+ parameters. The interpolation method can be customized to balance smoothness against fidelity to the
77
+ data. Available interpolators include: ``nearest``, ``linear``, ``pchip``, ``makima``, ``bspline``,
78
+ ``bspline-quadratic``, and ``bspline-cubic``.
79
+
80
+ .. autosummary::
81
+ :toctree: api/
82
+
83
+ ExoIris.set_radius_ratio_interpolator
84
+ ExoIris.set_limb_darkening_interpolator
85
+
70
86
  Parameterization and priors
71
87
  ---------------------------
72
88
 
@@ -83,10 +99,11 @@ Noise model setup
83
99
  -----------------
84
100
 
85
101
  The noise in the spectroscopic light curves can be modeled as either white noise or time-correlated noise
86
- (using a Gaussian process, GP). The noise model is chosen with the `ExoIris.noise_model` method, and can be
87
- set to either "white" or "fixed_gp." Selecting "fixed_gp" models the noise as a time-correlated Gaussian process
88
- using the `celerite2` package. The corresponding `celerite2.GaussianProcess` object can be accessed directly
89
- via the `ExoIris.gp` attribute.
102
+ (using a Gaussian process, GP). The noise model is chosen with the `ExoIris.set_noise_model` method, and can be
103
+ set to ``"white"``, ``"fixed_gp"``, or ``"free_gp"``. Selecting ``"fixed_gp"`` models the noise as a time-correlated
104
+ Gaussian process using the `celerite2` package with fixed hyperparameters, while ``"free_gp"`` allows the GP
105
+ hyperparameters to be sampled as free parameters. The corresponding `celerite2.GaussianProcess` object can be
106
+ accessed directly via the `ExoIris.gp` attribute.
90
107
 
91
108
  .. autosummary::
92
109
  :toctree: api/
@@ -98,6 +115,23 @@ via the `ExoIris.gp` attribute.
98
115
  ExoIris.gp
99
116
  ExoIris.plot_white_gp_predictions
100
117
 
118
+ Star spot modeling
119
+ ------------------
120
+
121
+ ExoIris supports modeling of star spot crossings during transit and the Transit Light Source Effect (TLSE).
122
+ Star spots can cause both localized bumps in the light curve (when the planet occults a spot) and
123
+ wavelength-dependent baseline variations (TLSE) due to the inhomogeneous stellar surface.
124
+
125
+ To use spot modeling, first initialize the spot model with `ExoIris.initialize_spots`, then add spots
126
+ for specific epoch groups using `ExoIris.add_spot`.
127
+
128
+ .. autosummary::
129
+ :toctree: api/
130
+
131
+ ExoIris.initialize_spots
132
+ ExoIris.add_spot
133
+ ExoIris.nspots
134
+
101
135
 
102
136
  First steps
103
137
  -----------
@@ -155,12 +189,27 @@ Pandas `~pandas.DataFrame`.
155
189
  :toctree: api/
156
190
 
157
191
  ExoIris.transmission_spectrum
192
+ ExoIris.transmission_spectrum_table
158
193
  ExoIris.posterior_samples
159
194
  ExoIris.plot_fit
160
195
  ExoIris.plot_transmission_spectrum
161
196
  ExoIris.plot_residuals
162
197
  ExoIris.plot_limb_darkening_parameters
163
198
 
199
+ Atmospheric retrieval
200
+ ---------------------
201
+
202
+ ExoIris provides tools for atmospheric retrieval by creating a log-likelihood function that can be
203
+ used with external retrieval codes. The `ExoIris.create_loglikelihood_function` method returns a
204
+ callable that evaluates the log-likelihood for a given transmission spectrum model, accounting for
205
+ the full covariance structure of the data.
206
+
207
+ .. autosummary::
208
+ :toctree: api/
209
+
210
+ ExoIris.create_loglikelihood_function
211
+ ExoIris.transmission_spectrum_samples
212
+
164
213
  Utility methods
165
214
  ---------------
166
215
 
@@ -186,6 +235,7 @@ The following properties expose key internal states and parameters of the analys
186
235
  ExoIris.nk
187
236
  ExoIris.nldp
188
237
  ExoIris.npb
238
+ ExoIris.nspots
189
239
  ExoIris.ldmodel
190
240
  ExoIris.sampler
191
241
  ExoIris.optimizer
@@ -28,7 +28,7 @@ Data wrangling
28
28
  TSData.bin_time
29
29
  TSData.crop_wavelength
30
30
  TSData.crop_time
31
- TSData.remove_outliers
31
+ TSData.mask_outliers
32
32
  TSData.normalize_to_median
33
33
  TSData.normalize_to_poly
34
34
  TSData.partition_time