NeerajCodz's picture
Complete reviewer 2026-09 revision
8b37c3f
Raw History Blame Contribute Delete
1.54 kB
import numpy as np
from src.experiments.deep import SequenceStandardizer, TF_MODEL_IDS, TORCH_MODEL_IDS
def test_sequence_standardizer_is_train_fitted_and_finite():
X = np.array([[[1.0, np.nan], [3.0, 5.0]], [[5.0, 7.0], [7.0, 9.0]]])
scaler = SequenceStandardizer().fit(X[:1])
transformed = scaler.transform(X)
assert transformed.dtype == np.float32
assert np.isfinite(transformed).all()
assert np.allclose(transformed[:1].mean(axis=(0, 1)), [0.0, 0.0])
def test_sequence_registry_covers_ten_models():
assert len(TORCH_MODEL_IDS) + len(TF_MODEL_IDS) == 10
def test_physics_branch_uses_current_c_rate_channel():
import tensorflow as tf
from src.models.deep.itransformer import AbsCumCurrentLayer, CURRENT_CHANNEL_INDEX
from src.utils.config import SEQUENCE_FEATURE_COLS_V3
assert CURRENT_CHANNEL_INDEX == SEQUENCE_FEATURE_COLS_V3.index("current_c_rate")
values = np.zeros((1, 3, len(SEQUENCE_FEATURE_COLS_V3)), dtype=np.float32)
values[0, :, CURRENT_CHANNEL_INDEX] = [-1.0, -2.0, -3.0]
values[0, :, SEQUENCE_FEATURE_COLS_V3.index("voltage_v")] = [4.0, 3.8, 3.6]
observed = AbsCumCurrentLayer()(tf.constant(values)).numpy().reshape(-1)
np.testing.assert_allclose(observed, [1.0, 3.0, 6.0])
def test_physics_itransformer_carries_configured_loss_weight():
from src.models.deep.itransformer import build_physics_itransformer
model = build_physics_itransformer(8, 5, d_model=8, n_heads=2, n_blocks=1, lambda_phy=0.25)
assert model.physics_loss_weight == 0.25