Metainfo refactor: System
I did a minor change to the System metainfo as follows
class Atoms(MSection):
'''
Describes the atomic structure of the physical system. This includes the atom
positions, lattice vectors, etc.
'''
m_def = Section(validate=False)
n_atoms = Quantity(
type=int,
shape=[],
description='''
The total number of species (atoms, particles) in the system.
''')
atomic_numbers = Quantity(
type=np.dtype(np.int32),
shape=['n_atoms'],
description='''
List of atomic numbers Z of the atoms identified in labels. If a species cannot
be assigned Z, a negative value can also be used to distinguish it.
''')
concentrations = Quantity(
type=np.dtype(np.float64),
shape=['n_atoms'],
description='''
Concentrations of the species defined by labels which can be assigned for systems
with variable compositions.
''')
labels = Quantity(
type=str,
shape=['n_atoms'],
description='''
List containing the labels of the atoms. In the usual case, these correspond to
the chemical symbols of the atoms. One can also append an index if there is a
need to distinguish between species with the same symbol, e.g., atoms of the
same species assigned to different atom-centered basis sets or pseudo-potentials,
or simply atoms in different locations in the structure such as those in the bulk
and on the surface. In the case where a species is not an atom, and therefore
cannot be representated by a chemical symbol, the label can simply be the name of
the particles.
''')
positions = Quantity(
type=np.dtype(np.float64),
shape=['n_atoms', 3],
unit='meter',
description='''
Positions of all the species, in cartesian coordinates. This metadata defines a
configuration and is therefore required. For alloys where concentrations of
species are given for each site in the unit cell, it stores the position of the
sites.
''')
velocities = Quantity(
type=np.dtype(np.float64),
shape=['n_atoms', 3],
unit='meter / second',
description='''
Velocities of the nuclei, defined as the change in cartesian coordinates of the
nuclei with respect to time.
''',
a_legacy=LegacyDefinition(name='atom_velocities'))
lattice_vectors = Quantity(
type=np.dtype(np.float64),
shape=[3, 3],
unit='meter',
description='''
Lattice vectors in cartesian coordinates of the simulation cell. The
last (fastest) index runs over the $x,y,z$ Cartesian coordinates, and the first
index runs over the 3 lattice vectors.
''')
lattice_vectors_reciprocal = Quantity(
type=np.dtype(np.float64),
shape=[3, 3],
unit='1/meter',
description='''
Reciprocal lattice vectors in cartesian coordinates of the simulation cell. The
first index runs over the $x,y,z$ Cartesian coordinates, and the second index runs
over the 3 lattice vectors.
''')
local_rotations = Quantity(
type=np.dtype(np.float64),
shape=['n_atoms', 3, 3],
description='''
A rotation matrix defining the orientation of each atom. If the rotation matrix
cannot be specified for an atom, the remaining atoms should set it to
the zero matrix (not the identity!)
''')
periodic = Quantity(
type=bool,
shape=[3],
description='''
Denotes if periodic boundary condition is applied to each of the lattice vectors.'
''')
class System(MSection):
'''
Every section_system contains all needed properties required to describe the simulated
physical system, e.g. the given atomic configuration, the definition of periodic cell
(if present), the external potentials and other parameters.
'''
m_def = Section(validate=False)
system_name = Quantity(
type=str,
shape=[],
description='''
Specifies the name of the system. This information is provided by the user in some
codes and is stored here for debugging or visualization purposes.
''')
system_type = Quantity(
type=str,
shape=[],
description='''
Type of the system (atom, bulk, surface, etc.) which is determined by the
normalizer.
''')
configuration_raw_gid = Quantity(
type=str,
shape=[],
description='''
checksum of the configuration_core, i.e. the geometry of the system. The values
are not normalized in any way so equivalent configurations might have different
values
''')
supercell_matrix = Quantity(
type=np.dtype(np.int32),
shape=[3, 3],
description='''
Specifies the matrix that transforms the unit-cell into the super-cell in which
the actual calculation is performed.
''')
symmorphic = Quantity(
type=bool,
shape=[],
description='''
Specifies if the space group is symmorphic. Set to True if all translations are
zero.
''')
chemical_composition = Quantity(
type=str,
shape=[],
description='''
The chemical composition as full formula of the system, based on atom species.
''')
chemical_composition_reduced = Quantity(
type=str,
shape=[],
description='''
The chemical composition as reduced formula of the system, based on atom species.
''')
chemical_composition_bulk_reduced = Quantity(
type=str,
shape=[],
description='''
The chemical composition as reduced bulk formula of the system, based on atom
species.
''',
a_legacy=LegacyDefinition(name='chemical_composition_bulk_reduced'))
n_electrons = Quantity(
type=np.dtype(np.float64),
shape=['n_spin_channels'],
description='''
Number of electrons in system
''',
categories=[ConfigurationCore])
topology_ref = Quantity(
type=Reference(SectionProxy('Topology')),
shape=[],
description='''
Reference to the topology used for this system; if not given, the trivial topology
should be assumed.
''')
is_representative = Quantity(
type=bool,
shape=[],
description='''
Most systems in a run are only minor variations of each other. Systems marked
representative where chosen to be representative for all systems in the run.
''')
atoms = SubSection(sub_section=Atoms.m_def, repeats=True)
prototype = SubSection(
sub_section=Prototype.m_def,
repeats=True,
categories=[FastAccess])
springer_material = SubSection(
sub_section=SpringerMaterial.m_def,
repeats=True,
categories=[FastAccess])
symmetry = SubSection(
sub_section=Symmetry.m_def,
repeats=True,
categories=[FastAccess])
system_to_system_ref = SubSection(
sub_section=SystemToSystemRefs.m_def,
repeats=True)
soap = SubSection(
sub_section=Soap.m_def,
repeats=True,
categories=[Unused])
@himanel1 are you okay with this change?