def _parse_trajectory(self, out_folder): """CP2K trajectory parser""" from ase import Atoms from aiida.orm import StructureData from aiida_cp2k.utils import parse_cp2k_trajectory # pylint: disable=protected-access fname = self.node.process_class._DEFAULT_RESTART_FILE_NAME if fname not in out_folder._repository.list_object_names(): raise Exception("parsing trajectory requested, but no trajectory file available") # read restart file abs_fn = os.path.join(out_folder._repository._get_base_folder().abspath, fname) with io.open(abs_fn, mode="r", encoding="utf-8") as fobj: atoms = Atoms(**parse_cp2k_trajectory(fobj)) return StructureData(ase=atoms)
def _parse_trajectory(self): """CP2K trajectory parser.""" from ase import Atoms from aiida_cp2k.utils import parse_cp2k_trajectory fname = self.node.process_class._DEFAULT_RESTART_FILE_NAME # pylint: disable=protected-access # Check if the restart file is present. if fname not in self.retrieved.list_object_names(): raise exceptions.NotExistent("No restart file available, so the output trajectory can't be extracted") # Read the restart file. try: output_string = self.retrieved.get_object_content(fname) except IOError: return self.exit_codes.ERROR_OUTPUT_STDOUT_READ return StructureData(ase=Atoms(**parse_cp2k_trajectory(output_string)))