-
Notifications
You must be signed in to change notification settings - Fork 153
Open
Labels
Description
Summary
If one want to load a dpdata.MultiSystems containing lots of Systems without any label, error will occur, and it seems hard to bypass this problem.
Detailed Description
One can get a dpdata.MultiSystems object containing series of Systems without label, and dump it via dpdata.Multisystems.to_deepmd_npy_mixed().
However, if one trying to read this deepmd/npy/mixed data from the dumping directory, error occurs:
----> 1 testdata = dpdata.MultiSystems.from_file("./Fe-C-ActMat2024-noene-mixed/100", fmt="deepmd/npy/mixed")
File ~/miniconda3/envs/deepmd-310a/lib/python3.12/site-packages/dpdata/system.py:1469, in MultiSystems.from_file(cls, file_name, fmt, **kwargs)
1466 @classmethod
1467 def from_file(cls, file_name, fmt: str, **kwargs: Any):
1468 multi_systems = cls()
-> 1469 multi_systems.load_systems_from_file(file_name=file_name, fmt=fmt, **kwargs)
1470 return multi_systems
File ~/miniconda3/envs/deepmd-310a/lib/python3.12/site-packages/dpdata/system.py:1493, in MultiSystems.load_systems_from_file(self, file_name, fmt, **kwargs)
1491 assert fmt is not None
1492 fmt = fmt.lower()
-> 1493 return self.from_fmt_obj(load_format(fmt), file_name, **kwargs)
File ~/miniconda3/envs/deepmd-310a/lib/python3.12/site-packages/dpdata/system.py:1396, in MultiSystems.from_fmt_obj(self, fmtobj, directory, labeled, **kwargs)
1394 data_list = fmtobj.from_labeled_system_mix(dd, **kwargs)
1395 for data_item in data_list:
-> 1396 system_list.append(LabeledSystem(data=data_item, **kwargs))
1397 else:
1398 data_list = fmtobj.from_system_mix(dd, **kwargs)
File ~/miniconda3/envs/deepmd-310a/lib/python3.12/site-packages/dpdata/system.py:193, in System.__init__(self, file_name, fmt, type_map, begin, step, data, convergence_check, **kwargs)
191 if data:
192 self.data = data
--> 193 self.check_data()
194 return
195 if file_name is None:
File ~/miniconda3/envs/deepmd-310a/lib/python3.12/site-packages/dpdata/system.py:221, in System.check_data(self)
219 raise DataError("data is not a dict!")
220 for dd in self.DTYPES:
--> 221 dd.check(self)
222 if sum(self.get_atom_numbs()) != self.get_natoms():
223 raise DataError(
224 "Sum of atom_numbs (%d) is not equal to natoms (%d)." # noqa: UP031
225 % (sum(self.get_atom_numbs()), self.get_natoms())
226 )
File ~/miniconda3/envs/deepmd-310a/lib/python3.12/site-packages/dpdata/data_type.py:131, in DataType.check(self, system)
129 raise RuntimeError("Unsupported type to check shape")
130 elif self.required:
--> 131 raise DataError(f"{self.name} not found in data")
DataError: energies not found in data
It seems that dpdata.MultiSystems can and only can deal with LabeledSystem but not just System
Further Information, Files, and Links
No response
Reactions are currently unavailable