Battery Data Schemas#
The metadata schemas used by `batdata`
standardize how we describe the source of battery datasets.
Metadata are held as part of the BatteryDataset
object and saved within the file formats
produced by batdata
to ensure that the provenance of a dataset is kept alongside the actual data.
Understanding the Metadata#
The metadata we employ in batdata
follows the style of the JSON or XML data structures which are ubiquitous
in scientific computation and data infrastructure.
We recommend creating the metadata for a battery through the Python interface.
Start by creating a BatteryMetadata
object. There are no required fields, but you should always give your data a name.
from batdata.schemas import BatteryMetadata
metadata = BatteryMetadata(
name='test-cell',
)
The metadata is a nested document where different types of information are grouped together into sub objects. For example, the details about the battery being tested are in BatteryDescription
from batdata.schemas.battery import BatteryDescription
from batdata.schemas import BatteryMetadata
metadata = BatteryMetadata(
name='test-cell',
battery=BatteryDescription(
manufacturer='famous',
nominal_capacity=1.,
)
)
See the schemas for a full accounting of the available fields in our schema.
Note
TODO: Render the schemas into an easier-to-read format
Feel free to add your own fields to any part fo the schema. The schema is a continual work in progress and the battery-data-toolkit will store your new fields. Consider adding an Issue to our GitHub if you find you use a term enough that we should add it to the schema.
Source of Terminology#
We use terms from BattINFO ontology wherever possible.
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 <https://emmo-repo.github.io/emmo.html#EMMO_f7ed665b_c2e1_42bc_889b_6b42ed3a36f0>`_.
Look them up using some utilities in batdata
.
from batdata.schemas.ontology import gather_descendants
print(gather_descendants('MathematicalModel'))
Note
TODO: Render the options in web-hosted documentation as well
Column Datasets#
The columns of datasets are described in the cycling module.
Use the descriptions here when formatting your dataset, playing attention to the sign conventions and units for each column.
Record columns that are not defined in our schema in the *_columns
fields
of the BatteryMetadata
.
from batdata.schemas import BatteryMetadata
metadata = BatteryMetadata(
name='test_cell',
raw_data_columns={'new_signal': 'A column not yet defined in our schemas.'}
)