Implementation of MatID structurecluster class in Normalizier

The current structure normalizer, which classifies the structure e.g. in surface, volume, 1D, 2D, should be extended by the MatID structurecluster class. To avoid false positives and false negatives, a decision tree is integrated.

  • Add a git submodule for the MatID development version that has the new StructureClusterer class.
  • Add the new Topology metainfo from the MD branch. This is liable to change in the future, but it's easy to adapt afterward (atomutils.py, normalizing/material.py, datamodel/results.py).
  • Add the GUI updates for visualizing topologies from the MD branch (archive.js, Quantity.js, Structure.js, BrillouinZone.js, Overview.js, MaterialCardTopology.js)
  • Modify nomad/normalizing/material.py to include a new function that adds the new topological (=hierarchy of identified subsystems) data into results.material.topology. For an easy start, we can simply:
    • Run this clusterer only after we see that the results.material.structure_type == unavailable.
    • Concentrate on a very simple case first, e.g. getting reasonable results for systems that comprise of several stacked surfaces (=heterostructures) or adsorbtion systems.
  • Add unit test for the surface examples (6?):
    • Test that correct elements and number of elements are present
    • Test that topology contains only surfaces (molecules/outliers should not be stored in the topology for now.
    • Test that the cluster indices match up to some percentage (90?)
    • Test that structural_type = surface
Edited Aug 01, 2022 by Thea Denell
Assignee Loading
Time tracking Loading