Migration Guide from spglib#
Based on spglib v2.6.0
Symmetry tolerance#
symprec and mag_symprec#
Same as in spglib.
angle_tolerance#
angle_tolerance in moyopy is in radian unit, while in spglib it is in degree unit.
That being said, moyopy is expected to work without specifying angle_tolerance in most cases.
Space group#
Cell representation#
Spglib’s cell = (lattice, positions, numbers) corresponds to moyopy.Cell(basis=lattice, positions=positions, numbers=numbers).
Space-group symmetry search#
spglib.get_symmetry()#
Replace with MoyoDataset.
Let symmetry be the returned dictionary of spglib.get_symmetry(), the fields correspond to MoyoDataset fields as follows:
symmetry['rotations']->MoyoDataset.operations.rotationssymmetry['translations']->MoyoDataset.operations.translationssymmetry['equivalent_atoms']is not directly available inMoyoDataset. However,MoyoDataset.orbitsgives Spglib’scrystallographic_orbits.
spglib.get_symmetry_dataset()#
Replace with MoyoDataset.
If you need to specify hall_number, use
MoyoDataset(..., setting=Setting.hall_number(hall_number))
spglib.SpglibDataset fields correspond to MoyoDataset fields as follows:
Space-group type
number->MoyoDataset.numberhall_number->MoyoDataset.hall_number
Symmetry operations in the input cell
rotations->MoyoDataset.operations.rotationstranslations->MoyoDataset.operations.translations
Site symmetry
crystallographic_orbits->MoyoDataset.orbitswyckoffs->MoyoDataset.wyckoffssite_symmetry_symbols->MoyoDataset.site_symmetry_symbols
Standardized cell
std_lattice->MoyoDataset.std_cell.basisstd_positions->MoyoDataset.std_cell.positionsstd_types->MoyoDataset.std_cell.numberstransformation_matrix->MoyoDataset.std_linearorigin_shift->MoyoDataset.std_origin_shiftstd_rotation_matrix->MoyoDataset.std_rotation_matrix
Primitive standardized cell
mapping_to_primitive->MoyoDataset.mapping_std_prim
Secondary information
hall-> Obtainhall_numberfromMoyoDataset.hall_numberand AccessHallSymbolEntry(hall_number).hm_shortchoice-> Obtainhall_numberfromMoyoDataset.hall_numberand AccessHallSymbolEntry(hall_number).centeringinternational-> ObtainnumberfromMoyoDataset.numberand AccessSpaceGroupType(number).hm_short
Not supported in moyopy
equivalent_atoms: UseMoyoDataset.orbitsto get crystallographic orbits insteadprimitive_lattice: UseMoyoDataset.prim_std_cellif you need a primitive standardized cellstd_mapping_to_primitive: RecreateMoyoDatasetagain withMoyoDataset.prim_std_cellpointgroup
Space-group type search#
spglib.get_spacegroup()#
Moyopy does not directly support this function.
See spglib.get_symmetry_dataset().
Space-group dataset access#
spglib.get_symmetry_from_database()#
Replace spglib.get_symmetry_from_database(hall_number) with operations_from_number(number, setting).
An ITA number, number, can be obtained from HallSymbolEntry(hall_number).number.
spglib.get_spacegroup_type()#
Replace spglib.get_spacegroup_type(hall_number) with SpaceGroupType(number).
An ITA number, number, can be obtained from HallSymbolEntry(hall_number).number.
spglib.SpaceGroupType fields correspond to SpaceGroupType fields as follows:
Space-group type
number->SpaceGroupType.numberinternational_short->SpaceGroupType.hm_shortinternational_full->SpaceGroupType.hm_fullinternational->SpaceGroupType.hm_short
Arithmetic crystal class
arithmetic_crystal_class_number->SpaceGroupType.arithmetic_numberarithmetic_crystal_class_symbol->SpaceGroupType.arithmetic_symbol
Other classifications
pointgroup_international->SpaceGroupType.geometric_crystal_class
Not supported in moyopy
Hall symbol information (
choice,hall_number,hall_symbol) -> UseHallSymbolEntryinsteadpointgroup_schoenfliesschoenflies
spglib.get_spacegroup_type_from_symmetry()#
Replace spglib.get_spacegroup_type_from_symmetry(rotations, translations, lattice) it with SpaceGroup(prim_rotations, prim_translations, basis=lattice).
Be careful that SpaceGroup works only with symmetry operations in primitive.
Magnetic symmetry#
Magnetic cell representation#
Spglib’s magnetic cell cell = (lattice, positions, numbers, magmoms) with collinear (N, )-shape magmoms corresponds to MoyoCollinearMagneticCell(basis=lattice, positions=positions, numbers=numbers, magnetic_moments=magmoms).
Spglib’s magnetic cell cell = (lattice, positions, numbers, magmoms) with noncollinear (N, 3)-shape magmoms corresponds to MoyoNonCollinearMagneticCell(basis=lattice, positions=positions, numbers=numbers, magnetic_moments=magmoms).
spglib.get_magnetic_symmetry()#
Replace with MoyoCollinearMagneticDataset for collinear and MoyoNonCollinearMagneticDataset for noncollinear.
Let symmetry be the returned dictionary of spglib.get_magnetic_symmetry(), the fields correspond to MoyoNonCollinearMagneticDataset as follows:
symmetry['rotations']->MoyoNonCollinearMagneticDataset.magnetic_operations.rotationssymmetry['translations']->MoyoNonCollinearMagneticDataset.magnetic_operations.translationssymmetry['time_reversals']->MoyoNonCollinearMagneticDataset.magnetic_operations.time_reversalssymmetry['equivalent_atoms']is not directly available inMoyoNonCollinearMagneticDataset. However,MoyoNonCollinearMagneticDataset.orbitsgives Spglib’scrystallographic_orbits.symmetry['primitive_lattice']->MoyoNonCollinearMagneticDataset.prim_std_mag_cell.basisRereadMoyoNonCollinearMagneticDatasetasMoyoCollinearMagneticDatasetfor collinear case.
spglib.get_magnetic_symmetry_dataset()#
Replace with MoyoCollinearMagneticDataset for collinear and MoyoNonCollinearMagneticDataset for noncollinear.
spglib.SpglibMagneticDataset fields correspond to MoyoNonCollinearMagneticDataset fields as follows:
Magnetic space-group type
uni_number->MoyoNonCollinearMagneticDataset.uni_number
Magnetic symmetry operations in the input cell
rotations->MoyoNonCollinearMagneticDataset.magnetic_operations.rotationstranslations->MoyoNonCollinearMagneticDataset.magnetic_operations.translationstime_reversals->MoyoNonCollinearMagneticDataset.magnetic_operations.time_reversalsn_operations->MoyoNonCollinearMagneticDataset.magnetic_operations.num_operations
Site symmetry
equivalent_atoms-> UseMoyoNonCollinearMagneticDataset.orbitsto get crystallographic orbits instead
Standardized magnetic cell
std_lattice->MoyoNonCollinearMagneticDataset.std_mag_cell.basisstd_positions->MoyoNonCollinearMagneticDataset.std_mag_cell.positionsstd_types->MoyoNonCollinearMagneticDataset.std_mag_cell.numbersstd_tensors->MoyoNonCollinearMagneticDataset.std_mag_cell.magnetic_momentsn_std_atoms->MoyoNonCollinearMagneticDataset.std_mag_cell.num_atomstransformation_matrix->MoyoNonCollinearMagneticDataset.std_linearorigin_shift->MoyoNonCollinearMagneticDataset.std_origin_shiftstd_rotation_matrix->MoyoNonCollinearMagneticDataset.std_rotation_matrix
Secondary information
msg_type-> Obtainuni_numberfromMoyoNonCollinearMagneticDataset.uni_numberand AccessMagneticSpaceGroupType(uni_number).construct_type
Not supported in moyopy
primitive_lattice-> UseMoyoNonCollinearMagneticDataset.prim_std_mag_cellif you need a primitive standardized magnetic cellhall_number-> Obtainuni_numberfromMoyoNonCollinearMagneticDataset.uni_numberand AccessMagneticSpaceGroupType(uni_number)insteadtensor_rankn_atomsRereadMoyoNonCollinearMagneticDatasetasMoyoCollinearMagneticDatasetfor collinear case.
spglib.get_magnetic_spacegroup_type()#
Replace with MagneticSpaceGroupType(uni_number).
spglib.MagneticSpaceGroupType fields correspond to MagneticSpaceGroupType fields as follows:
uni_number->MagneticSpaceGroupType.uni_numberlitvin_number->MagneticSpaceGroupType.litvin_numberbns_number->MagneticSpaceGroupType.bns_numberog_number->MagneticSpaceGroupType.og_numbernumber->MagneticSpaceGroupType.numbertype->MagneticSpaceGroupType.construct_type
spglib.get_magnetic_spacegroup_type_from_symmetry()#
Replace spglib.get_magnetic_spacegroup_type_from_symmetry(rotations, translations, time_reversals, lattice) with MagneticSpaceGroup(prim_rotations, prim_translations, prim_time_reversals, basis=lattice).
Be careful that MagneticSpaceGroup works only with symmetry operations in primitive.
spglib.get_magnetic_symmetry_from_database()#
Replace it with magnetic_operations_from_uni_number(uni_number).
Standardization and finding primitive cell#
spglib.standardize_cell()#
spglib.standardize_cell(..., to_primitive, no_idealize) is replaced with creating MoyoDataset with appropriate arguments:
to_primitive=True->MoyoDataset(..., rotate_basis=no_idealize).prim_std_cellto_primitive=False->MoyoDataset(..., rotate_basis=no_idealize).std_cell
spglib.find_primitive()#
Moyopy does not directly support this function.
See spglib.standardize_cell().
spglib.refine_cell()#
Moyopy does not directly support this function.
See spglib.standardize_cell().
Lattice reduction#
spglib.niggli_reduce()#
TODO: not supported yet
spglib.delaunay_reduce()#
TODO: not supported yet
Kpoints: spglib.get_ir_reciprocal_mesh()#
moyopy does not plan to support it