File size: 1,323 Bytes
8b37c3f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
from __future__ import annotations

import numpy as np
import pandas as pd

from src.data.adapters import DischargeCycle
from src.data.benchmark import build_benchmark_bundle
from src.utils.config import FEATURE_COLS_V3


def _record(cycle_number: int, capacity: float) -> DischargeCycle:
    return DischargeCycle(
        dataset="fixture",
        battery_id="B1",
        cycle_number=cycle_number,
        capacity_ah=capacity,
        ambient_temperature_c=25.0,
        source="fixture",
        measurements=pd.DataFrame({
            "Time": np.arange(7, dtype=float),
            "Voltage_measured": [4.1, 4.0, 3.9, 3.8, 3.7, 3.6, 3.5],
            "Current_measured": [-2.0] * 7,
            "Temperature_measured": np.linspace(25, 26, 7),
        }),
    )


def test_bundle_aligns_features_sequences_and_targets():
    bundle = build_benchmark_bundle(
        [_record(i, 2.0 - i * 0.05) for i in range(4)],
        rated_capacity_by_dataset={"fixture": 2.0},
    )
    assert bundle.features.shape[0] == bundle.sequences.shape[0] == 4
    assert bundle.sequences.shape[1:] == (64, 5)
    assert all(column in bundle.features for column in FEATURE_COLS_V3)
    assert np.isclose(bundle.features.loc[0, "prior_equivalent_full_cycles"], 0.0)
    assert bundle.features.loc[3, "prior_equivalent_full_cycles"] > 0