Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion GBOpt/Atom.py
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,8 @@ def as_array(atoms: np.ndarray, *, type_map: dict[str, int] = None) -> np.ndarra
converted = np.empty((len(atoms), 4))
names = atoms["name"]
if type_map is None:
type_map = {name: idx + 1 for idx, name in enumerate(set(names))}
unique_names = list(dict.fromkeys(names))
type_map = {name: idx + 1 for idx, name in enumerate(unique_names)}
else:
if not isinstance(type_map, dict):
return AtomTypeError(
Expand Down
10 changes: 9 additions & 1 deletion GBOpt/GBMaker.py
Original file line number Diff line number Diff line change
Expand Up @@ -596,7 +596,15 @@ def write_lammps(
"'atoms' and 'box_sizes' must be specified together."
)

name_to_int = {name: i + 1 for i, name in enumerate(np.unique(atoms["name"]))}
atom_names = np.unique(atoms["name"])
if set(atom_names).issubset(self.__unit_cell.type_map.keys()):
name_to_int = {
name: self.__unit_cell.type_map[name]
for name in self.__unit_cell.type_map
if name in atom_names
}
else:
name_to_int = {name: i + 1 for i, name in enumerate(atom_names)}

if charges is not None:
if not all([isinstance(i, int) or isinstance(i, str) for i in charges.keys()]):
Expand Down
Loading