Source Metadata#

‘’Source Metadata’’ captures high-level information about a battery dataset in the BatteryMetadata object. Information included in BatteryMetadata, in contrast to Column Schemas, are relevant to all measurements performed on a battery, such as:

  1. The type of battery (e.g., NMC Li-ion, Pb acid)

  2. The simulation code used, if the data is from a model

  3. How the battery was cycled

  4. The authors of the data and any related publications

Metadata Structure#

BatteryMetadata objects have a hierarchical structure where each record is composed of a single document that has fields which can correspond to single values, collections of values, or entire sub-documents.

Create new metadata through the Python interface by first creating a BatteryMetadata object.

from battdat.schemas import BatteryMetadata

metadata = BatteryMetadata(
    name='test-cell',
)

Different types of information are grouped together into subdocuments, such as details about the battery in BatteryDescription

from battdat.schemas.battery import BatteryDescription
from battdat.schemas import BatteryMetadata

metadata = BatteryMetadata(
    name='test-cell',
    battery=BatteryDescription(
        manufacturer='famous',
        nominal_capacity=1.,
    )
)

BatteryMetadata automatically validate inputs, and can convert to and JSON formats. (Pydantic!)

See the battdat.schemas for a full accounting of the available fields in our schema.

Note

Validation only checks that already-defined fields are specified properly. Add metadata beyond what is described in battery-data-toolkit as desired.

Source of Terminology#

The BattINFO ontology is the core source of terms.

Fields in the schema whose names correspond to a BattINFO term are marked with the “IRI” of the field, which points to a website containing the description.

Fields whose values should be terms from the BattINFO ontology are marked with the root of the terms. For example, the model_type field of ModelMetadata can be any type of MathematicalModel. Look them up using some utilities in battdat.

from battdat.schemas.ontology import gather_descendants

print(gather_descendants('MathematicalModel'))

Note

The schema will be a continual work in progress. Consider adding an Issue to the GitHub if you find you use a term enough it should be part of the schema.

Metadata Objects#

The battery-data-toolkit expresses the metadata schema using Pydantic BaseModel objects.

High-level Data#

All metadata starts with the BatteryMetadata object.

BatteryMetadata#

Source Object: battdat.schemas.BatteryMetadata

Representation for the metadata about a battery

The metadata captures the information about what experiment was run on what battery. A complete set of metadata should be sufficient to reproduce an experiment.

Column

Type

Description

name

str

Name of the cell. Any format for the name is acceptable, as it is intended to be used by the battery data provider.

comments

str

Long form comments describing the test

version

str

(Required) Version of this metadata. Set by the battery-data-toolkit

is_measurement

bool

(Required) Whether the data was created observationally as opposed to a computer simulation

test_protocol

CyclingProtocol

Method used to

battery

BatteryDescription

Description of the battery being tested

modeling

ModelMetadata

Description of simulation approach

source

str

Organization who created this data

dataset_name

str

Name of a larger dataset this data is associated with

authors

typing.List[typing.Tuple[str, str]]

Name and affiliation of each of the authors of the data. First and last names

associated_ids

typing.List[pydantic.networks.AnyUrl]

Any identifiers associated with this data file. Identifiers can be any URI, such as DOIs of associated paper or HTTP addresses of associated websites

Describing Batteries#

BatteryDescription and its related class capture details about the structure of a battery.

BatteryDescription#

Source Object: battdat.schemas.battery.BatteryDescription

Description of the entire battery

Column

Type

Description

manufacturer

str

Manufacturer of the battery

design

str

Name of the battery type, such as the battery product ID

layer_count

int

Number of layers within the battery

form_factor

str

The general shape of the battery

mass

float

Mass of the entire battery. Units: kg

dimensions

typing.List[float]

Dimensions of the battery in plain text.

anode

ElectrodeDescription

Name of the anode material

cathode

ElectrodeDescription

Name of the cathode material

electrolyte

ElectrolyteDescription

Name of the electrolyte material

nominal_capacity

float

Rated capacity of the battery. Units: A-hr

ElectrolyteDescription#

Source Object: battdat.schemas.battery.ElectrolyteDescription

Description of the electrolyte

Column

Type

Description

name

str

Short description of the electrolyte types

additives

ElectrolyteAdditive

Any additives present in the electrolyte

ElectrolyteAdditive#

Source Object: battdat.schemas.battery.ElectrolyteAdditive

Additive to the electrolyte

Column

Type

Description

name

str

Name of the additive

amount

float

Amount added to the solution

units

float

Units of the amount

ElectrodeDescription#

Source Object: battdat.schemas.battery.ElectrodeDescription

Description of an electrode

Column

Type

Description

name

str

Short description of the electrolyte type

supplier

str

Manufacturer of the material

product

str

Name of the product. Unique to the supplier

thickness

float

Thickness of the material (units: um)

area

float

Total area of the electrode (units: cm2)

loading

float

Amount of active material per area (units: mg/cm^2)

porosity

float

Relative volume of the electrode occupied by gas (units: %)

Simulation Data#

ModelMetadata and its related class capture details about data produces using computational methods.

ModelMetadata#

Source Object: battdat.schemas.modeling.ModelMetadata

Describe the type and version of a computational tool used to generate battery data

Column

Type

Description

name

str

Name of the software

version

str

Version of the software if known

type

ModelTypes

Type of the computational method it implements.

references

typing.List[pydantic.networks.AnyUrl]

List of references associated with the software

models

typing.List[str]

Type of mathematical model(s) being used in physics simulation.Use terms defined in BattINFO, such as “BatteryEquivalentCircuitModel”.

simulation_type

str

Type of simulation being performed. Use terms defined in BattINFO, such as “TightlyCoupledModelsSimulation”

Cycling Data#

Annotate how batteries were cycled following protocol description objects.

CyclingProtocol#

Source Object: battdat.schemas.cycling.CyclingProtocol

Test protocol for cell cycling

Column

Type

Description

cycler

str

Name of the cycling machine

start_date

date

Date the initial test on the cell began

set_temperature

float

Set temperature for the battery testing equipment. Units: C

schedule

str

Schedule file used for the cycling machine