ExoIris 0.23.0__tar.gz → 0.23.1__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 (57) hide show
  1. {exoiris-0.23.0 → exoiris-0.23.1}/CHANGELOG.md +7 -0
  2. {exoiris-0.23.0 → exoiris-0.23.1}/ExoIris.egg-info/PKG-INFO +1 -1
  3. {exoiris-0.23.0 → exoiris-0.23.1}/PKG-INFO +1 -1
  4. {exoiris-0.23.0 → exoiris-0.23.1}/exoiris/exoiris.py +1 -1
  5. {exoiris-0.23.0 → exoiris-0.23.1}/exoiris/tslpf.py +11 -7
  6. {exoiris-0.23.0 → exoiris-0.23.1}/.github/workflows/python-package.yml +0 -0
  7. {exoiris-0.23.0 → exoiris-0.23.1}/.gitignore +0 -0
  8. {exoiris-0.23.0 → exoiris-0.23.1}/.readthedocs.yaml +0 -0
  9. {exoiris-0.23.0 → exoiris-0.23.1}/CODE_OF_CONDUCT.md +0 -0
  10. {exoiris-0.23.0 → exoiris-0.23.1}/ExoIris.egg-info/SOURCES.txt +0 -0
  11. {exoiris-0.23.0 → exoiris-0.23.1}/ExoIris.egg-info/dependency_links.txt +0 -0
  12. {exoiris-0.23.0 → exoiris-0.23.1}/ExoIris.egg-info/requires.txt +0 -0
  13. {exoiris-0.23.0 → exoiris-0.23.1}/ExoIris.egg-info/top_level.txt +0 -0
  14. {exoiris-0.23.0 → exoiris-0.23.1}/LICENSE +0 -0
  15. {exoiris-0.23.0 → exoiris-0.23.1}/README.md +0 -0
  16. {exoiris-0.23.0 → exoiris-0.23.1}/doc/Makefile +0 -0
  17. {exoiris-0.23.0 → exoiris-0.23.1}/doc/make.bat +0 -0
  18. {exoiris-0.23.0 → exoiris-0.23.1}/doc/requirements.txt +0 -0
  19. {exoiris-0.23.0 → exoiris-0.23.1}/doc/source/_static/css/custom.css +0 -0
  20. {exoiris-0.23.0 → exoiris-0.23.1}/doc/source/api/binning.rst +0 -0
  21. {exoiris-0.23.0 → exoiris-0.23.1}/doc/source/api/exoiris.rst +0 -0
  22. {exoiris-0.23.0 → exoiris-0.23.1}/doc/source/api/tsdata.rst +0 -0
  23. {exoiris-0.23.0 → exoiris-0.23.1}/doc/source/conf.py +0 -0
  24. {exoiris-0.23.0 → exoiris-0.23.1}/doc/source/examples/e01/01a_not_so_short_intro.ipynb +0 -0
  25. {exoiris-0.23.0 → exoiris-0.23.1}/doc/source/examples/e01/01b_short_intro.ipynb +0 -0
  26. {exoiris-0.23.0 → exoiris-0.23.1}/doc/source/examples/e01/02_increasing_knot_resolution.ipynb +0 -0
  27. {exoiris-0.23.0 → exoiris-0.23.1}/doc/source/examples/e01/03_increasing_data_resolution.ipynb +0 -0
  28. {exoiris-0.23.0 → exoiris-0.23.1}/doc/source/examples/e01/04_gaussian_processes.ipynb +0 -0
  29. {exoiris-0.23.0 → exoiris-0.23.1}/doc/source/examples/e01/05a_ldtkldm.ipynb +0 -0
  30. {exoiris-0.23.0 → exoiris-0.23.1}/doc/source/examples/e01/A2_full_data_resolution.ipynb +0 -0
  31. {exoiris-0.23.0 → exoiris-0.23.1}/doc/source/examples/e01/appendix_1_data_preparation.ipynb +0 -0
  32. {exoiris-0.23.0 → exoiris-0.23.1}/doc/source/examples/e01/data/README.txt +0 -0
  33. {exoiris-0.23.0 → exoiris-0.23.1}/doc/source/examples/e01/data/nirHiss_order_1.h5 +0 -0
  34. {exoiris-0.23.0 → exoiris-0.23.1}/doc/source/examples/e01/data/nirHiss_order_2.h5 +0 -0
  35. {exoiris-0.23.0 → exoiris-0.23.1}/doc/source/examples/e01/example1.png +0 -0
  36. {exoiris-0.23.0 → exoiris-0.23.1}/doc/source/examples/e01/plot_1.ipynb +0 -0
  37. {exoiris-0.23.0 → exoiris-0.23.1}/doc/source/examples/figures.ipynb +0 -0
  38. {exoiris-0.23.0 → exoiris-0.23.1}/doc/source/examples/friendly_introduction.ipynb +0 -0
  39. {exoiris-0.23.0 → exoiris-0.23.1}/doc/source/examples/index.rst +0 -0
  40. {exoiris-0.23.0 → exoiris-0.23.1}/doc/source/examples/k_knot_example.svg +0 -0
  41. {exoiris-0.23.0 → exoiris-0.23.1}/doc/source/examples/setup_multiprocessing.py +0 -0
  42. {exoiris-0.23.0 → exoiris-0.23.1}/doc/source/index.rst +0 -0
  43. {exoiris-0.23.0 → exoiris-0.23.1}/doc/source/install.rst +0 -0
  44. {exoiris-0.23.0 → exoiris-0.23.1}/exoiris/__init__.py +0 -0
  45. {exoiris-0.23.0 → exoiris-0.23.1}/exoiris/binning.py +0 -0
  46. {exoiris-0.23.0 → exoiris-0.23.1}/exoiris/ephemeris.py +0 -0
  47. {exoiris-0.23.0 → exoiris-0.23.1}/exoiris/ldtkld.py +0 -0
  48. {exoiris-0.23.0 → exoiris-0.23.1}/exoiris/loglikelihood.py +0 -0
  49. {exoiris-0.23.0 → exoiris-0.23.1}/exoiris/spotmodel.py +0 -0
  50. {exoiris-0.23.0 → exoiris-0.23.1}/exoiris/tsdata.py +0 -0
  51. {exoiris-0.23.0 → exoiris-0.23.1}/exoiris/tsmodel.py +0 -0
  52. {exoiris-0.23.0 → exoiris-0.23.1}/exoiris/util.py +0 -0
  53. {exoiris-0.23.0 → exoiris-0.23.1}/exoiris/wlpf.py +0 -0
  54. {exoiris-0.23.0 → exoiris-0.23.1}/pyproject.toml +0 -0
  55. {exoiris-0.23.0 → exoiris-0.23.1}/requirements.txt +0 -0
  56. {exoiris-0.23.0 → exoiris-0.23.1}/setup.cfg +0 -0
  57. {exoiris-0.23.0 → exoiris-0.23.1}/tests/test_binning.py +0 -0
@@ -5,6 +5,13 @@ 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
+ ## [0.23.1] - 2025-12-18
9
+
10
+ ### Fixed
11
+ - Fixed least-squares baseline fitting for transit models with NaNs.
12
+ - Added "bspline-cubic" interpolation option as an alias for "bspline". The "bspline" option will be removed in a future
13
+ release.
14
+
8
15
  ## [0.23.0] - 2025-12-16
9
16
 
10
17
  ### Changed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ExoIris
3
- Version: 0.23.0
3
+ Version: 0.23.1
4
4
  Summary: Easy and robust exoplanet transmission spectroscopy.
5
5
  Author-email: Hannu Parviainen <hannu@iac.es>
6
6
  License: GPLv3
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ExoIris
3
- Version: 0.23.0
3
+ Version: 0.23.1
4
4
  Summary: Easy and robust exoplanet transmission spectroscopy.
5
5
  Author-email: Hannu Parviainen <hannu@iac.es>
6
6
  License: GPLv3
@@ -163,7 +163,7 @@ class ExoIris:
163
163
 
164
164
  def __init__(self, name: str, ldmodel, data: TSDataGroup | TSData, nk: int = 50, nldc: int = 10, nthreads: int = 1,
165
165
  tmpars: dict | None = None, noise_model: Literal["white", "fixed_gp", "free_gp"] = 'white',
166
- interpolation: Literal['nearest', 'linear', 'pchip', 'makima', 'bspline', 'bspline-quadratic'] = 'makima'):
166
+ interpolation: Literal['nearest', 'linear', 'pchip', 'makima', 'bspline', 'bspline-quadratic', 'bspline-cubic'] = 'linear'):
167
167
  """
168
168
  Parameters
169
169
  ----------
@@ -40,8 +40,9 @@ from numpy import (
40
40
  dstack,
41
41
  diff,
42
42
  ascontiguousarray,
43
+ nan,
43
44
  )
44
- from numpy.linalg import lstsq
45
+ from numpy.linalg import lstsq, LinAlgError
45
46
  from numpy.random import default_rng
46
47
  from pytransit.lpf.logposteriorfunction import LogPosteriorFunction
47
48
  from pytransit.orbits import as_from_rhop, i_from_ba
@@ -133,11 +134,11 @@ def add_knots(x_new, x_old):
133
134
  return sort(concatenate([x_new, x_old]))
134
135
 
135
136
 
136
- interpolator_choices = ("bspline", "pchip", "makima", "nearest", "linear", "bspline-quadratic")
137
+ interpolator_choices = ("bspline", "pchip", "makima", "nearest", "linear", "bspline-quadratic", "bspline-cubic")
137
138
 
138
139
 
139
- interpolators = {'bspline': ip_bspline, 'bspline-quadratic': ip_bspline_quadratic, 'pchip': ip_pchip,
140
- 'makima': ip_makima, 'nearest': ip_nearest, 'linear': ip_linear}
140
+ interpolators = {'bspline': ip_bspline, 'bspline-cubic': ip_bspline, 'bspline-quadratic': ip_bspline_quadratic,
141
+ 'pchip': ip_pchip, 'makima': ip_makima, 'nearest': ip_nearest, 'linear': ip_linear}
141
142
 
142
143
 
143
144
  def clean_knots(knots, min_distance, lmin=0, lmax=inf):
@@ -181,7 +182,7 @@ def clean_knots(knots, min_distance, lmin=0, lmax=inf):
181
182
  class TSLPF(LogPosteriorFunction):
182
183
  def __init__(self, runner, name: str, ldmodel, data: TSDataGroup, nk: int = 50, nldc: int = 10, nthreads: int = 1,
183
184
  tmpars = None, noise_model: Literal["white", "fixed_gp", "free_gp"] = 'white',
184
- interpolation: Literal['nearest', 'linear', 'pchip', 'makima', 'bspline', 'bspline-quadratic'] = 'makima'):
185
+ interpolation: Literal['nearest', 'linear', 'pchip', 'makima', 'bspline', 'bspline-quadratic', 'bspline-cubic'] = 'linear'):
185
186
  super().__init__(name)
186
187
  self._runner = runner
187
188
  self._original_data: TSDataGroup | None = None
@@ -749,8 +750,11 @@ class TSLPF(LogPosteriorFunction):
749
750
  for i, d in enumerate(self.data):
750
751
  for ipv in range(npv):
751
752
  res = d.fluxes / mtransit[i][ipv]
752
- coeffs = nlstsq(d.covs, res, d.mask, d._wlmask, d._wls_with_nan)
753
- self._baseline_models[i][ipv, :, :] = (d.covs @ coeffs).T
753
+ try:
754
+ coeffs = nlstsq(d.covs, res, d.mask, d._wlmask, d._wls_with_nan)
755
+ self._baseline_models[i][ipv, :, :] = (d.covs @ coeffs).T
756
+ except LinAlgError:
757
+ self._baseline_models[i][ipv, :, :] = nan
754
758
  return self._baseline_models
755
759
 
756
760
  def flux_model(self, pv):
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