Band structure: normalizer and metainfo update
The band structure processing should be refactored. This would consist of the following steps:
Update band structure metainfo so that the duplicate normalized values are removed (
section_k_band_normalized) and add new metainfo for the reciprocal cell and band gaps. The metainfo for
k_band_path_normalized_is_standardshould be renamed and moved to
section_k_band. Also, the name of the whole section could be renamed, as
section_k_bandto me implies a single band, whereas in reality it contains all the bands. I would suggest "electronic_band_structure" (I think phonon band structure should be put under a "phonon_band_structure" instead of using a flag to separate between different kinds.
- The shape of the energy values is currently [number_of_spin_channels, number_of_k_points_per_segment, number_of_band_segment_eigenvalues]. This makes sense from a parser perspective, as the output is typically stratified over k-points. However, when the band should be analyzed or visualized it makes more sense to store it in shape [number_of_spin_channels, number_of_band_segment_eigenvalues, number_of_k_points_per_segment]. This way the bands would be stored as a contiguous block of memory and can be easily and effectively looped over for visualization or band gap analysis. On the parser side, this would only require swapping the axes 1 and 2 in the numpy array before storing the values.
Create a BandStructureNormalizer that will:
- Calculate band gaps
- Add labels for high-symmetry points according to the Setyawan/Curtarolo standard. There is a partial implementation in the VASP parser. It, however, supports only a subset of Bravais lattices for some reason.
- Check if the path follows the Setyawan/Curtarolo standard.