# System DeePMD-kit takes a **system** as data structure. A snapshot of a system is called a **frame**. A system may contain multiple frames with the same atom types and numbers, i.e. the same formula (like `H2O`). To contains data with different formula, one usually need to divide data into multiple systems, which may sometimes result in sparse-frame systems. See a [new system format](../model/train-se-atten.md#data-format) to further combine different systems with the same atom numbers, when training with descriptor `se_atten`. A system should contain system properties, input frame properties, and labeled frame properties. The system property contains the following property: ID | Property | Raw file | Required/Optional | Shape | Description -------- | ---------------------- | ------------ | -------------------- | ----------------------- | ----------- type | Atom type indexes | type.raw | Required | Natoms | Integers that start with 0 type_map | Atom type names | type_map.raw | Optional | Ntypes | Atom names that map to atom type, which is unnecessart to be contained in the periodic table nopbc | Non-periodic system | nopbc | Optional | 1 | If True, this system is non-periodic; otherwise it's periodic The input frame properties contains the following property, the first axis of which is the number of frames: ID | Property | Raw file | Unit | Required/Optional | Shape | Description -------- | ---------------------- | -------------- | ---- | -------------------- | ----------------------- | ----------- coord | Atomic coordinates | coord.raw | Å | Required | Nframes \* Natoms \* 3 | box | Boxes | box.raw | Å | Required if periodic | Nframes \* 3 \* 3 | in the order `XX XY XZ YX YY YZ ZX ZY ZZ` fparam | Extra frame parameters | fparam.raw | Any | Optional | Nframes \* Any | aparam | Extra atomic parameters | aparam.raw | Any | Optional | Nframes \* aparam \* Any | The labeled frame properties is listed as follows, all of which will be used for training if and only if the loss function contains such property: ID | Property | Raw file | Unit | Shape | Description ---------------------- | ----------------------- | ------------------------ | ---- | ----------------------- | ----------- energy | Frame energies | energy.raw | eV | Nframes | force | Atomic forces | force.raw | eV/Å | Nframes \* Natoms \* 3 | virial | Frame virial | virial.raw | eV | Nframes \* 9 | in the order `XX XY XZ YX YY YZ ZX ZY ZZ` atom_ener | Atomic energies | atom_ener.raw | eV | Nframes \* Natoms | atom_pref | Weights of atomic forces | atom_pref.raw | 1 | Nframes \* Natoms | dipole | Frame dipole | dipole.raw | Any | Nframes \* 3 | atomic_dipole | Atomic dipole | atomic_dipole.raw | Any | Nframes \* Natoms \* 3 | polarizability | Frame polarizability | polarizability.raw | Any | Nframes \* 9 | in the order `XX XY XZ YX YY YZ ZX ZY ZZ` atomic_polarizability | Atomic polarizability | atomic_polarizability.raw| Any | Nframes \* Natoms \* 9 | in the order `XX XY XZ YX YY YZ ZX ZY ZZ` In general, we always use the following convention of units: Property | Unit ---------| ---- Time | ps Length | Å Energy | eV Force | eV/Å Virial | eV Pressure | Bar