Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
print(" (to_primitive=1 and no_idealize=1)")
lattice, positions, numbers = spglib.standardize_cell(silicon_dist,
to_primitive=1,
no_idealize=1,
symprec=1e-1)
show_cell(lattice, positions, numbers)
print('')
symmetry = spglib.get_symmetry(silicon)
print("[get_symmetry]")
print(" Number of symmetry operations of silicon conventional")
print(" unit cell is %d (192)." % len(symmetry['rotations']))
show_symmetry(symmetry)
print('')
symmetry = spglib.get_symmetry_from_database(525)
print("[get_symmetry_from_database]")
print(" Number of symmetry operations of silicon conventional")
print(" unit cell is %d (192)." % len(symmetry['rotations']))
show_symmetry(symmetry)
print('')
reduced_lattice = spglib.niggli_reduce(niggli_lattice)
print("[niggli_reduce]")
print(" Original lattice")
show_lattice(niggli_lattice)
print(" Reduced lattice")
show_lattice(reduced_lattice)
print('')
mapping, grid = spglib.get_ir_reciprocal_mesh([11, 11, 11],
def check_if_crystal(material3d_analyzer, threshold):
"""Quantifies the crystallinity of the structure as a ratio of symmetries
per number of unique atoms in primitive cell. This metric can be used to
distinguish between amorphous and 'regular' crystals.
The number of symemtry operations corresponds to the symmetry operations
corresponding to the hall number of the structure. The symmetry operations
as given by spglib.get_symmetry() are specific to the original structure,
and they have not been reduced to the symmetries of the space group.
"""
# Get the number of equivalent atoms in the primitive cell.
n_unique_atoms_prim = len(material3d_analyzer.get_equivalent_atoms_primitive())
hall_number = material3d_analyzer.get_hall_number()
sym_ops = spglib.get_symmetry_from_database(hall_number)
n_symmetries = len(sym_ops["rotations"])
ratio = n_symmetries/float(n_unique_atoms_prim)
if ratio >= threshold:
return True
return False
Args:
hall_number: Integer with the Hall number.
Returns:
Dictionary of symmetry operations with keys "rotations", "translations"
and values Nx(3x3) array of integers, Nx3 array of float, respectively.
None if `spglib` is unable to determine symmetry.
Raises:
ImportError: If `spglib` cannot be imported.
"""
_check_spglib_install()
return spglib.get_symmetry_from_database(hall_number)
corresponding to the hall number of the structure. The symmetry operations
as given by spglib.get_symmetry() are specific to the original structure,
and they have not been reduced to the symmetries of the space group.
Args:
symmetry_analyser (): A SymmetryAnalyzer object that has been
initialized with an atomic structure.
Returns:
(float) A ratio of symmetries per unique atoms in the primitive cell.
"""
# Get the number of equivalent atoms in the primitive cell.
n_unique_atoms_prim = len(symmetry_analyser.get_equivalent_atoms_primitive())
hall_number = symmetry_analyser.get_hall_number()
sym_ops = spglib.get_symmetry_from_database(hall_number)
n_symmetries = len(sym_ops["rotations"])
ratio = n_symmetries/float(n_unique_atoms_prim)
return ratio