#Y. Hinuma, G. Pizzi, Y. Kumagai, F. Oba, I. Tanaka, "Band structure diagram paths based on crystallography," Computational Materials Science 128, 140 (2017).

import sys
import numpy as np
from pymatgen.core import Structure
import seekpath

infile = 'ZnO.cif'
if len(sys.argv) > 1:
    infile = sys.argv[1]

structure = Structure.from_file(infile)
prim = structure.get_primitive_structure()

cell = prim.lattice.matrix
positions = prim.frac_coords
atomic_numbers = [site.specie.Z for site in prim]

spglib_cell = (cell, positions, atomic_numbers)

# 標準的なk pathを取得
result = seekpath.get_path(spglib_cell)

print("\n=== 経路 ===")
for seg in result['path']:
    print(" → ".join(seg))

print("\n=== 高対称点座標 ===")
for k, v in result['point_coords'].items():
    print(f"{k:3s} : {v}")

# バンド構造計算用のk点リストを取得
explicit = seekpath.get_explicit_k_path(spglib_cell, result['path'])

#print("\n=== k点リスト (分率座標) ===")
#for kp, label in zip(explicit['explicit_kpoints_rel'], explicit['explicit_kpoints_labels']):
#    print(f"{label:6s} : {kp}")

#print("\n=== k点リスト (絶対座標) ===")
#for kp, label in zip(explicit['explicit_kpoints_abs'], explicit['explicit_kpoints_labels']):
#    print(f"{label:6s} : {kp}")

#print("\n=== 線形座標 (プロット用x軸) ===")
#print(explicit['explicit_kpoints_linearcoord'])
