@@ -32,14 +32,9 @@ class DACycler():
3232 If not provided will be calculated automatically.
3333 h: Optional observation operator as function. More flexible
3434 (allows for more complex observation operator). Default is None.
35-
36- Attributes:
37- in_4d: True for 4D data assimilation techniques (e.g. 4DVar).
38- ensemble: True for ensemble-based data assimilation techniques
39- (ETKF).
4035 """
41- in_4d = False
42- ensemble = False
36+ _in_4d : bool = False
37+ _uses_ensemble : bool = False
4338
4439 def __init__ (self ,
4540 system_dim : int ,
@@ -229,7 +224,7 @@ def cycle(self,
229224
230225 # If don't specify analysis_time_in_window, is assumed to be middle
231226 if analysis_time_in_window is None :
232- if self .in_4d :
227+ if self ._in_4d :
233228 analysis_time_in_window = 0
234229 else :
235230 analysis_time_in_window = self .analysis_window / 2
@@ -256,7 +251,7 @@ def cycle(self,
256251 obs_times = jnp .array (obs_vector .time .values ),
257252 analysis_times = all_times + _time_offset ,
258253 start_inclusive = True ,
259- end_inclusive = self .in_4d ,
254+ end_inclusive = self ._in_4d ,
260255 analysis_window = analysis_window
261256 )
262257 input_state = input_state .assign (_cur_time = start_time )
@@ -272,7 +267,7 @@ def cycle(self,
272267 obs_vector [self ._observed_vars ].to_array ().data )
273268 self ._obs_vector = self ._obs_vector .fillna (0 )
274269
275- if self .in_4d :
270+ if self ._in_4d :
276271 cur_state , all_values = jax .lax .scan (
277272 self ._cycle_and_forecast_4d ,
278273 xj .from_xarray (input_state ),
0 commit comments