def read_crystal_structure(filename=None, interface_mode=None, chemical_symbols=None, yaml_mode=False): if filename is None: unitcell_filename = get_default_cell_filename(interface_mode, yaml_mode) else: unitcell_filename = filename if not os.path.exists(unitcell_filename): if filename is None: return None, (unitcell_filename + " (default file name)", ) else: return None, (unitcell_filename, ) if yaml_mode: from phonopy.interface.phonopy_yaml import PhonopyYaml phpy_yaml = PhonopyYaml() phpy_yaml.read(unitcell_filename) unitcell = phpy_yaml.get_unitcell() return unitcell, (unitcell_filename, ) if interface_mode is None or interface_mode == 'vasp': from phonopy.interface.vasp import read_vasp if chemical_symbols is None: unitcell = read_vasp(unitcell_filename) else: unitcell = read_vasp(unitcell_filename, symbols=chemical_symbols) return unitcell, (unitcell_filename, ) if interface_mode == 'abinit': from phonopy.interface.abinit import read_abinit unitcell = read_abinit(unitcell_filename) return unitcell, (unitcell_filename, ) if interface_mode == 'pwscf': from phonopy.interface.pwscf import read_pwscf unitcell, pp_filenames = read_pwscf(unitcell_filename) return unitcell, (unitcell_filename, pp_filenames) if interface_mode == 'wien2k': from phonopy.interface.wien2k import parse_wien2k_struct unitcell, npts, r0s, rmts = parse_wien2k_struct(unitcell_filename) return unitcell, (unitcell_filename, npts, r0s, rmts) if interface_mode == 'elk': from phonopy.interface.elk import read_elk unitcell, sp_filenames = read_elk(unitcell_filename) return unitcell, (unitcell_filename, sp_filenames) if interface_mode == 'siesta': from phonopy.interface.siesta import read_siesta unitcell, atypes = read_siesta(unitcell_filename) return unitcell, (unitcell_filename, atypes) if interface_mode == 'crystal': from phonopy.interface.crystal import read_crystal unitcell, conv_numbers = read_crystal(unitcell_filename) return unitcell, (unitcell_filename, conv_numbers)
def read_crystal_structure(filename=None, interface_mode=None, chemical_symbols=None, command_name="phonopy"): if interface_mode == 'phonopy_yaml': return _read_phonopy_yaml(filename, command_name) if filename is None: cell_filename = get_default_cell_filename(interface_mode) if not os.path.isfile(cell_filename): return None, (cell_filename, "(default file name)") else: cell_filename = filename if not os.path.isfile(cell_filename): return None, (cell_filename, ) if interface_mode is None or interface_mode == 'vasp': from phonopy.interface.vasp import read_vasp if chemical_symbols is None: unitcell = read_vasp(cell_filename) else: unitcell = read_vasp(cell_filename, symbols=chemical_symbols) return unitcell, (cell_filename, ) elif interface_mode == 'abinit': from phonopy.interface.abinit import read_abinit unitcell = read_abinit(cell_filename) return unitcell, (cell_filename, ) elif interface_mode == 'qe': from phonopy.interface.qe import read_pwscf unitcell, pp_filenames = read_pwscf(cell_filename) return unitcell, (cell_filename, pp_filenames) elif interface_mode == 'wien2k': from phonopy.interface.wien2k import parse_wien2k_struct unitcell, npts, r0s, rmts = parse_wien2k_struct(cell_filename) return unitcell, (cell_filename, npts, r0s, rmts) elif interface_mode == 'elk': from phonopy.interface.elk import read_elk unitcell, sp_filenames = read_elk(cell_filename) return unitcell, (cell_filename, sp_filenames) elif interface_mode == 'siesta': from phonopy.interface.siesta import read_siesta unitcell, atypes = read_siesta(cell_filename) return unitcell, (cell_filename, atypes) elif interface_mode == 'cp2k': from phonopy.interface.cp2k import read_cp2k unitcell = read_cp2k(cell_filename) return unitcell, (cell_filename, ) elif interface_mode == 'crystal': from phonopy.interface.crystal import read_crystal unitcell, conv_numbers = read_crystal(cell_filename) return unitcell, (cell_filename, conv_numbers) elif interface_mode == 'dftbp': from phonopy.interface.dftbp import read_dftbp unitcell = read_dftbp(cell_filename) return unitcell, (cell_filename, ) elif interface_mode == 'turbomole': from phonopy.interface.turbomole import read_turbomole unitcell = read_turbomole(cell_filename) return unitcell, (cell_filename, )
def read_crystal_structure(filename=None, interface_mode="vasp", chemical_symbols=None, yaml_mode=False): if filename is None: unitcell_filename = get_default_cell_filename(interface_mode, yaml_mode) else: unitcell_filename = filename if not os.path.exists(unitcell_filename): if filename is None: return None, (unitcell_filename + " (default file name)",) else: return None, (unitcell_filename,) if yaml_mode: from phonopy.interface.phonopy_yaml import phonopyYaml unitcell = phonopyYaml(unitcell_filename).get_atoms() return unitcell, (unitcell_filename,) if interface_mode == "vasp": from phonopy.interface.vasp import read_vasp if chemical_symbols is None: unitcell = read_vasp(unitcell_filename) else: unitcell = read_vasp(unitcell_filename, symbols=chemical_symbols) return unitcell, (unitcell_filename,) if interface_mode == "abinit": from phonopy.interface.abinit import read_abinit unitcell = read_abinit(unitcell_filename) return unitcell, (unitcell_filename,) if interface_mode == "pwscf": from phonopy.interface.pwscf import read_pwscf unitcell, pp_filenames = read_pwscf(unitcell_filename) return unitcell, (unitcell_filename, pp_filenames) if interface_mode == "wien2k": from phonopy.interface.wien2k import parse_wien2k_struct unitcell, npts, r0s, rmts = parse_wien2k_struct(unitcell_filename) return unitcell, (unitcell_filename, npts, r0s, rmts) if interface_mode == "elk": from phonopy.interface.elk import read_elk unitcell, sp_filenames = read_elk(unitcell_filename) return unitcell, (unitcell_filename, sp_filenames) if interface_mode == "siesta": from phonopy.interface.siesta import read_siesta unitcell, atypes = read_siesta(unitcell_filename) return unitcell, (unitcell_filename, atypes)
def test_read_abinit(): """Test of read_abinit.""" cell = read_abinit(os.path.join(data_dir, "NaCl-abinit.in")) filename = os.path.join(data_dir, "NaCl-abinit-pwscf.yaml") cell_ref = read_cell_yaml(filename) assert (np.abs(cell.cell - cell_ref.cell) < 1e-5).all() diff_pos = cell.scaled_positions - cell_ref.scaled_positions diff_pos -= np.rint(diff_pos) assert (np.abs(diff_pos) < 1e-5).all() for s, s_r in zip(cell.symbols, cell_ref.symbols): assert s == s_r
def read_crystal_structure(filename=None, interface_mode=None, chemical_symbols=None, yaml_mode=False): if filename is None: unitcell_filename = get_default_cell_filename(interface_mode, yaml_mode) else: unitcell_filename = filename if not os.path.exists(unitcell_filename): if filename is None: return None, (unitcell_filename + " (default file name)",) else: return None, (unitcell_filename,) if yaml_mode: from phonopy.interface.phonopy_yaml import PhonopyYaml phpy_yaml = PhonopyYaml() phpy_yaml.read(unitcell_filename) unitcell = phpy_yaml.get_unitcell() return unitcell, (unitcell_filename,) if interface_mode is None or interface_mode == 'vasp': from phonopy.interface.vasp import read_vasp if chemical_symbols is None: unitcell = read_vasp(unitcell_filename) else: unitcell = read_vasp(unitcell_filename, symbols=chemical_symbols) return unitcell, (unitcell_filename,) if interface_mode == 'abinit': from phonopy.interface.abinit import read_abinit unitcell = read_abinit(unitcell_filename) return unitcell, (unitcell_filename,) if interface_mode == 'pwscf': from phonopy.interface.pwscf import read_pwscf unitcell, pp_filenames = read_pwscf(unitcell_filename) return unitcell, (unitcell_filename, pp_filenames) if interface_mode == 'wien2k': from phonopy.interface.wien2k import parse_wien2k_struct unitcell, npts, r0s, rmts = parse_wien2k_struct(unitcell_filename) return unitcell, (unitcell_filename, npts, r0s, rmts) if interface_mode == 'elk': from phonopy.interface.elk import read_elk unitcell, sp_filenames = read_elk(unitcell_filename) return unitcell, (unitcell_filename, sp_filenames) if interface_mode == 'siesta': from phonopy.interface.siesta import read_siesta unitcell, atypes = read_siesta(unitcell_filename) return unitcell, (unitcell_filename, atypes)
def test_read_abinit(self): cell = read_abinit("NaCl-abinit.in") cell_ref = get_unitcell_from_phonopy_yaml("NaCl-abinit.yaml") self.assertTrue( (np.abs(cell.get_cell() - cell_ref.get_cell()) < 1e-5).all()) diff_pos = cell.get_scaled_positions() - cell_ref.get_scaled_positions( ) diff_pos -= np.rint(diff_pos) self.assertTrue((np.abs(diff_pos) < 1e-5).all()) for s, s_r in zip(cell.get_chemical_symbols(), cell_ref.get_chemical_symbols()): self.assertTrue(s == s_r)
def test_read_abinit(self): cell = read_abinit(os.path.join(data_dir, "NaCl-abinit.in")) filename = os.path.join(data_dir, "NaCl-abinit-pwscf.yaml") cell_ref = get_unitcell_from_phonopy_yaml(filename) self.assertTrue( (np.abs(cell.get_cell() - cell_ref.get_cell()) < 1e-5).all()) diff_pos = cell.get_scaled_positions() - cell_ref.get_scaled_positions() diff_pos -= np.rint(diff_pos) self.assertTrue((np.abs(diff_pos) < 1e-5).all()) for s, s_r in zip(cell.get_chemical_symbols(), cell_ref.get_chemical_symbols()): self.assertTrue(s == s_r)
def test_read_abinit(self): cell = read_abinit(os.path.join(data_dir, "NaCl-abinit.in")) filename = os.path.join(data_dir, "NaCl-abinit-pwscf.yaml") cell_ref = read_cell_yaml(filename) self.assertTrue( (np.abs(cell.get_cell() - cell_ref.get_cell()) < 1e-5).all()) diff_pos = (cell.get_scaled_positions() - cell_ref.get_scaled_positions()) diff_pos -= np.rint(diff_pos) self.assertTrue((np.abs(diff_pos) < 1e-5).all()) for s, s_r in zip(cell.get_chemical_symbols(), cell_ref.get_chemical_symbols()): self.assertTrue(s == s_r)
def read_crystal_structure(filename=None, interface_mode='vasp', chemical_symbols=None): if filename is None: unitcell_filename = get_default_cell_filename(interface_mode) else: unitcell_filename = filename if not os.path.exists(unitcell_filename): if filename is None: return None, (unitcell_filename + " (default file name)", ) else: return None, (unitcell_filename, ) if interface_mode == 'vasp': from phonopy.interface.vasp import read_vasp if chemical_symbols is None: unitcell = read_vasp(unitcell_filename) else: unitcell = read_vasp(unitcell_filename, symbols=chemical_symbols) return unitcell, (unitcell_filename, ) if interface_mode == 'abinit': from phonopy.interface.abinit import read_abinit unitcell = read_abinit(unitcell_filename) return unitcell, (unitcell_filename, ) if interface_mode == 'pwscf': from phonopy.interface.pwscf import read_pwscf unitcell, pp_filenames = read_pwscf(unitcell_filename) return unitcell, (unitcell_filename, pp_filenames) if interface_mode == 'wien2k': from phonopy.interface.wien2k import parse_wien2k_struct unitcell, npts, r0s, rmts = parse_wien2k_struct(unitcell_filename) return unitcell, (unitcell_filename, npts, r0s, rmts)
def read_crystal_structure(filename=None, interface_mode='vasp', chemical_symbols=None): if filename is None: unitcell_filename = get_default_cell_filename(interface_mode) else: unitcell_filename = filename if not os.path.exists(unitcell_filename): if filename is None: return None, (unitcell_filename + " (default file name)",) else: return None, (unitcell_filename,) if interface_mode == 'vasp': from phonopy.interface.vasp import read_vasp if chemical_symbols is None: unitcell = read_vasp(unitcell_filename) else: unitcell = read_vasp(unitcell_filename, symbols=chemical_symbols) return unitcell, (unitcell_filename,) if interface_mode == 'abinit': from phonopy.interface.abinit import read_abinit unitcell = read_abinit(unitcell_filename) return unitcell, (unitcell_filename,) if interface_mode == 'pwscf': from phonopy.interface.pwscf import read_pwscf unitcell, pp_filenames = read_pwscf(unitcell_filename) return unitcell, (unitcell_filename, pp_filenames) if interface_mode == 'wien2k': from phonopy.interface.wien2k import parse_wien2k_struct unitcell, npts, r0s, rmts = parse_wien2k_struct(unitcell_filename) return unitcell, (unitcell_filename, npts, r0s, rmts)
def read_crystal_structure(filename=None, interface_mode=None, chemical_symbols=None, command_name="phonopy"): """Returns crystal structure information Returns ------- tuple (Unit cell in PhonopyAtoms, optional_structure_info in tuple) The optional_structure_info is given by a tuple. The first element of it is the unit cell file name for which the unit cell data are read, and the rest is dependent on calculator interface. """ if interface_mode == 'phonopy_yaml': return _read_phonopy_yaml(filename, command_name) if filename is None: cell_filename = get_default_cell_filename(interface_mode) if not os.path.isfile(cell_filename): return None, (cell_filename, "(default file name)") else: cell_filename = filename if not os.path.isfile(cell_filename): return None, (cell_filename, ) if interface_mode is None or interface_mode == 'vasp': from phonopy.interface.vasp import read_vasp if chemical_symbols is None: unitcell = read_vasp(cell_filename) else: unitcell = read_vasp(cell_filename, symbols=chemical_symbols) return unitcell, (cell_filename, ) elif interface_mode == 'abinit': from phonopy.interface.abinit import read_abinit unitcell = read_abinit(cell_filename) return unitcell, (cell_filename, ) elif interface_mode == 'qe': from phonopy.interface.qe import read_pwscf unitcell, pp_filenames = read_pwscf(cell_filename) return unitcell, (cell_filename, pp_filenames) elif interface_mode == 'wien2k': from phonopy.interface.wien2k import parse_wien2k_struct unitcell, npts, r0s, rmts = parse_wien2k_struct(cell_filename) return unitcell, (cell_filename, npts, r0s, rmts) elif interface_mode == 'elk': from phonopy.interface.elk import read_elk unitcell, sp_filenames = read_elk(cell_filename) return unitcell, (cell_filename, sp_filenames) elif interface_mode == 'siesta': from phonopy.interface.siesta import read_siesta unitcell, atypes = read_siesta(cell_filename) return unitcell, (cell_filename, atypes) elif interface_mode == 'cp2k': from phonopy.interface.cp2k import read_cp2k unitcell, config_tree = read_cp2k(cell_filename) return unitcell, (cell_filename, config_tree) elif interface_mode == 'crystal': from phonopy.interface.crystal import read_crystal unitcell, conv_numbers = read_crystal(cell_filename) return unitcell, (cell_filename, conv_numbers) elif interface_mode == 'dftbp': from phonopy.interface.dftbp import read_dftbp unitcell = read_dftbp(cell_filename) return unitcell, (cell_filename, ) elif interface_mode == 'turbomole': from phonopy.interface.turbomole import read_turbomole unitcell = read_turbomole(cell_filename) return unitcell, (cell_filename, ) elif interface_mode == 'aims': from phonopy.interface.aims import read_aims unitcell = read_aims(cell_filename) return unitcell, (cell_filename, ) else: raise RuntimeError("No calculator interface was found.")
def read_crystal_structure(filename=None, interface_mode=None, chemical_symbols=None, phonopy_yaml_cls=None): """Returns crystal structure information Parameters ---------- filename : str, optional Filename that contains cell structure information. Default is None. The predetermined filename for each interface_mode is used. interface_mode : str, optional This is used to recognize the file format. Default is None, which is equivalent to 'vasp' mode. chemical_symbols : list of str, optional This is only used for 'vasp' mode. VASP POSCAR file format can be written without chemical symbol information. With this option, chemical symbols can be given. phonopy_yaml_cls : PhonopyYaml, optional This brings PhonopyYaml-like class dependent parameters. Here, currently only the default filenames are provided by this. Returns ------- tuple (Unit cell in PhonopyAtoms, optional_structure_info in tuple) The optional_structure_info is given by a tuple. The first element of it is the unit cell file name for which the unit cell data are read, and the rest is dependent on calculator interface. """ if interface_mode == 'phonopy_yaml': if phonopy_yaml_cls is None: return _read_phonopy_yaml(filename, PhonopyYaml) else: return _read_phonopy_yaml(filename, phonopy_yaml_cls) if filename is None: cell_filename = get_default_cell_filename(interface_mode) if not os.path.isfile(cell_filename): return None, (cell_filename, "(default file name)") else: cell_filename = filename if not os.path.isfile(cell_filename): return None, (cell_filename, ) if interface_mode is None or interface_mode == 'vasp': from phonopy.interface.vasp import read_vasp if chemical_symbols is None: unitcell = read_vasp(cell_filename) else: unitcell = read_vasp(cell_filename, symbols=chemical_symbols) return unitcell, (cell_filename, ) elif interface_mode == 'abinit': from phonopy.interface.abinit import read_abinit unitcell = read_abinit(cell_filename) return unitcell, (cell_filename, ) elif interface_mode == 'qe': from phonopy.interface.qe import read_pwscf unitcell, pp_filenames = read_pwscf(cell_filename) return unitcell, (cell_filename, pp_filenames) elif interface_mode == 'wien2k': from phonopy.interface.wien2k import parse_wien2k_struct unitcell, npts, r0s, rmts = parse_wien2k_struct(cell_filename) return unitcell, (cell_filename, npts, r0s, rmts) elif interface_mode == 'elk': from phonopy.interface.elk import read_elk unitcell, sp_filenames = read_elk(cell_filename) return unitcell, (cell_filename, sp_filenames) elif interface_mode == 'siesta': from phonopy.interface.siesta import read_siesta unitcell, atypes = read_siesta(cell_filename) return unitcell, (cell_filename, atypes) elif interface_mode == 'cp2k': from phonopy.interface.cp2k import read_cp2k unitcell, config_tree = read_cp2k(cell_filename) return unitcell, (cell_filename, config_tree) elif interface_mode == 'crystal': from phonopy.interface.crystal import read_crystal unitcell, conv_numbers = read_crystal(cell_filename) return unitcell, (cell_filename, conv_numbers) elif interface_mode == 'dftbp': from phonopy.interface.dftbp import read_dftbp unitcell = read_dftbp(cell_filename) return unitcell, (cell_filename, ) elif interface_mode == 'turbomole': from phonopy.interface.turbomole import read_turbomole unitcell = read_turbomole(cell_filename) return unitcell, (cell_filename, ) elif interface_mode == 'aims': from phonopy.interface.aims import read_aims unitcell = read_aims(cell_filename) return unitcell, (cell_filename, ) elif interface_mode == 'castep': from phonopy.interface.castep import read_castep unitcell = read_castep(cell_filename) return unitcell, (cell_filename, ) else: raise RuntimeError("No calculator interface was found.")