@@ -108,13 +108,17 @@ def __init__(self, time: Sequence, wavelength: Sequence, fluxes: Sequence, error
108
108
self .fluxes : ndarray = where (self .mask , fluxes , nan )
109
109
self .errors : ndarray = where (self .mask , errors , nan )
110
110
self .transit_mask : ndarray = transit_mask if transit_mask is not None else ones (time .size , dtype = bool )
111
- self .ngid : int = 0
112
111
self ._ephemeris : Ephemeris | None = ephemeris
113
112
self .n_baseline : int = n_baseline
114
- self ._noise_group : str = noise_group
113
+ self .noise_group : int = noise_group
115
114
self .epoch_group : int = epoch_group
116
115
self .offset_group : int = offset_group
117
116
self ._dataset : Optional ['TSDataSet' ] = None
117
+ self .minwl : float = 0.0
118
+ self .maxwl : float = inf
119
+ self .mintm : float = 0.0
120
+ self .maxtm : float = inf
121
+
118
122
self ._update ()
119
123
120
124
if wl_edges is None :
@@ -204,17 +208,6 @@ def import_fits(name: str, hdul: pf.HDUList) -> 'TSData':
204
208
def __repr__ (self ) -> str :
205
209
return f"TSData Name:'{ self .name } ' [{ self .wavelength [0 ]:.2f} - { self .wavelength [- 1 ]:.2f} ] nwl={ self .nwl } npt={ self .npt } "
206
210
207
- @property
208
- def noise_group (self ) -> str :
209
- """Noise group name."""
210
- return self ._noise_group
211
-
212
- @noise_group .setter
213
- def noise_group (self , ng : str ) -> None :
214
- self ._noise_group = ng
215
- if self ._dataset is not None :
216
- self ._dataset ._update_nids ()
217
-
218
211
@property
219
212
def ephemeris (self ) -> Ephemeris :
220
213
"""Ephemeris."""
@@ -225,6 +218,15 @@ def ephemeris(self, ep: Ephemeris) -> None:
225
218
self ._ephemeris = ep
226
219
self .mask_transit (ephemeris = ep )
227
220
221
+ @property
222
+ def bbox_wl (self ) -> tuple [float , float ]:
223
+ """Wavelength bounds of the bounding box."""
224
+ return self .minwl , self .maxwl
225
+
226
+ @property
227
+ def bbox_tm (self ) -> tuple [float , float ]:
228
+ return self .mintm , self .maxtm
229
+
228
230
def mask_transit (self , t0 : float | None = None , p : float | None = None , t14 : float | None = None ,
229
231
ephemeris : Ephemeris | None = None , elims : tuple [int , int ] | None = None ) -> 'TSData' :
230
232
"""Create a transit mask based on a given ephemeris or exposure index limits.
@@ -274,7 +276,10 @@ def _update(self) -> None:
274
276
"""Update the internal attributes."""
275
277
self .nwl = self .wavelength .size
276
278
self .npt = self .time .size
277
- self .wllims = self .wavelength .min (), self .wavelength .max ()
279
+ self .minwl = self .wavelength .min ()
280
+ self .maxwl = self .wavelength .max ()
281
+ self .mintm = self .time .min ()
282
+ self .maxtm = self .time .max ()
278
283
if self ._ephemeris is not None :
279
284
self .mask_transit (ephemeris = self ._ephemeris )
280
285
@@ -650,7 +655,7 @@ def bin_wavelength(self, binning: Optional[Union[Binning, CompoundBinning]] = No
650
655
with warnings .catch_warnings ():
651
656
warnings .simplefilter ('ignore' , numba .NumbaPerformanceWarning )
652
657
if binning is None :
653
- binning = Binning (self .wllims [0 ], self .wllims [1 ], nb = nb , bw = bw , r = r )
658
+ binning = Binning (self .bbox_wl [0 ], self .bbox_wl [1 ], nb = nb , bw = bw , r = r )
654
659
bf , be = bin2d (self .fluxes , self .errors , self ._wl_l_edges , self ._wl_r_edges ,
655
660
binning .bins , estimate_errors = estimate_errors )
656
661
if not all (isfinite (be )):
@@ -726,19 +731,11 @@ def _add_data(self, d: TSData) -> None:
726
731
raise ValueError ('A TSData object with the same name already exists.' )
727
732
d ._dataset = self
728
733
self .data .append (d )
729
- self ._update_nids ()
730
734
self .wlmin = min (self .wlmin , d .wavelength .min ())
731
735
self .wlmax = max (self .wlmax , d .wavelength .max ())
732
736
self .tmin = min (self .tmin , d .time .min ())
733
737
self .tmax = max (self .tmax , d .time .max ())
734
738
735
- def _update_nids (self ):
736
- ngs = pd .Categorical (self .noise_groups )
737
- self .unique_noise_groups = list (ngs .categories )
738
- self .ngids = ngs .codes .astype (int )
739
- for i ,d in enumerate (self .data ):
740
- d .ngid = self .ngids [i ]
741
-
742
739
@property
743
740
def names (self ) -> list [str ]:
744
741
"""List of data set names."""
@@ -765,7 +762,7 @@ def errors(self) -> list[ndarray]:
765
762
return [d .errors for d in self .data ]
766
763
767
764
@property
768
- def noise_groups (self ) -> list [str ]:
765
+ def noise_groups (self ) -> list [int ]:
769
766
"""List of noise group names."""
770
767
return [d .noise_group for d in self .data ]
771
768
0 commit comments