Add support for identifying conventional cell from surfaces
Each cluster (
matid.classification.structureclusterer.Cluster) given by
StructureClusterer also contains a list of the regions it has detected (stored in
cluster.regions). This contains a list of
matid.core.linkedunits.LinkedUnitCollection), which each contain the unit cell from which the region is built from (stored in
LinkedUnitCollection.cell). We want to analyze this cell and get the conventional cell that corresponds to it. The conventional cell then contains e.g. the symmetry information + can be used to construct the material_id that links the surface into the bulk material from which it is constructed from.
The following steps are needed to add this information into the topology:
Extract the biggest region from each cluster that corresponds to a Surface, and get the cell for that region. This will be an ASE.Atoms object that we can analyze further.
Each surface within the topology should get a child subsystem for the conventional cell]. Create a new
nomad.datamodel.results.Systemfor the conventional system, add it to the topology list and connect the surface to it (surface=parent, conventional cell=child).
matid.symmetry.symmetryanalyzer.SymmetryAnalyzerto get the symmetry information for the conventional cell. You can see an example of this in
nomad/normalizing/system.py. Fill the symmetry subsection (results.material.topology.symmetry) of the
Systemcorresponding to the conventional cell with this information.
Refactor code and cleanup
Add material ID for conventional system (see example in normalizing/material.py -> material_id_bulk)
Add the possibility of storing a structure directly into topology. This would be required in order to show the conventional cell that is extracted from e.g. a surface (Lauri)
Make material_id into a
Add GUI tests for (Lauri)
If structural_type cannot be determined, it should be set as
unavailable. in the GUI. (Lauri)
Extend the unit tests from issue #855 (closed) to also test that the correct symmetry information is found.