def standardize_cell(structure): import spglib from phonopy.structure.atoms import Atoms as PhonopyAtoms from phonopy.structure.atoms import atom_data bulk = PhonopyAtoms(symbols=[site.kind_name for site in structure.sites], positions=[site.position for site in structure.sites], cell=structure.cell) structure_data = (structure.cell, bulk.get_scaled_positions(), bulk.get_atomic_numbers()) #lattice, refined_positions, numbers = spglib.refine_cell(structure_data, symprec=1e-5) lattice, standardized_positions, numbers = spglib.standardize_cell(structure_data, symprec=1e-5, to_primitive=False, no_idealize=False) symbols = [atom_data[i][1] for i in numbers] # print lattice, standardized_positions, numbers # print [site.kind_name for site in structure.sites] standardized_bulk = PhonopyAtoms(symbols=symbols, scaled_positions=standardized_positions, cell=lattice) # create new aiida structure object standarized = StructureData(cell=standardized_bulk.get_cell()) for position, symbol in zip(standardized_bulk.get_positions(), standardized_bulk.get_chemical_symbols()): standarized.append_atom(position=position, symbols=symbol) return {'standardized_structure': standarized}