Пример #1
0
def main(args):
    with h5py.File(args.input_path, mode="r") as f:
        job_name = list(f.keys())[0]
    project_path = os.path.join(os.path.abspath("."), job_name + ".h5")
    shutil.copy(args.input_path, project_path)

    file = os.path.basename(project_path)
    job_name = os.path.splitext(file)[0]

    db_project_path = s.top_path(project_path)
    project = os.path.dirname(project_path)
    db_project = (project + "/")
    if db_project_path is not None:
        db_project = db_project.replace(db_project_path, "")
    job_reload = Project(project).load_from_jobpath(
        job_id=None,
        db_entry={
            "id": 1000,
            "status": "",
            "chemicalformula": "",
            "job": job_name,
            "subjob": "/" + job_name,
            "projectpath": db_project_path,
            "project": db_project,
            "hamilton": "",
            "hamversion": "",
            "parentid": None,
            "masterid": None,
        },
        convert_to_object=True,
    )
    job_reload.status.initialized = True
    job_reload.server.run_mode.modal = True
    job_reload.run()
    shutil.copy(project_path, args.output_path)
Пример #2
0
 def test_import_from_proj(self):
     self.pr.pack(destination_path=self.arch_dir, compress=False)
     self.imp_pr.remove_jobs(recursive=True, silently=True)
     aux_proj = Project(self.arch_dir)  # an auxilary project
     aux_proj.open(os.curdir)
     self.imp_pr.unpack(aux_proj, compress=False)
     path_original = self.pr.path
     path_import = self.imp_pr.path
     path_original = getdir(path_original)
     path_import = getdir(path_import)
     compare_obj = dircmp(path_original, path_import)
     self.assertEqual(len(compare_obj.diff_files), 0)
 def test_Chemical_Element_to_and_from_hdf_with_None_Parent(self):
     pr = Project(
         os.path.join(os.path.dirname(os.path.abspath(__file__)),
                      "test_periodic_table"))
     basis = CrystalStructure(element="Ni",
                              bravais_basis="fcc",
                              lattice_constant=3.7)
     ham = pr.create_job(pr.job_type.Lammps, "lammps_test_2")
     test_ham = pr.create_job(pr.job_type.Lammps, "lammps_test_2")
     ham.structure = basis
     ham.to_hdf()
     test_ham.from_hdf()
     self.assertEqual(test_ham["input/structure/species"][0],
                      ham["input/structure/species"][0])
     ham.remove()
Пример #4
0
 def setUpClass(cls):
     cls.count = 12
     cls.file_location = os.path.dirname(os.path.abspath(__file__))
     cls.project = Project(
         os.path.join(cls.file_location, "random_testing_non_modal"))
     cls.project.remove_jobs_silently(recursive=True)
     cls.project.set_logging_level("INFO")
Пример #5
0
 def setUpClass(cls):
     cls.file_location = os.path.dirname(os.path.abspath(__file__))
     cls.project = Project(os.path.join(cls.file_location, "test_murnaghan"))
     cls.basis = CrystalStructure(
         element="Fe", bravais_basis="fcc", lattice_constant=3.5
     )
     cls.project.remove_jobs_silently(recursive=True)
Пример #6
0
    def setUpClass(cls):
        cls.execution_path = os.path.dirname(os.path.abspath(__file__))
        cls.project = Project(os.path.join(cls.execution_path, "lammps"))

        structure = Atoms(
            symbols="Fe2",
            positions=np.outer(np.arange(2), np.ones(3)),
            cell=2 * np.eye(3),
        )

        cls.job = Lammps(
            project=ProjectHDFio(project=cls.project, file_name="lammps"),
            job_name="lammps",
        )
        cls.job.server.run_mode.interactive = True
        cls.job.structure = structure

        cls.minimize_job = Lammps(
            project=ProjectHDFio(project=cls.project, file_name="lammps"),
            job_name="minimize_lammps",
        )
        cls.minimize_control_job = Lammps(
            project=ProjectHDFio(project=cls.project, file_name="lammps"),
            job_name="minimize_control_lammps",
        )
Пример #7
0
 def setUpClass(cls):
     cls.count = 12
     cls.file_location = os.path.dirname(os.path.abspath(__file__))
     cls.project = Project(os.path.join(cls.file_location,
                                        "random_testing"))
     cls.job = cls.project.create_job("ExampleJob", "job_test_run")
     cls.job.input["count"] = cls.count
     cls.job.run()
Пример #8
0
 def setUpClass(cls):
     cls.execution_path = os.path.dirname(os.path.abspath(__file__))
     cls.project = Project(os.path.join(cls.execution_path, "test_quickff"))
     cls.job = cls.project.create_job("QuickFF", "trial")
     cls.job_complete = QuickFF(
         project=ProjectHDFio(project=cls.project, file_name="quickff_complete"),
         job_name="quickff_complete",
     )
Пример #9
0
 def setUpClass(cls):
     cls.execution_path = os.path.dirname(os.path.abspath(__file__))
     cls.project = Project(os.path.join(cls.execution_path, "lammps"))
     cls.job = Lammps(
         project=ProjectHDFio(project=cls.project, file_name="lammps"),
         job_name="lammps",
     )
     cls.job_water = Lammps(
         project=ProjectHDFio(project=cls.project,
                              file_name="lammps_water"),
         job_name="lammps_water",
     )
     cls.job_water_dump = Lammps(
         project=ProjectHDFio(project=cls.project,
                              file_name="lammps_water_dump"),
         job_name="lammps_water_dump",
     )
     cls.job_dump = Lammps(
         project=ProjectHDFio(project=cls.project,
                              file_name="lammps_dump_static"),
         job_name="lammps_dump_static",
     )
     cls.job_vcsgc_input = Lammps(
         project=ProjectHDFio(project=cls.project,
                              file_name="lammps_vcsgc_input"),
         job_name="lammps_vcsgc_input",
     )
     cls.minimize_job = Lammps(
         project=ProjectHDFio(project=cls.project, file_name="lammps"),
         job_name="minimize_lammps",
     )
     cls.minimize_control_job = Lammps(
         project=ProjectHDFio(project=cls.project, file_name="lammps"),
         job_name="minimize_control_lammps",
     )
     cls.md_job = Lammps(
         project=ProjectHDFio(project=cls.project, file_name="lammps"),
         job_name="md_lammps",
     )
     cls.md_control_job = Lammps(
         project=ProjectHDFio(project=cls.project, file_name="lammps"),
         job_name="md_control_lammps",
     )
     cls.job_read_restart = Lammps(
         project=ProjectHDFio(project=cls.project, file_name="lammps"),
         job_name="read_restart",
     )
     cls.job_average = Lammps(
         project=ProjectHDFio(project=cls.project, file_name="lammps"),
         job_name="average",
     )
     cls.job_fail = Lammps(
         project=ProjectHDFio(project=cls.project, file_name="lammps"),
         job_name="fail",
     )
Пример #10
0
 def setUpClass(cls):
     # this is used to create a folder/a compressed file, are not path
     cls.arch_dir = 'archive_folder'
     # this is used to create a folder/a compressed file, are not path
     cls.arch_dir_comp = cls.arch_dir + '_comp'
     cls.pr = Project('test')
     cls.pr.remove_jobs(recursive=True, silently=True)
     cls.job = cls.pr.create_job(job_type=ToyJob, job_name='toy')
     cls.job.run()
     cls.pr.pack(destination_path=cls.arch_dir, compress=False)
     cls.file_location = os.path.dirname(os.path.abspath(__file__)).replace(
         "\\", "/")
Пример #11
0
 def tearDownClass(cls):
     project = Project(
         os.path.join(os.path.dirname(os.path.abspath(__file__)),
                      "random_testing"))
     job = project.load(project.get_job_ids()[0])
     job.remove()
     project.remove(enable=True)
Пример #12
0
 def tearDownClass(cls):
     # print('tear down')
     file_location = os.path.dirname(os.path.abspath(__file__))
     project = Project(
         os.path.join(file_location, "random_testing_non_modal"))
     project.remove_jobs_silently()
     project.remove(enable=True)
Пример #13
0
 def setUpClass(cls):
     cls.count = 12
     cls.file_location = os.path.dirname(os.path.abspath(__file__))
     cls.project = Project(
         os.path.join(cls.file_location, "random_testing_atomistic"))
     cls.job = cls.project.create_job("AtomisticExampleJob",
                                      "job_test_atomistic_run")
     cls.job.input["count"] = cls.count
     cls.job.structure = Atoms(positions=[[0, 0, 0], [1, 1, 1]],
                               elements=["Fe", "Fe"],
                               cell=2 * np.eye(3))
     cls.job.interactive_open()
     cls.job.run()
Пример #14
0
 def tearDownClass(cls):
     cls.job.interactive_close()
     project = Project(
         os.path.join(os.path.dirname(os.path.abspath(__file__)),
                      "random_testing_atomistic"))
     job = project.load(project.get_job_ids()[0])
     job.remove()
     project.remove(enable=True)
Пример #15
0
def main(args):

    pr = Project(args.project)
    if args.jobs_only:
        pr.remove_jobs(recursive=args.recursive, silently=True)
    else:
        pr.remove(enable=True)
        if not os.listdir(args.project):
            os.rmdir(args.project)
Пример #16
0
def main(args):

    if args.status:
        if "status" not in args.columns:
            args.columns = args.columns + ["status"]

    if args.since:
        if "timestop" not in args.columns:
            args.columns = args.columns + ["timestop"]
        try:
            matches = re.fullmatch("(\d+d)?\w*(\d+h)?\w*(\d+m)?\w*(\d+s)?",
                                   args.since).groups(default="0x")
            since = datetime.datetime.now() - datetime.timedelta(
                days=int(matches[0][:-1]),
                hours=int(matches[1][:-1]),
                minutes=int(matches[2][:-1]),
                seconds=int(matches[3][:-1]),
            )
        except AttributeError:
            print(
                "ERROR: {} is not a proper time delta".format(args.since),
                file=sys.stderr,
            )
            sys.exit(1)

    table = Project(args.project).job_table(
        full_table=True,
        recursive=args.recursive,
        columns=args.columns,
        all_columns=args.all,
        element_lst=args.elements,
        job_name_contains=args.name,
    )

    if len(table) == 0:
        sys.exit(0)

    mask = [True] * len(table)
    if args.status:
        mask &= table.loc[:, "status"].isin(args.status)
    if args.since:
        mask &= table.loc[:, "timestop"] > since

    if any(mask):
        with pd.option_context("display.expand_frame_repr", False):
            print(table[mask])
Пример #17
0
 def setUpClass(cls):
     cls.execution_path = os.path.dirname(os.path.abspath(__file__))
     cls.project = Project(os.path.join(cls.execution_path, "gpaw"))
     atoms = Atoms("Fe1", positions=np.zeros((1, 3)), cell=np.eye(3))
     job = Gpaw(
         project=ProjectHDFio(project=cls.project, file_name="gpaw"),
         job_name="gpaw",
     )
     job.structure = atoms
     job.encut = 300
     job.set_kpoints([5, 5, 5])
     job.to_hdf()
     cls.job = Gpaw(
         project=ProjectHDFio(project=cls.project, file_name="gpaw"),
         job_name="gpaw",
     )
     cls.job.from_hdf()
Пример #18
0
 def setUpClass(cls):
     cls.execution_path = os.path.dirname(os.path.abspath(__file__))
     cls.project = Project(os.path.join(cls.execution_path, "test_vasp"))
     cls.job = cls.project.create_job("Vasp", "trial")
     cls.job_spin = cls.project.create_job("Vasp", "spin")
     cls.job_spin.structure = CrystalStructure("Fe", BravaisBasis="bcc", a=2.83)
     cls.job_spin.structure = cls.job_spin.structure.repeat(2)
     cls.job_spin.structure[2] = "Se"
     cls.job_spin.structure[3] = "O"
     cls.job_metadyn = cls.project.create_job("VaspMetadyn", "trial_metadyn")
     cls.job_complete = Vasp(
         project=ProjectHDFio(project=cls.project, file_name="vasp_complete"),
         job_name="vasp_complete",
     )
     poscar_file = posixpath.join(
         cls.execution_path, "../static/vasp_test_files/full_job_sample/POSCAR"
     )
     cls.job_complete.structure = read_atoms(poscar_file, species_from_potcar=True)
     poscar_file = posixpath.join(
         cls.execution_path, "../static/vasp_test_files/poscar_samples/POSCAR_metadyn"
     )
     cls.job_metadyn.structure = read_atoms(poscar_file)
Пример #19
0
 def setUpClass(cls):
     cls.file_location = os.path.dirname(os.path.abspath(__file__))
     cls.project = Project(
         os.path.join(cls.file_location, "interface")
     )
     cls.project.remove_jobs_silently(recursive=True)
     cls.structure = Atoms(
         positions=[[0, 0, 0], [1, 1, 1]], elements=["Fe", "Fe"], cell=2 * np.eye(3)
     )
     cls.temperature = 500.0
     cls.cpu_cores = 2
     potential = pandas.DataFrame({
         'Name': ['Fe Morse'],
         'Filename': [[]],
         'Model': ['Morse'],
         'Species': [['Fe']],
         'Config': [['atom_style full\n',
                     'pair_coeff 1 2 morse 0.019623 1.8860 3.32833\n']]
     })
     project_dict = {
         "job_type": "Lammps",
         "project": cls.project,
         "potential": potential,
         "cpu_cores": cls.cpu_cores
     }
     cls.job = create_job_template(
         job_name="test_fix_iso",
         structure=cls.structure,
         project_parameter=project_dict
     )
     cls.job.calc_md(
         temperature=cls.temperature,
         temperature_damping_timescale=100.0,
         pressure=0.0,
         pressure_damping_timescale=1000.0
     )
Пример #20
0
 def setUpClass(cls):
     cls.file_location = os.path.dirname(os.path.abspath(__file__))
     cls.project = Project(
         os.path.join(cls.file_location, "hessian_class")
     )
     cls.project.remove_jobs_silently(recursive=True)
     cls.job = cls.project.create_job(
         "HessianJob", "job_test_hessian"
     )
     structure = Atoms(
         positions=[[0, 0, 0], [1, 1, 1]], elements=["Fe", "Fe"], cell=2 * np.eye(3)
     )
     cls.job.set_reference_structure(structure)
     cls.job.structure.apply_strain(0.01)
     cls.job.structure.positions[0, 0] = 0.1
     cls.job.structure.center_coordinates_in_unit_cell()
     cls.job.set_force_constants(force_constants=1)
     cls.job.set_elastic_moduli(bulk_modulus=1, shear_modulus=1)
     cls.job.server.run_mode.interactive = True
     cls.job.run()
     cls.job.structure.positions[0, 1] -= 0.1
     cls.job.run()
     cls.job.structure.positions[0,1] -= 0.1
     cls.job.run()
 def tearDownClass(cls):
     file_location = os.path.dirname(os.path.abspath(__file__))
     project = Project(
         os.path.join(file_location, "testing_murnaghan_non_modal"))
     project.remove_jobs_silently(recursive=True)
     project.remove(enable=True, enforce=True)
Пример #22
0
"""
pyiron_base<=0.3.10 has a bug that writes all arrays with dtype=object even
numeric ones.  As a fix pyiron_base=0.4.1 introduces a conversion when reading
such arrays, but does not automatically save them.  This conversion script
simply goes over all jobs and rewrites their HDF5 files, since it's read with
the correct dtype, this then writes this correct dtype.
"""

import sys
from pyiron_base import Project

from pyiron_base.project.update.pyiron_base_03x_to_04x import pyiron_base_03x_to_04x

if __name__ == "__main__":
    pr = Project(sys.argv[1])
    pyiron_base_03x_to_04x(pr)
Пример #23
0
from pyiron_base import Project, __version__
pr = Project(
            "tests/static/backwards/V{}".format(__version__).replace(".", "_")
)
job = pr.create_job(pr.job_type.ScriptJob, "scriptjob")
# scriptjob requires an existing path, so just set this path, since we don't
# intend on running our selves anyway
job.script_path = __file__
job.input['test_argument'] = 42
job.save()
Пример #24
0
 def tearDownClass(cls):
     cls.execution_path = os.path.dirname(os.path.abspath(__file__))
     project = Project(os.path.join(cls.execution_path, "lammps"))
     project.remove_jobs_silently(recursive=True)
     project.remove(enable=True)
Пример #25
0
 def tearDownClass(cls):
     file_location = os.path.dirname(os.path.abspath(__file__))
     project = Project(os.path.join(file_location, "testing_serial"))
     project.remove(enable=True)
Пример #26
0
 def setUpClass(cls):
     cls.file_location = os.path.dirname(os.path.abspath(__file__))
     cls.project = Project(os.path.join(cls.file_location,
                                        "testing_serial"))
     cls.project.remove_jobs_silently(recursive=True)
Пример #27
0
import sys
from pyiron_base import Project, __version__
pr = Project("tests/static/backwards/")
for job in pr.iter_jobs(recursive=True, convert_to_object=False):
    if job.name == "scriptjob":
        job = job.to_object()
        if job.input.test_argument != 42:
            raise ValueError(
                "Loading from version {} doesn't restore input.".format(
                    job.project.path))
Пример #28
0
 def tearDownClass(cls):
     cls.file_location = os.path.dirname(os.path.abspath(__file__))
     project = Project(os.path.join(cls.file_location, "test_murnaghan"))
     project.remove(enable=True, enforce=True)
Пример #29
0
 def setUpClass(cls):
     cls.pr = Project('fenics_tutorial_integration')
Пример #30
0
from pyiron_base import Project, PythonTemplateJob, __version__


class ToyJob(PythonTemplateJob):
    def __init__(self, project, job_name):
        super(ToyJob, self).__init__(project, job_name)
        self.input['input_energy'] = 100

    def run_static(self):
        with self.project_hdf5.open("output/generic") as h5out:
            h5out["energy_tot"] = self.input["input_energy"]
        self.status.finished = True


pr = Project("tests/static/backwards/V{}".format(__version__).replace(
    ".", "_"))
job = pr.create_job(pr.job_type.ToyJob, "toy1")
job.input["input_energy"] = 42
job.run()
job = pr.create_job(pr.job_type.ToyJob, "toy2")
job.input["input_energy"] = 23
job.run()
tab = pr.create_table("toy_table")
tab.add['name'] = lambda j: j.name
tab.run()