Source code for pyiron_atomistics.atomistics.job.interactivewrapper

# coding: utf-8
# Copyright (c) Max-Planck-Institut für Eisenforschung GmbH - Computational Materials Design (CM) Department
# Distributed under the terms of "New BSD License", see the LICENSE file.

from pyiron_base import InteractiveWrapper as InteractiveWrapperBase
from pyiron_snippets.deprecate import deprecate

from pyiron_atomistics.atomistics.structure.atoms import Atoms as PAtoms
from pyiron_atomistics.atomistics.structure.atoms import ase_to_pyiron

__author__ = "Osamu Waseda, Jan Janssen"
__copyright__ = (
    "Copyright 2021, Max-Planck-Institut für Eisenforschung GmbH - "
    "Computational Materials Design (CM) Department"
)
__version__ = "1.0"
__maintainer__ = "Jan Janssen"
__email__ = "janssen@mpie.de"
__status__ = "development"
__date__ = "Sep 1, 2017"


[docs] class InteractiveWrapper(InteractiveWrapperBase):
[docs] def __init__(self, project, job_name): super(InteractiveWrapper, self).__init__(project, job_name)
@property def structure(self): if self.ref_job is not None: return self._ref_job.structure else: return None @structure.setter def structure(self, basis): if self.ref_job is not None: self._ref_job.structure = basis else: raise ValueError( "A structure can only be set after a start job has been assinged." )
[docs] @deprecate("use get_structure() instead") def get_final_structure(self): """ Returns: """ if self.ref_job: return self._ref_job.get_structure(iteration_step=-1) else: return None
[docs] def db_entry(self): """ Generate the initial database entry Returns: (dict): db_dict """ db_dict = super(InteractiveWrapper, self).db_entry() if self.structure: if isinstance(self.structure, PAtoms): parent_structure = self.structure.get_parent_basis() else: parent_structure = ase_to_pyiron(self.structure).get_parent_basis() db_dict["ChemicalFormula"] = parent_structure.get_chemical_formula() return db_dict
[docs] class ReferenceJobOutput(object):
[docs] def __init__(self, job): self._job = job
@property def indices(self): return self._job.ref_job.output.indices @property def cells(self): return self._job.ref_job.output.cells @property def energy_pot(self): return self._job.ref_job.output.energy_pot @property def energy_tot(self): return self._job.ref_job.output.energy_tot @property def forces(self): return self._job.ref_job.output.forces @property def positions(self): return self._job.ref_job.output.positions @property def pressures(self): return self._job.ref_job.output.pressures @property def steps(self): return self._job.ref_job.output.steps @property def temperatures(self): return self._job.ref_job.output.temperatures @property def time(self): return self._job.ref_job.output.time @property def unwrapped_positions(self): return self._job.ref_job.output.unwrapped_positions @property def volume(self): return self._job.ref_job.output.volume def __dir__(self): return list(set(list(self._job.ref_job.interactive_cache.keys())))