Validation#
Validation
There are multiple ways to check if a file or dataframe are compliant
with the BDF recommendations using the validate() function. The
validate function take as an argument:
a filepath
a URL
a dataframe
It compares the content of the object with the BDF and returns a report.
# Import the package
import bdf
# Read from a local file path and convert to bdf
filepath = "../data/SINTEF__LiGrR2032__2024-04-30__25degC__Landt.csv"
df = bdf.read(filepath)
df.head()
Test Time / s Voltage / V Current / A Step Index / 1 \
0 0.020 2.9215 0.0000 1
1 15.020 2.9215 0.0000 1
2 30.020 2.9214 0.0000 1
3 45.020 2.9214 0.0000 1
4 60.020 2.9213 0.0000 1
Discharging Capacity / Ah Charging Capacity / Ah Ambient Temperature / degC
0 0 0 0
1 0 0 0
2 0 0 0
3 0 0 0
4 0 0 0
# Validate the dataframe and print the report
report = bdf.validate(df, report=True)
print(report)
✅ BDF validation passed
rows: 25,162 cols: 7
{'ok': True, 'missing': [], 'extras': [], 'required': ('Test Time / s', 'Voltage / V', 'Current / A'), 'optional': ('Unix Time / s', 'Cycle Count / 1', 'Step Count / 1', 'Ambient Temperature / degC', 'Step Index / 1', 'Charging Capacity / Ah', 'Discharging Capacity / Ah', 'Step Capacity / Ah', 'Net Capacity / Ah', 'Cumulative Capacity / Ah', 'Charging Energy / Wh', 'Discharging Energy / Wh', 'Step Energy / Wh', 'Net Energy / Wh', 'Cumulative Energy / Wh', 'Power / W', 'Internal Resistance / ohm', 'Ambient Pressure / Pa', 'Applied Pressure / Pa', 'Surface Temperature T1 / degC', 'Surface Temperature T2 / degC', 'Surface Temperature T3 / degC', 'Surface Temperature T4 / degC', 'Surface Temperature T5 / degC'), 'n_rows': 25162, 'n_cols': 7, 'time_stats': {'present': True, 'monotonic': True, 'violations': 0, 'min_drop': 0.0, 'first_bad_index': None, 'epsilon': 1.0}}
# Validate the file prior to bdf conversion
report = bdf.validate(filepath, report=True)
Validation failed: SINTEF__LiGrR2032__2024-04-30__25degC__Landt.csv does not look like a BDF artifact (expected .bdf.<ext> or a BDF-style header).