Esempio n. 1
0
    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)
Esempio n. 2
0
    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)))