DelayedStudy.Config(
        experiment_name='exp019',
        seed=None,
        data=DelayedData.Config(
        │   seq_len=160,
        │   pred_len=48,
        │   cheap=Oscillator.Config(
        │       step_size=0.1,
        │       substeps=4,
        │       stiffness=1.0,
        │       damping=0.15,
        │       cubic=0.0
        │   ),
        │   reference=DelayedOscillator.Config(
        │       step_size=0.1,
        │       substeps=4,
        │       stiffness=1.0,
        │       damping=0.15,
        │       cubic=0.0,
        │       lags=[144, 112, 80, 48],
        │       gain=2.0
        │   ),
        │   train=InitialStates.Config(
        │       seed=101,
        │       count=128,
        │       amplitude=(0.2, 1.5),
        │       velocity=2.0
        │   ),
        │   validation=InitialStates.Config(
        │       seed=202,
        │       count=64,
        │       amplitude=(0.2, 1.5),
        │       velocity=2.0
        │   ),
        │   synthetic=InitialStates.Config(
        │       seed=303,
        │       count=1_024,
        │       amplitude=(0.2, 1.5),
        │       velocity=2.0
        │   ),
        │   test=InitialStates.Config(
        │       seed=404,
        │       count=256,
        │       amplitude=(0.2, 1.5),
        │       velocity=2.0
        │   ),
        │   shifted=InitialStates.Config(
        │       seed=505,
        │       count=256,
        │       amplitude=(1.5, 2.5),
        │       velocity=2.0
        │   ),
        │   history=SignedHistory.Config(
        │       pulses=[
        │           Pulse.Config(start=0, width=32),
        │           Pulse.Config(start=32, width=32),
        │           Pulse.Config(start=64, width=32),
        │           Pulse.Config(start=96, width=32)
        │       ]
        │   )
        ),
        method=DLinearForecast.Config(
        │   step=Etth1TrainStep.Config(
        │       model=DLinear.Config(
        │           seq_len=160,
        │           pred_len=48,
        │           channels=2,
        │           decomposition=SeriesDecomposition.Config(
        │               moving_average=MovingAverage.Config(kernel_size=25)
        │           ),
        │           seasonal=MeanLinear.Config(
        │               channels_in=160,
        │               channels_out=48,
        │               bias=True
        │           ),
        │           trend=MeanLinear.Config(
        │               channels_in=160,
        │               channels_out=48,
        │               bias=True
        │           ),
        │           decoder=ReferenceLinear.Config(
        │               channels_in=160,
        │               channels_out=48,
        │               bias=True
        │           )
        │       ),
        │       optimizer=PartialConfig(<class 'torch.optim.adam.Adam'>, lr=0.001),
        │       loss=SimpleLoss.Config(
        │           loss_fn=priml.loss.simple_loss.mse,
        │           target_key='label',
        │           kwargs={'reduction': 'mean'},
        │           channels_out=-1
        │       ),
        │       accumulate_grad_batches=1,
        │       drop_partial_accumulation_on_epoch_end=True,
        │       train_budget_steps=300,
        │       train_budget_sec=inf,
        │       train_budget_epochs=inf,
        │       lr_schedule=PartialConfig(priml.math.schedules.constant),
        │       parallelism=NoParallel.Config(device=None),
        │       model_quantization=NoModelQuantization.Config(),
        │       activation_memoization=DefaultActivationStorage.Config(),
        │       compile=None,
        │       ema=NoEMA.Config(),
        │       gradient_clip_norm=inf,
        │       skip_step_on_nonfinite_grad=False,
        │       device_init='eager',
        │       dtype_autocast=None,
        │       autocast_cache_enabled=False,
        │       seed=None
        │   ),
        │   pretrain_updates=0,
        │   batch_size=8,
        │   validation_every=25,
        │   sample_seed=606
        )
    )
