From 2e0bcb6645f76aec2c408f3d68887a22d8f507d8 Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Mon, 17 Jan 2022 17:05:11 +0100 Subject: [PATCH 001/434] Export active learning state from potential dataframe --- pyiron_contrib/atomistics/mlip/lammps.py | 10 +++++----- pyiron_contrib/atomistics/mlip/mlip.py | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/pyiron_contrib/atomistics/mlip/lammps.py b/pyiron_contrib/atomistics/mlip/lammps.py index 7fcc16020..ad812346f 100644 --- a/pyiron_contrib/atomistics/mlip/lammps.py +++ b/pyiron_contrib/atomistics/mlip/lammps.py @@ -41,14 +41,14 @@ def write_input(self): self.input.mlip['mtp-filename'] = os.path.basename(self.potential['Filename'][0][0]) self.input.mlip.write_file(file_name="mlip.ini", cwd=self.working_directory) - def enable_active_learning(self): - self.input.mlip.load_string("""\ + def enable_active_learning(self, threshold=2.0, threshold_break=5.0, filename='selected.cfg'): + self.input.mlip.load_string(f"""\ mtp-filename auto calculate-efs TRUE select TRUE -select:threshold 2.0 -select:threshold-break 5.0 -select:save-selected selected.cfg +select:threshold {threshold} +select:threshold-break {threshold_break} +select:save-selected {filename} select:load-state state.mvs select:log selection.log write-cfgs:skip 0 diff --git a/pyiron_contrib/atomistics/mlip/mlip.py b/pyiron_contrib/atomistics/mlip/mlip.py index a661c59bb..5776934a6 100644 --- a/pyiron_contrib/atomistics/mlip/mlip.py +++ b/pyiron_contrib/atomistics/mlip/mlip.py @@ -89,7 +89,7 @@ def potential_dataframe(self, elements=None): if self.status.finished: return pd.DataFrame({ "Name": ["".join(elements)], - "Filename": [[self.potential_files[0]]], + "Filename": [self.potential_files], "Model": ["Custom"], "Species": [elements], "Config": [["pair_style mlip mlip.ini\n", From ba3630cdd0e8a4d76010d2f863750e12518760bf Mon Sep 17 00:00:00 2001 From: Alexander Knoll Date: Tue, 18 Jan 2022 18:52:52 +0100 Subject: [PATCH 002/434] Initial commit. First draft of a generalized RunnerFit job-type. --- pyiron_contrib/atomistics/runner/job.py | 587 ++++++++++++++++-------- 1 file changed, 394 insertions(+), 193 deletions(-) diff --git a/pyiron_contrib/atomistics/runner/job.py b/pyiron_contrib/atomistics/runner/job.py index 57f40e4c9..dc8878d67 100644 --- a/pyiron_contrib/atomistics/runner/job.py +++ b/pyiron_contrib/atomistics/runner/job.py @@ -1,235 +1,436 @@ # coding: utf-8 -# Copyright (c) Max-Planck-Institut für Eisenforschung GmbH - Computational Materials Design (CM) Department +# 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. +"""Pyiron Hamiltonian for machine-learning with RuNNer. + +The RuNNer Neural Network Energy Representation is a framework for the +construction of high-dimensional neural network potentials developed in the +group of Prof. Dr. Jörg Behler at Georg-August-Universität Göttingen. + +Provides: + - PotentialFittingBase (GenericJob): + - RunnerInput (DataContainer): + - RunnerStructureContainer (StructureStorage): + +Reference: + - RuNNer online documentation](https://theochem.gitlab.io/runner) """ -Demonstrator job for the RuNNer Neural Network Potential. -""" -import os.path -from glob import glob +import numpy as np + +from ase import Atoms +import ase.io.runner.runner as io +from ase.calculators.runner.runner import Runner, DEFAULT_PARAMETERS +from ase.calculators.runner.runnersinglepoint import RunnerSinglePointCalculator from pyiron_base import state, GenericJob, Executable, DataContainer +from pyiron_atomistics.atomistics.structure.structurestorage import StructureStorage +from pyiron_atomistics.atomistics.structure.atoms import pyiron_to_ase, ase_to_pyiron -import numpy as np -import pandas as pd +__author__ = 'Alexander Knoll' +__copyright__ = 'Copyright 2021, Georg-August-Universität Göttingen - Behler '\ + 'Group' +__version__ = '0.1' +__maintainer__ = 'Alexander Knoll' +__email__ = 'alexander.knoll@chemie.uni-goettingen.de' +__status__ = 'development' +__date__ = 'January 7, 2022' + + +class PotentialFittingBase(GenericJob): + """FIXME: Class copied from AtomicRex in pyiron_contrib.""" + + def __init__(self, project, job_name): + """Initialize the class. -__author__ = "Marvin Poul" -__copyright__ = "Copyright 2020, Max-Planck-Institut für Eisenforschung GmbH - " \ - "Computational Materials Design (CM) Department" -__version__ = "0.1" -__maintainer__ = "Marvin Poul" -__email__ = "poul@mpie.de" -__status__ = "development" -__date__ = "March 3, 2021" + Args: + project (FIXME): The project container in which the job is created. + job_name (str): The label of the job (used for all directories). + """ + super().__init__(project, job_name) + + +class RunnerInput(DataContainer): + """Extend the DataContainer class for future customization.""" + + __version__ = '0.3.0' + __hdf_version__ = '0.3.0' + + def __init__(self, *args, **kwargs): + """Initialize the class.""" + super(RunnerInput, self).__init__(*args, **kwargs) -AngstromToBohr = 1.88972612 -ElectronVoltToHartree = 0.03674932218 +class RunnerStructureContainer(StructureStorage): + """Store chemical structures as a Runner training dataset.""" + + __version__ = '0.3.0' + __hdf_version__ = '0.3.0' -class RunnerFit(GenericJob): def __init__(self, project, job_name): - super().__init__(project, job_name) - self._training_ids = [] + """Initialize the class. + + Args: + project (FIXME): The project container in which the job is created. + job_name (str): The label of the job (used for all directories). + """ + super(RunnerStructureContainer, self).__init__() + + def append(self, structure): + """Append `structure` to the class storage.""" + # If the user appends an ASE Atoms object, try to obtain energies, + # forces, etc. and store them. + if isinstance(structure, Atoms): + struct = ase_to_pyiron(structure) + dft_charges = structure.get_initial_charges() + + if structure.calc: + dft_energy = structure.calc.get_potential_energy() + dft_forces = structure.calc.get_forces() + + # Only RunnerSinglePointCalculator object's store a separate + # total charge property. For all other calculators, sum up + # the atomic charges. + if isinstance(structure.calc, RunnerSinglePointCalculator): + totalcharge = structure.calc.results['totalcharge'] + else: + totalcharge = np.sum(dft_charges) + else: + struct = structure + + self.add_structure( + struct, + dft_energy=dft_energy, + dft_forces=dft_forces, + dft_charges=dft_charges, + totalcharge=totalcharge + ) + return struct + + def to_ase(self): + """Convert all attached structures to a list of ASE Atoms objects.""" + structure_lst = [] + for idx, structure in enumerate(self.iter_structures()): + # Retrieve all properties, i.e. energy, forces, etc. + dft_energy = self.get_array('dft_energy', idx) + dft_forces = self.get_array('dft_forces', idx) + dft_charges = self.get_array('dft_charges', idx) + totalcharge = self.get_array('totalcharge', idx) + + # Retrieve atomic positions, cell vectors, etc. + atoms = pyiron_to_ase(structure) + + # Attach properties to the Atoms object. + atoms.set_initial_charges(dft_charges) + atoms.calc = RunnerSinglePointCalculator( + atoms=atoms, + energy=dft_energy, + forces=dft_forces, + totalcharge=totalcharge + ) + structure_lst.append(atoms) + + return structure_lst + + +class RunnerFit(PotentialFittingBase): + """Generate a potential energy surface using RuNNer. + + The RuNNer Neural Network Energy Representation (RuNNer) is a Fortran code + for the generation of high-dimensional neural network potentials actively + developed in the group of Prof. Dr. Jörg Behler at Georg-August-Universität + Göttingen. + + RuNNer operates in three different modes: + - Mode 1: Calculation of symmetry function values. Symmetry functions + are many-body descriptors for the chemical environment of an + atom. + - Mode 2: Fitting of the potential energy surface. + - Mode 3: Prediction. Use the previously generated high-dimensional + potential energy surface to predict the energy and force + of an unknown chemical configuration. + + The different modes generate a lot of output: + - Mode 1: + - sfvalues: The values of the symmetry functions for each + atom. + - splittraintest: which structures belong to the training and which + to the testing set. ASE needs this + information to generate the relevant input files + for RuNNer Mode 2. + - Mode 2: + - weights: The neural network weights. + - scaling: The symmetry function scaling factors. + + - Mode 3: predict the total energy and atomic forces for a structure. + + Examples: + Starting a new calculation (Mode 1): + + ```python + from pyiron import Project + from job import RunnerFit + import ase.io.runner.runner as io + + # Create an empty sample project and a new job. + pr = Project(path='example') + job = pr.create_job(RunnerFit, 'mode1') + + # Import training dataset and RuNNer settings from RuNNer input.data + # and input.nn files using ASE's I/O routines. + structures, options = io.read_runnerase('./') + + # Attach the information to the job. + job.structures = structures + job.input.update(options) + + # Set the RuNNer Mode to 1. + job.input.runner_mode = 1 + + job.run() + + Restarting Mode 1 and running Mode 2: - self.input = DataContainer(table_name="input") - self.input.element = "Cu" + ```python + job = Project('example')['mode1'].restart('mode2') + job.input.runner_mode = 2 + job.run() + ``` + + Restarting Mode 2 and running Mode 3: + + ```python + job = Project('runnertest')['mode2'].restart('mode3') + job.input.runner_mode = 3 + job.run() + ``` + """ + + __name__ = 'RuNNer' + # These properties are needed by RuNNer as input data (depending on the + # chosen RuNNer mode). + input_properties = ['scaling', 'weights', 'sfvalues', 'splittraintest'] + + def __init__(self, project, job_name, **kwargs): + """Initialize the class. + + Args: + project (FIXME): The project container in which the job is created. + job_name (str): The label of the job (used for all directories). + """ + # Initialize the base class. + super(RunnerFit, self).__init__(project, job_name) + + # Prepare data containers for all input and output properties. + # The input data container stores all input parameters / settings of + # RuNNer and is initially filled with sensible default values + # (imported from ASE). + self.input = RunnerInput( + DEFAULT_PARAMETERS, + table_name='input_parameters' + ) + self._structures = RunnerStructureContainer(project, job_name) + self.output = DataContainer(table_name='output') + + for prop in self.input_properties: + val = kwargs.pop(prop, None) + self.__dict__[prop] = DataContainer(val, table_name=prop) state.publications.add(self.publication) @property def publication(self): + """Define relevant publications.""" return { - "runner": [ + 'runner': [ { - "title": "First Principles Neural Network Potentials for Reactive Simulations of Large Molecular and Condensed Systems", - "journal": "Angewandte Chemie International Edition", - "volume": "56", - "number": "42", - "year": "2017", - "issn": "1521-3773", - "doi": "10.1002/anie.201703114", - "url": "https://doi.org/10.1002/anie.201703114", - "author": ["Jörg Behler"], + 'title': 'First Principles Neural Network Potentials for ' + 'Reactive Simulations of Large Molecular and ' + 'Condensed Systems', + 'journal': 'Angewandte Chemie International Edition', + 'volume': '56', + 'number': '42', + 'year': '2017', + 'issn': '1521-3773', + 'doi': '10.1002/anie.201703114', + 'url': 'https://doi.org/10.1002/anie.201703114', + 'author': ['Jörg Behler'], }, { - "title": "Constructing high‐dimensional neural network potentials: A tutorial review", - "journal": "International Journal of Quantum Chemistry", - "volume": "115", - "number": "16", - "year": "2015", - "issn": "1097-461X", - "doi": "10.1002/qua.24890", - "url": "https://doi.org/10.1002/qua.24890", - "author": ["Jörg Behler"], + 'title': 'Constructing high‐dimensional neural network' + 'potentials: A tutorial review', + 'journal': 'International Journal of Quantum Chemistry', + 'volume': '115', + 'number': '16', + 'year': '2015', + 'issn': '1097-461X', + 'doi': '10.1002/qua.24890', + 'url': 'https://doi.org/10.1002/qua.24890', + 'author': ['Jörg Behler'], }, { - "title": "Generalized Neural-Network Representation of High-Dimensional Potential-Energy Surfaces", - "journal": "Physical Review Letters", - "volume": "98", - "number": "14", - "year": "2007", - "issn": "1079-7114", - "doi": "10.1103/PhysRevLett.98.146401", - "url": "https://doi.org/10.1103/PhysRevLett.98.146401", - "author": ["Jörg Behler", "Michelle Parrinello"], + 'title': 'Generalized Neural-Network Representation of ' + 'High-Dimensional Potential-Energy Surfaces', + 'journal': 'Physical Review Letters', + 'volume': '98', + 'number': '14', + 'year': '2007', + 'issn': '1079-7114', + 'doi': '10.1103/PhysRevLett.98.146401', + 'url': 'https://doi.org/10.1103/PhysRevLett.98.146401', + 'author': ['Jörg Behler', 'Michelle Parrinello'], }, ] } - def add_job_to_fitting(self, job): - """ - Add a job to the training database. Currently only :class:`.TrainingContainer` are supported. + @property + def structures(self): + """Store a dataset consisting of many chemical structures.""" + return self._structures + + @structures.setter + def structures(self, structures): + """Store a dataset consisting of many chemical structures. Args: - job (:class:`.TrainingContainer`): job to add to database + structures (list): A list of ASE Atoms objects or Pyiron Atoms + objects which are to be stored. """ - self._training_ids.append(job.id) + for structure in structures: + self._structures.append(structure) def write_input(self): - with open(os.path.join(self.working_directory, "input.data"), "w") as f: - for id in self._training_ids: - container = self.project.load(id) - for atoms, energy, forces, _ in zip(*container.to_list()): - f.write("begin\n") - c = np.array(atoms.cell) * AngstromToBohr - f.write(f"lattice {c[0][0]:13.08f} {c[0][1]:13.08f} {c[0][2]:13.08f}\n") - f.write(f"lattice {c[1][0]:13.08f} {c[1][1]:13.08f} {c[1][2]:13.08f}\n") - f.write(f"lattice {c[2][0]:13.08f} {c[2][1]:13.08f} {c[2][2]:13.08f}\n") - p = atoms.positions * AngstromToBohr - ff = forces * ElectronVoltToHartree / AngstromToBohr - for i in range(len(atoms)): - f.write(f"atom {p[i, 0]:13.08f} {p[i, 1]:13.08f} {p[i, 2]:13.08f}") - f.write(f" {atoms.elements[i].Abbreviation} 0.0 0.0") - f.write(f" {ff[i, 0]:13.08f} {ff[i, 1]:13.08f} {ff[i, 2]:13.08f}\n") - f.write(f"energy {energy * ElectronVoltToHartree}\n") - f.write("charge 0.0\nend\n") - - with open(os.path.join(self.working_directory, "input.nn"), "w") as f: - f.write(input_template.format(element=self.input.element)) + """Write the relevant job input files. - @property - def lammps_potential(self): - """ - :class:`pandas.DataFrame`: dataframe compatible with :attribute:`.LammpsInteractive.potential` + This routine writes the input files for the job using the ASE Runner + calculator. """ - if not self.status.finished: - raise RuntimeError("Job must have successfully finished before potential files can be copied!") - weight_file = glob(f'{self.working_directory}/weights.*.data')[0] - return pd.DataFrame({ - 'Name': ['RuNNer-Cu'], - 'Filename': [[f'{self.working_directory}/input.nn', - weight_file, - f'{self.working_directory}/scaling.data']], - 'Model': ['RuNNer'], - 'Species': [['Cu']], - 'Config': [['pair_style nnp dir "./" showew no showewsum 0 resetew no maxew 100 cflength 1.8897261328 cfenergy 0.0367493254 emap "1:Cu"\n', - 'pair_coeff * * 12\n']] - }) + # Create an ASE Runner calculator object. + # Pay attention to the different name: `structures` --> `dataset`. + calc = Runner( + label='pyiron', + dataset=self.structures.to_ase(), + scaling=self.scaling.to_builtin(), + weights=self.weights.to_builtin(), + sfvalues=self.sfvalues.to_builtin(), + splittraintest=self.splittraintest.to_builtin(), + **self.input.to_builtin() + ) - def collect_output(self): - pass + # If no dataset were attached to the calculator, the single structure + # stored as the atoms property would be written instead. + atoms = calc.dataset or calc.atoms + calc.directory = self.working_directory + + # Set the 'flags' which ASE uses to see which input files are written. + targets = {1: 'sfvalues', 2: 'fit', 3: 'energy'} + system_changes = None # Always perform a new calculation. + + calc.write_input( + atoms, + targets[self.input.runner_mode], + system_changes + ) - # To link to the executable from the notebook - def _executable_activate(self, enforce=False): + def _executable_activate(self, enforce=False): + """Link to the Runner executable.""" if self._executable is None or enforce: self._executable = Executable( - codename="runner", module="runner", path_binary_codes=state.settings.resource_paths + codename='runner', + module='runner', + path_binary_codes=state.settings.resource_paths ) -input_template = """### #################################################################################################################### -### This is the input file for the RuNNer tutorial (POTENTIALS WORKSHOP 2021-03-10) -### This input file is intended for release version 1.2 -### RuNNer is hosted at www.gitlab.com. The most recent version can only be found in this repository. -### For access please contact Prof. Jörg Behler, joerg.behler@uni-goettingen.de -### -### #################################################################################################################### -### General remarks: -### - commands can be switched off by using the # character at the BEGINNING of the line -### - the input file can be structured by blank lines and comment lines -### - the order of the keywords is arbitrary -### - if keywords are missing, default values will be used and written to runner.out -### - if mandatory keywords or keyword options are missing, RuNNer will stop with an error message -### -######################################################################################################################## -######################################################################################################################## -### The following keywords just represent a subset of the keywords offered by RuNNer -######################################################################################################################## -######################################################################################################################## - -######################################################################################################################## -### general keywords -######################################################################################################################## -nn_type_short 1 # 1=Behler-Parrinello -runner_mode 1 # 1=calculate symmetry functions, 2=fitting mode, 3=predicition mode -number_of_elements 1 # number of elements -elements {element} # specification of elements -random_seed 10 # integer seed for random number generator -random_number_type 6 # 6 recommended - -######################################################################################################################## -### NN structure of the short-range NN -######################################################################################################################## -use_short_nn # use NN for short range interactions -global_hidden_layers_short 2 # number of hidden layers -global_nodes_short 15 15 # number of nodes in hidden layers -global_activation_short t t l # activation functions (t = hyperbolic tangent, l = linear) - -######################################################################################################################## -### symmetry function generation ( mode 1): -######################################################################################################################## -test_fraction 0.10000 # threshold for splitting between fitting and test set - -######################################################################################################################## -### symmetry function definitions (all modes): -######################################################################################################################## -cutoff_type 1 -symfunction_short {element} 2 {element} 0.000000 0.000000 12.000000 -symfunction_short {element} 2 {element} 0.006000 0.000000 12.000000 -symfunction_short {element} 2 {element} 0.016000 0.000000 12.000000 -symfunction_short {element} 2 {element} 0.040000 0.000000 12.000000 -symfunction_short {element} 2 {element} 0.109000 0.000000 12.000000 - -symfunction_short {element} 3 {element} {element} 0.00000 1.000000 1.000000 12.000000 -symfunction_short {element} 3 {element} {element} 0.00000 1.000000 2.000000 12.000000 -symfunction_short {element} 3 {element} {element} 0.00000 1.000000 4.000000 12.000000 -symfunction_short {element} 3 {element} {element} 0.00000 1.000000 16.000000 12.000000 -symfunction_short {element} 3 {element} {element} 0.00000 -1.000000 1.000000 12.000000 -symfunction_short {element} 3 {element} {element} 0.00000 -1.000000 2.000000 12.000000 -symfunction_short {element} 3 {element} {element} 0.00000 -1.000000 4.000000 12.000000 -symfunction_short {element} 3 {element} {element} 0.00000 -1.000000 16.000000 12.000000 - -######################################################################################################################## -### fitting (mode 2):general inputs for short range AND electrostatic part: -######################################################################################################################## -epochs 20 # number of epochs -fitting_unit eV # unit for error output in mode 2 (eV or Ha) -precondition_weights # optional precondition initial weights - -######################################################################################################################## -### fitting options ( mode 2): short range part only: -######################################################################################################################## -short_energy_error_threshold 0.10000 # threshold of adaptive Kalman filter short E -short_force_error_threshold 1.00000 # threshold of adaptive Kalman filter short F -kalman_lambda_short 0.98000 # Kalman parameter short E/F, do not change -kalman_nue_short 0.99870 # Kalman parameter short E/F, do not change -use_short_forces # use forces for fitting -repeated_energy_update # optional: repeat energy update for each force update -mix_all_points # do not change -scale_symmetry_functions # optional -center_symmetry_functions # optional -short_force_fraction 0.01 # -force_update_scaling -1.0 # - -######################################################################################################################## -### output options for mode 2 (fitting): -######################################################################################################################## -write_trainpoints # write trainpoints.out and testpoints.out files -write_trainforces # write trainforces.out and testforces.out files - -######################################################################################################################## -### output options for mode 3 (prediction): -######################################################################################################################## -calculate_forces # calculate forces -calculate_stress # calculate stress tensor -""" + def collect_output(self): + """Read and store the job results.""" + # Compose job label (needed by the ASE I/O routines) and store dir. + label = f'{self.working_directory}/mode{self.input.runner_mode}' + directory = self.working_directory + + # If successful, RuNNer Mode 1 returns symmetry function values for + # each structure and the information, which structure belongs to the + # training and which to the testing set. + if self.input.runner_mode == 1: + sfvalues, splittraintest = io.read_results_mode1(label, directory) + self.output.sfvalues = sfvalues + self.output.splittraintest = splittraintest + + # If successful, RuNNer Mode 2 returns the weights of the atomic neural + # networks, the symmetry function scaling data, and the results of the + # fitting process. + if self.input.runner_mode == 2: + fitresults, weights, scaling = io.read_results_mode2( + label, + directory + ) + self.output.fitresults = fitresults + self.output.weights = weights + self.output.scaling = scaling + + # If successful, RuNNer Mode 3 returns the energy and forces of the + # structure for which it was executed. + if self.input.runner_mode == 3: + atoms, energy, forces = io.read_results_mode3(label, directory) + self.output.energy = energy + self.output.forces = forces + + # Store all calculation rsults in the project's HDF5 file. + self.to_hdf() + + def to_hdf(self, hdf=None, group_name=None): + """ + Store all job information in HDF5 format. + + Args: + hdf (ProjectHDFio, optional): HDF5-object which contains the + project data. + group_name (str, optional): Subcontainer name. + """ + super().to_hdf(hdf=hdf, group_name=group_name) + + self.input.to_hdf(hdf=self.project_hdf5) + self.structures.to_hdf(hdf=self.project_hdf5) + self.output.to_hdf(hdf=self.project_hdf5) + + def from_hdf(self, hdf=None, group_name=None): + """ + Reload all job information from HDF5 format. + + Args: + hdf (ProjectHDFio, optional): HDF5-object which contains the + project data. + group_name (str, optional): Subcontainer name. + """ + super().from_hdf(hdf=hdf, group_name=group_name) + + self.input.from_hdf(hdf=self.project_hdf5) + self.structures.from_hdf(hdf=self.project_hdf5) + self.output.from_hdf(hdf=self.project_hdf5) + + def restart(self, *args, **kwargs): + """ + Reload all calculation details. + + This procedure extends the base class `restart()` by setting results + from previous calculations as input parameters to the new calculation. + The recognized properties depend on the class variable + self.input_properties (see class docstring for further details). + + Returns: + new_ham (RunnerFit): the newly created RunnerFit object. + """ + # Call the base class routine to generate the new Hamiltonian, which is + # a RunnerFit class instance. + # At this point, the Hamiltonian holds the input parameters, + # structures, and outputs of the previous calculation. However, it + # cannot access the relevant properties as input values which is + # necessary for starting a new calculation. + new_ham = super(RunnerFit, self).restart(*args, **kwargs) + + for prop in self.input_properties: + if prop in self.output.keys(): + new_ham.__dict__[prop] = DataContainer(self.output[prop]) + + return new_ham From 063c5d3a7eef45231509aba2acc1d79a5ed2774c Mon Sep 17 00:00:00 2001 From: Alexander Knoll Date: Tue, 18 Jan 2022 18:56:41 +0100 Subject: [PATCH 003/434] :memo: Extend module docstring. --- pyiron_contrib/atomistics/runner/job.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/pyiron_contrib/atomistics/runner/job.py b/pyiron_contrib/atomistics/runner/job.py index dc8878d67..7330bb41e 100644 --- a/pyiron_contrib/atomistics/runner/job.py +++ b/pyiron_contrib/atomistics/runner/job.py @@ -10,9 +10,17 @@ group of Prof. Dr. Jörg Behler at Georg-August-Universität Göttingen. Provides: - - PotentialFittingBase (GenericJob): - - RunnerInput (DataContainer): - - RunnerStructureContainer (StructureStorage): + - PotentialFittingBase (GenericJob): Future base class for all fitting + codes in pyiron. Originally provided + in the AtomicRex module of + pyiron_contrib. + - RunnerInput (DataContainer): Storage container for RuNNer settings. + - RunnerStructureContainer (StructureStorage): Storage container for + RuNNer training datasets. + +FIXME: +At this point, RunnerFit heavily relies on an unpublished version of an ASE +calculator for RuNNer. Reference: - RuNNer online documentation](https://theochem.gitlab.io/runner) From 3bacdb251ff2ea067c465a70e99305f19a25d6eb Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Thu, 20 Jan 2022 12:43:29 +0100 Subject: [PATCH 004/434] Do not allow filename to be changed, add docstring --- pyiron_contrib/atomistics/mlip/lammps.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/pyiron_contrib/atomistics/mlip/lammps.py b/pyiron_contrib/atomistics/mlip/lammps.py index ad812346f..24326fad3 100644 --- a/pyiron_contrib/atomistics/mlip/lammps.py +++ b/pyiron_contrib/atomistics/mlip/lammps.py @@ -41,14 +41,23 @@ def write_input(self): self.input.mlip['mtp-filename'] = os.path.basename(self.potential['Filename'][0][0]) self.input.mlip.write_file(file_name="mlip.ini", cwd=self.working_directory) - def enable_active_learning(self, threshold=2.0, threshold_break=5.0, filename='selected.cfg'): + def enable_active_learning(self, threshold=2.0, threshold_break=5.0): + """ + Enable active learning during MD run. + + Automatically collect structures on which the potential is extrapolating. + + Args: + threshold (float): select structures with extrapolation grade larger than this + threshold_break (float): stop the MD run after seeing a structure with extrapolation grade larger than this + """ self.input.mlip.load_string(f"""\ mtp-filename auto calculate-efs TRUE select TRUE select:threshold {threshold} select:threshold-break {threshold_break} -select:save-selected {filename} +select:save-selected selected.cfg select:load-state state.mvs select:log selection.log write-cfgs:skip 0 From 60842b2c8a5f8d595c839a7eb655a67e114a3db4 Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Thu, 20 Jan 2022 13:01:44 +0100 Subject: [PATCH 005/434] Save selected structures in structure container --- pyiron_contrib/atomistics/mlip/lammps.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pyiron_contrib/atomistics/mlip/lammps.py b/pyiron_contrib/atomistics/mlip/lammps.py index 24326fad3..4e7759c3b 100644 --- a/pyiron_contrib/atomistics/mlip/lammps.py +++ b/pyiron_contrib/atomistics/mlip/lammps.py @@ -6,6 +6,7 @@ from pyiron.lammps.base import Input from pyiron.lammps.interactive import LammpsInteractive from pyiron_contrib.atomistics.mlip.mlip import read_cgfs +from pyiron_contrib.atomistics.mlip.cfgs import loadcfgs from pyiron_base import GenericParameters __author__ = "Jan Janssen" @@ -68,6 +69,12 @@ def collect_output(self): if 'select:save-selected' in self.input.mlip._dataset['Parameter']: file_name = os.path.join(self.working_directory, self.input.mlip['select:save-selected']) if os.path.exists(file_name): + selected = StructureStorage() + for cfg in loadcfgs(file_name): + selected.add_structure( + Atoms(species=self.structure.species, indices=cfg.types, positions=cfg.pos, cell=cfg.lat) + ) + selected.to_hdf(self.project_hdf5.open("output"), "selected") cell, positions, forces, stress, energy, indicies, grades, jobids, timesteps = read_cgfs(file_name=file_name) with self.project_hdf5.open("output/mlip") as hdf5_output: hdf5_output['forces'] = forces From f9758a67ffa2402173a54287561757de354b2942 Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Thu, 20 Jan 2022 13:20:40 +0100 Subject: [PATCH 006/434] Do not abort on MV-breaking instead not_converged --- pyiron_contrib/atomistics/mlip/lammps.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pyiron_contrib/atomistics/mlip/lammps.py b/pyiron_contrib/atomistics/mlip/lammps.py index 4e7759c3b..dda767f47 100644 --- a/pyiron_contrib/atomistics/mlip/lammps.py +++ b/pyiron_contrib/atomistics/mlip/lammps.py @@ -42,6 +42,11 @@ def write_input(self): self.input.mlip['mtp-filename'] = os.path.basename(self.potential['Filename'][0][0]) self.input.mlip.write_file(file_name="mlip.ini", cwd=self.working_directory) + def convergence_check(self): + for line in self["error.msg"]: + if line.startswith("MLIP: Breaking threshold exceeded"): return False + return True + def enable_active_learning(self, threshold=2.0, threshold_break=5.0): """ Enable active learning during MD run. @@ -52,6 +57,7 @@ def enable_active_learning(self, threshold=2.0, threshold_break=5.0): threshold (float): select structures with extrapolation grade larger than this threshold_break (float): stop the MD run after seeing a structure with extrapolation grade larger than this """ + self.executable.accepted_return_codes += [8] self.input.mlip.load_string(f"""\ mtp-filename auto calculate-efs TRUE From 7b1cc434860443df2f0db5851f8b6fe77e6b4dce Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Thu, 20 Jan 2022 13:24:30 +0100 Subject: [PATCH 007/434] Fix imports --- pyiron_contrib/atomistics/mlip/lammps.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pyiron_contrib/atomistics/mlip/lammps.py b/pyiron_contrib/atomistics/mlip/lammps.py index dda767f47..3917f4324 100644 --- a/pyiron_contrib/atomistics/mlip/lammps.py +++ b/pyiron_contrib/atomistics/mlip/lammps.py @@ -3,8 +3,10 @@ # Distributed under the terms of "New BSD License", see the LICENSE file. import os -from pyiron.lammps.base import Input -from pyiron.lammps.interactive import LammpsInteractive +from pyiron_atomistics.lammps.base import Input +from pyiron_atomistics.lammps.interactive import LammpsInteractive +from pyiron_atomistics.atomistics.structure.atoms import Atoms +from pyiron_atomistics.atomistics.structure.structurestorage import StructureStorage from pyiron_contrib.atomistics.mlip.mlip import read_cgfs from pyiron_contrib.atomistics.mlip.cfgs import loadcfgs from pyiron_base import GenericParameters From 56454a427ad560c0a929e5ac1431db58c1682a0d Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Thu, 20 Jan 2022 14:34:27 +0100 Subject: [PATCH 008/434] Change filename --- pyiron_contrib/atomistics/mlip/lammps.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyiron_contrib/atomistics/mlip/lammps.py b/pyiron_contrib/atomistics/mlip/lammps.py index 3917f4324..accd5ec4a 100644 --- a/pyiron_contrib/atomistics/mlip/lammps.py +++ b/pyiron_contrib/atomistics/mlip/lammps.py @@ -45,7 +45,7 @@ def write_input(self): self.input.mlip.write_file(file_name="mlip.ini", cwd=self.working_directory) def convergence_check(self): - for line in self["error.msg"]: + for line in self["error.out"]: if line.startswith("MLIP: Breaking threshold exceeded"): return False return True From d04d11b87906d124e7d60be7dde4ebb1065b327d Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Thu, 20 Jan 2022 15:02:20 +0100 Subject: [PATCH 009/434] Use PBC for selected structures --- pyiron_contrib/atomistics/mlip/lammps.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pyiron_contrib/atomistics/mlip/lammps.py b/pyiron_contrib/atomistics/mlip/lammps.py index accd5ec4a..4f942bf1c 100644 --- a/pyiron_contrib/atomistics/mlip/lammps.py +++ b/pyiron_contrib/atomistics/mlip/lammps.py @@ -80,7 +80,8 @@ def collect_output(self): selected = StructureStorage() for cfg in loadcfgs(file_name): selected.add_structure( - Atoms(species=self.structure.species, indices=cfg.types, positions=cfg.pos, cell=cfg.lat) + Atoms(species=self.structure.species, indices=cfg.types, positions=cfg.pos, cell=cfg.lat, + pbc=[True, True, True]) ) selected.to_hdf(self.project_hdf5.open("output"), "selected") cell, positions, forces, stress, energy, indicies, grades, jobids, timesteps = read_cgfs(file_name=file_name) From 9983c1f4ad018a978e5965f61ad0359596fa9576 Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Fri, 21 Jan 2022 14:23:04 +0100 Subject: [PATCH 010/434] Expose selected structure storage as attribute --- pyiron_contrib/atomistics/mlip/lammps.py | 26 ++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/pyiron_contrib/atomistics/mlip/lammps.py b/pyiron_contrib/atomistics/mlip/lammps.py index 4f942bf1c..8f935dd1e 100644 --- a/pyiron_contrib/atomistics/mlip/lammps.py +++ b/pyiron_contrib/atomistics/mlip/lammps.py @@ -29,6 +29,7 @@ def __init__(self, project, job_name): self.__version__ = None # Reset the version number to the executable is set automatically self._executable = None self._executable_activate() + self._selected_structures = None def set_input_to_read_only(self): """ @@ -72,18 +73,35 @@ def enable_active_learning(self, threshold=2.0, threshold_break=5.0): write-cfgs:skip 0 """) + def _get_selection_file(self): + return os.path.join(self.working_directory, self.input.mlip['select:save-selected']) + + @property + def selected_structures(self): + """ + :class:`.StructureStorage`: structures that the potential extrapolated on during the run. + + Only available if :method:`.enable_active_learning` was called and once the job has been collected. + """ + if not (self.status.finished or self.status.not_converged): + raise ValueError("Selected structures are only available once the job has finished!") + if not os.path.exists(self._get_selection_file()): + raise ValueError("Selected structures are only available after calling enable_active_learning()!") + if self._selected_structures is None: + self._selected_structures = StructureStorage() + return self._selected_structures + def collect_output(self): super(LammpsMlip, self).collect_output() if 'select:save-selected' in self.input.mlip._dataset['Parameter']: - file_name = os.path.join(self.working_directory, self.input.mlip['select:save-selected']) + file_name = self._get_selection_file() if os.path.exists(file_name): - selected = StructureStorage() for cfg in loadcfgs(file_name): - selected.add_structure( + self.selected_structures.add_structure( Atoms(species=self.structure.species, indices=cfg.types, positions=cfg.pos, cell=cfg.lat, pbc=[True, True, True]) ) - selected.to_hdf(self.project_hdf5.open("output"), "selected") + selected_structures.to_hdf(self.project_hdf5.open("output"), "selected") cell, positions, forces, stress, energy, indicies, grades, jobids, timesteps = read_cgfs(file_name=file_name) with self.project_hdf5.open("output/mlip") as hdf5_output: hdf5_output['forces'] = forces From 61f6ea036b216f6220b943bfde85094a3e5cc399 Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Mon, 24 Jan 2022 11:09:15 +0100 Subject: [PATCH 011/434] Always write selection to HDF even when empty also makes the check whether selection is enabled clearer --- pyiron_contrib/atomistics/mlip/lammps.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/pyiron_contrib/atomistics/mlip/lammps.py b/pyiron_contrib/atomistics/mlip/lammps.py index 8f935dd1e..50672b293 100644 --- a/pyiron_contrib/atomistics/mlip/lammps.py +++ b/pyiron_contrib/atomistics/mlip/lammps.py @@ -76,6 +76,10 @@ def enable_active_learning(self, threshold=2.0, threshold_break=5.0): def _get_selection_file(self): return os.path.join(self.working_directory, self.input.mlip['select:save-selected']) + @property + def _selection_enabled(self): + return self.input.mlip["select"] == "TRUE" + @property def selected_structures(self): """ @@ -85,7 +89,7 @@ def selected_structures(self): """ if not (self.status.finished or self.status.not_converged): raise ValueError("Selected structures are only available once the job has finished!") - if not os.path.exists(self._get_selection_file()): + if self._selection_enabled: raise ValueError("Selected structures are only available after calling enable_active_learning()!") if self._selected_structures is None: self._selected_structures = StructureStorage() @@ -101,7 +105,6 @@ def collect_output(self): Atoms(species=self.structure.species, indices=cfg.types, positions=cfg.pos, cell=cfg.lat, pbc=[True, True, True]) ) - selected_structures.to_hdf(self.project_hdf5.open("output"), "selected") cell, positions, forces, stress, energy, indicies, grades, jobids, timesteps = read_cgfs(file_name=file_name) with self.project_hdf5.open("output/mlip") as hdf5_output: hdf5_output['forces'] = forces @@ -110,6 +113,7 @@ def collect_output(self): hdf5_output['cells'] = cell hdf5_output['positions'] = positions hdf5_output['indicies'] = indicies + self.selected_structures.to_hdf(self.project_hdf5.open("output"), "selected") class MlipInput(Input): From 971fef5105a8d331c0e910c796e5854015a85655 Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Mon, 24 Jan 2022 13:15:46 +0100 Subject: [PATCH 012/434] Allow access during collect already --- pyiron_contrib/atomistics/mlip/lammps.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyiron_contrib/atomistics/mlip/lammps.py b/pyiron_contrib/atomistics/mlip/lammps.py index 50672b293..067c5cb10 100644 --- a/pyiron_contrib/atomistics/mlip/lammps.py +++ b/pyiron_contrib/atomistics/mlip/lammps.py @@ -87,9 +87,9 @@ def selected_structures(self): Only available if :method:`.enable_active_learning` was called and once the job has been collected. """ - if not (self.status.finished or self.status.not_converged): + if not (self.status.collect or self.status.finished or self.status.not_converged): raise ValueError("Selected structures are only available once the job has finished!") - if self._selection_enabled: + if not self._selection_enabled: raise ValueError("Selected structures are only available after calling enable_active_learning()!") if self._selected_structures is None: self._selected_structures = StructureStorage() From 17cdfe43c3445afa4e9370befa4d3a1cbd953d50 Mon Sep 17 00:00:00 2001 From: Alexander Knoll Date: Fri, 28 Jan 2022 12:53:23 +0100 Subject: [PATCH 013/434] Amends #315 : Delay subclassing of DataContainer until necessary. --- pyiron_contrib/atomistics/runner/job.py | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/pyiron_contrib/atomistics/runner/job.py b/pyiron_contrib/atomistics/runner/job.py index 7330bb41e..28541ea75 100644 --- a/pyiron_contrib/atomistics/runner/job.py +++ b/pyiron_contrib/atomistics/runner/job.py @@ -14,7 +14,6 @@ codes in pyiron. Originally provided in the AtomicRex module of pyiron_contrib. - - RunnerInput (DataContainer): Storage container for RuNNer settings. - RunnerStructureContainer (StructureStorage): Storage container for RuNNer training datasets. @@ -59,18 +58,6 @@ def __init__(self, project, job_name): """ super().__init__(project, job_name) - -class RunnerInput(DataContainer): - """Extend the DataContainer class for future customization.""" - - __version__ = '0.3.0' - __hdf_version__ = '0.3.0' - - def __init__(self, *args, **kwargs): - """Initialize the class.""" - super(RunnerInput, self).__init__(*args, **kwargs) - - class RunnerStructureContainer(StructureStorage): """Store chemical structures as a Runner training dataset.""" @@ -235,7 +222,7 @@ def __init__(self, project, job_name, **kwargs): # The input data container stores all input parameters / settings of # RuNNer and is initially filled with sensible default values # (imported from ASE). - self.input = RunnerInput( + self.input = DataContainer( DEFAULT_PARAMETERS, table_name='input_parameters' ) From a0af94515273254c81ae3756a771ebc7e1b2448b Mon Sep 17 00:00:00 2001 From: Alexander Knoll Date: Fri, 28 Jan 2022 12:54:30 +0100 Subject: [PATCH 014/434] Amends #315 : Remove __init__ override from RunnerStructureContainer. --- pyiron_contrib/atomistics/runner/job.py | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/pyiron_contrib/atomistics/runner/job.py b/pyiron_contrib/atomistics/runner/job.py index 28541ea75..d25a63aba 100644 --- a/pyiron_contrib/atomistics/runner/job.py +++ b/pyiron_contrib/atomistics/runner/job.py @@ -58,21 +58,10 @@ def __init__(self, project, job_name): """ super().__init__(project, job_name) + class RunnerStructureContainer(StructureStorage): """Store chemical structures as a Runner training dataset.""" - __version__ = '0.3.0' - __hdf_version__ = '0.3.0' - - def __init__(self, project, job_name): - """Initialize the class. - - Args: - project (FIXME): The project container in which the job is created. - job_name (str): The label of the job (used for all directories). - """ - super(RunnerStructureContainer, self).__init__() - def append(self, structure): """Append `structure` to the class storage.""" # If the user appends an ASE Atoms object, try to obtain energies, From 757721806a256e7842e0956fd3527366098644c4 Mon Sep 17 00:00:00 2001 From: Alexander Knoll Date: Tue, 1 Feb 2022 13:03:08 +0100 Subject: [PATCH 015/434] Amends #315 : Rename input_properties to _input_properties . --- pyiron_contrib/atomistics/runner/job.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pyiron_contrib/atomistics/runner/job.py b/pyiron_contrib/atomistics/runner/job.py index d25a63aba..9f09bd5a4 100644 --- a/pyiron_contrib/atomistics/runner/job.py +++ b/pyiron_contrib/atomistics/runner/job.py @@ -195,7 +195,7 @@ class RunnerFit(PotentialFittingBase): __name__ = 'RuNNer' # These properties are needed by RuNNer as input data (depending on the # chosen RuNNer mode). - input_properties = ['scaling', 'weights', 'sfvalues', 'splittraintest'] + _input_properties = ['scaling', 'weights', 'sfvalues', 'splittraintest'] def __init__(self, project, job_name, **kwargs): """Initialize the class. @@ -217,6 +217,7 @@ def __init__(self, project, job_name, **kwargs): ) self._structures = RunnerStructureContainer(project, job_name) self.output = DataContainer(table_name='output') + for prop in self._input_properties: for prop in self.input_properties: val = kwargs.pop(prop, None) @@ -400,7 +401,7 @@ def restart(self, *args, **kwargs): This procedure extends the base class `restart()` by setting results from previous calculations as input parameters to the new calculation. The recognized properties depend on the class variable - self.input_properties (see class docstring for further details). + self._input_properties (see class docstring for further details). Returns: new_ham (RunnerFit): the newly created RunnerFit object. @@ -413,7 +414,7 @@ def restart(self, *args, **kwargs): # necessary for starting a new calculation. new_ham = super(RunnerFit, self).restart(*args, **kwargs) - for prop in self.input_properties: + for prop in self._input_properties: if prop in self.output.keys(): new_ham.__dict__[prop] = DataContainer(self.output[prop]) From b0cd6be8311c54d3cdbd29fe0e645a07372b204f Mon Sep 17 00:00:00 2001 From: Alexander Knoll Date: Tue, 1 Feb 2022 13:04:49 +0100 Subject: [PATCH 016/434] Amends #315 : Do not use PotentialFittingBase until needed. --- pyiron_contrib/atomistics/runner/job.py | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/pyiron_contrib/atomistics/runner/job.py b/pyiron_contrib/atomistics/runner/job.py index 9f09bd5a4..6cebf3cb5 100644 --- a/pyiron_contrib/atomistics/runner/job.py +++ b/pyiron_contrib/atomistics/runner/job.py @@ -46,19 +46,6 @@ __date__ = 'January 7, 2022' -class PotentialFittingBase(GenericJob): - """FIXME: Class copied from AtomicRex in pyiron_contrib.""" - - def __init__(self, project, job_name): - """Initialize the class. - - Args: - project (FIXME): The project container in which the job is created. - job_name (str): The label of the job (used for all directories). - """ - super().__init__(project, job_name) - - class RunnerStructureContainer(StructureStorage): """Store chemical structures as a Runner training dataset.""" From 0cea750eb67feab27b884581bed5a7a95dc3b245 Mon Sep 17 00:00:00 2001 From: Alexander Knoll Date: Tue, 1 Feb 2022 13:10:36 +0100 Subject: [PATCH 017/434] Amends #315 : Move logic from `RunnerStructureContainer` to base class `TrainingContainer`. RuNNer requires two additional properties (totalcharge and atomic charges) as training parameters. These have now been moved into the base class `TrainingContainer`. The (renamed) RunnerTrainingContainer class serves the sole purpose to provide the `to_ase` function, which remains a possible pain point. --- pyiron_contrib/atomistics/runner/job.py | 52 ++++++------------------- 1 file changed, 11 insertions(+), 41 deletions(-) diff --git a/pyiron_contrib/atomistics/runner/job.py b/pyiron_contrib/atomistics/runner/job.py index 6cebf3cb5..9a13d2901 100644 --- a/pyiron_contrib/atomistics/runner/job.py +++ b/pyiron_contrib/atomistics/runner/job.py @@ -33,8 +33,9 @@ from ase.calculators.runner.runnersinglepoint import RunnerSinglePointCalculator from pyiron_base import state, GenericJob, Executable, DataContainer -from pyiron_atomistics.atomistics.structure.structurestorage import StructureStorage -from pyiron_atomistics.atomistics.structure.atoms import pyiron_to_ase, ase_to_pyiron +from pyiron_atomistics.atomistics.structure.atoms import pyiron_to_ase + +from pyiron_contrib.atomistics.atomistics.job.trainingcontainer import TrainingContainer __author__ = 'Alexander Knoll' __copyright__ = 'Copyright 2021, Georg-August-Universität Göttingen - Behler '\ @@ -46,59 +47,28 @@ __date__ = 'January 7, 2022' -class RunnerStructureContainer(StructureStorage): +class RunnerTrainingContainer(TrainingContainer): """Store chemical structures as a Runner training dataset.""" - def append(self, structure): - """Append `structure` to the class storage.""" - # If the user appends an ASE Atoms object, try to obtain energies, - # forces, etc. and store them. - if isinstance(structure, Atoms): - struct = ase_to_pyiron(structure) - dft_charges = structure.get_initial_charges() - - if structure.calc: - dft_energy = structure.calc.get_potential_energy() - dft_forces = structure.calc.get_forces() - - # Only RunnerSinglePointCalculator object's store a separate - # total charge property. For all other calculators, sum up - # the atomic charges. - if isinstance(structure.calc, RunnerSinglePointCalculator): - totalcharge = structure.calc.results['totalcharge'] - else: - totalcharge = np.sum(dft_charges) - else: - struct = structure - - self.add_structure( - struct, - dft_energy=dft_energy, - dft_forces=dft_forces, - dft_charges=dft_charges, - totalcharge=totalcharge - ) - return struct - def to_ase(self): """Convert all attached structures to a list of ASE Atoms objects.""" structure_lst = [] for idx, structure in enumerate(self.iter_structures()): # Retrieve all properties, i.e. energy, forces, etc. - dft_energy = self.get_array('dft_energy', idx) - dft_forces = self.get_array('dft_forces', idx) - dft_charges = self.get_array('dft_charges', idx) - totalcharge = self.get_array('totalcharge', idx) + energy = self._container.get_array('energy', idx) + forces = self._container.get_array('forces', idx) + charges = self._container.get_array('charges', idx) + totalcharge = self._container.get_array('totalcharge', idx) # Retrieve atomic positions, cell vectors, etc. atoms = pyiron_to_ase(structure) # Attach properties to the Atoms object. - atoms.set_initial_charges(dft_charges) + atoms.set_initial_charges(charges) atoms.calc = RunnerSinglePointCalculator( atoms=atoms, - energy=dft_energy, - forces=dft_forces, + energy=energy, + forces=forces, totalcharge=totalcharge ) structure_lst.append(atoms) From d4932322aae917ccd05ec23921957f59a3cf8b7f Mon Sep 17 00:00:00 2001 From: Alexander Knoll Date: Tue, 1 Feb 2022 13:13:06 +0100 Subject: [PATCH 018/434] Amends #315 : Let RunnerFit inherit from `HasStorage` and `GenericJob`. This commit simplifies the implementation of HDF storage significantly and is based on `TemplateJob` in pyiron_base. --- pyiron_contrib/atomistics/runner/job.py | 85 ++++++++++++++++--------- 1 file changed, 55 insertions(+), 30 deletions(-) diff --git a/pyiron_contrib/atomistics/runner/job.py b/pyiron_contrib/atomistics/runner/job.py index 9a13d2901..14f0015e3 100644 --- a/pyiron_contrib/atomistics/runner/job.py +++ b/pyiron_contrib/atomistics/runner/job.py @@ -27,12 +27,12 @@ import numpy as np -from ase import Atoms import ase.io.runner.runner as io from ase.calculators.runner.runner import Runner, DEFAULT_PARAMETERS from ase.calculators.runner.runnersinglepoint import RunnerSinglePointCalculator -from pyiron_base import state, GenericJob, Executable, DataContainer +from pyiron_base import state, Executable, DataContainer, GenericJob +from pyiron_base.generic.object import HasStorage from pyiron_atomistics.atomistics.structure.atoms import pyiron_to_ase from pyiron_contrib.atomistics.atomistics.job.trainingcontainer import TrainingContainer @@ -76,7 +76,7 @@ def to_ase(self): return structure_lst -class RunnerFit(PotentialFittingBase): +class RunnerFit(GenericJob, HasStorage): """Generate a potential energy surface using RuNNer. The RuNNer Neural Network Energy Representation (RuNNer) is a Fortran code @@ -162,23 +162,21 @@ def __init__(self, project, job_name, **kwargs): job_name (str): The label of the job (used for all directories). """ # Initialize the base class. - super(RunnerFit, self).__init__(project, job_name) - - # Prepare data containers for all input and output properties. - # The input data container stores all input parameters / settings of - # RuNNer and is initially filled with sensible default values - # (imported from ASE). - self.input = DataContainer( - DEFAULT_PARAMETERS, - table_name='input_parameters' - ) - self._structures = RunnerStructureContainer(project, job_name) - self.output = DataContainer(table_name='output') + GenericJob.__init__(self, project=project, job_name=job_name) + HasStorage.__init__(self) + + self.storage.create_group('input') + self.storage.create_group('output') + self.storage.structures = RunnerTrainingContainer(project, job_name) + + self.storage.input.update(DEFAULT_PARAMETERS) + for prop in self._input_properties: + self.storage.create_group(prop) - for prop in self.input_properties: val = kwargs.pop(prop, None) - self.__dict__[prop] = DataContainer(val, table_name=prop) + if val is not None: + self.storage[prop] = DataContainer(val) state.publications.add(self.publication) @@ -227,10 +225,34 @@ def publication(self): ] } + @property + def scaling(self): + return self.storage.scaling + + @property + def weights(self): + return self.storage.weights + + @property + def sfvalues(self): + return self.storage.sfvalues + + @property + def splittraintest(self): + return self.storage.splittraintest + + @property + def input(self): + return self.storage.input + + @property + def output(self): + return self.storage.output + @property def structures(self): """Store a dataset consisting of many chemical structures.""" - return self._structures + return self.storage.structures @structures.setter def structures(self, structures): @@ -240,8 +262,17 @@ def structures(self, structures): structures (list): A list of ASE Atoms objects or Pyiron Atoms objects which are to be stored. """ + for structure in structures: - self._structures.append(structure) + energy = structure.get_potential_energy() + + if isinstance(structure.calc, RunnerSinglePointCalculator): + totalcharge = structure.calc.get_property('totalcharge') + else: + totalcharge = np.sum(structure.get_initial_charges()) + + self.storage.structures.include_structure(structure, energy, + totalcharge=totalcharge) def write_input(self): """Write the relevant job input files. @@ -330,11 +361,8 @@ def to_hdf(self, hdf=None, group_name=None): project data. group_name (str, optional): Subcontainer name. """ - super().to_hdf(hdf=hdf, group_name=group_name) - - self.input.to_hdf(hdf=self.project_hdf5) - self.structures.to_hdf(hdf=self.project_hdf5) - self.output.to_hdf(hdf=self.project_hdf5) + GenericJob.to_hdf(self, hdf=hdf, group_name=group_name) + HasStorage.to_hdf(self, hdf=self.project_hdf5, group_name="") def from_hdf(self, hdf=None, group_name=None): """ @@ -345,11 +373,8 @@ def from_hdf(self, hdf=None, group_name=None): project data. group_name (str, optional): Subcontainer name. """ - super().from_hdf(hdf=hdf, group_name=group_name) - - self.input.from_hdf(hdf=self.project_hdf5) - self.structures.from_hdf(hdf=self.project_hdf5) - self.output.from_hdf(hdf=self.project_hdf5) + GenericJob.from_hdf(self, hdf=hdf, group_name=group_name) + HasStorage.from_hdf(self, hdf=self.project_hdf5, group_name="") def restart(self, *args, **kwargs): """ @@ -373,6 +398,6 @@ def restart(self, *args, **kwargs): for prop in self._input_properties: if prop in self.output.keys(): - new_ham.__dict__[prop] = DataContainer(self.output[prop]) + new_ham.storage[prop] = DataContainer(self.output[prop]) return new_ham From 49b5ba163a7392d92f9813786bb70091e8d66e75 Mon Sep 17 00:00:00 2001 From: Alexander Knoll Date: Tue, 1 Feb 2022 13:13:17 +0100 Subject: [PATCH 019/434] Improve documentation. --- pyiron_contrib/atomistics/runner/job.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyiron_contrib/atomistics/runner/job.py b/pyiron_contrib/atomistics/runner/job.py index 14f0015e3..f8ce63120 100644 --- a/pyiron_contrib/atomistics/runner/job.py +++ b/pyiron_contrib/atomistics/runner/job.py @@ -158,7 +158,7 @@ def __init__(self, project, job_name, **kwargs): """Initialize the class. Args: - project (FIXME): The project container in which the job is created. + project (Project): The project container where the job is created. job_name (str): The label of the job (used for all directories). """ # Initialize the base class. From cb33245ba1b9371cddbaa6be98e5789725ed1f30 Mon Sep 17 00:00:00 2001 From: Alexander Knoll Date: Tue, 1 Feb 2022 13:14:41 +0100 Subject: [PATCH 020/434] Amends #315 : Store the properties totalcharge and atomic charge in the training container. --- .../atomistics/job/trainingcontainer.py | 50 ++++++++++++++++--- 1 file changed, 44 insertions(+), 6 deletions(-) diff --git a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py index 970b06d1b..7ee424851 100644 --- a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py +++ b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py @@ -54,6 +54,10 @@ def __init__(self, project, job_name): self._container.add_array("forces", shape=(3,), dtype=np.float64, per="element") # save stress in voigt notation self._container.add_array("stress", shape=(6,), dtype=np.float64, per="chunk") + # Store total (per-structure) and atomic charge information. + self._container.add_array('totalcharge', dtype=np.float64, per='chunk') + self._container.add_array("charges", dtype=np.float64, per="element") + self._table_cache = None self.input = DataContainer({ @@ -71,8 +75,12 @@ def _table(self): for i in range(len(self._container))], "energy": [self._container.get_array("energy", i) for i in range(len(self._container))], + "totalcharge": [self._container.get_array("totalcharge", i) + for i in range(len(self._container))], "forces": [self._container.get_array("forces", i) for i in range(len(self._container))], + "charges": [self._container.get_array("charges", i) + for i in range(len(self._container))], "stress": [self._container.get_array("stress", i) for i in range(len(self._container))], }) @@ -93,6 +101,21 @@ def include_job(self, job, iteration_step=-1): forces = ff[iteration_step] else: forces = None + + # Retrieve total charge. + tc = job.output.totalcharge + if tc is not None: + totalcharge = tc[iteration_step] + else: + totalcharge = None + + # Retrieve atomic charges. + cc = job.output.charges + if cc is not None: + charges = cc[iteration_step] + else: + charges = None + # HACK: VASP work-around, current contents of pressures are meaningless, correct values are in # output/generic/stresses pp = job["output/generic/stresses"] @@ -108,10 +131,11 @@ def include_job(self, job, iteration_step=-1): stress = np.array([stress[0, 0], stress[1 ,1], stress[2, 2], stress[1, 2], stress[0, 2], stress[0, 1]]) self.include_structure(job.get_structure(iteration_step=iteration_step), - energy=energy, forces=forces, stress=stress, + energy=energy, totalcharge=totalcharge, + forces=forces, charges=charges, stress=stress, name=job.name) - def include_structure(self, structure, energy, forces=None, stress=None, name=None): + def include_structure(self, structure, energy, totalcharge=None, forces=None, charges=None, stress=None, name=None): """ Add new structure to structure list and save energy and forces with it. @@ -130,10 +154,17 @@ def include_structure(self, structure, energy, forces=None, stress=None, name=No data["forces"] = forces if stress is not None: data["stress"] = stress + if totalcharge is not None: + data["totalcharge"] = totalcharge + if charges is not None: + data["charges"] = charges self._container.add_structure(structure, name, **data) if self._table_cache: self._table = self._table.append( - {"name": name, "atoms": structure, "energy": energy, "forces": forces, "stress": stress, + {"name": name, "atoms": structure, "energy": energy, + "totalcharge": totalcharge, + "forces": forces, "charges": charges, + "stress": stress, "number_of_atoms": len(structure)}, ignore_index=True) @@ -145,13 +176,18 @@ def include_dataset(self, dataset): - name: human readable name of the structure - atoms(:class:`ase.Atoms`): the atomic structure - energy(float): energy of the whole structure + - totalcharge(float): charge of the whole structure - forces (Nx3 array of float): per atom forces, where N is the number of atoms in the structure + - charges (Nx3 array of floats): - stress (6 array of float): per structure stress in voigt notation """ self._table_cache = self._table.append(dataset, ignore_index=True) # in case given dataset has more columns than the necessary ones, swallow/ignore them in *_ - for name, atoms, energy, forces, stress, *_ in dataset.itertuples(index=False): - self._container.add_structure(atoms, name, energy=energy, forces=forces, stress=stress) + for name, atoms, energy, totalcharge, forces, charges, stress, *_ in dataset.itertuples(index=False): + self._container.add_structure(atoms, name, energy=energy, + totalcharge=totalcharge, + forces=forces, charges=charges, + stress=stress) def get_neighbors(self, num_neighbors=None): """ @@ -221,9 +257,11 @@ def to_list(self, filter_function=None): data_table = filter_function(self._table) structure_list = data_table.atoms.to_list() energy_list = data_table.energy.to_list() + totalcharge_list = data_table.totalcharge.to_list() force_list = data_table.forces.to_list() + charges_list = data_table.charges.to_list() num_atoms_list = data_table.number_of_atoms.to_list() - return structure_list, energy_list, force_list, num_atoms_list + return structure_list, energy_list, totalcharge_list, force_list, charges_list, num_atoms_list def write_input(self): pass From 87b6fa125efa7abbd8a5b3624c9dc27bb938ff3c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Feb 2022 11:08:15 +0000 Subject: [PATCH 021/434] Bump moto from 3.0.4 to 3.0.5 Bumps [moto](https://github.com/spulec/moto) from 3.0.4 to 3.0.5. - [Release notes](https://github.com/spulec/moto/releases) - [Changelog](https://github.com/spulec/moto/blob/master/CHANGELOG.md) - [Commits](https://github.com/spulec/moto/compare/3.0.4...3.0.5) --- updated-dependencies: - dependency-name: moto dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index cad8cc3cf..d46a36264 100644 --- a/setup.py +++ b/setup.py @@ -50,7 +50,7 @@ 'image': ['scikit-image==0.19.2'], 'generic': [ 'boto3==1.21.3', - 'moto==3.0.4' + 'moto==3.0.5' ], }, cmdclass=versioneer.get_cmdclass(), From 01fad4ee77bb6213c6bd56edbb70ffc984633e14 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Feb 2022 11:08:20 +0000 Subject: [PATCH 022/434] Bump pyiron-base from 0.5.5 to 0.5.6 Bumps [pyiron-base](https://github.com/pyiron/pyiron_base) from 0.5.5 to 0.5.6. - [Release notes](https://github.com/pyiron/pyiron_base/releases) - [Changelog](https://github.com/pyiron/pyiron_base/blob/master/CHANGELOG.md) - [Commits](https://github.com/pyiron/pyiron_base/compare/pyiron_base-0.5.5...pyiron_base-0.5.6) --- updated-dependencies: - dependency-name: pyiron-base dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index cad8cc3cf..28c8f8ab2 100644 --- a/setup.py +++ b/setup.py @@ -33,7 +33,7 @@ install_requires=[ 'matplotlib==3.5.1', 'numpy==1.22.2', - 'pyiron_base==0.5.5', + 'pyiron_base==0.5.6', 'scipy==1.8.0', 'seaborn==0.11.2', 'pyparsing==3.0.7' From 96d8bd501424291a0f20cae4ebf1ea1c0e2e046d Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 28 Feb 2022 11:08:31 +0000 Subject: [PATCH 023/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 3ae5a1a5a..586815004 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -15,4 +15,4 @@ dependencies: - scikit-image =0.19.2 - randspg =0.0.1 - boto3 =1.21.3 -- moto =3.0.4 +- moto =3.0.5 From a434688fb779f687b13018702cfe9901880da5d8 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 28 Feb 2022 11:09:07 +0000 Subject: [PATCH 024/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 3ae5a1a5a..19b96ff1c 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -7,7 +7,7 @@ dependencies: - codacy-coverage - matplotlib =3.5.1 - numpy =1.22.2 -- pyiron_base =0.5.5 +- pyiron_base =0.5.6 - pyiron_atomistics =0.2.37 - pyparsing =3.0.7 - scipy =1.8.0 From 87b4f451a334370e82ce5e7af2293db9336f03ed Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Feb 2022 13:14:36 +0000 Subject: [PATCH 025/434] Bump pyiron-atomistics from 0.2.37 to 0.2.38 Bumps [pyiron-atomistics](https://github.com/pyiron/pyiron_atomistics) from 0.2.37 to 0.2.38. - [Release notes](https://github.com/pyiron/pyiron_atomistics/releases) - [Changelog](https://github.com/pyiron/pyiron_atomistics/blob/master/CHANGELOG.md) - [Commits](https://github.com/pyiron/pyiron_atomistics/compare/pyiron_atomistics-0.2.37...pyiron_atomistics-0.2.38) --- updated-dependencies: - dependency-name: pyiron-atomistics dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 3cd66c92c..090f478c6 100644 --- a/setup.py +++ b/setup.py @@ -41,7 +41,7 @@ extras_require={ 'atomistic': [ 'ase==3.22.1', - 'pyiron_atomistics==0.2.37', + 'pyiron_atomistics==0.2.38', ], 'fenics': [ 'fenics==2019.1.0', From 8b2cb0874ab86419c258bab3110774efda17c175 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 28 Feb 2022 13:14:57 +0000 Subject: [PATCH 026/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index ed616e75a..e83025235 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -8,7 +8,7 @@ dependencies: - matplotlib =3.5.1 - numpy =1.22.2 - pyiron_base =0.5.6 -- pyiron_atomistics =0.2.37 +- pyiron_atomistics =0.2.38 - pyparsing =3.0.7 - scipy =1.8.0 - seaborn =0.11.2 From 5e2593e7b7c1f57d666a597d4f47d8b2fd484bf3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Feb 2022 13:15:09 +0000 Subject: [PATCH 027/434] Bump boto3 from 1.21.3 to 1.21.8 Bumps [boto3](https://github.com/boto/boto3) from 1.21.3 to 1.21.8. - [Release notes](https://github.com/boto/boto3/releases) - [Changelog](https://github.com/boto/boto3/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/boto/boto3/compare/1.21.3...1.21.8) --- updated-dependencies: - dependency-name: boto3 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 3cd66c92c..187b56964 100644 --- a/setup.py +++ b/setup.py @@ -49,7 +49,7 @@ ], 'image': ['scikit-image==0.19.2'], 'generic': [ - 'boto3==1.21.3', + 'boto3==1.21.8', 'moto==3.0.5' ], }, From ec75e4d762520422084c4c53e19be11679a8f5fd Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 28 Feb 2022 13:20:54 +0000 Subject: [PATCH 028/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index ed616e75a..4053c3b17 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -14,5 +14,5 @@ dependencies: - seaborn =0.11.2 - scikit-image =0.19.2 - randspg =0.0.1 -- boto3 =1.21.3 +- boto3 =1.21.8 - moto =3.0.5 From 1733ef2b0d8f5e87aa69e045440403c5a7d792eb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 7 Mar 2022 11:07:50 +0000 Subject: [PATCH 029/434] Bump boto3 from 1.21.8 to 1.21.13 Bumps [boto3](https://github.com/boto/boto3) from 1.21.8 to 1.21.13. - [Release notes](https://github.com/boto/boto3/releases) - [Changelog](https://github.com/boto/boto3/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/boto/boto3/compare/1.21.8...1.21.13) --- updated-dependencies: - dependency-name: boto3 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 12f88b3d8..91abab560 100644 --- a/setup.py +++ b/setup.py @@ -49,7 +49,7 @@ ], 'image': ['scikit-image==0.19.2'], 'generic': [ - 'boto3==1.21.8', + 'boto3==1.21.13', 'moto==3.0.5' ], }, From e656eb0d340f4a12ae73661de8c3c66a897c5bf0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 7 Mar 2022 11:07:59 +0000 Subject: [PATCH 030/434] Bump pyiron-base from 0.5.6 to 0.5.7 Bumps [pyiron-base](https://github.com/pyiron/pyiron_base) from 0.5.6 to 0.5.7. - [Release notes](https://github.com/pyiron/pyiron_base/releases) - [Changelog](https://github.com/pyiron/pyiron_base/blob/master/CHANGELOG.md) - [Commits](https://github.com/pyiron/pyiron_base/compare/pyiron_base-0.5.6...pyiron_base-0.5.7) --- updated-dependencies: - dependency-name: pyiron-base dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 12f88b3d8..403d6f88c 100644 --- a/setup.py +++ b/setup.py @@ -33,7 +33,7 @@ install_requires=[ 'matplotlib==3.5.1', 'numpy==1.22.2', - 'pyiron_base==0.5.6', + 'pyiron_base==0.5.7', 'scipy==1.8.0', 'seaborn==0.11.2', 'pyparsing==3.0.7' From 367e724ce74b82435c58b37712d77df74ca2e5ed Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 7 Mar 2022 11:08:07 +0000 Subject: [PATCH 031/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 75c4efd11..b720a3096 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -14,5 +14,5 @@ dependencies: - seaborn =0.11.2 - scikit-image =0.19.2 - randspg =0.0.1 -- boto3 =1.21.8 +- boto3 =1.21.13 - moto =3.0.5 From 711ed55061e9f7a251d3acee72b8d7e4aad72968 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 7 Mar 2022 11:09:03 +0000 Subject: [PATCH 032/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 75c4efd11..fa397218e 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -7,7 +7,7 @@ dependencies: - codacy-coverage - matplotlib =3.5.1 - numpy =1.22.2 -- pyiron_base =0.5.6 +- pyiron_base =0.5.7 - pyiron_atomistics =0.2.38 - pyparsing =3.0.7 - scipy =1.8.0 From dd2df8e3f09ae26bb19c4b6c99832b51bef9a290 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 7 Mar 2022 14:21:39 +0000 Subject: [PATCH 033/434] Bump moto from 3.0.5 to 3.0.6 Bumps [moto](https://github.com/spulec/moto) from 3.0.5 to 3.0.6. - [Release notes](https://github.com/spulec/moto/releases) - [Changelog](https://github.com/spulec/moto/blob/master/CHANGELOG.md) - [Commits](https://github.com/spulec/moto/compare/3.0.5...3.0.6) --- updated-dependencies: - dependency-name: moto dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index af325b4f3..558356ba7 100644 --- a/setup.py +++ b/setup.py @@ -50,7 +50,7 @@ 'image': ['scikit-image==0.19.2'], 'generic': [ 'boto3==1.21.13', - 'moto==3.0.5' + 'moto==3.0.6' ], }, cmdclass=versioneer.get_cmdclass(), From 4bf492182553739093ac76716789af96998c3a23 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 7 Mar 2022 14:21:53 +0000 Subject: [PATCH 034/434] Bump pyiron-atomistics from 0.2.38 to 0.2.39 Bumps [pyiron-atomistics](https://github.com/pyiron/pyiron_atomistics) from 0.2.38 to 0.2.39. - [Release notes](https://github.com/pyiron/pyiron_atomistics/releases) - [Changelog](https://github.com/pyiron/pyiron_atomistics/blob/master/CHANGELOG.md) - [Commits](https://github.com/pyiron/pyiron_atomistics/compare/pyiron_atomistics-0.2.38...pyiron_atomistics-0.2.39) --- updated-dependencies: - dependency-name: pyiron-atomistics dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index af325b4f3..de3aeb48c 100644 --- a/setup.py +++ b/setup.py @@ -41,7 +41,7 @@ extras_require={ 'atomistic': [ 'ase==3.22.1', - 'pyiron_atomistics==0.2.38', + 'pyiron_atomistics==0.2.39', ], 'fenics': [ 'fenics==2019.1.0', From f6f68ab34f7ea0c9153079e1e7739aa50ac14b0d Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 7 Mar 2022 14:25:57 +0000 Subject: [PATCH 035/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 798689c38..9e62300a8 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -15,4 +15,4 @@ dependencies: - scikit-image =0.19.2 - randspg =0.0.1 - boto3 =1.21.13 -- moto =3.0.5 +- moto =3.0.6 From b9db61181dba2eb5a81f4ef80b00ffa23ac0174f Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 7 Mar 2022 14:27:51 +0000 Subject: [PATCH 036/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 798689c38..a444b3f50 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -8,7 +8,7 @@ dependencies: - matplotlib =3.5.1 - numpy =1.22.2 - pyiron_base =0.5.7 -- pyiron_atomistics =0.2.38 +- pyiron_atomistics =0.2.39 - pyparsing =3.0.7 - scipy =1.8.0 - seaborn =0.11.2 From 4594084f0faef7daa5f54590c548edd6c072edae Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Mon, 14 Mar 2022 11:25:05 +0100 Subject: [PATCH 037/434] Load selected structures from HDF if available --- pyiron_contrib/atomistics/mlip/lammps.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pyiron_contrib/atomistics/mlip/lammps.py b/pyiron_contrib/atomistics/mlip/lammps.py index 067c5cb10..b8ad8ab61 100644 --- a/pyiron_contrib/atomistics/mlip/lammps.py +++ b/pyiron_contrib/atomistics/mlip/lammps.py @@ -92,7 +92,10 @@ def selected_structures(self): if not self._selection_enabled: raise ValueError("Selected structures are only available after calling enable_active_learning()!") if self._selected_structures is None: - self._selected_structures = StructureStorage() + if "selected" in self["output"].list_groups(): + self._selected_structures = self["output/selected"].to_object() + else: + self._selected_structures = StructureStorage() return self._selected_structures def collect_output(self): From 29fa671f3d06de6627ad086e751d0ba4662d0a3a Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Mon, 14 Mar 2022 11:27:10 +0100 Subject: [PATCH 038/434] Save MV grade in selected structures --- pyiron_contrib/atomistics/mlip/lammps.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pyiron_contrib/atomistics/mlip/lammps.py b/pyiron_contrib/atomistics/mlip/lammps.py index b8ad8ab61..bb8a6cd87 100644 --- a/pyiron_contrib/atomistics/mlip/lammps.py +++ b/pyiron_contrib/atomistics/mlip/lammps.py @@ -106,7 +106,8 @@ def collect_output(self): for cfg in loadcfgs(file_name): self.selected_structures.add_structure( Atoms(species=self.structure.species, indices=cfg.types, positions=cfg.pos, cell=cfg.lat, - pbc=[True, True, True]) + pbc=[True, True, True]), + mv_grade=cfg.grade ) cell, positions, forces, stress, energy, indicies, grades, jobids, timesteps = read_cgfs(file_name=file_name) with self.project_hdf5.open("output/mlip") as hdf5_output: From 47f3ab115590950a456ab36b92dbf80ad159a3bd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 14 Mar 2022 11:05:53 +0000 Subject: [PATCH 039/434] Bump moto from 3.0.6 to 3.1.0 Bumps [moto](https://github.com/spulec/moto) from 3.0.6 to 3.1.0. - [Release notes](https://github.com/spulec/moto/releases) - [Changelog](https://github.com/spulec/moto/blob/master/CHANGELOG.md) - [Commits](https://github.com/spulec/moto/compare/3.0.6...3.1.0) --- updated-dependencies: - dependency-name: moto dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index dcb2f5508..fc2c1c023 100644 --- a/setup.py +++ b/setup.py @@ -50,7 +50,7 @@ 'image': ['scikit-image==0.19.2'], 'generic': [ 'boto3==1.21.13', - 'moto==3.0.6' + 'moto==3.1.0' ], }, cmdclass=versioneer.get_cmdclass(), From 7d5291688953cf5cf9367ba361c43a54f196eb18 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 14 Mar 2022 11:05:56 +0000 Subject: [PATCH 040/434] Bump pyiron-atomistics from 0.2.39 to 0.2.40 Bumps [pyiron-atomistics](https://github.com/pyiron/pyiron_atomistics) from 0.2.39 to 0.2.40. - [Release notes](https://github.com/pyiron/pyiron_atomistics/releases) - [Changelog](https://github.com/pyiron/pyiron_atomistics/blob/master/CHANGELOG.md) - [Commits](https://github.com/pyiron/pyiron_atomistics/compare/pyiron_atomistics-0.2.39...pyiron_atomistics-0.2.40) --- updated-dependencies: - dependency-name: pyiron-atomistics dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index dcb2f5508..5f39aaf5d 100644 --- a/setup.py +++ b/setup.py @@ -41,7 +41,7 @@ extras_require={ 'atomistic': [ 'ase==3.22.1', - 'pyiron_atomistics==0.2.39', + 'pyiron_atomistics==0.2.40', ], 'fenics': [ 'fenics==2019.1.0', From 219600625f3ab2d711982784404f8f1f2f0eff22 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 14 Mar 2022 11:06:04 +0000 Subject: [PATCH 041/434] Bump numpy from 1.22.2 to 1.22.3 Bumps [numpy](https://github.com/numpy/numpy) from 1.22.2 to 1.22.3. - [Release notes](https://github.com/numpy/numpy/releases) - [Changelog](https://github.com/numpy/numpy/blob/main/doc/HOWTO_RELEASE.rst.txt) - [Commits](https://github.com/numpy/numpy/compare/v1.22.2...v1.22.3) --- updated-dependencies: - dependency-name: numpy dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index dcb2f5508..586d25241 100644 --- a/setup.py +++ b/setup.py @@ -32,7 +32,7 @@ packages=find_packages(exclude=["*tests*"]), install_requires=[ 'matplotlib==3.5.1', - 'numpy==1.22.2', + 'numpy==1.22.3', 'pyiron_base==0.5.7', 'scipy==1.8.0', 'seaborn==0.11.2', From c9b3350919c60d36d353ff8e3dfc67a379677d42 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 14 Mar 2022 11:08:39 +0000 Subject: [PATCH 042/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index cda919cae..c7d376c75 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -15,4 +15,4 @@ dependencies: - scikit-image =0.19.2 - randspg =0.0.1 - boto3 =1.21.13 -- moto =3.0.6 +- moto =3.1.0 From 66149852d4686ad33a8ff655779f83c31b6d9851 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 14 Mar 2022 11:14:15 +0000 Subject: [PATCH 043/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index cda919cae..dcb87efec 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -8,7 +8,7 @@ dependencies: - matplotlib =3.5.1 - numpy =1.22.2 - pyiron_base =0.5.7 -- pyiron_atomistics =0.2.39 +- pyiron_atomistics =0.2.40 - pyparsing =3.0.7 - scipy =1.8.0 - seaborn =0.11.2 From af62b76fa41d53c063ba77952b5b044c2f7253cd Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 14 Mar 2022 11:15:36 +0000 Subject: [PATCH 044/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index cda919cae..ab767ec3b 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -6,7 +6,7 @@ dependencies: - coverage - codacy-coverage - matplotlib =3.5.1 -- numpy =1.22.2 +- numpy =1.22.3 - pyiron_base =0.5.7 - pyiron_atomistics =0.2.39 - pyparsing =3.0.7 From 4783dde36734f8e6098fa10afb17936f4e292a13 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 14 Mar 2022 13:34:06 +0000 Subject: [PATCH 045/434] Bump boto3 from 1.21.13 to 1.21.18 Bumps [boto3](https://github.com/boto/boto3) from 1.21.13 to 1.21.18. - [Release notes](https://github.com/boto/boto3/releases) - [Changelog](https://github.com/boto/boto3/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/boto/boto3/compare/1.21.13...1.21.18) --- updated-dependencies: - dependency-name: boto3 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 41d912293..28eb6aa84 100644 --- a/setup.py +++ b/setup.py @@ -49,7 +49,7 @@ ], 'image': ['scikit-image==0.19.2'], 'generic': [ - 'boto3==1.21.13', + 'boto3==1.21.18', 'moto==3.1.0' ], }, From 618ce9b1ddc2f3e6c45e9c9131cacb8bf796fb33 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 14 Mar 2022 13:50:46 +0000 Subject: [PATCH 046/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 043648c30..381d2bed7 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -14,5 +14,5 @@ dependencies: - seaborn =0.11.2 - scikit-image =0.19.2 - randspg =0.0.1 -- boto3 =1.21.13 +- boto3 =1.21.18 - moto =3.1.0 From 4cf695bc07f3095343e67cb9bcf6e581fd8b0e61 Mon Sep 17 00:00:00 2001 From: Niklas Leimeroth Date: Fri, 18 Mar 2022 07:29:45 +0100 Subject: [PATCH 047/434] add unit to angle --- pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py index 076c7828d..a3eff1892 100644 --- a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py +++ b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py @@ -300,7 +300,7 @@ def extract(n, c): plt.subplot(1, 4, 4) plt.title("Lattice Vector Angles") plt.hist([df.alpha, df.beta, df.gamma], log=True) - plt.xlabel(r"$\alpha,\beta,\gamma$") + plt.xlabel(r"$\alpha,\beta,\gamma$ [rad]") return df From b08b19a54b6a4db8a95cfee6b2142c0f0085c389 Mon Sep 17 00:00:00 2001 From: Niklas Leimeroth Date: Fri, 18 Mar 2022 09:36:04 +0100 Subject: [PATCH 048/434] optional convertion to degree --- .../atomistics/job/trainingcontainer.py | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py index a3eff1892..bb5236402 100644 --- a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py +++ b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py @@ -244,13 +244,16 @@ def extract(s): return pd.DataFrame(map(extract, self._train.iter_structures())) - def cell(self): + def cell(self, angle_in_degrees=True): """ Plot histograms of cell parameters. Plotted are atomic volume, density, cell vector lengths and cell vector angles in separate subplots all on a log-scale. + Args: + angle_in_degrees (bool): whether unit for angles is degree or radians + Returns: `DataFrame`: contains the plotted information in the columns: - a: length of first vector @@ -266,9 +269,10 @@ def cell(self): C = self._train.get_array("cell") def get_angle(cell, idx=0): - return np.arccos(np.dot(cell[idx], cell[(idx+1)%3]) \ + angle_in_rad = np.arccos(np.dot(cell[idx], cell[(idx+1)%3]) \ / np.linalg.norm(cell[idx]) / np.linalg.norm(cell[(idx+1)%3])) + def extract(n, c): return { "a": np.linalg.norm(c[0]), @@ -281,6 +285,10 @@ def extract(n, c): df = pd.DataFrame([extract(n, c) for n, c in zip(N, C)]) df["V"] = np.linalg.det(C) df["N"] = N + if angle_in_degrees: + df["alpha"] = np.rad2deg(df["alpha"]) + df["beta"] = np.rad2deg(df["beta"]) + df["gamma"] = np.rad2deg(df["gamma"]) plt.subplot(1, 4, 1) plt.title("Atomic Volume") @@ -300,7 +308,11 @@ def extract(n, c): plt.subplot(1, 4, 4) plt.title("Lattice Vector Angles") plt.hist([df.alpha, df.beta, df.gamma], log=True) - plt.xlabel(r"$\alpha,\beta,\gamma$ [rad]") + if angle_in_degrees: + label = r"$\alpha,\beta,\gamma$ [°]" + else: + label = r"$\alpha,\beta,\gamma$ [rad]" + plt.xlabel(label) return df From f2b774004c6b369b1056ca1381247205e6a2a65c Mon Sep 17 00:00:00 2001 From: Niklas Leimeroth Date: Fri, 18 Mar 2022 09:44:47 +0100 Subject: [PATCH 049/434] fix introduced missing return --- pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py index bb5236402..b3f97072b 100644 --- a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py +++ b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py @@ -269,7 +269,7 @@ def cell(self, angle_in_degrees=True): C = self._train.get_array("cell") def get_angle(cell, idx=0): - angle_in_rad = np.arccos(np.dot(cell[idx], cell[(idx+1)%3]) \ + return np.arccos(np.dot(cell[idx], cell[(idx+1)%3]) \ / np.linalg.norm(cell[idx]) / np.linalg.norm(cell[(idx+1)%3])) @@ -286,7 +286,7 @@ def extract(n, c): df["V"] = np.linalg.det(C) df["N"] = N if angle_in_degrees: - df["alpha"] = np.rad2deg(df["alpha"]) + df["alpha"] = np.rad2deg(df.alpha.) df["beta"] = np.rad2deg(df["beta"]) df["gamma"] = np.rad2deg(df["gamma"]) From 3e3b22911da43067d87aad191fb49f4f61282e6e Mon Sep 17 00:00:00 2001 From: Niklas Leimeroth Date: Fri, 18 Mar 2022 09:45:32 +0100 Subject: [PATCH 050/434] .. --- pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py index b3f97072b..63649634b 100644 --- a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py +++ b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py @@ -286,7 +286,7 @@ def extract(n, c): df["V"] = np.linalg.det(C) df["N"] = N if angle_in_degrees: - df["alpha"] = np.rad2deg(df.alpha.) + df["alpha"] = np.rad2deg(df["alpha"]) df["beta"] = np.rad2deg(df["beta"]) df["gamma"] = np.rad2deg(df["gamma"]) From 1007d0823e9bbac4f0ee2b0be9213a042778f62c Mon Sep 17 00:00:00 2001 From: Niklas Leimeroth Date: Fri, 18 Mar 2022 09:50:29 +0100 Subject: [PATCH 051/434] black formatting --- .../atomistics/job/trainingcontainer.py | 159 +++++++++++------- 1 file changed, 101 insertions(+), 58 deletions(-) diff --git a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py index 63649634b..41e2f8d7f 100644 --- a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py +++ b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py @@ -52,10 +52,9 @@ def __init__(self, project, job_name): self.__hdf_version__ = "0.3.0" self._container = TrainingStorage() - self.input = DataContainer({ - "save_neighbors": True, - "num_neighbors": 12 - }, table_name="parameters") + self.input = DataContainer( + {"save_neighbors": True, "num_neighbors": 12}, table_name="parameters" + ) def include_job(self, job, iteration_step=-1): """ @@ -118,8 +117,11 @@ def get_neighbors(self, num_neighbors=None): """ if num_neighbors is None: num_neighbors = self.input.num_neighbors - n = NeighborsTrajectory(has_structure=self, store=self._container if self.input.save_neighbors else None, - num_neighbors=num_neighbors) + n = NeighborsTrajectory( + has_structure=self, + store=self._container if self.input.save_neighbors else None, + num_neighbors=num_neighbors, + ) n.compute_neighbors() return n @@ -187,7 +189,9 @@ def from_hdf(self, hdf=None, group_name=None): super().from_hdf(hdf=hdf, group_name=group_name) hdf_version = self.project_hdf5.get("HDF_VERSION", "0.1.0") if hdf_version == "0.1.0": - table = pd.read_hdf(self.project_hdf5.file_name, self.name + "/output/structure_table") + table = pd.read_hdf( + self.project_hdf5.file_name, self.name + "/output/structure_table" + ) self.include_dataset(table) else: self._container = TrainingStorage() @@ -202,6 +206,7 @@ def plot(self): """ return TrainingPlots(self._container) + class TrainingPlots: """ Simple interface to plot various properties of the structures inside the given :class:`.TrainingContainer`. @@ -222,8 +227,9 @@ def _calc_spacegroups(self, symprec=1e-3): Returns: DataFrame: contains columns 'crystal_system' (str) and 'space_group' (int) for each structure """ + def get_crystal_system(num): - if num in range(1,3): + if num in range(1, 3): return "triclinic" elif num in range(3, 16): return "monoclinic" @@ -240,7 +246,7 @@ def get_crystal_system(num): def extract(s): spg = s.get_symmetry(symprec=symprec).spacegroup["Number"] - return {'space_group': spg, 'crystal_system': get_crystal_system(spg)} + return {"space_group": spg, "crystal_system": get_crystal_system(spg)} return pd.DataFrame(map(extract, self._train.iter_structures())) @@ -269,19 +275,22 @@ def cell(self, angle_in_degrees=True): C = self._train.get_array("cell") def get_angle(cell, idx=0): - return np.arccos(np.dot(cell[idx], cell[(idx+1)%3]) \ - / np.linalg.norm(cell[idx]) / np.linalg.norm(cell[(idx+1)%3])) - + return np.arccos( + np.dot(cell[idx], cell[(idx + 1) % 3]) + / np.linalg.norm(cell[idx]) + / np.linalg.norm(cell[(idx + 1) % 3]) + ) def extract(n, c): return { - "a": np.linalg.norm(c[0]), - "b": np.linalg.norm(c[1]), - "c": np.linalg.norm(c[2]), - "alpha": get_angle(c, 0), - "beta": get_angle(c, 1), - "gamma": get_angle(c, 2), + "a": np.linalg.norm(c[0]), + "b": np.linalg.norm(c[1]), + "c": np.linalg.norm(c[2]), + "alpha": get_angle(c, 0), + "beta": get_angle(c, 1), + "gamma": get_angle(c, 2), } + df = pd.DataFrame([extract(n, c) for n, c in zip(N, C)]) df["V"] = np.linalg.det(C) df["N"] = N @@ -292,12 +301,12 @@ def extract(n, c): plt.subplot(1, 4, 1) plt.title("Atomic Volume") - plt.hist(df.V/df.N, bins=20, log=True) + plt.hist(df.V / df.N, bins=20, log=True) plt.xlabel(r"$V$ [$\AA^3$]") plt.subplot(1, 4, 2) plt.title("Density") - plt.hist(df.N/df.V, bins=20, log=True) + plt.hist(df.N / df.V, bins=20, log=True) plt.xlabel(r"$\rho$ [$\AA^{-3}$]") plt.subplot(1, 4, 3) @@ -399,14 +408,21 @@ def coordination(self, num_shells=4, log=True): """ if not self._train.has_array("shells"): raise ValueError( - "TrainingContainer contains no neighbor information, call TrainingContainer.get_neighbors first!" + "TrainingContainer contains no neighbor information, call TrainingContainer.get_neighbors first!" ) - shells = self._train.get_array('shells') - shell_index = shells[np.newaxis, :, :] == np.arange(1, num_shells+1)[:, np.newaxis, np.newaxis] + shells = self._train.get_array("shells") + shell_index = ( + shells[np.newaxis, :, :] + == np.arange(1, num_shells + 1)[:, np.newaxis, np.newaxis] + ) neigh_count = shell_index.sum(axis=-1) - ticks = np.arange(neigh_count.min(), neigh_count.max()+1) - plt.hist(neigh_count.T, bins=ticks-0.5, - log=True, label=[f"{i}." for i in range(1, num_shells+1)]) + ticks = np.arange(neigh_count.min(), neigh_count.max() + 1) + plt.hist( + neigh_count.T, + bins=ticks - 0.5, + log=True, + label=[f"{i}." for i in range(1, num_shells + 1)], + ) plt.xticks(ticks) plt.xlabel("Number of Neighbors") plt.legend(title="Shell") @@ -419,24 +435,31 @@ def shell_distances(self, num_shells=4): Args: num_shells (int): maximum shell to plot """ - if not self._train.has_array("shells") or not self._train.has_array("distances"): + if not self._train.has_array("shells") or not self._train.has_array( + "distances" + ): raise ValueError( - "TrainingContainer contains no neighbor information, call TrainingContainer.get_neighbors first!" + "TrainingContainer contains no neighbor information, call TrainingContainer.get_neighbors first!" ) - dists = self._train.get_array('distances') + dists = self._train.get_array("distances") R = dists.flatten() - shells = self._train.get_array('shells') + shells = self._train.get_array("shells") S = shells.ravel() - d = pd.DataFrame({"distance": R[S < num_shells + 1], "shells": S[S < num_shells + 1]}) - sns.violinplot(y=d.shells, x=d.distance, scale='width', orient='h') + d = pd.DataFrame( + {"distance": R[S < num_shells + 1], "shells": S[S < num_shells + 1]} + ) + sns.violinplot(y=d.shells, x=d.distance, scale="width", orient="h") plt.xlabel(r"Distance [$\AA$]") plt.ylabel("Shell") + class TrainingStorage(StructureStorage): def __init__(self): super().__init__() self.add_array("energy", dtype=np.float64, per="chunk", fill=np.nan) - self.add_array("forces", shape=(3,), dtype=np.float64, per="element", fill=np.nan) + self.add_array( + "forces", shape=(3,), dtype=np.float64, per="element", fill=np.nan + ) # save stress in voigt notation self.add_array("stress", shape=(6,), dtype=np.float64, per="chunk", fill=np.nan) self._table_cache = None @@ -444,19 +467,18 @@ def __init__(self): @property def _table(self): if self._table_cache is None or len(self._table_cache) != len(self): - self._table_cache = pd.DataFrame({ - "name": [self.get_array("identifier", i) - for i in range(len(self))], - "atoms": [self.get_structure(i) - for i in range(len(self))], - "energy": [self.get_array("energy", i) - for i in range(len(self))], - "forces": [self.get_array("forces", i) - for i in range(len(self))], - "stress": [self.get_array("stress", i) - for i in range(len(self))], - }) - self._table_cache["number_of_atoms"] = [len(s) for s in self._table_cache.atoms] + self._table_cache = pd.DataFrame( + { + "name": [self.get_array("identifier", i) for i in range(len(self))], + "atoms": [self.get_structure(i) for i in range(len(self))], + "energy": [self.get_array("energy", i) for i in range(len(self))], + "forces": [self.get_array("forces", i) for i in range(len(self))], + "stress": [self.get_array("stress", i) for i in range(len(self))], + } + ) + self._table_cache["number_of_atoms"] = [ + len(s) for s in self._table_cache.atoms + ] return self._table_cache def to_pandas(self): @@ -502,11 +524,23 @@ def include_job(self, job, iteration_step=-1): if stress is not None: stress = np.asarray(stress) if stress.shape == (3, 3): - stress = np.array([stress[0, 0], stress[1 ,1], stress[2, 2], - stress[1, 2], stress[0, 2], stress[0, 1]]) - self.include_structure(job.get_structure(iteration_step=iteration_step), - energy=energy, forces=forces, stress=stress, - name=job.name) + stress = np.array( + [ + stress[0, 0], + stress[1, 1], + stress[2, 2], + stress[1, 2], + stress[0, 2], + stress[0, 1], + ] + ) + self.include_structure( + job.get_structure(iteration_step=iteration_step), + energy=energy, + forces=forces, + stress=stress, + name=job.name, + ) @deprecate("Use add_structure instead") def include_structure(self, structure, energy, forces=None, stress=None, name=None): @@ -523,10 +557,13 @@ def include_structure(self, structure, energy, forces=None, stress=None, name=No stress (6 array of float, optional): per structure stresses in voigt notation name (str, optional): name describing the structure """ - self.add_structure(structure, energy, identifier=name, forces=forces, stress=stress) + self.add_structure( + structure, energy, identifier=name, forces=forces, stress=stress + ) - - def add_structure(self, structure, energy, identifier=None, forces=None, stress=None, **arrays): + def add_structure( + self, structure, energy, identifier=None, forces=None, stress=None, **arrays + ): data = {"energy": energy} if forces is not None: data["forces"] = forces @@ -535,11 +572,17 @@ def add_structure(self, structure, energy, identifier=None, forces=None, stress= super().add_structure(structure, identifier, **data) if self._table_cache: self._table = self._table.append( - {"name": identifier, "atoms": structure, "energy": energy, "forces": forces, "stress": stress, - "number_of_atoms": len(structure)}, - ignore_index=True) + { + "name": identifier, + "atoms": structure, + "energy": energy, + "forces": forces, + "stress": stress, + "number_of_atoms": len(structure), + }, + ignore_index=True, + ) - def include_dataset(self, dataset): """ Add a pandas DataFrame to the saved structures. From ca9c4e749137767ee616ebc6cba5dd5376078b81 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 21 Mar 2022 11:24:12 +0000 Subject: [PATCH 052/434] Bump moto from 3.1.0 to 3.1.1 Bumps [moto](https://github.com/spulec/moto) from 3.1.0 to 3.1.1. - [Release notes](https://github.com/spulec/moto/releases) - [Changelog](https://github.com/spulec/moto/blob/master/CHANGELOG.md) - [Commits](https://github.com/spulec/moto/compare/3.1.0...3.1.1) --- updated-dependencies: - dependency-name: moto dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 28eb6aa84..f432570d3 100644 --- a/setup.py +++ b/setup.py @@ -50,7 +50,7 @@ 'image': ['scikit-image==0.19.2'], 'generic': [ 'boto3==1.21.18', - 'moto==3.1.0' + 'moto==3.1.1' ], }, cmdclass=versioneer.get_cmdclass(), From ed267757ff10ce4eead0245a8ff81405b02e6fc6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 21 Mar 2022 11:24:28 +0000 Subject: [PATCH 053/434] Bump pyiron-base from 0.5.7 to 0.5.8 Bumps [pyiron-base](https://github.com/pyiron/pyiron_base) from 0.5.7 to 0.5.8. - [Release notes](https://github.com/pyiron/pyiron_base/releases) - [Changelog](https://github.com/pyiron/pyiron_base/blob/master/CHANGELOG.md) - [Commits](https://github.com/pyiron/pyiron_base/compare/pyiron_base-0.5.7...pyiron_base-0.5.8) --- updated-dependencies: - dependency-name: pyiron-base dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 28eb6aa84..792660a58 100644 --- a/setup.py +++ b/setup.py @@ -33,7 +33,7 @@ install_requires=[ 'matplotlib==3.5.1', 'numpy==1.22.3', - 'pyiron_base==0.5.7', + 'pyiron_base==0.5.8', 'scipy==1.8.0', 'seaborn==0.11.2', 'pyparsing==3.0.7' From 4958afa3ac248c943d442333a82af1ffe24360f6 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 21 Mar 2022 11:24:28 +0000 Subject: [PATCH 054/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 381d2bed7..3c8280499 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -15,4 +15,4 @@ dependencies: - scikit-image =0.19.2 - randspg =0.0.1 - boto3 =1.21.18 -- moto =3.1.0 +- moto =3.1.1 From e6508197479e854b4b5b3548fd8a63f0053d0fe4 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 21 Mar 2022 11:24:46 +0000 Subject: [PATCH 055/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 381d2bed7..a0918d9ea 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -7,7 +7,7 @@ dependencies: - codacy-coverage - matplotlib =3.5.1 - numpy =1.22.3 -- pyiron_base =0.5.7 +- pyiron_base =0.5.8 - pyiron_atomistics =0.2.40 - pyparsing =3.0.7 - scipy =1.8.0 From 551fcbdd7c53bc84a35b8fd6f1b0ecbbc5d5ebfa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 21 Mar 2022 14:01:43 +0000 Subject: [PATCH 056/434] Bump boto3 from 1.21.18 to 1.21.22 Bumps [boto3](https://github.com/boto/boto3) from 1.21.18 to 1.21.22. - [Release notes](https://github.com/boto/boto3/releases) - [Changelog](https://github.com/boto/boto3/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/boto/boto3/compare/1.21.18...1.21.22) --- updated-dependencies: - dependency-name: boto3 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index ad74a06cf..f42ebda8b 100644 --- a/setup.py +++ b/setup.py @@ -49,7 +49,7 @@ ], 'image': ['scikit-image==0.19.2'], 'generic': [ - 'boto3==1.21.18', + 'boto3==1.21.22', 'moto==3.1.1' ], }, From 9b872a2c1e0c3d0b4a045529b4c93691d8620f08 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 21 Mar 2022 14:01:59 +0000 Subject: [PATCH 057/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index c42e73814..c464aa92a 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -14,5 +14,5 @@ dependencies: - seaborn =0.11.2 - scikit-image =0.19.2 - randspg =0.0.1 -- boto3 =1.21.18 +- boto3 =1.21.22 - moto =3.1.1 From 76239fe4dafc05defe9fea531dbf2fb4c573242c Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Tue, 22 Mar 2022 11:21:32 +0100 Subject: [PATCH 058/434] Forward StructureStorage.sample to TrainingContainer --- .../atomistics/job/trainingcontainer.py | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py index 076c7828d..5aeead516 100644 --- a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py +++ b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py @@ -28,6 +28,7 @@ Fe_bcc ... """ +from typing import Callable from warnings import catch_warnings import numpy as np @@ -195,6 +196,31 @@ def from_hdf(self, hdf=None, group_name=None): if hdf_version == "0.3.0": self.input.from_hdf(self.project_hdf5, "parameters") + def sample(self, name: str, selector: Callable[[StructureStorage, int], bool]) -> "TrainingContainer": + """ + Create a new TrainingContainer with structures filtered by selector. + + `self` must have status `finished`. `selector` is passed the underlying :class:`StructureStorage` of this + container and the index of the structure and return a boolean whether to include the structure in the new + container or not. The new container is saved and run. + + Args: + name (str): name of the new TrainingContainer + selector (Callable[[StructureStorage, int], bool]): callable that selects structure to include + + Returns: + :class:`.TrainingContainer`: new container with selected structures + + Raises: + ValueError: if a job with the given `name` already exists. + """ + cont = self.project.create.job.TrainingContainer(name) + if not cont.status.initialized: + raise ValueError(f"Job '{name}' already exists with status: {cont.status}!") + cont._container = self._container.sample(selector) + cont.run() + return cont + @property def plot(self): """ From 49150312d8520d901af0f02a82e33d955cd1acbe Mon Sep 17 00:00:00 2001 From: Niklas Leimeroth Date: Wed, 23 Mar 2022 17:20:58 +0100 Subject: [PATCH 059/434] interactive update --- .../atomistics/atomicrex/general_input.py | 2 +- pyiron_contrib/atomistics/atomicrex/interactive.py | 14 ++++++-------- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/pyiron_contrib/atomistics/atomicrex/general_input.py b/pyiron_contrib/atomistics/atomicrex/general_input.py index 04b687b71..93d479087 100644 --- a/pyiron_contrib/atomistics/atomicrex/general_input.py +++ b/pyiron_contrib/atomistics/atomicrex/general_input.py @@ -711,7 +711,7 @@ def to_hdf(self, hdf, group_name): def from_hdf(self, hdf, group_name): with hdf.open(group_name) as h: - self._type_to_hdf(h) + #self._type_from_hdf(h) self.global_minimizer = h["global_minimizer"] def _type_to_hdf(self, hdf): diff --git a/pyiron_contrib/atomistics/atomicrex/interactive.py b/pyiron_contrib/atomistics/atomicrex/interactive.py index 87134041b..d77df05c9 100644 --- a/pyiron_contrib/atomistics/atomicrex/interactive.py +++ b/pyiron_contrib/atomistics/atomicrex/interactive.py @@ -87,12 +87,13 @@ def run_if_interactive(self): if isinstance(self.input.fit_algorithm, ScipyAlgorithm): self._scipy_run() # sleep between running and collecting so atomicrex output is flushed to file - time.sleep(2.0) + ## close to flush outputs to file + self.interactive_close() self._scipy_collect(cwd=self.path) else: self._interactive_library.perform_fitting() - ## Delete the atomicrex object at the end to flush outputs to file - del self._interactive_library + ## close to flush outputs to file + self.interactive_close() self.collect_output(cwd=self.path) def _scipy_run(self): @@ -111,15 +112,12 @@ def _scipy_run(self): **self.input.fit_algorithm.global_minimizer_kwargs, ) - self._interactive_library.set_potential_parameters(res.x) + #self._interactive_library.set_potential_parameters(res.x) self.output.residual = self._interactive_library.calculate_residual() self.output.iterations = res.nit - print(res) self._interactive_library.print_potential_parameters() self._interactive_library.print_properties() self._interactive_library.output_results() - ## Delete the atomicrex object at the end to flush outputs to file - del self._interactive_library return res def _scipy_collect(self, cwd=None): @@ -129,7 +127,7 @@ def _scipy_collect(self, cwd=None): """ if cwd is None: cwd = self.working_directory - if self.input.__version__ == "0.1.0": + if self.input.__version__ >= "0.1.0": filepath = f"{cwd}/atomicrex.out" params_triggered = False From e399943aac7df4f79332bba5b942c2d4a2835d28 Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Fri, 25 Mar 2022 06:30:06 +0000 Subject: [PATCH 060/434] Change name of unit test workflow --- .github/workflows/unittests.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/unittests.yml b/.github/workflows/unittests.yml index fae31731a..241cd3b11 100644 --- a/.github/workflows/unittests.yml +++ b/.github/workflows/unittests.yml @@ -1,8 +1,7 @@ # This workflow will install Python dependencies, run tests and lint with a variety of Python versions # For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions -name: Python package - +name: Unit Tests on: push: branches: [ master ] From a28eacfb5dd25d5e4197fb51e9f519f97fbe3579 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Mar 2022 11:05:46 +0000 Subject: [PATCH 061/434] Bump boto3 from 1.21.22 to 1.21.27 Bumps [boto3](https://github.com/boto/boto3) from 1.21.22 to 1.21.27. - [Release notes](https://github.com/boto/boto3/releases) - [Changelog](https://github.com/boto/boto3/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/boto/boto3/compare/1.21.22...1.21.27) --- updated-dependencies: - dependency-name: boto3 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index f42ebda8b..a1036e4c7 100644 --- a/setup.py +++ b/setup.py @@ -49,7 +49,7 @@ ], 'image': ['scikit-image==0.19.2'], 'generic': [ - 'boto3==1.21.22', + 'boto3==1.21.27', 'moto==3.1.1' ], }, From a261206f89c8d9c8ccfb7801fa12a1d17cc54343 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 28 Mar 2022 11:06:04 +0000 Subject: [PATCH 062/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index c464aa92a..9361e7519 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -14,5 +14,5 @@ dependencies: - seaborn =0.11.2 - scikit-image =0.19.2 - randspg =0.0.1 -- boto3 =1.21.22 +- boto3 =1.21.27 - moto =3.1.1 From eb70f6a695f3b7b77dc5d2396fdf7b8632876d54 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Mar 2022 13:28:57 +0000 Subject: [PATCH 063/434] Bump moto from 3.1.1 to 3.1.3 Bumps [moto](https://github.com/spulec/moto) from 3.1.1 to 3.1.3. - [Release notes](https://github.com/spulec/moto/releases) - [Changelog](https://github.com/spulec/moto/blob/master/CHANGELOG.md) - [Commits](https://github.com/spulec/moto/compare/3.1.1...3.1.3) --- updated-dependencies: - dependency-name: moto dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index a1036e4c7..cd160a187 100644 --- a/setup.py +++ b/setup.py @@ -50,7 +50,7 @@ 'image': ['scikit-image==0.19.2'], 'generic': [ 'boto3==1.21.27', - 'moto==3.1.1' + 'moto==3.1.3' ], }, cmdclass=versioneer.get_cmdclass(), From 60f30351e73f9b05b40925952fa98328c41672d6 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 28 Mar 2022 13:43:06 +0000 Subject: [PATCH 064/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 9361e7519..ec5c66483 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -15,4 +15,4 @@ dependencies: - scikit-image =0.19.2 - randspg =0.0.1 - boto3 =1.21.27 -- moto =3.1.1 +- moto =3.1.3 From a612d069c55298bbc5e299fe6c4b697da4905e5a Mon Sep 17 00:00:00 2001 From: Niklas Leimeroth Date: Tue, 29 Mar 2022 11:15:01 +0200 Subject: [PATCH 065/434] write seed to xml --- pyiron_contrib/atomistics/atomicrex/general_input.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pyiron_contrib/atomistics/atomicrex/general_input.py b/pyiron_contrib/atomistics/atomicrex/general_input.py index 04b687b71..b70d70d6e 100644 --- a/pyiron_contrib/atomistics/atomicrex/general_input.py +++ b/pyiron_contrib/atomistics/atomicrex/general_input.py @@ -637,6 +637,8 @@ def _to_xml_element(self): nlopt.set("ftol_abs", f"{self.ftol_abs}") if self.xtol_rel is not None: nlopt.set("xtol_rel", f"{self.xtol_rel}") + if self.seed is not None: + nlopt.set("seed", f"{self.seed}") return nlopt From e2f6fd147dc1ebb10d36e4024a0a25b084a1cee1 Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Tue, 29 Mar 2022 17:00:45 +0200 Subject: [PATCH 066/434] Correctly pass identifier in TrainingStorage.include_dataset --- pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py index 40503f98d..503960d14 100644 --- a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py +++ b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py @@ -623,7 +623,7 @@ def include_dataset(self, dataset): self._table_cache = self._table.append(dataset, ignore_index=True) # in case given dataset has more columns than the necessary ones, swallow/ignore them in *_ for name, atoms, energy, forces, stress, *_ in dataset.itertuples(index=False): - self.add_structure(atoms, name, energy=energy, forces=forces, stress=stress) + self.add_structure(atoms, energy=energy, identifier=name, forces=forces, stress=stress) def to_list(self, filter_function=None): """ From 9d219322bf10b19dda1a6ede8c6bf35a86c877e1 Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Tue, 29 Mar 2022 17:07:16 +0200 Subject: [PATCH 067/434] Correctly check for None --- pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py index 503960d14..549992e98 100644 --- a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py +++ b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py @@ -596,7 +596,7 @@ def add_structure( if stress is not None: data["stress"] = stress super().add_structure(structure, identifier, **data) - if self._table_cache: + if self._table_cache is not None: self._table = self._table.append( { "name": identifier, From d8f7661e044befb56b500c38bf6da3543229008a Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Tue, 29 Mar 2022 17:15:45 +0200 Subject: [PATCH 068/434] Remove _table property --- .../atomistics/job/trainingcontainer.py | 40 +++++++++---------- 1 file changed, 18 insertions(+), 22 deletions(-) diff --git a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py index 549992e98..377dbc123 100644 --- a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py +++ b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py @@ -490,23 +490,6 @@ def __init__(self): self.add_array("stress", shape=(6,), dtype=np.float64, per="chunk", fill=np.nan) self._table_cache = None - @property - def _table(self): - if self._table_cache is None or len(self._table_cache) != len(self): - self._table_cache = pd.DataFrame( - { - "name": [self.get_array("identifier", i) for i in range(len(self))], - "atoms": [self.get_structure(i) for i in range(len(self))], - "energy": [self.get_array("energy", i) for i in range(len(self))], - "forces": [self.get_array("forces", i) for i in range(len(self))], - "stress": [self.get_array("stress", i) for i in range(len(self))], - } - ) - self._table_cache["number_of_atoms"] = [ - len(s) for s in self._table_cache.atoms - ] - return self._table_cache - def to_pandas(self): """ Export list of structure to pandas table for external fitting codes. @@ -522,7 +505,20 @@ def to_pandas(self): Returns: :class:`pandas.DataFrame`: collected structures """ - return self._table + if self._table_cache is None or len(self._table_cache) != len(self): + self._table_cache = pd.DataFrame( + { + "name": [self.get_array("identifier", i) for i in range(len(self))], + "atoms": [self.get_structure(i) for i in range(len(self))], + "energy": [self.get_array("energy", i) for i in range(len(self))], + "forces": [self.get_array("forces", i) for i in range(len(self))], + "stress": [self.get_array("stress", i) for i in range(len(self))], + } + ) + self._table_cache["number_of_atoms"] = [ + len(s) for s in self._table_cache.atoms + ] + return self._table_cache def include_job(self, job, iteration_step=-1): """ @@ -597,7 +593,7 @@ def add_structure( data["stress"] = stress super().add_structure(structure, identifier, **data) if self._table_cache is not None: - self._table = self._table.append( + self._table_cache = self._table_cache.append( { "name": identifier, "atoms": structure, @@ -620,7 +616,7 @@ def include_dataset(self, dataset): - forces (Nx3 array of float): per atom forces, where N is the number of atoms in the structure - stress (6 array of float): per structure stress in voigt notation """ - self._table_cache = self._table.append(dataset, ignore_index=True) + self._table_cache = self._table_cache.append(dataset, ignore_index=True) # in case given dataset has more columns than the necessary ones, swallow/ignore them in *_ for name, atoms, energy, forces, stress, *_ in dataset.itertuples(index=False): self.add_structure(atoms, energy=energy, identifier=name, forces=forces, stress=stress) @@ -636,9 +632,9 @@ def to_list(self, filter_function=None): tuple: list of structures, energies, forces, and the number of atoms """ if filter_function is None: - data_table = self._table + data_table = self._table_cache else: - data_table = filter_function(self._table) + data_table = filter_function(self._table_cache) structure_list = data_table.atoms.to_list() energy_list = data_table.energy.to_list() force_list = data_table.forces.to_list() From a9e2a89d6a80d4c4c0f4b84561ad68011f453af9 Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Tue, 29 Mar 2022 17:18:35 +0200 Subject: [PATCH 069/434] Initialize table cache --- pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py index 377dbc123..867a220dd 100644 --- a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py +++ b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py @@ -489,6 +489,7 @@ def __init__(self): # save stress in voigt notation self.add_array("stress", shape=(6,), dtype=np.float64, per="chunk", fill=np.nan) self._table_cache = None + self.to_pandas() def to_pandas(self): """ From 87f0fcb906bd7a21ec8cc9b99f825b7dcf35379c Mon Sep 17 00:00:00 2001 From: Niklas Leimeroth Date: Sun, 3 Apr 2022 10:10:47 +0200 Subject: [PATCH 070/434] first impl --- .../atomistics/atomicrex/potential_factory.py | 171 ++++++++++++++++++ 1 file changed, 171 insertions(+) diff --git a/pyiron_contrib/atomistics/atomicrex/potential_factory.py b/pyiron_contrib/atomistics/atomicrex/potential_factory.py index 28955a796..c0de521ab 100644 --- a/pyiron_contrib/atomistics/atomicrex/potential_factory.py +++ b/pyiron_contrib/atomistics/atomicrex/potential_factory.py @@ -37,6 +37,22 @@ def eam_potential( species=species, ) + @staticmethod + def adp_potential( + identifier="ADP", + export_file="output.adp.fs", + rho_range_factor=2.0, + resolution=10000, + species=["*", "*"], + ): + return ADPotential( + identifier=identifier, + export_file=export_file, + rho_range_factor=rho_range_factor, + resolution=resolution, + species=species, + ) + @staticmethod def meam_potential(identifier="MEAM", export_file="meam.out", species=["*", "*"]): return MEAMPotential( @@ -766,6 +782,161 @@ def count_local_extrema( return extrema_dict +class ADPotential(AbstractPotential, EAMlikeMixin): + """ + Angular dependent potential. + Usage: Create using the potential factory class. + Add functions defined using the function_factory + to self.pair_interactions, self.electron_densities + and self.embedding_energies, self.u_functions and + self.w_functions in dictionary style, + using the identifier of the function as key. + Example: + eam.pair_interactions["V"] = morse_function + + """ + + def __init__( + self, + init=None, + identifier=None, + export_file=None, + rho_range_factor=None, + resolution=None, + species=None, + ): + + super().__init__(init=init) + if init is None: + self.pair_interactions = DataContainer(table_name="pair_interactions") + self.electron_densities = DataContainer(table_name="electron_densities") + self.embedding_energies = DataContainer(table_name="embedding_energies") + self.u_functions = DataContainer(table_name="u_functions") + self.w_functions = DataContainer(table_name="w_functions") + self.identifier = identifier + self.export_file = export_file + self.rho_range_factor = rho_range_factor + self.resolution = resolution + self.species = species + + @property + def _function_tuple(self): + return ( + self.pair_interactions, + self.electron_densities, + self.embedding_energies, + self.u_functions, + self.w_functions, + ) + + def _potential_as_pd_df(self, job): + """ + Makes the tabulated eam potential written by atomicrex usable + for pyiron lammps jobs. + """ + if self.export_file is None: + raise ValueError("export_file must be set to use the potential with lammps") + + species = [el for el in job.input.atom_types.keys()] + species_str = "" + for s in species: + species_str += f"{s} " + + pot = pd.DataFrame( + { + "Name": f"{self.identifier}", + "Filename": [[f"{job.working_directory}/{self.export_file}"]], + "Model": ["Custom"], + "Species": [species], + "Config": [ + [ + "pair_style adp\n", + f"pair_coeff * * {job.working_directory}/{self.export_file} {species_str}\n", + ] + ], + } + ) + return pot + + def write_xml_file(self, directory): + """ + Internal function to convert to an xml element + """ + adp = ET.Element("adp") + adp.set("id", f"{self.identifier}") + adp.set("species-a", f"{self.species[0]}") + adp.set("species-b", f"{self.species[1]}") + + if self.export_file: + export = ET.SubElement(adp, "export-adp-file") + export.set("resolution", f"{self.resolution}") + export.set("rho-range-factor", f"{self.rho_range_factor}") + export.text = f"{self.export_file}" + + mapping = ET.SubElement(adp, "mapping") + functions = ET.SubElement(adp, "functions") + + for pot in self.pair_interactions.values(): + pair_interaction = ET.SubElement(mapping, "pair-interaction") + pair_interaction.set("species-a", f"{pot.species[0]}") + pair_interaction.set("species-b", f"{pot.species[1]}") + pair_interaction.set("function", f"{pot.identifier}") + functions.append(pot._to_xml_element()) + + for pot in self.electron_densities.values(): + electron_density = ET.SubElement(mapping, "electron-density") + electron_density.set("species-a", f"{pot.species[0]}") + electron_density.set("species-b", f"{pot.species[1]}") + electron_density.set("function", f"{pot.identifier}") + functions.append(pot._to_xml_element()) + + for pot in self.embedding_energies.values(): + embedding_energy = ET.SubElement(mapping, "embedding-energy") + embedding_energy.set("species", f"{pot.species[0]}") + embedding_energy.set("function", f"{pot.identifier}") + functions.append(pot._to_xml_element()) + + for pot in self.u_functions.values(): + u = ET.SubElement(mapping, "u-function") + u.set("species-a", f"{pot.species[0]}") + u.set("species-b", f"{pot.species[1]}") + u.set("function", f"{pot.identifier}") + functions.append(pot._to_xml_element()) + + for pot in self.w_functions.values(): + w = ET.SubElement(mapping, "w-function") + w.set("species-a", f"{pot.species[0]}") + w.set("species-b", f"{pot.species[1]}") + w.set("function", f"{pot.identifier}") + functions.append(pot._to_xml_element()) + + filename = posixpath.join(directory, "potential.xml") + write_pretty_xml(adp, filename) + + def _parse_final_parameters(self, lines): + """ + Internal Function. + Parse function parameters from atomicrex output. + + Args: + lines (list[str]): atomicrex output lines + + Raises: + KeyError: Raises if a parsed parameter can't be matched to a function. + """ + for l in lines: + identifier, leftover, value = _parse_parameter_line(l) + for functions in self._function_tuple: + if identifier in functions: + functions._parse_final_parameter(leftover, value) + continue + else: + raise KeyError( + f"Can't find {identifier} in potential, probably something went wrong during parsing.\n" + "Fitting parameters of screening functions probably doesn't work right now" + ) + + class MEAMPotential(AbstractPotential, EAMlikeMixin): def __init__(self, init=None, identifier=None, export_file=None, species=None): super().__init__(init=init) From 798f966622a4ed2a7e460e70a31523249dbd8acd Mon Sep 17 00:00:00 2001 From: Niklas Leimeroth Date: Sun, 3 Apr 2022 11:59:10 +0200 Subject: [PATCH 071/434] unify potential xml --- .../atomistics/atomicrex/potential_factory.py | 74 ++++++++++--------- 1 file changed, 38 insertions(+), 36 deletions(-) diff --git a/pyiron_contrib/atomistics/atomicrex/potential_factory.py b/pyiron_contrib/atomistics/atomicrex/potential_factory.py index c0de521ab..a0196ef76 100644 --- a/pyiron_contrib/atomistics/atomicrex/potential_factory.py +++ b/pyiron_contrib/atomistics/atomicrex/potential_factory.py @@ -571,7 +571,33 @@ def count_parameters(self, enabled_only=True): for f in functions.values(): parameters += f.count_parameters(enabled_only=enabled_only) return parameters + + @property + def _function_tuple(self): + raise NotImplementedError("Implement a tuple with functions in subclass") + + @property + def _function_dict(self): + raise NotImplementedError("Implement a tuple with functions in subclass") + + def _mapping_functions_xml(self, pot): + mappingxml = ET.SubElement(pot, "mapping") + functionsxml = ET.SubElement(pot, "functions") + for k, functions in self._function_dict(): + for f in functions.values(): + fxml = ET.SubElement(mappingxml, k) + if len(f.species) == 1: + fxml.set("species", f"{f.species[0]}") + elif len(f.species) == 2: + fxml.set("species-a", f"{f.species[0]}") + fxml.set("species-b", f"{f.species[1]}") + elif len(f.species) == 2: + fxml.set("species-a", f"{f.species[0]}") + fxml.set("species-b", f"{f.species[1]}") + fxml.set("species-c", f"{f.species[2]}") + fxml.set("function", f"{f.identifier}") + functionsxml.append(f._to_xml_element()) class EAMPotential(AbstractPotential, EAMlikeMixin): """ @@ -828,6 +854,16 @@ def _function_tuple(self): self.u_functions, self.w_functions, ) + + @property + def _function_dict(self): + return { + "pair-interaction": self.pair_interactions, + "electron-density": self.electron_densities, + "embedding-energy": self.embedding_energies, + "u-function": self.u_functions, + "w-function": self.w_functions, + } def _potential_as_pd_df(self, job): """ @@ -873,46 +909,12 @@ def write_xml_file(self, directory): export.set("rho-range-factor", f"{self.rho_range_factor}") export.text = f"{self.export_file}" - mapping = ET.SubElement(adp, "mapping") - functions = ET.SubElement(adp, "functions") - - for pot in self.pair_interactions.values(): - pair_interaction = ET.SubElement(mapping, "pair-interaction") - pair_interaction.set("species-a", f"{pot.species[0]}") - pair_interaction.set("species-b", f"{pot.species[1]}") - pair_interaction.set("function", f"{pot.identifier}") - functions.append(pot._to_xml_element()) - - for pot in self.electron_densities.values(): - electron_density = ET.SubElement(mapping, "electron-density") - electron_density.set("species-a", f"{pot.species[0]}") - electron_density.set("species-b", f"{pot.species[1]}") - electron_density.set("function", f"{pot.identifier}") - functions.append(pot._to_xml_element()) - - for pot in self.embedding_energies.values(): - embedding_energy = ET.SubElement(mapping, "embedding-energy") - embedding_energy.set("species", f"{pot.species[0]}") - embedding_energy.set("function", f"{pot.identifier}") - functions.append(pot._to_xml_element()) - - for pot in self.u_functions.values(): - u = ET.SubElement(mapping, "u-function") - u.set("species-a", f"{pot.species[0]}") - u.set("species-b", f"{pot.species[1]}") - u.set("function", f"{pot.identifier}") - functions.append(pot._to_xml_element()) - - for pot in self.w_functions.values(): - w = ET.SubElement(mapping, "w-function") - w.set("species-a", f"{pot.species[0]}") - w.set("species-b", f"{pot.species[1]}") - w.set("function", f"{pot.identifier}") - functions.append(pot._to_xml_element()) + self._mapping_functions_xml(adp) filename = posixpath.join(directory, "potential.xml") write_pretty_xml(adp, filename) + def _parse_final_parameters(self, lines): """ Internal Function. From c47a5b7e9e5daecff753460ab902f318f4a37c85 Mon Sep 17 00:00:00 2001 From: Niklas Leimeroth Date: Sun, 3 Apr 2022 13:05:17 +0200 Subject: [PATCH 072/434] function dict iter --- pyiron_contrib/atomistics/atomicrex/potential_factory.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pyiron_contrib/atomistics/atomicrex/potential_factory.py b/pyiron_contrib/atomistics/atomicrex/potential_factory.py index a0196ef76..3fedb296e 100644 --- a/pyiron_contrib/atomistics/atomicrex/potential_factory.py +++ b/pyiron_contrib/atomistics/atomicrex/potential_factory.py @@ -584,7 +584,7 @@ def _mapping_functions_xml(self, pot): mappingxml = ET.SubElement(pot, "mapping") functionsxml = ET.SubElement(pot, "functions") - for k, functions in self._function_dict(): + for k, functions in self._function_dict.items(): for f in functions.values(): fxml = ET.SubElement(mappingxml, k) if len(f.species) == 1: @@ -914,7 +914,6 @@ def write_xml_file(self, directory): filename = posixpath.join(directory, "potential.xml") write_pretty_xml(adp, filename) - def _parse_final_parameters(self, lines): """ Internal Function. From 7c0c911953b19a0879353e1a8416341e77fc39cf Mon Sep 17 00:00:00 2001 From: Niklas Leimeroth Date: Sun, 3 Apr 2022 13:31:10 +0200 Subject: [PATCH 073/434] parsing --- .../atomistics/atomicrex/function_factory.py | 4 +- .../atomistics/atomicrex/potential_factory.py | 47 ++++++++++--------- 2 files changed, 26 insertions(+), 25 deletions(-) diff --git a/pyiron_contrib/atomistics/atomicrex/function_factory.py b/pyiron_contrib/atomistics/atomicrex/function_factory.py index eef189dbf..8222a2a07 100644 --- a/pyiron_contrib/atomistics/atomicrex/function_factory.py +++ b/pyiron_contrib/atomistics/atomicrex/function_factory.py @@ -244,7 +244,7 @@ def MishinCuRho(identifier, a, r1, r2, beta1, beta2, species=["*", "*"]): return MishinCuRho(identifier, a, r1, r2, beta1, beta2, species) @staticmethod - def MishinCuF(identifier, F0, F2, q1, q2, q3, q4, Q1, Q2, species=["*", "*"]): + def MishinCuF(identifier, F0, F2, q1, q2, q3, q4, Q1, Q2, species=["*"]): return MishinCuF(identifier, F0, F2, q1, q2, q3, q4, Q1, Q2, species) @staticmethod @@ -1134,7 +1134,7 @@ def __init__( q4=None, Q1=None, Q2=None, - species=["*", "*"], + species=["*"], ): super().__init__(identifier, species=species, is_screening_function=False) self.parameters.add_parameter( diff --git a/pyiron_contrib/atomistics/atomicrex/potential_factory.py b/pyiron_contrib/atomistics/atomicrex/potential_factory.py index 3fedb296e..ae6669af7 100644 --- a/pyiron_contrib/atomistics/atomicrex/potential_factory.py +++ b/pyiron_contrib/atomistics/atomicrex/potential_factory.py @@ -599,6 +599,30 @@ def _mapping_functions_xml(self, pot): fxml.set("function", f"{f.identifier}") functionsxml.append(f._to_xml_element()) + def _parse_final_parameters(self, lines): + """ + Internal Function. + Parse function parameters from atomicrex output. + + Args: + lines (list[str]): atomicrex output lines + + Raises: + KeyError: Raises if a parsed parameter can't be matched to a function. + """ + for l in lines: + identifier, leftover, value = _parse_parameter_line(l) + for functions in self._function_tuple: + if identifier in functions: + functions[identifier]._parse_final_parameter(leftover, value) + continue + else: + raise KeyError( + f"Can't find {identifier} in potential, probably something went wrong during parsing.\n" + "Fitting parameters of screening functions probably doesn't work right now" + ) + + class EAMPotential(AbstractPotential, EAMlikeMixin): """ Embedded-Atom-Method potential. @@ -914,29 +938,6 @@ def write_xml_file(self, directory): filename = posixpath.join(directory, "potential.xml") write_pretty_xml(adp, filename) - def _parse_final_parameters(self, lines): - """ - Internal Function. - Parse function parameters from atomicrex output. - - Args: - lines (list[str]): atomicrex output lines - - Raises: - KeyError: Raises if a parsed parameter can't be matched to a function. - """ - for l in lines: - identifier, leftover, value = _parse_parameter_line(l) - for functions in self._function_tuple: - if identifier in functions: - functions._parse_final_parameter(leftover, value) - continue - else: - raise KeyError( - f"Can't find {identifier} in potential, probably something went wrong during parsing.\n" - "Fitting parameters of screening functions probably doesn't work right now" - ) - class MEAMPotential(AbstractPotential, EAMlikeMixin): def __init__(self, init=None, identifier=None, export_file=None, species=None): From c9e7e853dd46f0ae5d5a7a31f3696172a1af3c82 Mon Sep 17 00:00:00 2001 From: Niklas Leimeroth Date: Sun, 3 Apr 2022 13:38:39 +0200 Subject: [PATCH 074/434] parsing --- pyiron_contrib/atomistics/atomicrex/potential_factory.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pyiron_contrib/atomistics/atomicrex/potential_factory.py b/pyiron_contrib/atomistics/atomicrex/potential_factory.py index ae6669af7..76301d2c2 100644 --- a/pyiron_contrib/atomistics/atomicrex/potential_factory.py +++ b/pyiron_contrib/atomistics/atomicrex/potential_factory.py @@ -599,7 +599,7 @@ def _mapping_functions_xml(self, pot): fxml.set("function", f"{f.identifier}") functionsxml.append(f._to_xml_element()) - def _parse_final_parameters(self, lines): + def _eam_parse_final_parameters(self, lines): """ Internal Function. Parse function parameters from atomicrex output. @@ -938,6 +938,8 @@ def write_xml_file(self, directory): filename = posixpath.join(directory, "potential.xml") write_pretty_xml(adp, filename) + def _parse_final_parameters(self, lines): + return super()._eam_parse_final_parameters(lines) class MEAMPotential(AbstractPotential, EAMlikeMixin): def __init__(self, init=None, identifier=None, export_file=None, species=None): From d305ef9ff23d2c9a6a45323e442cef9dcce94255 Mon Sep 17 00:00:00 2001 From: Niklas Leimeroth Date: Sun, 3 Apr 2022 13:48:18 +0200 Subject: [PATCH 075/434] self not super --- pyiron_contrib/atomistics/atomicrex/potential_factory.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyiron_contrib/atomistics/atomicrex/potential_factory.py b/pyiron_contrib/atomistics/atomicrex/potential_factory.py index 76301d2c2..7b6a71d89 100644 --- a/pyiron_contrib/atomistics/atomicrex/potential_factory.py +++ b/pyiron_contrib/atomistics/atomicrex/potential_factory.py @@ -939,7 +939,7 @@ def write_xml_file(self, directory): write_pretty_xml(adp, filename) def _parse_final_parameters(self, lines): - return super()._eam_parse_final_parameters(lines) + return self._eam_parse_final_parameters(lines) class MEAMPotential(AbstractPotential, EAMlikeMixin): def __init__(self, init=None, identifier=None, export_file=None, species=None): From 3e2e2885662d63f84fb648cdd4e331b5473defb1 Mon Sep 17 00:00:00 2001 From: Niklas Leimeroth Date: Sun, 3 Apr 2022 13:57:34 +0200 Subject: [PATCH 076/434] test --- .../atomistics/atomicrex/potential_factory.py | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/pyiron_contrib/atomistics/atomicrex/potential_factory.py b/pyiron_contrib/atomistics/atomicrex/potential_factory.py index 7b6a71d89..22672e27f 100644 --- a/pyiron_contrib/atomistics/atomicrex/potential_factory.py +++ b/pyiron_contrib/atomistics/atomicrex/potential_factory.py @@ -941,6 +941,29 @@ def write_xml_file(self, directory): def _parse_final_parameters(self, lines): return self._eam_parse_final_parameters(lines) + def _eam_parse_final_parameters(self, lines): + """ + Internal Function. + Parse function parameters from atomicrex output. + + Args: + lines (list[str]): atomicrex output lines + + Raises: + KeyError: Raises if a parsed parameter can't be matched to a function. + """ + for l in lines: + identifier, leftover, value = _parse_parameter_line(l) + for functions in self._function_tuple: + if identifier in functions: + functions[identifier]._parse_final_parameter(leftover, value) + continue + else: + raise KeyError( + f"Can't find {identifier} in potential, probably something went wrong during parsing.\n" + "Fitting parameters of screening functions probably doesn't work right now" + ) + class MEAMPotential(AbstractPotential, EAMlikeMixin): def __init__(self, init=None, identifier=None, export_file=None, species=None): super().__init__(init=init) From 2591a0066f101cbde37658345540bf339b93cf31 Mon Sep 17 00:00:00 2001 From: Niklas Leimeroth Date: Sun, 3 Apr 2022 14:05:02 +0200 Subject: [PATCH 077/434] parsing --- .../atomistics/atomicrex/potential_factory.py | 36 ++++--------------- 1 file changed, 7 insertions(+), 29 deletions(-) diff --git a/pyiron_contrib/atomistics/atomicrex/potential_factory.py b/pyiron_contrib/atomistics/atomicrex/potential_factory.py index 22672e27f..d0cc0f1f4 100644 --- a/pyiron_contrib/atomistics/atomicrex/potential_factory.py +++ b/pyiron_contrib/atomistics/atomicrex/potential_factory.py @@ -612,15 +612,16 @@ def _eam_parse_final_parameters(self, lines): """ for l in lines: identifier, leftover, value = _parse_parameter_line(l) + found = False for functions in self._function_tuple: if identifier in functions: functions[identifier]._parse_final_parameter(leftover, value) - continue - else: - raise KeyError( - f"Can't find {identifier} in potential, probably something went wrong during parsing.\n" - "Fitting parameters of screening functions probably doesn't work right now" - ) + found = True + if not found: + raise KeyError( + f"Can't find {identifier} in potential, probably something went wrong during parsing.\n" + "Fitting parameters of screening functions probably doesn't work right now" + ) class EAMPotential(AbstractPotential, EAMlikeMixin): @@ -941,29 +942,6 @@ def write_xml_file(self, directory): def _parse_final_parameters(self, lines): return self._eam_parse_final_parameters(lines) - def _eam_parse_final_parameters(self, lines): - """ - Internal Function. - Parse function parameters from atomicrex output. - - Args: - lines (list[str]): atomicrex output lines - - Raises: - KeyError: Raises if a parsed parameter can't be matched to a function. - """ - for l in lines: - identifier, leftover, value = _parse_parameter_line(l) - for functions in self._function_tuple: - if identifier in functions: - functions[identifier]._parse_final_parameter(leftover, value) - continue - else: - raise KeyError( - f"Can't find {identifier} in potential, probably something went wrong during parsing.\n" - "Fitting parameters of screening functions probably doesn't work right now" - ) - class MEAMPotential(AbstractPotential, EAMlikeMixin): def __init__(self, init=None, identifier=None, export_file=None, species=None): super().__init__(init=init) From 2eebed0c1fc1d26294509b376daa80def5857799 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Apr 2022 11:06:51 +0000 Subject: [PATCH 078/434] Bump moto from 3.1.3 to 3.1.4 Bumps [moto](https://github.com/spulec/moto) from 3.1.3 to 3.1.4. - [Release notes](https://github.com/spulec/moto/releases) - [Changelog](https://github.com/spulec/moto/blob/master/CHANGELOG.md) - [Commits](https://github.com/spulec/moto/compare/3.1.3...3.1.4) --- updated-dependencies: - dependency-name: moto dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index cd160a187..b76e898df 100644 --- a/setup.py +++ b/setup.py @@ -50,7 +50,7 @@ 'image': ['scikit-image==0.19.2'], 'generic': [ 'boto3==1.21.27', - 'moto==3.1.3' + 'moto==3.1.4' ], }, cmdclass=versioneer.get_cmdclass(), From eb89f279ac9e576767c37ffea0a541b3717c37c3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Apr 2022 11:06:59 +0000 Subject: [PATCH 079/434] Bump pyiron-base from 0.5.8 to 0.5.9 Bumps [pyiron-base](https://github.com/pyiron/pyiron_base) from 0.5.8 to 0.5.9. - [Release notes](https://github.com/pyiron/pyiron_base/releases) - [Changelog](https://github.com/pyiron/pyiron_base/blob/master/CHANGELOG.md) - [Commits](https://github.com/pyiron/pyiron_base/compare/pyiron_base-0.5.8...pyiron_base-0.5.9) --- updated-dependencies: - dependency-name: pyiron-base dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index cd160a187..85a5bf035 100644 --- a/setup.py +++ b/setup.py @@ -33,7 +33,7 @@ install_requires=[ 'matplotlib==3.5.1', 'numpy==1.22.3', - 'pyiron_base==0.5.8', + 'pyiron_base==0.5.9', 'scipy==1.8.0', 'seaborn==0.11.2', 'pyparsing==3.0.7' From 42e41a9e90137ffa9b71c1a0adf1663b6125b010 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 4 Apr 2022 11:07:10 +0000 Subject: [PATCH 080/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index ec5c66483..f00864665 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -15,4 +15,4 @@ dependencies: - scikit-image =0.19.2 - randspg =0.0.1 - boto3 =1.21.27 -- moto =3.1.3 +- moto =3.1.4 From b3a8e684e887eb7069d0368b1f7277748ac921b0 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 4 Apr 2022 11:10:19 +0000 Subject: [PATCH 081/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index ec5c66483..44024e7db 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -7,7 +7,7 @@ dependencies: - codacy-coverage - matplotlib =3.5.1 - numpy =1.22.3 -- pyiron_base =0.5.8 +- pyiron_base =0.5.9 - pyiron_atomistics =0.2.40 - pyparsing =3.0.7 - scipy =1.8.0 From 6ea5c2cedf29c194e188c78645153e25d761653c Mon Sep 17 00:00:00 2001 From: Niklas Leimeroth Date: Mon, 4 Apr 2022 13:53:00 +0200 Subject: [PATCH 082/434] black formatting --- pyiron_contrib/atomistics/atomicrex/potential_factory.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pyiron_contrib/atomistics/atomicrex/potential_factory.py b/pyiron_contrib/atomistics/atomicrex/potential_factory.py index d0cc0f1f4..9b39f20df 100644 --- a/pyiron_contrib/atomistics/atomicrex/potential_factory.py +++ b/pyiron_contrib/atomistics/atomicrex/potential_factory.py @@ -571,11 +571,11 @@ def count_parameters(self, enabled_only=True): for f in functions.values(): parameters += f.count_parameters(enabled_only=enabled_only) return parameters - + @property def _function_tuple(self): raise NotImplementedError("Implement a tuple with functions in subclass") - + @property def _function_dict(self): raise NotImplementedError("Implement a tuple with functions in subclass") @@ -879,7 +879,7 @@ def _function_tuple(self): self.u_functions, self.w_functions, ) - + @property def _function_dict(self): return { @@ -942,6 +942,7 @@ def write_xml_file(self, directory): def _parse_final_parameters(self, lines): return self._eam_parse_final_parameters(lines) + class MEAMPotential(AbstractPotential, EAMlikeMixin): def __init__(self, init=None, identifier=None, export_file=None, species=None): super().__init__(init=init) From 2515402c76389250581a62c1ffe5a1e48d9fffcd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Apr 2022 13:21:20 +0000 Subject: [PATCH 083/434] Bump pyiron-atomistics from 0.2.40 to 0.2.41 Bumps [pyiron-atomistics](https://github.com/pyiron/pyiron_atomistics) from 0.2.40 to 0.2.41. - [Release notes](https://github.com/pyiron/pyiron_atomistics/releases) - [Changelog](https://github.com/pyiron/pyiron_atomistics/blob/master/CHANGELOG.md) - [Commits](https://github.com/pyiron/pyiron_atomistics/compare/pyiron_atomistics-0.2.40...pyiron_atomistics-0.2.41) --- updated-dependencies: - dependency-name: pyiron-atomistics dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 625a9d72c..e8ec89159 100644 --- a/setup.py +++ b/setup.py @@ -41,7 +41,7 @@ extras_require={ 'atomistic': [ 'ase==3.22.1', - 'pyiron_atomistics==0.2.40', + 'pyiron_atomistics==0.2.41', ], 'fenics': [ 'fenics==2019.1.0', From 7fb5bbfcc61d4ad1751ca2473a8cb8b437e95c86 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Apr 2022 13:21:53 +0000 Subject: [PATCH 084/434] Bump boto3 from 1.21.27 to 1.21.32 Bumps [boto3](https://github.com/boto/boto3) from 1.21.27 to 1.21.32. - [Release notes](https://github.com/boto/boto3/releases) - [Changelog](https://github.com/boto/boto3/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/boto/boto3/compare/1.21.27...1.21.32) --- updated-dependencies: - dependency-name: boto3 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 625a9d72c..77c975131 100644 --- a/setup.py +++ b/setup.py @@ -49,7 +49,7 @@ ], 'image': ['scikit-image==0.19.2'], 'generic': [ - 'boto3==1.21.27', + 'boto3==1.21.32', 'moto==3.1.4' ], }, From 0e3ba890f6e240f3744fd79d8d0f0dada8410c9a Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 4 Apr 2022 13:25:19 +0000 Subject: [PATCH 085/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 864f4a789..f25374378 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -8,7 +8,7 @@ dependencies: - matplotlib =3.5.1 - numpy =1.22.3 - pyiron_base =0.5.9 -- pyiron_atomistics =0.2.40 +- pyiron_atomistics =0.2.41 - pyparsing =3.0.7 - scipy =1.8.0 - seaborn =0.11.2 From feb22d334693e938cec4706acc967b384217211f Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 4 Apr 2022 13:28:06 +0000 Subject: [PATCH 086/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 864f4a789..ff6a2e202 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -14,5 +14,5 @@ dependencies: - seaborn =0.11.2 - scikit-image =0.19.2 - randspg =0.0.1 -- boto3 =1.21.27 +- boto3 =1.21.32 - moto =3.1.4 From cd9518ef8bc8ac377d82ddbf9a8a450a4550f29b Mon Sep 17 00:00:00 2001 From: Niklas Leimeroth Date: Wed, 6 Apr 2022 10:19:44 +0200 Subject: [PATCH 087/434] cutoff for RsMinusRPown --- pyiron_contrib/atomistics/atomicrex/function_factory.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pyiron_contrib/atomistics/atomicrex/function_factory.py b/pyiron_contrib/atomistics/atomicrex/function_factory.py index 8222a2a07..fd27649a1 100644 --- a/pyiron_contrib/atomistics/atomicrex/function_factory.py +++ b/pyiron_contrib/atomistics/atomicrex/function_factory.py @@ -983,6 +983,7 @@ def __init__( N=None, species=None, is_screening_function=False, + cutoff=None, ): super().__init__( identifier, species=species, is_screening_function=is_screening_function @@ -1016,7 +1017,11 @@ def func(r): return func def _to_xml_element(self): - return super()._to_xml_element(name="RsMinusRPowN") + xml = super()._to_xml_element(name="RsMinusRPowN") + if self.cutoff is not None: + cutoff = ET.SubElement(xml, "cutoff") + cutoff.text = f"{self.cutoff}" + return xml class Constant(SpecialFunction): From 7869976a6f4d8ef75840ced0e859350a5fe5a3a4 Mon Sep 17 00:00:00 2001 From: Niklas Leimeroth Date: Wed, 6 Apr 2022 10:21:00 +0200 Subject: [PATCH 088/434] add to construction func --- pyiron_contrib/atomistics/atomicrex/function_factory.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyiron_contrib/atomistics/atomicrex/function_factory.py b/pyiron_contrib/atomistics/atomicrex/function_factory.py index fd27649a1..37c641198 100644 --- a/pyiron_contrib/atomistics/atomicrex/function_factory.py +++ b/pyiron_contrib/atomistics/atomicrex/function_factory.py @@ -248,8 +248,8 @@ def MishinCuF(identifier, F0, F2, q1, q2, q3, q4, Q1, Q2, species=["*"]): return MishinCuF(identifier, F0, F2, q1, q2, q3, q4, Q1, Q2, species) @staticmethod - def RsMinusRPowN(identifier, S, rs, N, species=["*", "*"]): - return RsMinusRPowN(identifier, S, rs, N, species) + def RsMinusRPowN(identifier, S, rs, N, species=["*", "*"], cutoff=None): + return RsMinusRPowN(identifier, S, rs, N, species, cutoff=cutoff) @staticmethod def sum(identifier, species=["*", "*"]): From f0b012e6b45b07c12696286f940098da0758ddf4 Mon Sep 17 00:00:00 2001 From: Niklas Leimeroth Date: Wed, 6 Apr 2022 15:09:17 +0200 Subject: [PATCH 089/434] fix --- pyiron_contrib/atomistics/atomicrex/function_factory.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pyiron_contrib/atomistics/atomicrex/function_factory.py b/pyiron_contrib/atomistics/atomicrex/function_factory.py index 37c641198..9b7fa0424 100644 --- a/pyiron_contrib/atomistics/atomicrex/function_factory.py +++ b/pyiron_contrib/atomistics/atomicrex/function_factory.py @@ -988,6 +988,7 @@ def __init__( super().__init__( identifier, species=species, is_screening_function=is_screening_function ) + self.cutoff=cutoff self.parameters.add_parameter( "S", start_val=S, From a0d58439fdb8eadf8cdc33606502db1753ebba7d Mon Sep 17 00:00:00 2001 From: usaikia Date: Sun, 10 Apr 2022 15:42:08 +0200 Subject: [PATCH 090/434] Added MeamFit code to pyiron_contrib --- pyiron_contrib/atomistics/meamfit/meamfit.py | 356 +++++++++++++++++++ 1 file changed, 356 insertions(+) create mode 100644 pyiron_contrib/atomistics/meamfit/meamfit.py diff --git a/pyiron_contrib/atomistics/meamfit/meamfit.py b/pyiron_contrib/atomistics/meamfit/meamfit.py new file mode 100644 index 000000000..00ede8730 --- /dev/null +++ b/pyiron_contrib/atomistics/meamfit/meamfit.py @@ -0,0 +1,356 @@ +# 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 __future__ import print_function + +import numpy as np +import os +import pandas as pd +import posixpath +import shutil +import random +from pyiron_base import GenericParameters, GenericJob + +__author__ = "Jan Janssen" +__copyright__ = "Copyright 2020, 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" + + +class MeamFit(GenericJob): + def __init__(self, project, job_name): + """ + ExampleJob generating a list of random numbers to simulate energy fluctuations. + + Args: + project: Project object (defines path where job will be created and stored) + job_name: name of the job (must be unique within this project path) + """ + super(MeamFit, self).__init__(project, job_name) + self.__version__ = None + self.__name__ = "MeamFit" + self.input = MeamFitInput() + self._executable_activate() + self._potential_performance_dataframe = pd.DataFrame({}) + self._potential_timings_dataframe = pd.DataFrame({}) + self._calculation_dataframe = pd.DataFrame({'Job id': [], 'Start config': [], 'End config': [], 'Step': [], + 'Quantity to fit': [], 'Weights': []}) + self._calculation_dataframe = self._calculation_dataframe.set_index('Job id') + + @property + def calculation_dataframe(self): + return self._calculation_dataframe + + @calculation_dataframe.setter + def calculation_dataframe(self, df): + self._calculation_dataframe = df + + @property + def potential_performance_dataframe(self): + return self._potential_performance_dataframe + + @property + def potential_timings_dataframe(self): + return self._potential_timings_dataframe + + @property + def potentials(self): + return list(self._potential_timings_dataframe.index) + + @property + def potential_paths(self): + return [posixpath.join(self.working_directory, pot) for pot in self.potentials] + + @property + def structure(self): + """ + + Returns: + + """ + return None + + @structure.setter + def structure(self, structure): + """ + + Args: + structure: + + Returns: + + """ + raise ValueError('MeamFit has no structure!') + + @property + def random_seed(self): + incar = self.input['SEED'] + if incar == 'random': + self.input['SEED'] = random.randint(0, 100000) + incar = self.input['SEED'] + return incar + + @random_seed.setter + def random_seed(self, seed): + self.input['SEED'] = seed + + def set_input_to_read_only(self): + """ + This function enforces read-only mode for the input classes, but it has to be implement in the individual + classes. + """ + self.input.read_only = True + + def validate_ready_to_run(self): + pass + + def write_input(self): + """ + Call routines that generate the codespecifc input files + + Returns: + + """ + if self.input['SEED'] == 'random': + self.input['SEED'] = random.randint(0, 100000) + self.input.write_file(file_name="settings", cwd=self.working_directory) + self._write_calc_db(calculation_dataframe=self._calculation_dataframe, + file_name="fitdbse", + cwd=self.working_directory) + self._copy_vasprun_xml(cwd=self.working_directory) + + def add_job_to_fitting(self, job_id, time_step_start=0, time_step_end=-1, time_step_delta=10, quantity='E0', + weight=[1.0, 0.0, 0.0]): + """ + + Args: + job_id (int): + time_step_start (int): initial timestep - after equilibration + time_step_end (int): last timestep to use + time_step_delta (int): + quantity (str): ['E', 'F'] for fitting the energies use 'E' and 'F' for fitting the forces + weight (list): default is one, but for lower temperatures use higher weights [100, 1000] + + Returns: + + """ + if time_step_end == -1: + time_step_end = np.shape(self.project.inspect(int(job_id))['output/generic/cells'])[0]-1 + if int(job_id) in [int(job) for job in self._calculation_dataframe.index]: + self._calculation_dataframe.loc[job_id] = pd.Series({'Start config': time_step_start, + 'End config': time_step_end, + 'Step': time_step_delta, + 'Quantity to fit': quantity, + 'Weights': weight}) + else: + df_tmp = pd.DataFrame({'Job id': [int(job_id)], + 'Start config': [time_step_start], + 'End config': [time_step_end], + 'Step': [time_step_delta], + 'Quantity to fit': [quantity], + 'Weights': [weight]}) + self._calculation_dataframe = pd.concat([self._calculation_dataframe, df_tmp.set_index('Job id')]) + + # define routines that collect all output files + def collect_output(self): + """ + + Returns: + + """ + potential_timings_df = self._collect_timings(file_name='bestoptfuncs', cwd=self.working_directory) + self._potential_performance_dataframe = self._collect_potential_performance(cwd=self.working_directory) + self._potential_timings_dataframe = self._calculate_std(potential_timings_df, + self._potential_performance_dataframe) + self.to_hdf() + + def collect_logfiles(self): + """ + + Returns: + + """ + pass + + def from_directory(self, directory): + if not self.status.finished: + self.status.collect = True + self._import_directory = directory + self.input.read_input(posixpath.join(directory, 'settings')) + self._calculation_dataframe = self._read_calc_db(file_name="fitdbse", cwd=directory) + self.collect_output() + self.status.finished = True + else: + return + + # define hdf5 input and output + def to_hdf(self, hdf=None, group_name=None): + """ + + Args: + hdf: + group_name: + + Returns: + + """ + super(MeamFit, self).to_hdf(hdf=hdf, group_name=group_name) + with self.project_hdf5.open("input/parameter") as hdf5_input: + self.input.to_hdf(hdf5_input) + with self.project_hdf5.open("input") as hdf5_input: + hdf5_input['calculation'] = self._calculation_dataframe.reset_index().to_dict(orient='list') + with self.project_hdf5.open("output") as hdf5_output: + hdf5_output['performance'] = self._potential_performance_dataframe.to_dict(orient='list') + hdf5_output['timings'] = self._potential_timings_dataframe.reset_index().to_dict(orient='list') + + def from_hdf(self, hdf=None, group_name=None): + """ + + Args: + hdf: + group_name: + + Returns: + + """ + super(MeamFit, self).from_hdf(hdf=hdf, group_name=group_name) + with self.project_hdf5.open("input/parameter") as hdf5_input: + self.input.from_hdf(hdf5_input) + with self.project_hdf5.open("input") as hdf5_input: + self._calculation_dataframe = pd.DataFrame(hdf5_input['calculation']).set_index('Job id') + with self.project_hdf5.open("output") as hdf5_output: + self._potential_performance_dataframe = pd.DataFrame(hdf5_output['performance']) + self._potential_timings_dataframe = pd.DataFrame(hdf5_output['timings']) + if 'File' in self._potential_timings_dataframe.columns: + self._potential_timings_dataframe = self._potential_timings_dataframe.set_index('File') + + def _copy_vasprun_xml(self, cwd=None): + for job_id in self._calculation_dataframe.index: + self.project.load(job_id).decompress() + working_directory = self.project.get_job_working_directory(int(job_id)) + shutil.copyfile(posixpath.join(working_directory, 'vasprun.xml'), + posixpath.join(cwd, self._get_vasprun_name(job_id))) + self.project.load(job_id).compress() + + @staticmethod + def _write_calc_db(calculation_dataframe, file_name="fitdbse", cwd=None): + if cwd is not None: + file_name = posixpath.join(cwd, file_name) + with open(file_name, 'w') as f: + f.write(str(len(calculation_dataframe)) + ' # Files | Configs to fit | Quantity to fit | Weights \n') + for entry in zip(['vasprun_' + str(int(job_id)) + '.xml' for job_id in calculation_dataframe.index], + [start + 1 for start in calculation_dataframe['Start config']], + [end+1 for end in calculation_dataframe['End config']], + list(calculation_dataframe['Step']), + list(calculation_dataframe['Quantity to fit']), + list(calculation_dataframe['Weights'])): + file, start_config, end_config, step, quantity, weight = entry + if isinstance(weight, list): + weight = str(weight[0]) + ' ' + str(weight[1]) + ' ' + str(weight[2]) + f.write(str(file) + ' ' + str(int(start_config)) + '-' + str(int(end_config)) + 's' + str(int(step)) + + ' ' + str(quantity) + ' ' + str(weight) + '\n') + + @staticmethod + def _get_vasprun_name(job_id): + return 'vasprun_' + str(int(job_id)) + '.xml' + + @staticmethod + def _read_calc_db(file_name="fitdbse", cwd=None): + if cwd is not None: + file_name = posixpath.join(cwd, file_name) + with open(file_name, 'r') as f: + content = f.readlines() + names_lst, range_lst, quantity_lst, weight_lst = zip(*[[part for part in line.split(' ') if part != ''] + for line in content[1:]]) + start_config_lst, end_config_lst = zip(*[[int(step) for step in step_range.split('-')] + for step_range in range_lst]) + df = pd.DataFrame({'Files': names_lst, + 'Start config': start_config_lst, + 'End config': end_config_lst, + 'Quantity to fit': quantity_lst, + 'Weights': [float(weight.split('\n')[0]) for weight in weight_lst]}) + return df + + @staticmethod + def _collect_timings(file_name='bestoptfuncs', cwd=None): + if cwd is not None: + file_name = posixpath.join(cwd, file_name) + with open(file_name, 'r') as f: + content = f.readlines() + content_table_lst = [line.split() for line in content[1:-2]] + content_table_re_lst = list(zip(*content_table_lst)) + file_name_lst = [file for file in os.listdir(cwd) if 'alloy_' in file] + file_name_lst.sort(key=lambda x: int(x.split('_')[-1])) + df = pd.DataFrame({'File': file_name_lst, + 'Precision': [float(number.replace('D', 'E')) for number in content_table_re_lst[1]], + 'Time [h]': [int(number) for number in content_table_re_lst[3]], + 'Time [min]': [int(number) for number in content_table_re_lst[5]]}) + return df.set_index('File') + + @staticmethod + def _collect_potential_performance(cwd=None): + df = pd.DataFrame({'Potential': [], + 'Structure': [], + 'fitdata': [], + 'truedata': []}) + files_in_cwd_lst = sorted(os.listdir(cwd)) + for file in files_in_cwd_lst: + if 'datapnts_best' in file: + with open(posixpath.join(cwd, file), 'r') as f: + content = f.readlines() + data_points_lst = list(zip(*[line.split() for line in content[5:]])) + df_new = pd.DataFrame({'Potential': [pot_file for pot_file in files_in_cwd_lst if + 'alloy_' + str(file).split('_best')[-1] == + pot_file.split('.')[-1]] * len(data_points_lst[0]), + 'Structure': data_points_lst[0], + 'fitdata': [float(number) for number in data_points_lst[1]], + 'truedata': [float(number) for number in data_points_lst[2]]}) + df = pd.concat([df, df_new]) + return df + + @staticmethod + def _calculate_std(potential_timings_df, potential_performance_df): + if isinstance(potential_timings_df, pd.DataFrame): + index_lst = potential_timings_df.index.values + else: + raise TypeError('Unsupported type for potential_lst.') + std_lst = [np.std(potential_performance_df[potential_performance_df['Potential'] == ind]['fitdata'].values - + potential_performance_df[potential_performance_df['Potential'] == ind]['truedata'].values) + for ind in index_lst] + if 'Std' in potential_timings_df.columns: + potential_timings_df = potential_timings_df.drop(columns=['Std'], axis=1) + std_df = pd.DataFrame({'Std': std_lst}) + std_df = std_df.set_index(index_lst) + return pd.concat([potential_timings_df, std_df], axis=1) + + +class MeamFitInput(GenericParameters): + """ + + Args: + input_file_name: + """ + + def __init__(self, input_file_name=None): + super(MeamFitInput, self).__init__(input_file_name=input_file_name, table_name="input", comment_char="#", + separator_char="=") + + def load_default(self): + """ + + Returns: + + """ + input_str = '''\ +TYPE=EAM +SEED=random +CUTOFF_MAX=5.0 +NTERMS=3 +NTERMS_EMB=3 +''' + self.load_string(input_str) From 92a51b555ffcc6d122c0273ed7d9c3d7d70a5e50 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Apr 2022 11:08:11 +0000 Subject: [PATCH 091/434] Bump boto3 from 1.21.32 to 1.21.37 Bumps [boto3](https://github.com/boto/boto3) from 1.21.32 to 1.21.37. - [Release notes](https://github.com/boto/boto3/releases) - [Changelog](https://github.com/boto/boto3/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/boto/boto3/compare/1.21.32...1.21.37) --- updated-dependencies: - dependency-name: boto3 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index c9ababcc0..74c199ce4 100644 --- a/setup.py +++ b/setup.py @@ -49,7 +49,7 @@ ], 'image': ['scikit-image==0.19.2'], 'generic': [ - 'boto3==1.21.32', + 'boto3==1.21.37', 'moto==3.1.4' ], }, From fc2b2b9cf3e81881efe1ba73a34496d7b344e713 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Apr 2022 11:08:14 +0000 Subject: [PATCH 092/434] Bump pyparsing from 3.0.7 to 3.0.8 Bumps [pyparsing](https://github.com/pyparsing/pyparsing) from 3.0.7 to 3.0.8. - [Release notes](https://github.com/pyparsing/pyparsing/releases) - [Changelog](https://github.com/pyparsing/pyparsing/blob/master/CHANGES) - [Commits](https://github.com/pyparsing/pyparsing/compare/pyparsing_3.0.7...pyparsing_3.0.8) --- updated-dependencies: - dependency-name: pyparsing dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index c9ababcc0..afe6078b8 100644 --- a/setup.py +++ b/setup.py @@ -36,7 +36,7 @@ 'pyiron_base==0.5.9', 'scipy==1.8.0', 'seaborn==0.11.2', - 'pyparsing==3.0.7' + 'pyparsing==3.0.8' ], extras_require={ 'atomistic': [ From 919602133aeea7fa9d3d36c205bcb3bcd806e527 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Apr 2022 11:08:18 +0000 Subject: [PATCH 093/434] Bump pyiron-base from 0.5.9 to 0.5.10 Bumps [pyiron-base](https://github.com/pyiron/pyiron_base) from 0.5.9 to 0.5.10. - [Release notes](https://github.com/pyiron/pyiron_base/releases) - [Changelog](https://github.com/pyiron/pyiron_base/blob/master/CHANGELOG.md) - [Commits](https://github.com/pyiron/pyiron_base/compare/pyiron_base-0.5.9...pyiron_base-0.5.10) --- updated-dependencies: - dependency-name: pyiron-base dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index c9ababcc0..98baf5559 100644 --- a/setup.py +++ b/setup.py @@ -33,7 +33,7 @@ install_requires=[ 'matplotlib==3.5.1', 'numpy==1.22.3', - 'pyiron_base==0.5.9', + 'pyiron_base==0.5.10', 'scipy==1.8.0', 'seaborn==0.11.2', 'pyparsing==3.0.7' From b665de20ff1fd165e89aa229e31e6cb6f60e8ccb Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 11 Apr 2022 11:13:48 +0000 Subject: [PATCH 094/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index b33da3678..c0b643212 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -14,5 +14,5 @@ dependencies: - seaborn =0.11.2 - scikit-image =0.19.2 - randspg =0.0.1 -- boto3 =1.21.32 +- boto3 =1.21.37 - moto =3.1.4 From 0f674c3295214b5a39992eca61a9fec0ae29ba29 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 11 Apr 2022 11:22:23 +0000 Subject: [PATCH 095/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index b33da3678..4c6102f61 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -9,7 +9,7 @@ dependencies: - numpy =1.22.3 - pyiron_base =0.5.9 - pyiron_atomistics =0.2.41 -- pyparsing =3.0.7 +- pyparsing =3.0.8 - scipy =1.8.0 - seaborn =0.11.2 - scikit-image =0.19.2 From bd0ee34a39765724741f9fa1df06730aa4670a66 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 11 Apr 2022 11:22:40 +0000 Subject: [PATCH 096/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index b33da3678..674112584 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -7,7 +7,7 @@ dependencies: - codacy-coverage - matplotlib =3.5.1 - numpy =1.22.3 -- pyiron_base =0.5.9 +- pyiron_base =0.5.10 - pyiron_atomistics =0.2.41 - pyparsing =3.0.7 - scipy =1.8.0 From ae406e96ed7145ef1214443348c88d98076a2bd5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Apr 2022 13:26:17 +0000 Subject: [PATCH 097/434] Bump pyiron-atomistics from 0.2.41 to 0.2.42 Bumps [pyiron-atomistics](https://github.com/pyiron/pyiron_atomistics) from 0.2.41 to 0.2.42. - [Release notes](https://github.com/pyiron/pyiron_atomistics/releases) - [Changelog](https://github.com/pyiron/pyiron_atomistics/blob/master/CHANGELOG.md) - [Commits](https://github.com/pyiron/pyiron_atomistics/compare/pyiron_atomistics-0.2.41...pyiron_atomistics-0.2.42) --- updated-dependencies: - dependency-name: pyiron-atomistics dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index c3dfc8b04..bff3dacd5 100644 --- a/setup.py +++ b/setup.py @@ -41,7 +41,7 @@ extras_require={ 'atomistic': [ 'ase==3.22.1', - 'pyiron_atomistics==0.2.41', + 'pyiron_atomistics==0.2.42', ], 'fenics': [ 'fenics==2019.1.0', From 717100c98c521c100b9f6bfbb7667085ad90df33 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 11 Apr 2022 13:43:38 +0000 Subject: [PATCH 098/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 40acee93e..0cef86d37 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -8,7 +8,7 @@ dependencies: - matplotlib =3.5.1 - numpy =1.22.3 - pyiron_base =0.5.10 -- pyiron_atomistics =0.2.41 +- pyiron_atomistics =0.2.42 - pyparsing =3.0.8 - scipy =1.8.0 - seaborn =0.11.2 From 24c081b038d44d30c1101c6e04def30fc0356945 Mon Sep 17 00:00:00 2001 From: usaikia Date: Tue, 12 Apr 2022 10:24:10 +0200 Subject: [PATCH 099/434] job_class_dict modified --- pyiron_contrib/__init__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pyiron_contrib/__init__.py b/pyiron_contrib/__init__.py index 11cb57a31..7f2d3d6f7 100644 --- a/pyiron_contrib/__init__.py +++ b/pyiron_contrib/__init__.py @@ -44,6 +44,7 @@ JOB_CLASS_DICT['Atomicrex'] = 'pyiron_contrib.atomistics.atomicrex.atomicrex_job' JOB_CLASS_DICT['StructureMasterInt'] = 'pyiron_contrib.atomistics.atomistics.job.structurelistmasterinteractive' JOB_CLASS_DICT['StorageJob'] = 'pyiron_contrib.RDM.storagejob' +JOB_CLASS_DICT['MeamFit'] = 'pyiron_contrib.atomistics.meamfit.meamfit' from ._version import get_versions From 01a4da8d94ffb77556cebb8fb79680904dd15319 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Apr 2022 11:07:04 +0000 Subject: [PATCH 100/434] Bump pyiron-base from 0.5.10 to 0.5.11 Bumps [pyiron-base](https://github.com/pyiron/pyiron_base) from 0.5.10 to 0.5.11. - [Release notes](https://github.com/pyiron/pyiron_base/releases) - [Changelog](https://github.com/pyiron/pyiron_base/blob/master/CHANGELOG.md) - [Commits](https://github.com/pyiron/pyiron_base/compare/pyiron_base-0.5.10...pyiron_base-0.5.11) --- updated-dependencies: - dependency-name: pyiron-base dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index bff3dacd5..557c7ccd2 100644 --- a/setup.py +++ b/setup.py @@ -33,7 +33,7 @@ install_requires=[ 'matplotlib==3.5.1', 'numpy==1.22.3', - 'pyiron_base==0.5.10', + 'pyiron_base==0.5.11', 'scipy==1.8.0', 'seaborn==0.11.2', 'pyparsing==3.0.8' From e8665faa6758ebb7700ef35366a1f1d6cb4e338d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Apr 2022 11:07:08 +0000 Subject: [PATCH 101/434] Bump moto from 3.1.4 to 3.1.5 Bumps [moto](https://github.com/spulec/moto) from 3.1.4 to 3.1.5. - [Release notes](https://github.com/spulec/moto/releases) - [Changelog](https://github.com/spulec/moto/blob/master/CHANGELOG.md) - [Commits](https://github.com/spulec/moto/compare/3.1.4...3.1.5) --- updated-dependencies: - dependency-name: moto dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index bff3dacd5..6991b5ebf 100644 --- a/setup.py +++ b/setup.py @@ -50,7 +50,7 @@ 'image': ['scikit-image==0.19.2'], 'generic': [ 'boto3==1.21.37', - 'moto==3.1.4' + 'moto==3.1.5' ], }, cmdclass=versioneer.get_cmdclass(), From 633d82208d79bc477895cb7847dd7226b89cc246 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 18 Apr 2022 11:08:38 +0000 Subject: [PATCH 102/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 0cef86d37..eae5d81db 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -7,7 +7,7 @@ dependencies: - codacy-coverage - matplotlib =3.5.1 - numpy =1.22.3 -- pyiron_base =0.5.10 +- pyiron_base =0.5.11 - pyiron_atomistics =0.2.42 - pyparsing =3.0.8 - scipy =1.8.0 From 3d7f15c917d8bcf6d8330b02a0b64298f7caf764 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 18 Apr 2022 11:14:29 +0000 Subject: [PATCH 103/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 0cef86d37..cfada93d5 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -15,4 +15,4 @@ dependencies: - scikit-image =0.19.2 - randspg =0.0.1 - boto3 =1.21.37 -- moto =3.1.4 +- moto =3.1.5 From c976bc3698dc7d3f1aef33c287185898c76af747 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Apr 2022 13:41:21 +0000 Subject: [PATCH 104/434] Bump pyiron-atomistics from 0.2.42 to 0.2.43 Bumps [pyiron-atomistics](https://github.com/pyiron/pyiron_atomistics) from 0.2.42 to 0.2.43. - [Release notes](https://github.com/pyiron/pyiron_atomistics/releases) - [Changelog](https://github.com/pyiron/pyiron_atomistics/blob/master/CHANGELOG.md) - [Commits](https://github.com/pyiron/pyiron_atomistics/compare/pyiron_atomistics-0.2.42...pyiron_atomistics-0.2.43) --- updated-dependencies: - dependency-name: pyiron-atomistics dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 557c7ccd2..86dbaa5f9 100644 --- a/setup.py +++ b/setup.py @@ -41,7 +41,7 @@ extras_require={ 'atomistic': [ 'ase==3.22.1', - 'pyiron_atomistics==0.2.42', + 'pyiron_atomistics==0.2.43', ], 'fenics': [ 'fenics==2019.1.0', From 715d339c637fb1ea30da3be0be2ca8791740967d Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 18 Apr 2022 13:42:21 +0000 Subject: [PATCH 105/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index eae5d81db..234add071 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -8,7 +8,7 @@ dependencies: - matplotlib =3.5.1 - numpy =1.22.3 - pyiron_base =0.5.11 -- pyiron_atomistics =0.2.42 +- pyiron_atomistics =0.2.43 - pyparsing =3.0.8 - scipy =1.8.0 - seaborn =0.11.2 From b8000591a4f15f5a5fd6092a2f8a876fe136c5c6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Apr 2022 13:42:45 +0000 Subject: [PATCH 106/434] Bump boto3 from 1.21.37 to 1.21.42 Bumps [boto3](https://github.com/boto/boto3) from 1.21.37 to 1.21.42. - [Release notes](https://github.com/boto/boto3/releases) - [Changelog](https://github.com/boto/boto3/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/boto/boto3/compare/1.21.37...1.21.42) --- updated-dependencies: - dependency-name: boto3 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 9f3a7232a..dda14d86b 100644 --- a/setup.py +++ b/setup.py @@ -49,7 +49,7 @@ ], 'image': ['scikit-image==0.19.2'], 'generic': [ - 'boto3==1.21.37', + 'boto3==1.21.42', 'moto==3.1.5' ], }, From 446c66b450cff2643c2a2438dddaabd1cdd40271 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 18 Apr 2022 13:53:34 +0000 Subject: [PATCH 107/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 39188a29a..661fb3446 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -14,5 +14,5 @@ dependencies: - seaborn =0.11.2 - scikit-image =0.19.2 - randspg =0.0.1 -- boto3 =1.21.37 +- boto3 =1.21.42 - moto =3.1.5 From 347fb2ba63a6c6614f11a157c73450d22940840a Mon Sep 17 00:00:00 2001 From: Leimeroth Date: Tue, 19 Apr 2022 15:23:24 +0200 Subject: [PATCH 108/434] MLSL and stogo --- .../atomistics/atomicrex/general_input.py | 66 ++++++++++++++++++- 1 file changed, 64 insertions(+), 2 deletions(-) diff --git a/pyiron_contrib/atomistics/atomicrex/general_input.py b/pyiron_contrib/atomistics/atomicrex/general_input.py index 93d479087..4c19d6ded 100644 --- a/pyiron_contrib/atomistics/atomicrex/general_input.py +++ b/pyiron_contrib/atomistics/atomicrex/general_input.py @@ -527,6 +527,48 @@ def gn_isres( seed=seed, ) + @staticmethod + def g_mlsl( + stopval=1e-10, + max_iter=50, + maxtime=None, + ftol_rel=None, + ftol_abs=None, + xtol_rel=None, + seed=None, + ): + return NloptGlobalLocal( + name="G_MLSL", + stopval=stopval, + max_iter=max_iter, + maxtime=maxtime, + ftol_rel=ftol_rel, + ftol_abs=ftol_abs, + xtol_rel=xtol_rel, + seed=seed, + ) + + @staticmethod + def gd_stogo( + stopval=1e-10, + max_iter=50, + maxtime=None, + ftol_rel=None, + ftol_abs=None, + xtol_rel=None, + seed=None, + ): + return NloptAlgorithm( + name="GD_STOGO", + stopval=stopval, + max_iter=max_iter, + maxtime=maxtime, + ftol_rel=ftol_rel, + ftol_abs=ftol_abs, + xtol_rel=xtol_rel, + seed=seed, + ) + @staticmethod def scipy_algorithm(): return ScipyAlgorithm() @@ -706,8 +748,28 @@ def to_hdf(self, hdf, group_name): with hdf.open(group_name) as h: self._type_to_hdf(h) h["global_minimizer"] = self.global_minimizer - h.put("local_minimizer_kwargs", self.local_minimizer_kwargs) - h.put("global_minimizer_kwargs", self.global_minimizer_kwargs) + """ + with h.open("local_minimizer_kwargs") as loc_hdf: + for k, v in self.local_minimizer_kwargs.items(): + try: + loc_hdf[k] = v + except TypeError: + loc_hdf[k] = v.__name__ + with h.open("global_minimizer_kwargs") as glob_hdf: + for k, v in self.global_minimizer_kwargs.items(): + if isinstance(v, dict): + with glob_hdf.open(k) as v_hdf: + for k, v in self.v.items(): + try: + v_hdf[k] = v + except TypeError: + v_hdf[k] = v.__name__ + else: + try: + glob_hdf[k] = v + except TypeError: + glob_hdf[k] = v.__name__ + """ def from_hdf(self, hdf, group_name): with hdf.open(group_name) as h: From 4909710b25cb1019b0e05f1f6e8a8495e3347a10 Mon Sep 17 00:00:00 2001 From: Leimeroth Date: Tue, 19 Apr 2022 15:42:52 +0200 Subject: [PATCH 109/434] from hdf --- .../atomistics/atomicrex/general_input.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/pyiron_contrib/atomistics/atomicrex/general_input.py b/pyiron_contrib/atomistics/atomicrex/general_input.py index 4c19d6ded..bec36c688 100644 --- a/pyiron_contrib/atomistics/atomicrex/general_input.py +++ b/pyiron_contrib/atomistics/atomicrex/general_input.py @@ -689,14 +689,14 @@ class NloptGlobalLocal(NloptAlgorithm): def __init__( self, - stopval, - max_iter, - maxtime, - ftol_rel, - ftol_abs, - xtol_rel, - name, - seed, + stopval=None, + max_iter=None, + maxtime=None, + ftol_rel=None, + ftol_abs=None, + xtol_rel=None, + name=None, + seed=None, *args, **kwargs, ): From fdc55dc45f1a92906dd589cbe3734ccc0b816713 Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Tue, 19 Apr 2022 19:11:45 +0200 Subject: [PATCH 110/434] Do not access table cache directly in to_list --- .../atomistics/atomistics/job/trainingcontainer.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py index 867a220dd..a9c98dd59 100644 --- a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py +++ b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py @@ -632,10 +632,9 @@ def to_list(self, filter_function=None): Returns: tuple: list of structures, energies, forces, and the number of atoms """ - if filter_function is None: - data_table = self._table_cache - else: - data_table = filter_function(self._table_cache) + data_table = self.to_pandas() + if filter_function is not None: + data_table = filter_function(data_table) structure_list = data_table.atoms.to_list() energy_list = data_table.energy.to_list() force_list = data_table.forces.to_list() From f9cd0eded7a4785b56f69ca7f502127832617e23 Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Tue, 19 Apr 2022 19:40:01 +0200 Subject: [PATCH 111/434] Correctly include_dataset by name instead of implicit order --- .../atomistics/atomistics/job/trainingcontainer.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py index a9c98dd59..26a9e5f6e 100644 --- a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py +++ b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py @@ -617,10 +617,18 @@ def include_dataset(self, dataset): - forces (Nx3 array of float): per atom forces, where N is the number of atoms in the structure - stress (6 array of float): per structure stress in voigt notation """ + if 'name' not in dataset.columns \ + or 'atoms' not in dataset.columns \ + or 'energy' not in dataset.columns: + raise ValueError("At least columns 'name', 'atoms' and 'energy' must be present in dataset!") self._table_cache = self._table_cache.append(dataset, ignore_index=True) - # in case given dataset has more columns than the necessary ones, swallow/ignore them in *_ - for name, atoms, energy, forces, stress, *_ in dataset.itertuples(index=False): - self.add_structure(atoms, energy=energy, identifier=name, forces=forces, stress=stress) + for row in dataset.itertuples(index=False): + kwargs = {} + if hasattr(row, "forces"): + kwargs["forces"] = row.forces + if hasattr(row, "stress"): + kwargs["stress"] = row.stress + self.add_structure(row.atoms, energy=row.energy, identifier=row.name, **kwargs) def to_list(self, filter_function=None): """ From 026004dd153cb6920bf63b4bbfe7b4f50fbe9653 Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Tue, 19 Apr 2022 22:07:53 +0200 Subject: [PATCH 112/434] Do not automatically update table_cache to_pandas takes of that when needed, which is not very often --- .../atomistics/atomistics/job/trainingcontainer.py | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py index 26a9e5f6e..1fdbc125f 100644 --- a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py +++ b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py @@ -593,18 +593,6 @@ def add_structure( if stress is not None: data["stress"] = stress super().add_structure(structure, identifier, **data) - if self._table_cache is not None: - self._table_cache = self._table_cache.append( - { - "name": identifier, - "atoms": structure, - "energy": energy, - "forces": forces, - "stress": stress, - "number_of_atoms": len(structure), - }, - ignore_index=True, - ) def include_dataset(self, dataset): """ @@ -621,7 +609,6 @@ def include_dataset(self, dataset): or 'atoms' not in dataset.columns \ or 'energy' not in dataset.columns: raise ValueError("At least columns 'name', 'atoms' and 'energy' must be present in dataset!") - self._table_cache = self._table_cache.append(dataset, ignore_index=True) for row in dataset.itertuples(index=False): kwargs = {} if hasattr(row, "forces"): From ed4605a690303aed4c53b25a313a3d0c363225e4 Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Wed, 20 Apr 2022 14:48:37 +0200 Subject: [PATCH 113/434] Replace GenericParameters with DataContainer --- pyiron_contrib/atomistics/meamfit/meamfit.py | 54 ++++++++------------ 1 file changed, 21 insertions(+), 33 deletions(-) diff --git a/pyiron_contrib/atomistics/meamfit/meamfit.py b/pyiron_contrib/atomistics/meamfit/meamfit.py index 00ede8730..e7b6e59b6 100644 --- a/pyiron_contrib/atomistics/meamfit/meamfit.py +++ b/pyiron_contrib/atomistics/meamfit/meamfit.py @@ -10,7 +10,7 @@ import posixpath import shutil import random -from pyiron_base import GenericParameters, GenericJob +from pyiron_base import GenericParameters, GenericJob, DataContainer __author__ = "Jan Janssen" __copyright__ = "Copyright 2020, Max-Planck-Institut für Eisenforschung GmbH - " \ @@ -34,7 +34,13 @@ def __init__(self, project, job_name): super(MeamFit, self).__init__(project, job_name) self.__version__ = None self.__name__ = "MeamFit" - self.input = MeamFitInput() + self.input = DataContainer({ + 'TYPE': 'EAM', + 'SEED': 'random', + 'CUTOFF_MAX': 5.0, + 'NTERMS': 3, + 'NTERMS_EMB': 3 + }, table_name='parameter') self._executable_activate() self._potential_performance_dataframe = pd.DataFrame({}) self._potential_timings_dataframe = pd.DataFrame({}) @@ -200,9 +206,8 @@ def to_hdf(self, hdf=None, group_name=None): """ super(MeamFit, self).to_hdf(hdf=hdf, group_name=group_name) - with self.project_hdf5.open("input/parameter") as hdf5_input: - self.input.to_hdf(hdf5_input) with self.project_hdf5.open("input") as hdf5_input: + self.input.to_hdf(hdf5_input) hdf5_input['calculation'] = self._calculation_dataframe.reset_index().to_dict(orient='list') with self.project_hdf5.open("output") as hdf5_output: hdf5_output['performance'] = self._potential_performance_dataframe.to_dict(orient='list') @@ -219,9 +224,19 @@ def from_hdf(self, hdf=None, group_name=None): """ super(MeamFit, self).from_hdf(hdf=hdf, group_name=group_name) - with self.project_hdf5.open("input/parameter") as hdf5_input: - self.input.from_hdf(hdf5_input) with self.project_hdf5.open("input") as hdf5_input: + # backwards compatible loading of input + if hdf5_input["parameter/NAME"] == "GenericParameters": + gp = GenericParameters() + gp.from_hdf(hdf5_input["parameter"]) + self.input['TYPE'] = gp['TYPE'] + self.input['SEED'] = gp['SEED'] + self.input['CUTOFF_MAX'] = gp['CUTOFF_MAX'] + self.input['NTERMS'] = gp['NTERMS'] + self.input['NTERMS_EMB'] = gp['NTERMS_EMB'] + else: + self.input.from_hdf(hdf5_input) + self.input.from_hdf(hdf5_input) self._calculation_dataframe = pd.DataFrame(hdf5_input['calculation']).set_index('Job id') with self.project_hdf5.open("output") as hdf5_output: self._potential_performance_dataframe = pd.DataFrame(hdf5_output['performance']) @@ -327,30 +342,3 @@ def _calculate_std(potential_timings_df, potential_performance_df): std_df = pd.DataFrame({'Std': std_lst}) std_df = std_df.set_index(index_lst) return pd.concat([potential_timings_df, std_df], axis=1) - - -class MeamFitInput(GenericParameters): - """ - - Args: - input_file_name: - """ - - def __init__(self, input_file_name=None): - super(MeamFitInput, self).__init__(input_file_name=input_file_name, table_name="input", comment_char="#", - separator_char="=") - - def load_default(self): - """ - - Returns: - - """ - input_str = '''\ -TYPE=EAM -SEED=random -CUTOFF_MAX=5.0 -NTERMS=3 -NTERMS_EMB=3 -''' - self.load_string(input_str) From a27bff28be78dc0da991e8dce74c482499e17042 Mon Sep 17 00:00:00 2001 From: usaikia <76955804+usaikia@users.noreply.github.com> Date: Wed, 20 Apr 2022 15:22:53 +0200 Subject: [PATCH 114/434] Update pyiron_contrib/atomistics/meamfit/meamfit.py Co-authored-by: Marvin Poul --- pyiron_contrib/atomistics/meamfit/meamfit.py | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/pyiron_contrib/atomistics/meamfit/meamfit.py b/pyiron_contrib/atomistics/meamfit/meamfit.py index e7b6e59b6..49ac65c6d 100644 --- a/pyiron_contrib/atomistics/meamfit/meamfit.py +++ b/pyiron_contrib/atomistics/meamfit/meamfit.py @@ -72,26 +72,6 @@ def potentials(self): def potential_paths(self): return [posixpath.join(self.working_directory, pot) for pot in self.potentials] - @property - def structure(self): - """ - - Returns: - - """ - return None - - @structure.setter - def structure(self, structure): - """ - - Args: - structure: - - Returns: - - """ - raise ValueError('MeamFit has no structure!') @property def random_seed(self): From 37b9a7a406a70d5cab5fc79e605a72261b9b2b96 Mon Sep 17 00:00:00 2001 From: usaikia <76955804+usaikia@users.noreply.github.com> Date: Wed, 20 Apr 2022 15:23:09 +0200 Subject: [PATCH 115/434] Update pyiron_contrib/atomistics/meamfit/meamfit.py Co-authored-by: Marvin Poul --- pyiron_contrib/atomistics/meamfit/meamfit.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/pyiron_contrib/atomistics/meamfit/meamfit.py b/pyiron_contrib/atomistics/meamfit/meamfit.py index 49ac65c6d..fb48d39b1 100644 --- a/pyiron_contrib/atomistics/meamfit/meamfit.py +++ b/pyiron_contrib/atomistics/meamfit/meamfit.py @@ -144,11 +144,6 @@ def add_job_to_fitting(self, job_id, time_step_start=0, time_step_end=-1, time_s # define routines that collect all output files def collect_output(self): - """ - - Returns: - - """ potential_timings_df = self._collect_timings(file_name='bestoptfuncs', cwd=self.working_directory) self._potential_performance_dataframe = self._collect_potential_performance(cwd=self.working_directory) self._potential_timings_dataframe = self._calculate_std(potential_timings_df, From 719e35cbc91d602a78c8bae462efd9818fe78b61 Mon Sep 17 00:00:00 2001 From: usaikia <76955804+usaikia@users.noreply.github.com> Date: Wed, 20 Apr 2022 15:23:17 +0200 Subject: [PATCH 116/434] Update pyiron_contrib/atomistics/meamfit/meamfit.py Co-authored-by: Marvin Poul --- pyiron_contrib/atomistics/meamfit/meamfit.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/pyiron_contrib/atomistics/meamfit/meamfit.py b/pyiron_contrib/atomistics/meamfit/meamfit.py index fb48d39b1..874d77d36 100644 --- a/pyiron_contrib/atomistics/meamfit/meamfit.py +++ b/pyiron_contrib/atomistics/meamfit/meamfit.py @@ -151,11 +151,6 @@ def collect_output(self): self.to_hdf() def collect_logfiles(self): - """ - - Returns: - - """ pass def from_directory(self, directory): From 70b197881db01b2f9a945ac8b6d156ed72dd08cb Mon Sep 17 00:00:00 2001 From: usaikia <76955804+usaikia@users.noreply.github.com> Date: Wed, 20 Apr 2022 15:23:27 +0200 Subject: [PATCH 117/434] Update pyiron_contrib/atomistics/meamfit/meamfit.py Co-authored-by: Marvin Poul --- pyiron_contrib/atomistics/meamfit/meamfit.py | 9 --------- 1 file changed, 9 deletions(-) diff --git a/pyiron_contrib/atomistics/meamfit/meamfit.py b/pyiron_contrib/atomistics/meamfit/meamfit.py index 874d77d36..4dad6b67e 100644 --- a/pyiron_contrib/atomistics/meamfit/meamfit.py +++ b/pyiron_contrib/atomistics/meamfit/meamfit.py @@ -166,15 +166,6 @@ def from_directory(self, directory): # define hdf5 input and output def to_hdf(self, hdf=None, group_name=None): - """ - - Args: - hdf: - group_name: - - Returns: - - """ super(MeamFit, self).to_hdf(hdf=hdf, group_name=group_name) with self.project_hdf5.open("input") as hdf5_input: self.input.to_hdf(hdf5_input) From 77b59ee3adbd98aa00cb12bf1ef1e1226af319d1 Mon Sep 17 00:00:00 2001 From: usaikia <76955804+usaikia@users.noreply.github.com> Date: Wed, 20 Apr 2022 15:23:34 +0200 Subject: [PATCH 118/434] Update pyiron_contrib/atomistics/meamfit/meamfit.py Co-authored-by: Marvin Poul --- pyiron_contrib/atomistics/meamfit/meamfit.py | 9 --------- 1 file changed, 9 deletions(-) diff --git a/pyiron_contrib/atomistics/meamfit/meamfit.py b/pyiron_contrib/atomistics/meamfit/meamfit.py index 4dad6b67e..d329b37c8 100644 --- a/pyiron_contrib/atomistics/meamfit/meamfit.py +++ b/pyiron_contrib/atomistics/meamfit/meamfit.py @@ -175,15 +175,6 @@ def to_hdf(self, hdf=None, group_name=None): hdf5_output['timings'] = self._potential_timings_dataframe.reset_index().to_dict(orient='list') def from_hdf(self, hdf=None, group_name=None): - """ - - Args: - hdf: - group_name: - - Returns: - - """ super(MeamFit, self).from_hdf(hdf=hdf, group_name=group_name) with self.project_hdf5.open("input") as hdf5_input: # backwards compatible loading of input From 5b9f2ffd2f5594ff7f0834d123b62f0dc270e1aa Mon Sep 17 00:00:00 2001 From: Leimeroth Date: Fri, 22 Apr 2022 14:51:07 +0200 Subject: [PATCH 119/434] stogo_rand mlsl_lds --- .../atomistics/atomicrex/general_input.py | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/pyiron_contrib/atomistics/atomicrex/general_input.py b/pyiron_contrib/atomistics/atomicrex/general_input.py index 45c1827dd..c3a02ac76 100644 --- a/pyiron_contrib/atomistics/atomicrex/general_input.py +++ b/pyiron_contrib/atomistics/atomicrex/general_input.py @@ -548,6 +548,27 @@ def g_mlsl( seed=seed, ) + @staticmethod + def g_mlsl_lds( + stopval=1e-10, + max_iter=50, + maxtime=None, + ftol_rel=None, + ftol_abs=None, + xtol_rel=None, + seed=None, + ): + return NloptGlobalLocal( + name="G_MLSL_LDS", + stopval=stopval, + max_iter=max_iter, + maxtime=maxtime, + ftol_rel=ftol_rel, + ftol_abs=ftol_abs, + xtol_rel=xtol_rel, + seed=seed, + ) + @staticmethod def gd_stogo( stopval=1e-10, @@ -568,6 +589,27 @@ def gd_stogo( xtol_rel=xtol_rel, seed=seed, ) + + @staticmethod + def gd_stogo_rand( + stopval=1e-10, + max_iter=50, + maxtime=None, + ftol_rel=None, + ftol_abs=None, + xtol_rel=None, + seed=None, + ): + return NloptAlgorithm( + name="GD_STOGO_RAND", + stopval=stopval, + max_iter=max_iter, + maxtime=maxtime, + ftol_rel=ftol_rel, + ftol_abs=ftol_abs, + xtol_rel=xtol_rel, + seed=seed, + ) @staticmethod def scipy_algorithm(): From 93ce6f46f62a5cde037b49a8c0abf3bdd3d92ff3 Mon Sep 17 00:00:00 2001 From: Leimeroth Date: Fri, 22 Apr 2022 15:01:38 +0200 Subject: [PATCH 120/434] codacy --- pyiron_contrib/atomistics/atomicrex/general_input.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyiron_contrib/atomistics/atomicrex/general_input.py b/pyiron_contrib/atomistics/atomicrex/general_input.py index c3a02ac76..5b6cb8bc6 100644 --- a/pyiron_contrib/atomistics/atomicrex/general_input.py +++ b/pyiron_contrib/atomistics/atomicrex/general_input.py @@ -589,7 +589,7 @@ def gd_stogo( xtol_rel=xtol_rel, seed=seed, ) - + @staticmethod def gd_stogo_rand( stopval=1e-10, From 6d6da117597711506ba3d5911d52f8137f2a0c03 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 25 Apr 2022 11:04:46 +0000 Subject: [PATCH 121/434] Bump pyiron-atomistics from 0.2.43 to 0.2.44 Bumps [pyiron-atomistics](https://github.com/pyiron/pyiron_atomistics) from 0.2.43 to 0.2.44. - [Release notes](https://github.com/pyiron/pyiron_atomistics/releases) - [Changelog](https://github.com/pyiron/pyiron_atomistics/blob/master/CHANGELOG.md) - [Commits](https://github.com/pyiron/pyiron_atomistics/compare/pyiron_atomistics-0.2.43...pyiron_atomistics-0.2.44) --- updated-dependencies: - dependency-name: pyiron-atomistics dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index e0c8cb6cb..fb6991262 100644 --- a/setup.py +++ b/setup.py @@ -41,7 +41,7 @@ extras_require={ 'atomistic': [ 'ase==3.22.1', - 'pyiron_atomistics==0.2.43', + 'pyiron_atomistics==0.2.44', ], 'fenics': [ 'fenics==2019.1.0', From a40ff41cc8c5fc658ad5859fb2901ed4170aad86 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 25 Apr 2022 11:04:58 +0000 Subject: [PATCH 122/434] Bump moto from 3.1.5 to 3.1.6 Bumps [moto](https://github.com/spulec/moto) from 3.1.5 to 3.1.6. - [Release notes](https://github.com/spulec/moto/releases) - [Changelog](https://github.com/spulec/moto/blob/master/CHANGELOG.md) - [Commits](https://github.com/spulec/moto/compare/3.1.5...3.1.6) --- updated-dependencies: - dependency-name: moto dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index e0c8cb6cb..0c9ddb71a 100644 --- a/setup.py +++ b/setup.py @@ -50,7 +50,7 @@ 'image': ['scikit-image==0.19.2'], 'generic': [ 'boto3==1.21.42', - 'moto==3.1.5' + 'moto==3.1.6' ], }, cmdclass=versioneer.get_cmdclass(), From 867469c2cc324abd3599ea5e9e3ea4e54ebb298a Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 25 Apr 2022 11:05:09 +0000 Subject: [PATCH 123/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 588590496..5e1ffb22b 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -8,7 +8,7 @@ dependencies: - matplotlib =3.5.1 - numpy =1.22.3 - pyiron_base =0.5.11 -- pyiron_atomistics =0.2.43 +- pyiron_atomistics =0.2.44 - pyparsing =3.0.8 - scipy =1.8.0 - seaborn =0.11.2 From 1bb6a544c322d9c7bc8f5c00c1e44353bc1bbfd2 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 25 Apr 2022 11:05:54 +0000 Subject: [PATCH 124/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 588590496..a3f2aed91 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -15,4 +15,4 @@ dependencies: - scikit-image =0.19.2 - randspg =0.0.1 - boto3 =1.21.42 -- moto =3.1.5 +- moto =3.1.6 From 4b439157a90cbe1b4c80b4c57eddc212598b7672 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 25 Apr 2022 13:13:23 +0000 Subject: [PATCH 125/434] Bump boto3 from 1.21.42 to 1.21.46 Bumps [boto3](https://github.com/boto/boto3) from 1.21.42 to 1.21.46. - [Release notes](https://github.com/boto/boto3/releases) - [Changelog](https://github.com/boto/boto3/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/boto/boto3/compare/1.21.42...1.21.46) --- updated-dependencies: - dependency-name: boto3 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 0ea19fdd1..e77df204b 100644 --- a/setup.py +++ b/setup.py @@ -49,7 +49,7 @@ ], 'image': ['scikit-image==0.19.2'], 'generic': [ - 'boto3==1.21.42', + 'boto3==1.21.46', 'moto==3.1.6' ], }, From 5d7ffd909759893b6d8ea46eb798da1582a46314 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 25 Apr 2022 13:14:33 +0000 Subject: [PATCH 126/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index eaa0cbaa2..4b7abd7c3 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -14,5 +14,5 @@ dependencies: - seaborn =0.11.2 - scikit-image =0.19.2 - randspg =0.0.1 -- boto3 =1.21.42 +- boto3 =1.21.46 - moto =3.1.6 From a0750fed6c4f3b111943aafee2bd54bf8aec2fc6 Mon Sep 17 00:00:00 2001 From: Niklas Leimeroth Date: Wed, 27 Apr 2022 10:48:53 +0200 Subject: [PATCH 127/434] function placement and min vals --- .../atomistics/atomicrex/potential_factory.py | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/pyiron_contrib/atomistics/atomicrex/potential_factory.py b/pyiron_contrib/atomistics/atomicrex/potential_factory.py index 9b39f20df..e0e70e8da 100644 --- a/pyiron_contrib/atomistics/atomicrex/potential_factory.py +++ b/pyiron_contrib/atomistics/atomicrex/potential_factory.py @@ -785,31 +785,40 @@ def plot_final_potential(self, job, filename=None): # TODO: figure out how to index ax for multiple elements fig, ax = plt.subplots( - nrows=3 * len(elements), + nrows=3*len(elements), ncols=len(elements), figsize=(len(elements) * 8, len(elements) * 3 * 6), squeeze=False, ) for i, (el, pot_dict) in enumerate(elements.items()): - for j, (pot, y) in enumerate(pot_dict.items()): + V_count = 0 + rho_count = 0 + print(el, i) + for pot, y in pot_dict.items(): if pot == "F": xdata = rho_values xlabel = "$\\rho $ [a.u.]" k = 0 - ylim = (-5, 5) + ylim = (np.min(y)-0.5, 5) + ax[i*3+k, 0].plot(xdata, y) + ax[i*3+k, 0].set(ylim=ylim, title=f"{el} {pot}", xlabel=xlabel) elif "rho" in pot: xdata = r_values xlabel = "r [$\AA$]" k = 1 - ylim = (-0.2, 1) + ylim = (np.min(y)-0.1, 1) + ax[i*3+k, rho_count].plot(xdata, y) + ax[i*3+k, rho_count].set(ylim=ylim, title=f"{el} {pot}", xlabel=xlabel) + rho_count += 1 elif "V" in pot: xdata = r_values[1:] y = y[1:] xlabel = "r [$\AA$]" k = 2 - ylim = (-2, 2) - ax[i + k, 0].plot(xdata, y) - ax[i + k, 0].set(ylim=ylim, title=f"{el} {pot}", xlabel=xlabel) + ylim = (np.min(y)-0.1, 2) + ax[i*3+k, V_count].plot(xdata, y) + ax[i*3+k, V_count].set(ylim=ylim, title=f"{el} {pot}", xlabel=xlabel) + V_count += 1 return fig, ax def count_local_extrema( From ef43cdab5c7e648f53586dd03e1fd8b7ff1ab618 Mon Sep 17 00:00:00 2001 From: Niklas Leimeroth Date: Wed, 27 Apr 2022 10:50:26 +0200 Subject: [PATCH 128/434] remove print --- pyiron_contrib/atomistics/atomicrex/potential_factory.py | 1 - 1 file changed, 1 deletion(-) diff --git a/pyiron_contrib/atomistics/atomicrex/potential_factory.py b/pyiron_contrib/atomistics/atomicrex/potential_factory.py index e0e70e8da..af37c902e 100644 --- a/pyiron_contrib/atomistics/atomicrex/potential_factory.py +++ b/pyiron_contrib/atomistics/atomicrex/potential_factory.py @@ -793,7 +793,6 @@ def plot_final_potential(self, job, filename=None): for i, (el, pot_dict) in enumerate(elements.items()): V_count = 0 rho_count = 0 - print(el, i) for pot, y in pot_dict.items(): if pot == "F": xdata = rho_values From 0dfad6eac2686fa10bc84ce27d9988eb89e40af9 Mon Sep 17 00:00:00 2001 From: Niklas Leimeroth Date: Wed, 27 Apr 2022 10:50:57 +0200 Subject: [PATCH 129/434] black formatting --- .../atomistics/atomicrex/potential_factory.py | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/pyiron_contrib/atomistics/atomicrex/potential_factory.py b/pyiron_contrib/atomistics/atomicrex/potential_factory.py index af37c902e..a7c2dd24d 100644 --- a/pyiron_contrib/atomistics/atomicrex/potential_factory.py +++ b/pyiron_contrib/atomistics/atomicrex/potential_factory.py @@ -785,7 +785,7 @@ def plot_final_potential(self, job, filename=None): # TODO: figure out how to index ax for multiple elements fig, ax = plt.subplots( - nrows=3*len(elements), + nrows=3 * len(elements), ncols=len(elements), figsize=(len(elements) * 8, len(elements) * 3 * 6), squeeze=False, @@ -798,25 +798,29 @@ def plot_final_potential(self, job, filename=None): xdata = rho_values xlabel = "$\\rho $ [a.u.]" k = 0 - ylim = (np.min(y)-0.5, 5) - ax[i*3+k, 0].plot(xdata, y) - ax[i*3+k, 0].set(ylim=ylim, title=f"{el} {pot}", xlabel=xlabel) + ylim = (np.min(y) - 0.5, 5) + ax[i * 3 + k, 0].plot(xdata, y) + ax[i * 3 + k, 0].set(ylim=ylim, title=f"{el} {pot}", xlabel=xlabel) elif "rho" in pot: xdata = r_values xlabel = "r [$\AA$]" k = 1 - ylim = (np.min(y)-0.1, 1) - ax[i*3+k, rho_count].plot(xdata, y) - ax[i*3+k, rho_count].set(ylim=ylim, title=f"{el} {pot}", xlabel=xlabel) + ylim = (np.min(y) - 0.1, 1) + ax[i * 3 + k, rho_count].plot(xdata, y) + ax[i * 3 + k, rho_count].set( + ylim=ylim, title=f"{el} {pot}", xlabel=xlabel + ) rho_count += 1 elif "V" in pot: xdata = r_values[1:] y = y[1:] xlabel = "r [$\AA$]" k = 2 - ylim = (np.min(y)-0.1, 2) - ax[i*3+k, V_count].plot(xdata, y) - ax[i*3+k, V_count].set(ylim=ylim, title=f"{el} {pot}", xlabel=xlabel) + ylim = (np.min(y) - 0.1, 2) + ax[i * 3 + k, V_count].plot(xdata, y) + ax[i * 3 + k, V_count].set( + ylim=ylim, title=f"{el} {pot}", xlabel=xlabel + ) V_count += 1 return fig, ax From 0f148801e64f3c679bfb7a29bf79d13fa9b51b9d Mon Sep 17 00:00:00 2001 From: Alexander Knoll Date: Thu, 28 Apr 2022 11:37:07 +0200 Subject: [PATCH 130/434] Add code documentation. --- pyiron_contrib/atomistics/runner/job.py | 39 +++++++++++++++++-------- setup.py | 4 +-- 2 files changed, 29 insertions(+), 14 deletions(-) diff --git a/pyiron_contrib/atomistics/runner/job.py b/pyiron_contrib/atomistics/runner/job.py index f8ce63120..9d45b44f6 100644 --- a/pyiron_contrib/atomistics/runner/job.py +++ b/pyiron_contrib/atomistics/runner/job.py @@ -27,24 +27,26 @@ import numpy as np -import ase.io.runner.runner as io -from ase.calculators.runner.runner import Runner, DEFAULT_PARAMETERS -from ase.calculators.runner.runnersinglepoint import RunnerSinglePointCalculator +from runnerase.io.ase import (read_results_mode1, read_results_mode2, + read_results_mode3) +from runnerase import Runner +from runnerase.defaultoptions import DEFAULT_PARAMETERS +from runnerase.singlepoint import RunnerSinglePointCalculator from pyiron_base import state, Executable, DataContainer, GenericJob from pyiron_base.generic.object import HasStorage from pyiron_atomistics.atomistics.structure.atoms import pyiron_to_ase -from pyiron_contrib.atomistics.atomistics.job.trainingcontainer import TrainingContainer +from ..atomistics.job.trainingcontainer import TrainingContainer __author__ = 'Alexander Knoll' __copyright__ = 'Copyright 2021, Georg-August-Universität Göttingen - Behler '\ 'Group' -__version__ = '0.1' +__version__ = '0.1.0' __maintainer__ = 'Alexander Knoll' __email__ = 'alexander.knoll@chemie.uni-goettingen.de' __status__ = 'development' -__date__ = 'January 7, 2022' +__date__ = 'April 28, 2022' class RunnerTrainingContainer(TrainingContainer): @@ -150,10 +152,18 @@ class RunnerFit(GenericJob, HasStorage): """ __name__ = 'RuNNer' + # These properties are needed by RuNNer as input data (depending on the # chosen RuNNer mode). _input_properties = ['scaling', 'weights', 'sfvalues', 'splittraintest'] + # Define a default executable. + _executable = Executable( + codename='runner', + module='runner', + path_binary_codes=state.settings.resource_paths + ) + def __init__(self, project, job_name, **kwargs): """Initialize the class. @@ -227,26 +237,32 @@ def publication(self): @property def scaling(self): + """Show the symmetry function scaling data in storage.""" return self.storage.scaling @property def weights(self): + """Show the atomic neural network weights data in storage.""" return self.storage.weights @property def sfvalues(self): + """Show the symmetry function value data in storage.""" return self.storage.sfvalues @property def splittraintest(self): + """Show the split between training and testing data in storage.""" return self.storage.splittraintest @property def input(self): + """Show input options in storage.""" return self.storage.input @property def output(self): + """Show all calculation output in storage.""" return self.storage.output @property @@ -262,7 +278,6 @@ def structures(self, structures): structures (list): A list of ASE Atoms objects or Pyiron Atoms objects which are to be stored. """ - for structure in structures: energy = structure.get_potential_energy() @@ -303,7 +318,7 @@ def write_input(self): calc.write_input( atoms, - targets[self.input.runner_mode], + targets[self.input['runner_mode']], system_changes ) @@ -326,7 +341,7 @@ def collect_output(self): # each structure and the information, which structure belongs to the # training and which to the testing set. if self.input.runner_mode == 1: - sfvalues, splittraintest = io.read_results_mode1(label, directory) + sfvalues, splittraintest = read_results_mode1(label, directory) self.output.sfvalues = sfvalues self.output.splittraintest = splittraintest @@ -334,7 +349,7 @@ def collect_output(self): # networks, the symmetry function scaling data, and the results of the # fitting process. if self.input.runner_mode == 2: - fitresults, weights, scaling = io.read_results_mode2( + fitresults, weights, scaling = read_results_mode2( label, directory ) @@ -345,7 +360,7 @@ def collect_output(self): # If successful, RuNNer Mode 3 returns the energy and forces of the # structure for which it was executed. if self.input.runner_mode == 3: - atoms, energy, forces = io.read_results_mode3(label, directory) + energy, forces = read_results_mode3(directory) self.output.energy = energy self.output.forces = forces @@ -394,7 +409,7 @@ def restart(self, *args, **kwargs): # structures, and outputs of the previous calculation. However, it # cannot access the relevant properties as input values which is # necessary for starting a new calculation. - new_ham = super(RunnerFit, self).restart(*args, **kwargs) + new_ham = super().restart(*args, **kwargs) for prop in self._input_properties: if prop in self.output.keys(): diff --git a/setup.py b/setup.py index b6b8c67fd..b765f7a5b 100644 --- a/setup.py +++ b/setup.py @@ -32,8 +32,8 @@ packages=find_packages(exclude=["*tests*"]), install_requires=[ 'matplotlib==3.5.1', - 'numpy==1.22.0', - 'pyiron_base==0.5.0', + 'numpy==1.22.1', + 'pyiron_base==0.5.1', 'scipy==1.7.3', 'seaborn==0.11.2', 'pyparsing==3.0.6' From df95eab1607ce4948c13bfcea905e6f3b5634da3 Mon Sep 17 00:00:00 2001 From: usaikia <76955804+usaikia@users.noreply.github.com> Date: Thu, 28 Apr 2022 15:01:19 +0200 Subject: [PATCH 131/434] Update meamfit.py --- pyiron_contrib/atomistics/meamfit/meamfit.py | 81 ++++++++++++-------- 1 file changed, 47 insertions(+), 34 deletions(-) diff --git a/pyiron_contrib/atomistics/meamfit/meamfit.py b/pyiron_contrib/atomistics/meamfit/meamfit.py index d329b37c8..9f7128eb4 100644 --- a/pyiron_contrib/atomistics/meamfit/meamfit.py +++ b/pyiron_contrib/atomistics/meamfit/meamfit.py @@ -25,11 +25,19 @@ class MeamFit(GenericJob): def __init__(self, project, job_name): """ - ExampleJob generating a list of random numbers to simulate energy fluctuations. + Class to setup and run and MeamFit simulations. Args: project: Project object (defines path where job will be created and stored) job_name: name of the job (must be unique within this project path) + + Examples: + Here is a simple example to setup and run a MeamFit job: + + >>> job = pr.create.job.MeamFit(job_name='test_job') + >>> job.add_job_to_fitting(job_id=job_id) # job_id of the vasp MD job you want to use for potential fitting + >>> job.run() + """ super(MeamFit, self).__init__(project, job_name) self.__version__ = None @@ -115,12 +123,19 @@ def add_job_to_fitting(self, job_id, time_step_start=0, time_step_end=-1, time_s """ Args: - job_id (int): + job_id (int): job_id of the vasp MD job you want to use for potential fitting. time_step_start (int): initial timestep - after equilibration time_step_end (int): last timestep to use - time_step_delta (int): - quantity (str): ['E', 'F'] for fitting the energies use 'E' and 'F' for fitting the forces - weight (list): default is one, but for lower temperatures use higher weights [100, 1000] + time_step_delta (int): time step + quantity (str): the property in the vasprun file to be fit to, and can take the values ['E0', 'Free‐Energy', 'Force'] + ‘E0’: to the total energy (specifically the E0, sigma‐>0 value in the vasprun file); + ‘Free‐Energy’: will fit to the free energy (the F value in the vasprun file); + ‘Force’: will fit to atomic forces. + Note that only the first two letters are in fact read in by MEAMfit, so that it is sufficient to + write ‘Fr’ or ‘Fo’ for the second and third cases respectively. + weight (list): default is [1.0, 0.0, 0.0]. + + More information on these parameters are available in the MeamFit user manual- https://www.scd.stfc.ac.uk/Pages/MEAMfit-v2.aspx Returns: @@ -142,6 +157,33 @@ def add_job_to_fitting(self, job_id, time_step_start=0, time_step_end=-1, time_s 'Weights': [weight]}) self._calculation_dataframe = pd.concat([self._calculation_dataframe, df_tmp.set_index('Job id')]) + def _copy_vasprun_xml(self, cwd=None): + for job_id in self._calculation_dataframe.index: + self.project.load(job_id).decompress() + working_directory = self.project.get_job_working_directory(int(job_id)) + shutil.copyfile(posixpath.join(working_directory, 'vasprun.xml'), + posixpath.join(cwd, 'vasprun_' + str(int(job_id)) + '.xml')) + self.project.load(job_id).compress() + + @staticmethod + def _write_calc_db(calculation_dataframe, file_name="fitdbse", cwd=None): + if cwd is not None: + file_name = posixpath.join(cwd, file_name) + with open(file_name, 'w') as f: + f.write(str(len(calculation_dataframe)) + ' # Files | Configs to fit | Quantity to fit | Weights \n') + for entry in zip(['vasprun_' + str(int(job_id)) + '.xml' for job_id in calculation_dataframe.index], + [start + 1 for start in calculation_dataframe['Start config']], + [end+1 for end in calculation_dataframe['End config']], + list(calculation_dataframe['Step']), + list(calculation_dataframe['Quantity to fit']), + list(calculation_dataframe['Weights'])): + file, start_config, end_config, step, quantity, weight = entry + if isinstance(weight, list): + weight = str(weight[0]) + ' ' + str(weight[1]) + ' ' + str(weight[2]) + f.write(str(file) + ' ' + str(int(start_config)) + '-' + str(int(end_config)) + 's' + str(int(step)) + + ' ' + str(quantity) + ' ' + str(weight) + '\n') + + # define routines that collect all output files def collect_output(self): potential_timings_df = self._collect_timings(file_name='bestoptfuncs', cwd=self.working_directory) @@ -196,35 +238,6 @@ def from_hdf(self, hdf=None, group_name=None): if 'File' in self._potential_timings_dataframe.columns: self._potential_timings_dataframe = self._potential_timings_dataframe.set_index('File') - def _copy_vasprun_xml(self, cwd=None): - for job_id in self._calculation_dataframe.index: - self.project.load(job_id).decompress() - working_directory = self.project.get_job_working_directory(int(job_id)) - shutil.copyfile(posixpath.join(working_directory, 'vasprun.xml'), - posixpath.join(cwd, self._get_vasprun_name(job_id))) - self.project.load(job_id).compress() - - @staticmethod - def _write_calc_db(calculation_dataframe, file_name="fitdbse", cwd=None): - if cwd is not None: - file_name = posixpath.join(cwd, file_name) - with open(file_name, 'w') as f: - f.write(str(len(calculation_dataframe)) + ' # Files | Configs to fit | Quantity to fit | Weights \n') - for entry in zip(['vasprun_' + str(int(job_id)) + '.xml' for job_id in calculation_dataframe.index], - [start + 1 for start in calculation_dataframe['Start config']], - [end+1 for end in calculation_dataframe['End config']], - list(calculation_dataframe['Step']), - list(calculation_dataframe['Quantity to fit']), - list(calculation_dataframe['Weights'])): - file, start_config, end_config, step, quantity, weight = entry - if isinstance(weight, list): - weight = str(weight[0]) + ' ' + str(weight[1]) + ' ' + str(weight[2]) - f.write(str(file) + ' ' + str(int(start_config)) + '-' + str(int(end_config)) + 's' + str(int(step)) - + ' ' + str(quantity) + ' ' + str(weight) + '\n') - - @staticmethod - def _get_vasprun_name(job_id): - return 'vasprun_' + str(int(job_id)) + '.xml' @staticmethod def _read_calc_db(file_name="fitdbse", cwd=None): From b27b338ec97186ea81bdb956c04ae6cf2130b43f Mon Sep 17 00:00:00 2001 From: usaikia <76955804+usaikia@users.noreply.github.com> Date: Thu, 28 Apr 2022 17:58:27 +0200 Subject: [PATCH 132/434] Update meamfit.py --- pyiron_contrib/atomistics/meamfit/meamfit.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pyiron_contrib/atomistics/meamfit/meamfit.py b/pyiron_contrib/atomistics/meamfit/meamfit.py index 9f7128eb4..56b4d1cb6 100644 --- a/pyiron_contrib/atomistics/meamfit/meamfit.py +++ b/pyiron_contrib/atomistics/meamfit/meamfit.py @@ -34,6 +34,7 @@ def __init__(self, project, job_name): Examples: Here is a simple example to setup and run a MeamFit job: + >>> pr = Project('meamfit') >>> job = pr.create.job.MeamFit(job_name='test_job') >>> job.add_job_to_fitting(job_id=job_id) # job_id of the vasp MD job you want to use for potential fitting >>> job.run() From dc05727e68d4f02214b683c98c22ebf6a9241308 Mon Sep 17 00:00:00 2001 From: usaikia <76955804+usaikia@users.noreply.github.com> Date: Fri, 29 Apr 2022 16:14:10 +0200 Subject: [PATCH 133/434] Update meamfit.py --- pyiron_contrib/atomistics/meamfit/meamfit.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pyiron_contrib/atomistics/meamfit/meamfit.py b/pyiron_contrib/atomistics/meamfit/meamfit.py index 56b4d1cb6..f21c25b27 100644 --- a/pyiron_contrib/atomistics/meamfit/meamfit.py +++ b/pyiron_contrib/atomistics/meamfit/meamfit.py @@ -102,8 +102,9 @@ def set_input_to_read_only(self): self.input.read_only = True def validate_ready_to_run(self): - pass - + if self._calculation_dataframe.empty: + raise ValueError() + def write_input(self): """ Call routines that generate the codespecifc input files From 450c6e1aa42ca5f4492c992e53c21140c25df304 Mon Sep 17 00:00:00 2001 From: Niklas Leimeroth Date: Mon, 2 May 2022 07:40:12 +0200 Subject: [PATCH 134/434] Extende --- .../atomistics/atomicrex/function_factory.py | 89 +++++++++++++++++++ 1 file changed, 89 insertions(+) diff --git a/pyiron_contrib/atomistics/atomicrex/function_factory.py b/pyiron_contrib/atomistics/atomicrex/function_factory.py index 9b7fa0424..9e45b8896 100644 --- a/pyiron_contrib/atomistics/atomicrex/function_factory.py +++ b/pyiron_contrib/atomistics/atomicrex/function_factory.py @@ -1187,6 +1187,95 @@ def __init__( def _to_xml_element(self): return super()._to_xml_element(name="Mishin-Cu-F") +class ExtendedMishinCuF(SpecialFunction): + def __init__( + self, + identifier=None, + F0=None, + F2=None, + f3=None, + f4=None, + f5=None, + f6=None, + a3=None, + a4=None, + a5=None, + a6=None, + d3=None, + d4=None, + d5=None, + species=["*"], + ): + super().__init__(identifier, species=species, is_screening_function=False) + self.parameters.add_parameter( + "F0", + start_val=F0, + enabled=True, + ) + self.parameters.add_parameter( + "F2", + start_val=F2, + enabled=True, + ) + self.parameters.add_parameter( + "f3", + start_val=f3, + enabled=True, + ) + self.parameters.add_parameter( + "f4", + start_val=f4, + enabled=True, + ) + self.parameters.add_parameter( + "f5", + start_val=f5, + enabled=True, + ) + self.parameters.add_parameter( + "f6", + start_val=f6, + enabled=True, + ) + self.parameters.add_parameter( + "a3", + start_val=a3, + enabled=True, + ) + self.parameters.add_parameter( + "a4", + start_val=a4, + enabled=True, + ) + self.parameters.add_parameter( + "a5", + start_val=a5, + enabled=True, + ) + self.parameters.add_parameter( + "a6", + start_val=a6, + enabled=True, + ) + self.parameters.add_parameter( + "d3", + start_val=d3, + enabled=True, + ) + self.parameters.add_parameter( + "d4", + start_val=d4, + enabled=True, + ) + self.parameters.add_parameter( + "d5", + start_val=d5, + enabled=True, + ) + + def _to_xml_element(self): + return super()._to_xml_element(name="extended-Mishin-Cu-F") + class UserFunction(DataContainer, BaseFunctionMixin): """ From 683492954ed6269325afa53b877071a4b1034a0a Mon Sep 17 00:00:00 2001 From: Niklas Leimeroth Date: Mon, 2 May 2022 08:02:46 +0200 Subject: [PATCH 135/434] factory function --- .../atomistics/atomicrex/function_factory.py | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/pyiron_contrib/atomistics/atomicrex/function_factory.py b/pyiron_contrib/atomistics/atomicrex/function_factory.py index 9e45b8896..4c8d99e21 100644 --- a/pyiron_contrib/atomistics/atomicrex/function_factory.py +++ b/pyiron_contrib/atomistics/atomicrex/function_factory.py @@ -247,6 +247,28 @@ def MishinCuRho(identifier, a, r1, r2, beta1, beta2, species=["*", "*"]): def MishinCuF(identifier, F0, F2, q1, q2, q3, q4, Q1, Q2, species=["*"]): return MishinCuF(identifier, F0, F2, q1, q2, q3, q4, Q1, Q2, species) + @staticmethod + def extendedMishinCuF( + identifier, F0, F2, f3, f4, f5, f6, a3, a4, a5, a6, d3, d4, d5, species=["*"] + ): + return ExtendedMishinCuF( + identifier=identifier, + F0=F0, + F2=F2, + f3=f3, + f4=f4, + f5=f5, + f6=f6, + a3=a3, + a4=a4, + a5=a5, + a6=a6, + d3=d3, + d4=d4, + d5=d5, + species=species, + ) + @staticmethod def RsMinusRPowN(identifier, S, rs, N, species=["*", "*"], cutoff=None): return RsMinusRPowN(identifier, S, rs, N, species, cutoff=cutoff) @@ -988,7 +1010,7 @@ def __init__( super().__init__( identifier, species=species, is_screening_function=is_screening_function ) - self.cutoff=cutoff + self.cutoff = cutoff self.parameters.add_parameter( "S", start_val=S, @@ -1187,6 +1209,7 @@ def __init__( def _to_xml_element(self): return super()._to_xml_element(name="Mishin-Cu-F") + class ExtendedMishinCuF(SpecialFunction): def __init__( self, From 1e9baf7c7e2713b1adcc9ab10690c5e266a8c924 Mon Sep 17 00:00:00 2001 From: Niklas Leimeroth Date: Mon, 2 May 2022 09:20:32 +0200 Subject: [PATCH 136/434] e to E --- pyiron_contrib/atomistics/atomicrex/function_factory.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyiron_contrib/atomistics/atomicrex/function_factory.py b/pyiron_contrib/atomistics/atomicrex/function_factory.py index 4c8d99e21..95a1013f7 100644 --- a/pyiron_contrib/atomistics/atomicrex/function_factory.py +++ b/pyiron_contrib/atomistics/atomicrex/function_factory.py @@ -1297,7 +1297,7 @@ def __init__( ) def _to_xml_element(self): - return super()._to_xml_element(name="extended-Mishin-Cu-F") + return super()._to_xml_element(name="Extended-Mishin-Cu-F") class UserFunction(DataContainer, BaseFunctionMixin): From 4f0acfb8eed3a7dc7d6e09978a1adcf64797e39f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 May 2022 11:06:44 +0000 Subject: [PATCH 137/434] Bump moto from 3.1.6 to 3.1.7 Bumps [moto](https://github.com/spulec/moto) from 3.1.6 to 3.1.7. - [Release notes](https://github.com/spulec/moto/releases) - [Changelog](https://github.com/spulec/moto/blob/master/CHANGELOG.md) - [Commits](https://github.com/spulec/moto/compare/3.1.6...3.1.7) --- updated-dependencies: - dependency-name: moto dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index e77df204b..b970f6ffd 100644 --- a/setup.py +++ b/setup.py @@ -50,7 +50,7 @@ 'image': ['scikit-image==0.19.2'], 'generic': [ 'boto3==1.21.46', - 'moto==3.1.6' + 'moto==3.1.7' ], }, cmdclass=versioneer.get_cmdclass(), From 283f0a70b1a080cd94dfc26693e126ce5cabb606 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 May 2022 11:06:49 +0000 Subject: [PATCH 138/434] Bump pyiron-base from 0.5.11 to 0.5.12 Bumps [pyiron-base](https://github.com/pyiron/pyiron_base) from 0.5.11 to 0.5.12. - [Release notes](https://github.com/pyiron/pyiron_base/releases) - [Changelog](https://github.com/pyiron/pyiron_base/blob/master/CHANGELOG.md) - [Commits](https://github.com/pyiron/pyiron_base/compare/pyiron_base-0.5.11...pyiron_base-0.5.12) --- updated-dependencies: - dependency-name: pyiron-base dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index e77df204b..83cee2b28 100644 --- a/setup.py +++ b/setup.py @@ -33,7 +33,7 @@ install_requires=[ 'matplotlib==3.5.1', 'numpy==1.22.3', - 'pyiron_base==0.5.11', + 'pyiron_base==0.5.12', 'scipy==1.8.0', 'seaborn==0.11.2', 'pyparsing==3.0.8' From 1a5ed75d49301be03919ad5e37f6958d01db67eb Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 2 May 2022 11:07:02 +0000 Subject: [PATCH 139/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 4b7abd7c3..ffcf7f6c7 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -15,4 +15,4 @@ dependencies: - scikit-image =0.19.2 - randspg =0.0.1 - boto3 =1.21.46 -- moto =3.1.6 +- moto =3.1.7 From f2825ef7a9a188c65dfce5de687ecd9bc0b5f0c1 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 2 May 2022 11:07:08 +0000 Subject: [PATCH 140/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 4b7abd7c3..281184f3c 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -7,7 +7,7 @@ dependencies: - codacy-coverage - matplotlib =3.5.1 - numpy =1.22.3 -- pyiron_base =0.5.11 +- pyiron_base =0.5.12 - pyiron_atomistics =0.2.44 - pyparsing =3.0.8 - scipy =1.8.0 From 194d789b4c00dbbf1261568d084b59fadd71c62b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 May 2022 11:59:33 +0000 Subject: [PATCH 141/434] Bump pyiron-atomistics from 0.2.44 to 0.2.45 Bumps [pyiron-atomistics](https://github.com/pyiron/pyiron_atomistics) from 0.2.44 to 0.2.45. - [Release notes](https://github.com/pyiron/pyiron_atomistics/releases) - [Changelog](https://github.com/pyiron/pyiron_atomistics/blob/master/CHANGELOG.md) - [Commits](https://github.com/pyiron/pyiron_atomistics/compare/pyiron_atomistics-0.2.44...pyiron_atomistics-0.2.45) --- updated-dependencies: - dependency-name: pyiron-atomistics dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 83cee2b28..3cfa3480d 100644 --- a/setup.py +++ b/setup.py @@ -41,7 +41,7 @@ extras_require={ 'atomistic': [ 'ase==3.22.1', - 'pyiron_atomistics==0.2.44', + 'pyiron_atomistics==0.2.45', ], 'fenics': [ 'fenics==2019.1.0', From 58ec2893786fdeab83861a70b06d3b33cdaceddf Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 2 May 2022 11:59:48 +0000 Subject: [PATCH 142/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 281184f3c..4fb72a908 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -8,7 +8,7 @@ dependencies: - matplotlib =3.5.1 - numpy =1.22.3 - pyiron_base =0.5.12 -- pyiron_atomistics =0.2.44 +- pyiron_atomistics =0.2.45 - pyparsing =3.0.8 - scipy =1.8.0 - seaborn =0.11.2 From 95ee26994bd5655102307ce43490a7679464fc38 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 May 2022 12:06:12 +0000 Subject: [PATCH 143/434] Bump boto3 from 1.21.46 to 1.22.4 Bumps [boto3](https://github.com/boto/boto3) from 1.21.46 to 1.22.4. - [Release notes](https://github.com/boto/boto3/releases) - [Changelog](https://github.com/boto/boto3/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/boto/boto3/compare/1.21.46...1.22.4) --- updated-dependencies: - dependency-name: boto3 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 1e1a6e24f..09f9efc1a 100644 --- a/setup.py +++ b/setup.py @@ -49,7 +49,7 @@ ], 'image': ['scikit-image==0.19.2'], 'generic': [ - 'boto3==1.21.46', + 'boto3==1.22.4', 'moto==3.1.7' ], }, From 9e9fe8b6e917ef985e6473e808d12e7f5959d99d Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 2 May 2022 12:06:29 +0000 Subject: [PATCH 144/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 106cbd706..3f384f139 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -14,5 +14,5 @@ dependencies: - seaborn =0.11.2 - scikit-image =0.19.2 - randspg =0.0.1 -- boto3 =1.21.46 +- boto3 =1.22.4 - moto =3.1.7 From ba1225a7f23d1922cfbd17b254bc3bcc4e544f8c Mon Sep 17 00:00:00 2001 From: usaikia <76955804+usaikia@users.noreply.github.com> Date: Wed, 4 May 2022 13:53:02 +0200 Subject: [PATCH 145/434] Update meamfit.py --- pyiron_contrib/atomistics/meamfit/meamfit.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pyiron_contrib/atomistics/meamfit/meamfit.py b/pyiron_contrib/atomistics/meamfit/meamfit.py index f21c25b27..8667aa807 100644 --- a/pyiron_contrib/atomistics/meamfit/meamfit.py +++ b/pyiron_contrib/atomistics/meamfit/meamfit.py @@ -26,19 +26,19 @@ class MeamFit(GenericJob): def __init__(self, project, job_name): """ Class to setup and run and MeamFit simulations. - - Args: - project: Project object (defines path where job will be created and stored) - job_name: name of the job (must be unique within this project path) - + Examples: Here is a simple example to setup and run a MeamFit job: >>> pr = Project('meamfit') >>> job = pr.create.job.MeamFit(job_name='test_job') - >>> job.add_job_to_fitting(job_id=job_id) # job_id of the vasp MD job you want to use for potential fitting + >>> job.add_job_to_fitting(job_id=job_id) # job_id of the vasp MD job using for potential fitting >>> job.run() + Args: + project: Project object (defines path where job will be created and stored) + job_name: name of the job (must be unique within this project path) + """ super(MeamFit, self).__init__(project, job_name) self.__version__ = None From 110e2877dbc990331b13e9efe25906083336c231 Mon Sep 17 00:00:00 2001 From: Niklas Leimeroth Date: Wed, 4 May 2022 13:56:01 +0200 Subject: [PATCH 146/434] sorting structures --- pyiron_contrib/atomistics/atomicrex/structure_list.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/pyiron_contrib/atomistics/atomicrex/structure_list.py b/pyiron_contrib/atomistics/atomicrex/structure_list.py index fa1ebc410..47894320f 100644 --- a/pyiron_contrib/atomistics/atomicrex/structure_list.py +++ b/pyiron_contrib/atomistics/atomicrex/structure_list.py @@ -761,3 +761,13 @@ def predefined_structure_xml( else: struct_xml.append(fit_properties) return struct_xml + +def sort_structure(structure, forces=None): + sort_array = get_sort_array(structure) + if forces is None: + return structure[sort_array] + return structure[sort_array], forces[sort_array] + +def get_sort_array(structure): + sort_array = np.argsort(structure.numbers, kind="stable") + return sort_array \ No newline at end of file From 8fd0f9c6654640f753604a8f7296a487763ed72e Mon Sep 17 00:00:00 2001 From: Niklas Leimeroth Date: Wed, 4 May 2022 13:56:59 +0200 Subject: [PATCH 147/434] revert --- pyiron_contrib/atomistics/atomicrex/structure_list.py | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/pyiron_contrib/atomistics/atomicrex/structure_list.py b/pyiron_contrib/atomistics/atomicrex/structure_list.py index 47894320f..fa1ebc410 100644 --- a/pyiron_contrib/atomistics/atomicrex/structure_list.py +++ b/pyiron_contrib/atomistics/atomicrex/structure_list.py @@ -761,13 +761,3 @@ def predefined_structure_xml( else: struct_xml.append(fit_properties) return struct_xml - -def sort_structure(structure, forces=None): - sort_array = get_sort_array(structure) - if forces is None: - return structure[sort_array] - return structure[sort_array], forces[sort_array] - -def get_sort_array(structure): - sort_array = np.argsort(structure.numbers, kind="stable") - return sort_array \ No newline at end of file From 5554b3f6f63bade6d56141d8a72c6da9fb6e8f18 Mon Sep 17 00:00:00 2001 From: Niklas Leimeroth Date: Wed, 4 May 2022 13:57:37 +0200 Subject: [PATCH 148/434] sorting --- .../atomistics/atomicrex/structure_list.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/pyiron_contrib/atomistics/atomicrex/structure_list.py b/pyiron_contrib/atomistics/atomicrex/structure_list.py index fa1ebc410..cbca1e7a9 100644 --- a/pyiron_contrib/atomistics/atomicrex/structure_list.py +++ b/pyiron_contrib/atomistics/atomicrex/structure_list.py @@ -761,3 +761,15 @@ def predefined_structure_xml( else: struct_xml.append(fit_properties) return struct_xml + + +def sort_structure(structure, forces=None): + sort_array = get_sort_array(structure) + if forces is None: + return structure[sort_array] + return structure[sort_array], forces[sort_array] + + +def get_sort_array(structure): + sort_array = np.argsort(structure.numbers, kind="stable") + return sort_array From 47c2c7448d8deac29f1f292cb0fc81913805f5f6 Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Wed, 1 Dec 2021 09:50:56 +0100 Subject: [PATCH 149/434] Add Abstract Mixin for Potential Fitting --- pyiron_contrib/atomistics/ml/__init__.py | 0 pyiron_contrib/atomistics/ml/potentialfit.py | 101 +++++++++++++++++++ 2 files changed, 101 insertions(+) create mode 100644 pyiron_contrib/atomistics/ml/__init__.py create mode 100644 pyiron_contrib/atomistics/ml/potentialfit.py diff --git a/pyiron_contrib/atomistics/ml/__init__.py b/pyiron_contrib/atomistics/ml/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pyiron_contrib/atomistics/ml/potentialfit.py b/pyiron_contrib/atomistics/ml/potentialfit.py new file mode 100644 index 000000000..f174bbc43 --- /dev/null +++ b/pyiron_contrib/atomistics/ml/potentialfit.py @@ -0,0 +1,101 @@ +""" +Abstract base class for fitting interactomic potentials. +""" + +import abc + +import pandas as pd + +from pyiron_base import FlattenedStorage +from pyiron_contrib.atomistics.atomistics.job.trainingcontainer import TrainingContainer + +class PotentialFit(abc.ABC): + """ + Abstract mixin that defines a general interface to potential fitting codes. + + Training data can be added to the job with :method:`~.add_training_data`. This should be atom structures with + (at least) corresponding energies and forces, but additional (per structure or atom) maybe added. Subclasses of + :class:`~.TrainingContainer` that define and handle such data are explicitly allowed. + + :property:`~.training_data` and :property:`~.predicted_data` can be used to access + """ + + @abc.abstractmethod + def _add_training_data(self, container: TrainingContainer) -> None: + pass + + def add_training_data(self, container: TrainingContainer) -> None: + """ + Add data to the fit. + + Calling this multiple times appends data to internal storage. + + Args: + container (:class:`.TrainingContainer`): container holding data to fit + """ + if self.status.initialized: + self._add_training_data(container) + else: + raise ValueError("Data can only be added before fitting is started!") + + @abstract + def _get_training_data(self) -> FlattenedStorage: + pass + + @property + def training_data(self) -> FlattenedStorage: + """ + Return all training data added so far. + + Returns: + :class:`pyiron_base.FlattenedStorage`: container holding all training data + """ + return self._get_training_data() + + @abstract + def _get_predicted_data(self) -> FlattenedStorage: + pass + + @property + def predicted_data(self) -> FlattenedStorage: + """ + Predicted properties of the training data after the fit. + + Returns: + :class:`pyiron_base.FlattenedStorage`: container holding all predictions of the fitted potential on the + training data + """ + if self.status.finished: + return self._get_predicted_data() + else: + raise ValueError("Data can only be accessed after successful fit!") + + def plot(self): + """ + Plots correlation and (training) error histograms. + """ + if not self.status.finished: + raise ValueError("Results can only be plotted after job finished successfully!") + + energy_train = self.training_data["energy"] / self.training_data["length"] + energy_pred = self.predicted_data["energy"] / self.predicted_data["length"] + + plt.subplot(1, 2, 1) + plt.scatter(energy_train, energy_pred) + plt.xlabel("True Energy Per Atom [eV]") + plt.ylabel("Predicted Energy Per Atom [eV]") + + plt.subplot(1, 2, 2) + plt.hist(energy_train - energy_pred) + plt.xlabel("Training Error [eV]") + + @abstract + def get_lammps_potential(self) -> pd.DataFrame: + """ + Return a pyiron compatible dataframe that defines a potential to be used with a Lammps job (or subclass + thereof). + + Returns: + DataFrame: contains potential information to be used with a Lammps job. + """ + pass From ce68460252b41a591b921dbc6cd2fa98fe27a29c Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Wed, 1 Dec 2021 22:06:31 +0100 Subject: [PATCH 150/434] More promises in PotentialFit --- pyiron_contrib/atomistics/ml/potentialfit.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pyiron_contrib/atomistics/ml/potentialfit.py b/pyiron_contrib/atomistics/ml/potentialfit.py index f174bbc43..e8225329c 100644 --- a/pyiron_contrib/atomistics/ml/potentialfit.py +++ b/pyiron_contrib/atomistics/ml/potentialfit.py @@ -61,6 +61,10 @@ def predicted_data(self) -> FlattenedStorage: """ Predicted properties of the training data after the fit. + In contrast to :property:`~.training_data` this may not contain the original atomic structures, but must be in + the same order. Certain properties in the training data may be omitted from this data set, if the inconvenient + or impossible to predict. This should be documented on the subclass for each specific code. + Returns: :class:`pyiron_base.FlattenedStorage`: container holding all predictions of the fitted potential on the training data From 938bab3c91beaa013a94e835f3ea314b4e0838c3 Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Wed, 1 Dec 2021 22:06:45 +0100 Subject: [PATCH 151/434] Implement PotentialFit for Mlip --- pyiron_contrib/atomistics/mlip/mlip.py | 39 +++++++++++++++++++++++--- 1 file changed, 35 insertions(+), 4 deletions(-) diff --git a/pyiron_contrib/atomistics/mlip/mlip.py b/pyiron_contrib/atomistics/mlip/mlip.py index 5776934a6..4f4e9258d 100644 --- a/pyiron_contrib/atomistics/mlip/mlip.py +++ b/pyiron_contrib/atomistics/mlip/mlip.py @@ -10,9 +10,10 @@ import pandas as pd import posixpath import scipy.constants +from pyiron_atomistics.atomistics.structure.structurestorage import StructureStorage from pyiron_base import state, GenericParameters, GenericJob, Executable, FlattenedStorage from pyiron_atomistics import ase_to_pyiron, Atoms -from pyiron_atomistics.atomistics.structure.structurestorage import StructureStorage +from pyiron_contrib.atomistics.ml.potentialfit import PotentialFit from pyiron_contrib.atomistics.mlip.cfgs import savecfgs, loadcfgs, Cfg from pyiron_contrib.atomistics.mlip.potential import MtpPotential @@ -28,8 +29,7 @@ gpa_to_ev_ang = 1e22 / scipy.constants.physical_constants['joule-electron volt relationship'][0] - -class Mlip(GenericJob): +class Mlip(GenericJob, PotentialFit): def __init__(self, project, job_name): super(Mlip, self).__init__(project, job_name) self.__version__ = '0.1.0' @@ -68,6 +68,22 @@ def potential_files(self): if os.path.exists(pot) and os.path.exists(states): return [pot, states] + def _get_elements(self): + """ + Return elements in training in insertion order, i.e. elements seen earlier get lower indices. + """ + elements = [] + for job_id in self._job_dict: + j = self.project.inspect(job_id) + if j["NAME"] == "TrainingContainer": + candidates = j.to_object().get_elements() + else: + candidates = j["input/structure/species"] + for e in candidates: + if e not in elements: + elements.append(e) + return elements + def potential_dataframe(self, elements=None): """ :class:`pandas.DataFrame`: potential dataframe for lammps jobs @@ -84,7 +100,7 @@ def potential_dataframe(self, elements=None): if elements is None: elements = self.input["species"] if elements is None: - raise ValueError("elements not defined in input, elements must be explicitely passed!") + elements = self._get_elements() # AAAH if self.status.finished: return pd.DataFrame({ @@ -459,6 +475,21 @@ def _find_potential(potential_name): raise ValueError('Potential not found!') + # PotentialFit Implementation + def _add_training_data(self, container): + self.add_job_to_fitting(container.id, 0, container.number_of_structures, 1) + + def _get_training_data(self): + # TODO/BUG: only works after input is written for now, instead this should go over _job_ + return self["input/training_data"].to_object() + + def _get_predicted_data(self): + return self["output/training_efs"].to_object() + + def get_lammps_potential(self): + return self.potential_dataframe() + + class MlipParameter(GenericParameters): def __init__(self, separator_char=' ', comment_char='#', table_name="mlip_inp"): super(MlipParameter, self).__init__(separator_char=separator_char, comment_char=comment_char, From 75aa8d245cc81b16d8c15af43e5e876a3686d9b0 Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Wed, 19 Jan 2022 17:17:11 +0100 Subject: [PATCH 152/434] Fix docstring --- pyiron_contrib/atomistics/ml/potentialfit.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pyiron_contrib/atomistics/ml/potentialfit.py b/pyiron_contrib/atomistics/ml/potentialfit.py index e8225329c..f1416d682 100644 --- a/pyiron_contrib/atomistics/ml/potentialfit.py +++ b/pyiron_contrib/atomistics/ml/potentialfit.py @@ -17,7 +17,8 @@ class PotentialFit(abc.ABC): (at least) corresponding energies and forces, but additional (per structure or atom) maybe added. Subclasses of :class:`~.TrainingContainer` that define and handle such data are explicitly allowed. - :property:`~.training_data` and :property:`~.predicted_data` can be used to access + :property:`~.training_data` and :property:`~.predicted_data` can be used to access the initial training data and the + predicted data on them after the fit. """ @abc.abstractmethod From c5b8ac40e24cbfb2431cfc8c6218d7717583af7a Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Thu, 5 May 2022 14:18:23 +0200 Subject: [PATCH 153/434] Fix typo --- pyiron_contrib/atomistics/ml/potentialfit.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pyiron_contrib/atomistics/ml/potentialfit.py b/pyiron_contrib/atomistics/ml/potentialfit.py index f1416d682..ec054e73e 100644 --- a/pyiron_contrib/atomistics/ml/potentialfit.py +++ b/pyiron_contrib/atomistics/ml/potentialfit.py @@ -39,7 +39,7 @@ def add_training_data(self, container: TrainingContainer) -> None: else: raise ValueError("Data can only be added before fitting is started!") - @abstract + @abc.abstractmethod def _get_training_data(self) -> FlattenedStorage: pass @@ -53,7 +53,7 @@ def training_data(self) -> FlattenedStorage: """ return self._get_training_data() - @abstract + @abc.abstractmethod def _get_predicted_data(self) -> FlattenedStorage: pass @@ -94,7 +94,7 @@ def plot(self): plt.hist(energy_train - energy_pred) plt.xlabel("Training Error [eV]") - @abstract + @abc.abstractmethod def get_lammps_potential(self) -> pd.DataFrame: """ Return a pyiron compatible dataframe that defines a potential to be used with a Lammps job (or subclass From 8fabdc51213a8c3adab4155d00e931a7d7c14bf4 Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Thu, 5 May 2022 14:20:35 +0200 Subject: [PATCH 154/434] Fix off-by-one when passing training data --- pyiron_contrib/atomistics/mlip/mlip.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyiron_contrib/atomistics/mlip/mlip.py b/pyiron_contrib/atomistics/mlip/mlip.py index 4f4e9258d..78362f638 100644 --- a/pyiron_contrib/atomistics/mlip/mlip.py +++ b/pyiron_contrib/atomistics/mlip/mlip.py @@ -477,7 +477,7 @@ def _find_potential(potential_name): # PotentialFit Implementation def _add_training_data(self, container): - self.add_job_to_fitting(container.id, 0, container.number_of_structures, 1) + self.add_job_to_fitting(container.id, 0, container.number_of_structures - 1, 1) def _get_training_data(self): # TODO/BUG: only works after input is written for now, instead this should go over _job_ From cda2d0946a91e96785ed00431df611eb9a231411 Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Thu, 5 May 2022 15:39:28 +0200 Subject: [PATCH 155/434] Add missing import --- pyiron_contrib/atomistics/ml/potentialfit.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pyiron_contrib/atomistics/ml/potentialfit.py b/pyiron_contrib/atomistics/ml/potentialfit.py index ec054e73e..f2ebca931 100644 --- a/pyiron_contrib/atomistics/ml/potentialfit.py +++ b/pyiron_contrib/atomistics/ml/potentialfit.py @@ -5,6 +5,7 @@ import abc import pandas as pd +import matplotlib.pyplot as plt from pyiron_base import FlattenedStorage from pyiron_contrib.atomistics.atomistics.job.trainingcontainer import TrainingContainer From bad975b0e3aabe49047ad7b1968d2439053865ea Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Thu, 5 May 2022 16:28:25 +0200 Subject: [PATCH 156/434] Do not mess up shape of energy arrays --- pyiron_contrib/atomistics/mlip/mlip.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/pyiron_contrib/atomistics/mlip/mlip.py b/pyiron_contrib/atomistics/mlip/mlip.py index 78362f638..a1d4f3e2b 100644 --- a/pyiron_contrib/atomistics/mlip/mlip.py +++ b/pyiron_contrib/atomistics/mlip/mlip.py @@ -161,10 +161,9 @@ def write_input(self): species = np.array(species) input_store = StructureStorage() - input_store.add_array('energy', dtype=np.float64, shape=(1,), per='chunk') + input_store.add_array('energy', dtype=np.float64, shape=(), per='chunk') input_store.add_array('forces', dtype=np.float64, shape=(3,), per='element') input_store.add_array('stress', dtype=np.float64, shape=(6,), per='chunk') - input_store.add_array('grade', dtype=np.float64, shape=(1,), per='chunk') for cfg in loadcfgs(os.path.join(self.working_directory, "training.cfg")): struct = Atoms(symbols=species[np.cast[np.int64](cfg.types)], positions=cfg.pos, cell=cfg.lat, pbc=[True]*3) # HACK for pbc input_store.add_structure(struct, identifier=cfg.desc, @@ -196,20 +195,20 @@ def collect_output(self): self._potential.load(os.path.join(self.working_directory, "Trained.mtp_")) training_store = FlattenedStorage() - training_store.add_array('energy', dtype=np.float64, shape=(1,), per='chunk') + training_store.add_array('energy', dtype=np.float64, shape=(), per='chunk') training_store.add_array('forces', dtype=np.float64, shape=(3,), per='element') training_store.add_array('stress', dtype=np.float64, shape=(6,), per='chunk') - training_store.add_array('grade', dtype=np.float64, shape=(1,), per='chunk') + training_store.add_array('grade', dtype=np.float64, shape=(), per='chunk') for cfg in loadcfgs(os.path.join(self.working_directory, "training_efs.cfg")): training_store.add_chunk(len(cfg.pos), identifier=cfg.desc, energy=cfg.energy, forces=cfg.forces, stress=cfg.stresses, grade=cfg.grade ) testing_store = FlattenedStorage() - testing_store.add_array('energy', dtype=np.float64, shape=(1,), per='chunk') + testing_store.add_array('energy', dtype=np.float64, shape=(), per='chunk') testing_store.add_array('forces', dtype=np.float64, shape=(3,), per='element') testing_store.add_array('stress', dtype=np.float64, shape=(6,), per='chunk') - testing_store.add_array('grade', dtype=np.float64, shape=(1,), per='chunk') + testing_store.add_array('grade', dtype=np.float64, shape=(), per='chunk') for cfg in loadcfgs(os.path.join(self.working_directory, "testing_efs.cfg")): testing_store.add_chunk(len(cfg.pos), identifier=cfg.desc, energy=cfg.energy, forces=cfg.forces, stress=cfg.stresses, grade=cfg.grade From a529b635f1dc97d2bbd8fd5f57d70542e483ba02 Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Thu, 5 May 2022 16:37:28 +0200 Subject: [PATCH 157/434] Do not save grades for input structures They were not properly saved before and not necessary right now, so do not bother allocating them for now. --- pyiron_contrib/atomistics/mlip/mlip.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/pyiron_contrib/atomistics/mlip/mlip.py b/pyiron_contrib/atomistics/mlip/mlip.py index a1d4f3e2b..b70b5f13e 100644 --- a/pyiron_contrib/atomistics/mlip/mlip.py +++ b/pyiron_contrib/atomistics/mlip/mlip.py @@ -198,20 +198,18 @@ def collect_output(self): training_store.add_array('energy', dtype=np.float64, shape=(), per='chunk') training_store.add_array('forces', dtype=np.float64, shape=(3,), per='element') training_store.add_array('stress', dtype=np.float64, shape=(6,), per='chunk') - training_store.add_array('grade', dtype=np.float64, shape=(), per='chunk') for cfg in loadcfgs(os.path.join(self.working_directory, "training_efs.cfg")): training_store.add_chunk(len(cfg.pos), identifier=cfg.desc, - energy=cfg.energy, forces=cfg.forces, stress=cfg.stresses, grade=cfg.grade + energy=cfg.energy, forces=cfg.forces, stress=cfg.stresses ) testing_store = FlattenedStorage() testing_store.add_array('energy', dtype=np.float64, shape=(), per='chunk') testing_store.add_array('forces', dtype=np.float64, shape=(3,), per='element') testing_store.add_array('stress', dtype=np.float64, shape=(6,), per='chunk') - testing_store.add_array('grade', dtype=np.float64, shape=(), per='chunk') for cfg in loadcfgs(os.path.join(self.working_directory, "testing_efs.cfg")): testing_store.add_chunk(len(cfg.pos), identifier=cfg.desc, - energy=cfg.energy, forces=cfg.forces, stress=cfg.stresses, grade=cfg.grade + energy=cfg.energy, forces=cfg.forces, stress=cfg.stresses ) with self.project_hdf5.open('output') as hdf5_output: From a4aada019e702b3904e76ce756b6c201feeae569 Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Thu, 5 May 2022 17:36:06 +0200 Subject: [PATCH 158/434] Document usage of TrainingStorage --- pyiron_contrib/atomistics/ml/potentialfit.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pyiron_contrib/atomistics/ml/potentialfit.py b/pyiron_contrib/atomistics/ml/potentialfit.py index f2ebca931..e15ea13b3 100644 --- a/pyiron_contrib/atomistics/ml/potentialfit.py +++ b/pyiron_contrib/atomistics/ml/potentialfit.py @@ -8,7 +8,7 @@ import matplotlib.pyplot as plt from pyiron_base import FlattenedStorage -from pyiron_contrib.atomistics.atomistics.job.trainingcontainer import TrainingContainer +from pyiron_contrib.atomistics.atomistics.job.trainingcontainer import TrainingContainer, TrainingStorage class PotentialFit(abc.ABC): """ @@ -41,16 +41,16 @@ def add_training_data(self, container: TrainingContainer) -> None: raise ValueError("Data can only be added before fitting is started!") @abc.abstractmethod - def _get_training_data(self) -> FlattenedStorage: + def _get_training_data(self) -> TrainingStorage: pass @property - def training_data(self) -> FlattenedStorage: + def training_data(self) -> TrainingStorage: """ Return all training data added so far. Returns: - :class:`pyiron_base.FlattenedStorage`: container holding all training data + :class:`pyiron_contrib.atomistics.atomistics.job.trainingcontainer.TrainingStorage`: container holding all training data """ return self._get_training_data() From 7553bd3084165d568f5af9639276f57566ae8c84 Mon Sep 17 00:00:00 2001 From: Niklas Leimeroth Date: Fri, 6 May 2022 17:17:05 +0200 Subject: [PATCH 159/434] blanket impl --- pyiron_contrib/atomistics/atomicrex/base.py | 42 +++++++++++++------ .../atomistics/atomicrex/structure_list.py | 8 ++++ pyiron_contrib/atomistics/ml/potentialfit.py | 16 +------ 3 files changed, 40 insertions(+), 26 deletions(-) diff --git a/pyiron_contrib/atomistics/atomicrex/base.py b/pyiron_contrib/atomistics/atomicrex/base.py index e147fd8c4..57f91a55e 100644 --- a/pyiron_contrib/atomistics/atomicrex/base.py +++ b/pyiron_contrib/atomistics/atomicrex/base.py @@ -4,8 +4,9 @@ """Pyiron interface to atomicrex""" import numpy as np +import pandas as pd -from pyiron_base import state, GenericJob, Executable +from pyiron_base import state, GenericJob, Executable, FlattenedStorage from pyiron_contrib.atomistics.atomicrex.general_input import ( GeneralARInput, @@ -15,16 +16,10 @@ from pyiron_contrib.atomistics.atomicrex.potential_factory import ARPotFactory from pyiron_contrib.atomistics.atomicrex.output import Output from pyiron_contrib.atomistics.atomicrex.function_factory import FunctionFactory +from pyiron_contrib.atomistics.ml.potentialfit import PotentialFit +from pyiron_contrib.atomistics.atomistics.job.trainingcontainer import TrainingContainer, TrainingStorage - -## Class defined for future addition of other codes -## Not sure which functionality (if any) can be extracted yet, but a similar pattern is followed in other pyiron modules -class PotentialFittingBase(GenericJob): - def __init__(self, project, job_name): - super().__init__(project, job_name) - - -class AtomicrexBase(PotentialFittingBase): +class AtomicrexBase(GenericJob, PotentialFit): __version__ = "0.1.0" __hdf_version__ = "0.1.0" """Class to set up and run atomicrex jobs""" @@ -248,8 +243,7 @@ def _executable_activate(self, enforce=False): # instead of the potential_as_pd_df function @property def lammps_potential(self): - pot = self.potential_as_pd_df() - return pot + return self.potential_as_pd_df() def potential_as_pd_df(self): """ @@ -259,6 +253,30 @@ def potential_as_pd_df(self): return self.potential._potential_as_pd_df(job=self) + #### PotentialFit methods + def _add_training_data(self, container: TrainingContainer) -> None: + self.structures.add_training_data(container) + + def _get_training_data(self) -> TrainingStorage: + return self.structures.get_training_data() + + def _get_predicted_data(self) -> FlattenedStorage: + return self.structures.get_predicted_data() + + def get_lammps_potential(self) -> pd.DataFrame: + """ + Return a pyiron compatible dataframe that defines a potential to be used with a Lammps job (or subclass + thereof). + + Returns: + DataFrame: contains potential information to be used with a Lammps job. + """ + return self.potential_as_pd_df() + + @property + def plot(self): + return self.structures.plot + class Factories: """ Provides conventient acces to other factory classes. diff --git a/pyiron_contrib/atomistics/atomicrex/structure_list.py b/pyiron_contrib/atomistics/atomicrex/structure_list.py index cbca1e7a9..3b76d237a 100644 --- a/pyiron_contrib/atomistics/atomicrex/structure_list.py +++ b/pyiron_contrib/atomistics/atomicrex/structure_list.py @@ -56,6 +56,14 @@ def __init__(self, num_atoms=1, num_structures=1): pass self._prepared_plotting = False + @property + def training_data(self): + pass + + @property + def predicted_data(self): + pass + def add_structure( self, structure, diff --git a/pyiron_contrib/atomistics/ml/potentialfit.py b/pyiron_contrib/atomistics/ml/potentialfit.py index e15ea13b3..f8996b71b 100644 --- a/pyiron_contrib/atomistics/ml/potentialfit.py +++ b/pyiron_contrib/atomistics/ml/potentialfit.py @@ -76,24 +76,12 @@ def predicted_data(self) -> FlattenedStorage: else: raise ValueError("Data can only be accessed after successful fit!") + @property def plot(self): """ Plots correlation and (training) error histograms. """ - if not self.status.finished: - raise ValueError("Results can only be plotted after job finished successfully!") - - energy_train = self.training_data["energy"] / self.training_data["length"] - energy_pred = self.predicted_data["energy"] / self.predicted_data["length"] - - plt.subplot(1, 2, 1) - plt.scatter(energy_train, energy_pred) - plt.xlabel("True Energy Per Atom [eV]") - plt.ylabel("Predicted Energy Per Atom [eV]") - - plt.subplot(1, 2, 2) - plt.hist(energy_train - energy_pred) - plt.xlabel("Training Error [eV]") + raise NotImplementedError("Implementation of interface to TrainingPlots in subclass necessary") @abc.abstractmethod def get_lammps_potential(self) -> pd.DataFrame: From b1d6951cb88c456a4515eefcea87c528ba016a0e Mon Sep 17 00:00:00 2001 From: Alexander Knoll Date: Sat, 7 May 2022 16:32:37 +0200 Subject: [PATCH 160/434] Wrap runnerase storageclasses in HDF-able classes. --- .../atomistics/runner/storageclasses.py | 376 ++++++++++++++++++ 1 file changed, 376 insertions(+) create mode 100644 pyiron_contrib/atomistics/runner/storageclasses.py diff --git a/pyiron_contrib/atomistics/runner/storageclasses.py b/pyiron_contrib/atomistics/runner/storageclasses.py new file mode 100644 index 000000000..e850e1ce0 --- /dev/null +++ b/pyiron_contrib/atomistics/runner/storageclasses.py @@ -0,0 +1,376 @@ +# coding: utf-8 +# Copyright (c) Georg-August-Universität Göttingen - Behler Group +# Distributed under the terms of "New BSD License", see the LICENSE file. +"""Class Overrides for all `runnerase` storage classes. + +The ASE calculator for RuNNer, provided by the Python package `runnerase`, +stores data like the values of symmetry functions or the weights of atomic +neural networks in custom classes. However, these classes generally do not know +how to write themselves to HDF5 storage format. Therefore, these classes are +extended in this module with additional functions, typically `to_hdf(...)` and +`from_hdf(...)`. + +Attributes +---------- + SymmetryFunctionSet : runnerase.SymmetryFunctionSet + Job class for generating and evaluating potential energy surfaces using + RuNNer. + +Reference +--------- + [RuNNer online documentation](https://theochem.gitlab.io/runner) +""" + +from typing import Optional +from abc import abstractmethod + + +import numpy as np + +from runnerase.symmetryfunctions import SymmetryFunctionSet +from runnerase.storageclasses import (RunnerSymmetryFunctionValues, + RunnerStructureSymmetryFunctionValues, + RunnerSplitTrainTest, + RunnerFitResults, + RunnerWeights, RunnerScaling) +from pyiron_base import ProjectHDFio +from pyiron_base.interfaces.has_hdf import HasHDF +from pyiron_base import FlattenedStorage + +from .utils import pad, unpad + + +class HDFSymmetryFunctionValues(FlattenedStorage): + """Extend runnerase RunnerSymmetryFunctionValues with HDF5 compatibility.""" + + __hdf_version__ = '0.3.0' + + def from_runnerase( + self, + runnerase_sfvalues: RunnerSymmetryFunctionValues + ) -> None: + """Fill `self` with information of the corresponding `runnerase` object. + + `runnerase` stores the symmetry function values of each structure in + a separate `RunnerStructureSymmetryFunctionValues` object. However, + it is very inefficient to read and write all of this information + separately into HDF5 storage. Therefore, we use a `FlattenedStorage` + where all the symmetry function values of all structures are stored + in one large flat array. + + Matters are complicated further because `FlattenedStorage` only accepts + data chunks (read here: structures) where all different arrays of + information have the same length. Unfortunately, one can have different + numbers of symmetry functions for each element and varying numbers of + elements for each structure in a training dataset. + + The solution here is to `pad` the sfvalues of each group of elements in + one structure with rows filled with `np.NaN`. This way, all arrays for + one structure have length `number_of_atoms` and can be efficiently + stored and retrieved even for large datasets. + + Parameters + ---------- + runnerase_sfvalues : RunnerSymmetryFunctionValues + A `runnerase` class object containing the symmetry function values + for a whole dataset. + """ + for structure_sfvalues in runnerase_sfvalues.data: + + # Preprocess the symmetry function value arrays. + sfvalues_arrays = {} + for element, sfvalues in structure_sfvalues.data.items(): + name = f'sfvalues_{element}' + shape = (sfvalues.shape[1],) + # Add arrays for storing the symmetry function values of all + # atoms of the same `element`, unless they are already present. + if name not in self.list_arrays(): + self.add_array(name, shape=shape, dtype=np.float64, + per='element', fill=np.NaN) + + # Pad the sfvalues of the current `element` with `np.NaN` rows, + # so that the total length is equal to the number of atoms in + # the structure. + sfvalues_padded = pad(sfvalues, len(structure_sfvalues)) + + sfvalues_arrays[name] = sfvalues_padded + + self.add_chunk( + len(structure_sfvalues), + energy_total=structure_sfvalues.energy_total, + energy_short=structure_sfvalues.energy_short, + energy_elec=structure_sfvalues.energy_elec, + charge=structure_sfvalues.charge, + **sfvalues_arrays + ) + + def to_runnerase(self) -> RunnerSymmetryFunctionValues: + """Create the corresponding `runnerase` object from `self`. + + Returns + ---------- + runnerase_sfvalues : RunnerSymmetryFunctionValues + A `runnerase` class object containing the symmetry function values + for a whole dataset. + """ + runnerase_sfvalues = RunnerSymmetryFunctionValues() + + for chunk_idx in range(len(self)): + # Create a new object for storing the sfvalues of one structure. + struct_sfvalues = RunnerStructureSymmetryFunctionValues() + + # Fill the object with per-chunk properties. + struct_sfvalues.energy_total = self['energy_total', chunk_idx] + struct_sfvalues.energy_short = self['energy_short', chunk_idx] + struct_sfvalues.energy_elec = self['energy_elec', chunk_idx] + struct_sfvalues.charge = self['charge', chunk_idx] + + # Read the symmetry function values. + for arrayname in self.list_arrays(): + if arrayname.startswith('sfvalues'): + element = arrayname.split('_')[1] + sfvalues = self[f'sfvalues_{element}', chunk_idx] + struct_sfvalues.data[element] = unpad(sfvalues) + + # Append the structure to the container object + # `RunnerSymmetryFunctionValues`. + runnerase_sfvalues.data.append(struct_sfvalues) + + return runnerase_sfvalues + + +class RunneraseHDFMixin(HasHDF): + """Extend RunnerStructureSymmetryFunctionValues with HDF5 compatibility.""" + + __hdf_version__ = '0.3.0' + + @property + @abstractmethod + def runnerase_properties(self): + """Define the class properties stored in `self.baseclass` objects.""" + ... + + @property + @abstractmethod + def baseclass(self): + """Define the base class which is wrapped by this HDF class.""" + ... + + def from_runnerase( + self, + runnerase_class + ) -> None: + """Fill `self` with information of the corresponding `runnerase` object. + + Parameters + ---------- + runnerase_split : RunnerSplitTrainTest + A `runnerase` class object containing the split between training + and testing data. + """ + for prop in self.runnerase_properties: + self.__dict__[prop] = runnerase_class.__dict__[prop] + + def to_runnerase(self) -> RunnerSplitTrainTest: + """Create the corresponding `runnerase` object from `self`. + + Returns + ---------- + runnerase_split : RunnerSplitTrainTest + A `runnerase` class object containing the split between training + and testing data. + """ + runnerase_class = self.baseclass() + + for prop in self.runnerase_properties: + runnerase_class.__dict__[prop] = self.__dict__[prop] + + return runnerase_class + + def _to_hdf( + self, + hdf: ProjectHDFio, + group_name: Optional[str] = None + ) -> None: + """Write `self` to HDF5 storage. + + Parameters + ---------- + hdf : ProjectHDFio + The HDF file where `self` will be stored. + group_name : str + The name of the subgroup. + """ + if group_name is None: + group_name = self._get_hdf_group_name() + + # Store HDF node metadata. + with hdf.open(group_name) as hdf_group: + hdf_group['NAME'] = self.__class__.__name__ + hdf_group['TYPE'] = str(type(self)) + hdf_group['HDF_VERSION'] = self.__hdf_version__ + + for idx, prop in enumerate(self.runnerase_properties): + hdf_group[f'{prop}__index_{idx}'] = self.__dict__[prop] + + def _from_hdf( + self, + hdf: ProjectHDFio, + group_name: Optional[str] = None, + version: Optional[str] = None + ) -> 'HDFSplitTrainTest': + """Read `self` from HDF5 storage. + + Parameters + ---------- + hdf : ProjectHDFio + The HDF file where `self` will be stored. + group_name : str + The name of the subgroup. + """ + if version != self.__hdf_version__: + raise RuntimeError('Invalid HDF5 version found while reading ' + + self.__class__.__name__) + + if group_name is None: + group_name = self._get_hdf_group_name() + + # Open HDF file at the right group with a context manager. + with hdf.open(group_name) as hdf_group: + for node in hdf_group.list_nodes(): + for prop in self.runnerase_properties: + if prop in node: + self.__dict__[prop] = hdf_group[node] + + return self + + def _get_hdf_group_name(self): + return self.__class__.__name__ + + +class HDFSymmetryFunctionSet(SymmetryFunctionSet, RunneraseHDFMixin): + """Extend runnerase SymmetryFunctionSet with HDF5 compatibility.""" + + __hdf_version__ = '0.3.0' + + @property + def runnerase_properties(self): + """Show class properties stored in `SymmetryFunctionSet` objects.""" + return ['_sets', '_symmetryfunctions', 'min_distances'] + + @property + def baseclass(self): + """Define the base class which is wrapped by this HDF class.""" + return SymmetryFunctionSet + + def _to_hdf( + self, + hdf: ProjectHDFio + ) -> None: + """Write `self` to HDF5 storage. + + `runnerase`s SymmetryFunctionSet has the convenient property that + all symmetry functions can be written to and read from a list + representation. Therefore, they are also stored as lists in HDF format. + + Parameters + ---------- + hdf : ProjectHDFio + The HDF file where `self` will be stored. + """ + for idx, sfset in enumerate(self.sets): + hdfset = HDFSymmetryFunctionSet() + hdfset.from_runnerase(sfset) + hdfset.to_hdf(hdf=hdf, group_name=f'set__index_{idx}') + + symmetryfunctions = [sf.to_list() for sf in self.symmetryfunctions] + hdf['symmetryfunctions__index_0'] = symmetryfunctions + + def _from_hdf( + self, + hdf: ProjectHDFio, + version: Optional[str] = None + ) -> 'HDFSplitTrainTest': + """Read `self` from HDF5 storage. + + Parameters + ---------- + hdf : ProjectHDFio + The HDF file where `self` will be stored. + group_name : str + The name of the subgroup. + """ + if version != self.__hdf_version__: + raise RuntimeError('Invalid HDF5 version found while reading ' + + self.__class__.__name__) + + # Reload symmetry function sets. + for group in hdf.list_groups(): + if group.startswith('set'): + new_set = hdf.__getitem__(group).to_object() + self.append(new_set) + + for node in hdf.list_nodes(): + # Reload symmetry functions. + if node.startswith('symmetryfunctions'): + sflist = hdf.__getitem__(node) + self.from_list(sflist) + + return self + + +class HDFSplitTrainTest(RunnerSplitTrainTest, RunneraseHDFMixin): + """Mix HDF5 compatibility into RunnerSplitTrainTest`.""" + + @property + def runnerase_properties(self): + """Show class properties stored in `RunnerSplitTrainTest` objects.""" + return ['train', 'test'] + + @property + def baseclass(self): + """Define the base class which is wrapped by this HDF class.""" + return RunnerSplitTrainTest + + +class HDFFitResults(RunnerFitResults, RunneraseHDFMixin): + """Mix HDF5 compatibility into RunnerFitResults`.""" + + @property + def runnerase_properties(self): + """Show class properties stored in `RunnerFitResults` objects.""" + return ['epochs', 'rmse_energy', 'rmse_forces', 'rmse_charge', + 'opt_rmse_epoch', 'units'] + + @property + def baseclass(self): + """Define the base class which is wrapped by this HDF class.""" + return RunnerFitResults + + +class HDFWeights(RunnerWeights, RunneraseHDFMixin): + """Mix HDF5 compatibility into RunnerWeights`.""" + + @property + def runnerase_properties(self): + """Show class properties stored in `RunnerWeights` objects.""" + return ['data'] + + @property + def baseclass(self): + """Define the base class which is wrapped by this HDF class.""" + return RunnerWeights + + +class HDFScaling(RunnerScaling, RunneraseHDFMixin): + """Mix HDF5 compatibility into RunnerScaling`.""" + + @property + def runnerase_properties(self): + """Show class properties stored in `RunnerScaling` objects.""" + return ['data', 'target_min', 'target_max'] + + @property + def baseclass(self): + """Define the base class which is wrapped by this HDF class.""" + return RunnerScaling From 2652fb1be0810f777ad4c9e0a13f2c249a42b470 Mon Sep 17 00:00:00 2001 From: Alexander Knoll Date: Sat, 7 May 2022 16:32:48 +0200 Subject: [PATCH 161/434] Add utility functions. --- pyiron_contrib/atomistics/runner/utils.py | 107 ++++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 pyiron_contrib/atomistics/runner/utils.py diff --git a/pyiron_contrib/atomistics/runner/utils.py b/pyiron_contrib/atomistics/runner/utils.py new file mode 100644 index 000000000..9ec14d6b5 --- /dev/null +++ b/pyiron_contrib/atomistics/runner/utils.py @@ -0,0 +1,107 @@ +# encoding: utf-8 +# Copyright (c) Georg-August-Universität Göttingen - Behler Group +# Distributed under the terms of "New BSD License", see the LICENSE file. +"""Utility functions for use with the pyiron Hamiltonian of RuNNer. + +Attributes +---------- + RunnerTrainingContainer : TrainingContainer + Extension of the TrainingContainer class with a function to convert + to_ase. + +Reference +--------- + [RuNNer online documentation](https://theochem.gitlab.io/runner) +""" + +from typing import List, Optional + +import numpy as np + +from ase.atoms import Atoms + +from pyiron_atomistics.atomistics.structure.atoms import pyiron_to_ase + +from runnerase.singlepoint import RunnerSinglePointCalculator + +from ..atomistics.job.trainingcontainer import TrainingContainer + + +def container_to_ase(container: TrainingContainer) -> List[Atoms]: + """Convert a `TrainingContainer` into a list of ASE Atoms objects.""" + structure_lst = [] + + for row in list(zip(*container.to_list())): + + # Retrieve all properties, i.e. energy, forces, etc. + structure, energy, forces, totalcharge, charges, _ = row + + # Retrieve atomic positions, cell vectors, etc. + atoms = pyiron_to_ase(structure) + + # Attach properties to the Atoms object. + atoms.set_initial_charges(charges) + atoms.calc = RunnerSinglePointCalculator( + atoms=atoms, + energy=energy, + forces=forces, + totalcharge=totalcharge + ) + structure_lst.append(atoms) + + return structure_lst + + +def ase_to_container( + structures: List[Atoms], + container: Optional[TrainingContainer] +) -> None: + """Add `structures` to `TrainingContainer`.""" + for structure in structures: + + properties = {} + + # If the structure has a calculator attached to it, get energies, + # forces, etc. + if structure.calc is not None: + properties['energy'] = structure.get_potential_energy() + properties['forces'] = structure.get_forces() + properties['charges'] = structure.get_initial_charges() + + if isinstance(structure.calc, RunnerSinglePointCalculator): + properties['totalcharge'] = structure.calc.get_property( + 'totalcharge' + ) + else: + properties['totalcharge'] = np.sum(properties['charges']) + + # StructureStorage needs a `spins` property, but not all ASE Atoms + # objects have that. + if not hasattr(structure, 'spins'): + structure.spins = None + + container.include_structure(structure, **properties) + + + +def pad(array: np.ndarray, desired_length: int) -> np.ndarray: + """Pad `sfvalues` with `np.NaN` rows up to `num_atoms`.""" + # Create a sequence of missing indices. + all_indices = np.arange(0, desired_length, 1) + contained_indices = array[:, 0].astype(int) + missing_indices = np.delete(all_indices, contained_indices) + + # Create an np.NaN-filled array for the padded sfvalues data. + array_padded = np.empty(shape=(desired_length, array.shape[1])) + array_padded[:] = np.NaN + + # Insert first the data for this atom, second the np.NaN values. + array_padded[:len(contained_indices), :] = array + array_padded[len(contained_indices):, 0] = missing_indices + + return array_padded + + +def unpad(array: np.ndarray): + """Remove all rows containing NaN values from an ndarray.""" + return array[~np.isnan(array).any(axis=1), :] From 6026d2048b8d8802dfec7173a3396c2a09edaa1c Mon Sep 17 00:00:00 2001 From: Alexander Knoll Date: Sat, 7 May 2022 16:33:05 +0200 Subject: [PATCH 162/434] Make RunnerJob compatible with freshly published runnerase package. --- pyiron_contrib/atomistics/runner/job.py | 421 +++++++++++++----------- 1 file changed, 235 insertions(+), 186 deletions(-) diff --git a/pyiron_contrib/atomistics/runner/job.py b/pyiron_contrib/atomistics/runner/job.py index 9d45b44f6..caf286170 100644 --- a/pyiron_contrib/atomistics/runner/job.py +++ b/pyiron_contrib/atomistics/runner/job.py @@ -1,84 +1,72 @@ # coding: utf-8 -# Copyright (c) Max-Planck-Institut für Eisenforschung GmbH - Computational -# Materials Design (CM) Department +# Copyright (c) Georg-August-Universität Göttingen - Behler Group # Distributed under the terms of "New BSD License", see the LICENSE file. - """Pyiron Hamiltonian for machine-learning with RuNNer. The RuNNer Neural Network Energy Representation is a framework for the construction of high-dimensional neural network potentials developed in the group of Prof. Dr. Jörg Behler at Georg-August-Universität Göttingen. -Provides: - - PotentialFittingBase (GenericJob): Future base class for all fitting - codes in pyiron. Originally provided - in the AtomicRex module of - pyiron_contrib. - - RunnerStructureContainer (StructureStorage): Storage container for - RuNNer training datasets. - -FIXME: -At this point, RunnerFit heavily relies on an unpublished version of an ASE -calculator for RuNNer. - -Reference: - - RuNNer online documentation](https://theochem.gitlab.io/runner) +Attributes +---------- + RunnerJob : GenericJob, HasStorage + Job class for generating and evaluating potential energy surfaces using + RuNNer. + +Reference +--------- + [RuNNer online documentation](https://theochem.gitlab.io/runner) + +FIXME +----- +Group name wieder rausschmeißen +SymmetryFunctionValues no Class, instead make it a function each. +np.nan init ist nicht noetig, 0.0 geht auch. +theoretisch wäre das besser das nicht direkt zu machen. +ersetze trainingcontainer durch trainingstorage +Paket bitte auch via Conda Forge anbieten +Try inhereting from PotentialFit class + +use one trainingstorage, one for runner input structures and one for runner +output structures. """ +from typing import Optional, List, Union + import numpy as np +from ase.atoms import Atoms as ASEAtoms + from runnerase.io.ase import (read_results_mode1, read_results_mode2, read_results_mode3) from runnerase import Runner from runnerase.defaultoptions import DEFAULT_PARAMETERS from runnerase.singlepoint import RunnerSinglePointCalculator -from pyiron_base import state, Executable, DataContainer, GenericJob +from pyiron import Project +from pyiron_base import ProjectHDFio +from pyiron_base import state, Executable, GenericJob, DataContainer from pyiron_base.generic.object import HasStorage -from pyiron_atomistics.atomistics.structure.atoms import pyiron_to_ase + +from pyiron_atomistics.atomistics.structure.atoms import Atoms from ..atomistics.job.trainingcontainer import TrainingContainer +from .utils import container_to_ase +from .storageclasses import (HDFSymmetryFunctionSet, HDFSymmetryFunctionValues, + HDFSplitTrainTest, HDFFitResults, HDFWeights, + HDFScaling) __author__ = 'Alexander Knoll' -__copyright__ = 'Copyright 2021, Georg-August-Universität Göttingen - Behler '\ - 'Group' -__version__ = '0.1.0' __maintainer__ = 'Alexander Knoll' __email__ = 'alexander.knoll@chemie.uni-goettingen.de' +__copyright__ = 'Copyright 2022, Georg-August-Universität Göttingen - Behler '\ + 'Group' +__version__ = '0.1.0' __status__ = 'development' -__date__ = 'April 28, 2022' - - -class RunnerTrainingContainer(TrainingContainer): - """Store chemical structures as a Runner training dataset.""" - - def to_ase(self): - """Convert all attached structures to a list of ASE Atoms objects.""" - structure_lst = [] - for idx, structure in enumerate(self.iter_structures()): - # Retrieve all properties, i.e. energy, forces, etc. - energy = self._container.get_array('energy', idx) - forces = self._container.get_array('forces', idx) - charges = self._container.get_array('charges', idx) - totalcharge = self._container.get_array('totalcharge', idx) - - # Retrieve atomic positions, cell vectors, etc. - atoms = pyiron_to_ase(structure) - - # Attach properties to the Atoms object. - atoms.set_initial_charges(charges) - atoms.calc = RunnerSinglePointCalculator( - atoms=atoms, - energy=energy, - forces=forces, - totalcharge=totalcharge - ) - structure_lst.append(atoms) - - return structure_lst +__date__ = 'May 02, 2022' -class RunnerFit(GenericJob, HasStorage): +class RunnerJob(GenericJob, HasStorage): """Generate a potential energy surface using RuNNer. The RuNNer Neural Network Energy Representation (RuNNer) is a Fortran code @@ -87,106 +75,108 @@ class RunnerFit(GenericJob, HasStorage): Göttingen. RuNNer operates in three different modes: + - Mode 1: Calculation of symmetry function values. Symmetry functions - are many-body descriptors for the chemical environment of an - atom. + are many-body descriptors for the chemical environment of an atom. - Mode 2: Fitting of the potential energy surface. - Mode 3: Prediction. Use the previously generated high-dimensional - potential energy surface to predict the energy and force - of an unknown chemical configuration. + potential energy surface to predict the energy and force of an + unknown chemical configuration. The different modes generate a lot of output: + - Mode 1: - - sfvalues: The values of the symmetry functions for each - atom. + - sfvalues: The values of the symmetry functions for each atom. - splittraintest: which structures belong to the training and which - to the testing set. ASE needs this - information to generate the relevant input files - for RuNNer Mode 2. + to the testing set. ASE needs this information to generate the + relevant input files for RuNNer Mode 2. + - Mode 2: - - weights: The neural network weights. - - scaling: The symmetry function scaling factors. + - weights: The neural network weights. + - scaling: The symmetry function scaling factors. - - Mode 3: predict the total energy and atomic forces for a structure. + - Mode 3: + - energy + - forces - Examples: + Examples + -------- Starting a new calculation (Mode 1): ```python - from pyiron import Project - from job import RunnerFit - import ase.io.runner.runner as io + from pyiron import Project + from job import RunnerFit + from runnerase import read_runnerase - # Create an empty sample project and a new job. - pr = Project(path='example') - job = pr.create_job(RunnerFit, 'mode1') + # Create an empty sample project and a new job. + pr = Project(path='example') + job = pr.create_job(RunnerJob, 'mode1') - # Import training dataset and RuNNer settings from RuNNer input.data - # and input.nn files using ASE's I/O routines. - structures, options = io.read_runnerase('./') + # Import training dataset and RuNNer settings from RuNNer input.data + # and input.nn files using ASE's I/O routines. + structures, options = read_runnerase('./') - # Attach the information to the job. - job.structures = structures - job.input.update(options) + # Attach the information to the job. + job.structures = structures + job.input.update(options) - # Set the RuNNer Mode to 1. - job.input.runner_mode = 1 + # Set the RuNNer Mode to 1. + job.input.runner_mode = 1 - job.run() + job.run() + ``` Restarting Mode 1 and running Mode 2: ```python - job = Project('example')['mode1'].restart('mode2') - job.input.runner_mode = 2 - job.run() + job = Project('example')['mode1'].restart('mode2') + job.input.runner_mode = 2 + job.run() ``` Restarting Mode 2 and running Mode 3: ```python - job = Project('runnertest')['mode2'].restart('mode3') - job.input.runner_mode = 3 - job.run() + job = Project('runnertest')['mode2'].restart('mode3') + job.input.runner_mode = 3 + job.run() ``` """ - __name__ = 'RuNNer' + __name__ = 'RuNNerJob' # These properties are needed by RuNNer as input data (depending on the # chosen RuNNer mode). _input_properties = ['scaling', 'weights', 'sfvalues', 'splittraintest'] - # Define a default executable. - _executable = Executable( - codename='runner', - module='runner', - path_binary_codes=state.settings.resource_paths - ) - - def __init__(self, project, job_name, **kwargs): + def __init__(self, project: Project, job_name: str) -> None: """Initialize the class. - Args: - project (Project): The project container where the job is created. - job_name (str): The label of the job (used for all directories). + Parameters + ---------- + project : Project + The project container where the job is created. + job_name : str + The label of the job (used for all directories). """ # Initialize the base class. GenericJob.__init__(self, project=project, job_name=job_name) HasStorage.__init__(self) + # Create groups for storing calculation inputs and outputs. self.storage.create_group('input') self.storage.create_group('output') - self.storage.structures = RunnerTrainingContainer(project, job_name) + # FIXME: use TrainingStorage instead. + self.storage.structures = TrainingContainer(project, job_name) - self.storage.input.update(DEFAULT_PARAMETERS) + # Initialize optional RuNNer input data as class properties. + self.storage.sfvalues = HDFSymmetryFunctionValues() + self.storage.splittraintest = HDFSplitTrainTest() + self.storage.scaling = HDFScaling() + self.storage.weights = HDFWeights() - for prop in self._input_properties: - self.storage.create_group(prop) - - val = kwargs.pop(prop, None) - if val is not None: - self.storage[prop] = DataContainer(val) + # Set default parameters. + self.storage.input.update(DEFAULT_PARAMETERS) state.publications.add(self.publication) @@ -235,6 +225,16 @@ def publication(self): ] } + @property + def input(self) -> DataContainer: + """Show input options in storage.""" + return self.storage.input + + @property + def output(self): + """Show all calculation output in storage.""" + return self.storage.output + @property def scaling(self): """Show the symmetry function scaling data in storage.""" @@ -245,6 +245,11 @@ def weights(self): """Show the atomic neural network weights data in storage.""" return self.storage.weights + @weights.setter + def weights(self, weights: HDFWeights): + """Set the weights of the atomic neural networks in storage.""" + self.storage.weights = weights + @property def sfvalues(self): """Show the symmetry function value data in storage.""" @@ -256,40 +261,34 @@ def splittraintest(self): return self.storage.splittraintest @property - def input(self): - """Show input options in storage.""" - return self.storage.input - - @property - def output(self): - """Show all calculation output in storage.""" - return self.storage.output - - @property - def structures(self): + def structures(self) -> TrainingContainer: """Store a dataset consisting of many chemical structures.""" return self.storage.structures @structures.setter - def structures(self, structures): - """Store a dataset consisting of many chemical structures. - - Args: - structures (list): A list of ASE Atoms objects or Pyiron Atoms - objects which are to be stored. + def structures(self, container: TrainingContainer) -> None: + """Append structures to storage. + + Add a list of structures to storage. + + Parameters + ---------- + structures : List[Atoms] + A list of ASE Atoms objects or Pyiron Atoms objects which are + to be stored. + + Examples + -------- + ```python + >>> job.structures = [structure1, structure2] + >>> job.structures = [structure3, structure4] + >>> print(job.structures) + [structure1, structure2, structure3, structure4] + ``` """ - for structure in structures: - energy = structure.get_potential_energy() - - if isinstance(structure.calc, RunnerSinglePointCalculator): - totalcharge = structure.calc.get_property('totalcharge') - else: - totalcharge = np.sum(structure.get_initial_charges()) - - self.storage.structures.include_structure(structure, energy, - totalcharge=totalcharge) + self.storage.structures = container - def write_input(self): + def write_input(self) -> None: """Write the relevant job input files. This routine writes the input files for the job using the ASE Runner @@ -299,31 +298,41 @@ def write_input(self): # Pay attention to the different name: `structures` --> `dataset`. calc = Runner( label='pyiron', - dataset=self.structures.to_ase(), - scaling=self.scaling.to_builtin(), - weights=self.weights.to_builtin(), - sfvalues=self.sfvalues.to_builtin(), - splittraintest=self.splittraintest.to_builtin(), + dataset=container_to_ase(self.structures), + scaling=self.storage.scaling.to_runnerase(), + weights=self.storage.weights.to_runnerase(), + sfvalues=self.storage.sfvalues.to_runnerase(), + splittraintest=self.storage.splittraintest.to_runnerase(), **self.input.to_builtin() ) - # If no dataset were attached to the calculator, the single structure - # stored as the atoms property would be written instead. + # Set the correct elements of the system. + calc.set_elements() + + # If no seed was specified yet, choose a random value. + if 'random_seed' not in calc.parameters: + calc.set(random_seed=np.random.randint(1, 1000)) + + # If no dataset was attached to the calculator, the single structure + # stored as the atoms property will be written instead. atoms = calc.dataset or calc.atoms + + # Set the correct calculation directory and file prefix. calc.directory = self.working_directory + calc.prefix = f'mode{self.input.runner_mode}' - # Set the 'flags' which ASE uses to see which input files are written. + # Set the 'flags' which ASE uses to see which input files need to + # be written. targets = {1: 'sfvalues', 2: 'fit', 3: 'energy'} - system_changes = None # Always perform a new calculation. calc.write_input( atoms, - targets[self.input['runner_mode']], - system_changes + targets[self.input.runner_mode], + system_changes=None ) - def _executable_activate(self, enforce=False): - """Link to the Runner executable.""" + def _executable_activate(self, enforce: bool = False) -> None: + """Link to the RuNNer executable.""" if self._executable is None or enforce: self._executable = Executable( codename='runner', @@ -331,7 +340,7 @@ def _executable_activate(self, enforce=False): path_binary_codes=state.settings.resource_paths ) - def collect_output(self): + def collect_output(self) -> None: """Read and store the job results.""" # Compose job label (needed by the ASE I/O routines) and store dir. label = f'{self.working_directory}/mode{self.input.runner_mode}' @@ -341,78 +350,118 @@ def collect_output(self): # each structure and the information, which structure belongs to the # training and which to the testing set. if self.input.runner_mode == 1: - sfvalues, splittraintest = read_results_mode1(label, directory) + results = read_results_mode1(label, directory) + + # Transform sfvalues into the pyiron class for HDF5 storage and + # store it in the output dictionary. + sfvalues = HDFSymmetryFunctionValues() + sfvalues.from_runnerase(results['sfvalues']) self.output.sfvalues = sfvalues + + # Transform split data between training and testing set into the + # pyiron class for HDF5 storage and store it in the output + # dictionary. + splittraintest = HDFSplitTrainTest() + splittraintest.from_runnerase(results['splittraintest']) self.output.splittraintest = splittraintest # If successful, RuNNer Mode 2 returns the weights of the atomic neural # networks, the symmetry function scaling data, and the results of the # fitting process. - if self.input.runner_mode == 2: - fitresults, weights, scaling = read_results_mode2( - label, - directory - ) + elif self.input.runner_mode == 2: + results = read_results_mode2(label, directory) + + fitresults = HDFFitResults() + fitresults.from_runnerase(results['fitresults']) self.output.fitresults = fitresults + + weights = HDFWeights() + weights.from_runnerase(results['weights']) self.output.weights = weights + + scaling = HDFScaling() + scaling.from_runnerase(results['scaling']) self.output.scaling = scaling # If successful, RuNNer Mode 3 returns the energy and forces of the # structure for which it was executed. - if self.input.runner_mode == 3: - energy, forces = read_results_mode3(directory) - self.output.energy = energy - self.output.forces = forces + elif self.input.runner_mode == 3: + results = read_results_mode3(directory) + self.output.energy = results['energy'] + self.output.forces = results['forces'] - # Store all calculation rsults in the project's HDF5 file. + # Store all calculation results in the project's HDF5 file. self.to_hdf() - def to_hdf(self, hdf=None, group_name=None): + def to_hdf( + self, + hdf: Optional[ProjectHDFio] = None, + group_name: Optional[str] = None + ) -> None: + """Store all job information in HDF5 format. + + Parameters + ---------- + hdf : ProjectHDFio + HDF5-object which contains the project data. + group_name : str + Subcontainer name. """ - Store all job information in HDF5 format. + # Replace the runnerase class `SymmetryFunctionSet` by the extended + # class from the `storageclasses` module which knows how to write itself + # to hdf. + sfset = self.storage.input.pop('symfunction_short') + new_sfset = HDFSymmetryFunctionSet() + new_sfset.from_runnerase(sfset) + self.input.symfunction_short = new_sfset - Args: - hdf (ProjectHDFio, optional): HDF5-object which contains the - project data. - group_name (str, optional): Subcontainer name. - """ GenericJob.to_hdf(self, hdf=hdf, group_name=group_name) - HasStorage.to_hdf(self, hdf=self.project_hdf5, group_name="") - - def from_hdf(self, hdf=None, group_name=None): - """ - Reload all job information from HDF5 format. - - Args: - hdf (ProjectHDFio, optional): HDF5-object which contains the - project data. - group_name (str, optional): Subcontainer name. + HasStorage.to_hdf(self, hdf=self.project_hdf5, group_name='') + + def from_hdf( + self, + hdf: Optional[ProjectHDFio] = None, + group_name: Optional[str] = None + ) -> None: + """Reload all job information from HDF5 format. + + Parameters + ---------- + hdf : ProjectHDFio + HDF5-object which contains the project data. + group_name : str + Subcontainer name. """ GenericJob.from_hdf(self, hdf=hdf, group_name=group_name) - HasStorage.from_hdf(self, hdf=self.project_hdf5, group_name="") + HasStorage.from_hdf(self, hdf=self.project_hdf5, group_name='') - def restart(self, *args, **kwargs): - """ - Reload all calculation details. + def restart( + self, + job_name: Optional[str] = None, + job_type: Optional[str] = None + ) -> 'RunnerJob': + """Reload all calculation details. This procedure extends the base class `restart()` by setting results from previous calculations as input parameters to the new calculation. The recognized properties depend on the class variable self._input_properties (see class docstring for further details). - Returns: - new_ham (RunnerFit): the newly created RunnerFit object. + Returns + ------- + new_ham : RunnerJob + the newly created RunnerJob object. """ # Call the base class routine to generate the new Hamiltonian, which is - # a RunnerFit class instance. + # a RunnerJob class instance. # At this point, the Hamiltonian holds the input parameters, # structures, and outputs of the previous calculation. However, it # cannot access the relevant properties as input values which is # necessary for starting a new calculation. - new_ham = super().restart(*args, **kwargs) + new_ham = super().restart(job_name, job_type) for prop in self._input_properties: if prop in self.output.keys(): - new_ham.storage[prop] = DataContainer(self.output[prop]) + new_ham.storage[prop] = self.output[prop] return new_ham From 9dc79b4d36df9212e72ee962f7a2421aa2dc65ca Mon Sep 17 00:00:00 2001 From: Alexander Knoll Date: Sat, 7 May 2022 16:33:22 +0200 Subject: [PATCH 163/434] Add totalcharge and charges to TrainingContainer and TrainingStorage. --- .../atomistics/job/trainingcontainer.py | 124 ++++++++---------- 1 file changed, 56 insertions(+), 68 deletions(-) diff --git a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py index be40fb0b7..cc823c55b 100644 --- a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py +++ b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py @@ -51,16 +51,7 @@ def __init__(self, project, job_name): super().__init__(project=project, job_name=job_name) self.__name__ = "TrainingContainer" self.__hdf_version__ = "0.3.0" - self._container = StructureStorage() - self._container.add_array("energy", dtype=np.float64, per="chunk") - self._container.add_array("forces", shape=(3,), dtype=np.float64, per="element") - # save stress in voigt notation - self._container.add_array("stress", shape=(6,), dtype=np.float64, per="chunk") - # Store total (per-structure) and atomic charge information. - self._container.add_array('totalcharge', dtype=np.float64, per='chunk') - self._container.add_array("charges", dtype=np.float64, per="element") - - self._table_cache = None + self._container = TrainingStorage() self.input = DataContainer( {"save_neighbors": True, "num_neighbors": 12}, table_name="parameters" @@ -77,7 +68,16 @@ def include_job(self, job, iteration_step=-1): self._container.include_job(job, iteration_step) @deprecate("Use add_structure instead") - def include_structure(self, structure, energy, forces=None, stress=None, name=None): + def include_structure( + self, + structure, + energy, + forces=None, + totalcharge=None, + charges=None, + stress=None, + name=None + ): """ Add new structure to structure list and save energy and forces with it. @@ -91,7 +91,12 @@ def include_structure(self, structure, energy, forces=None, stress=None, name=No stress (6 array of float, optional): per structure stresses in voigt notation name (str, optional): name describing the structure """ - self._container.include_structure(structure, energy, forces, stress, name) + self._container.include_structure(structure, energy, + forces=forces, + totalcharge=totalcharge, + charges=charges, + stress=stress, + name=name) def include_dataset(self, dataset): """ @@ -235,25 +240,6 @@ def sample(self, name: str, selector: Callable[[StructureStorage, int], bool]) - return cont @property - def _table(self): - if self._table_cache is None or len(self._table_cache) != len(self._container): - self._table_cache = pd.DataFrame({ - "name": [self._container.get_array("identifier", i) - for i in range(len(self._container))], - "atoms": [self._container.get_structure(i) - for i in range(len(self._container))], - "energy": [self._container.get_array("energy", i) - for i in range(len(self._container))], - "totalcharge": [self._container.get_array("totalcharge", i) - for i in range(len(self._container))], - "forces": [self._container.get_array("forces", i) - for i in range(len(self._container))], - "charges": [self._container.get_array("charges", i) - for i in range(len(self._container))], - "stress": [self._container.get_array("stress", i) - for i in range(len(self._container))], - }) - self._table_cache["number_of_atoms"] = [len(s) for s in self._table_cache.atoms] def plot(self): """ :class:`.TrainingPlots`: plotting interface @@ -514,6 +500,10 @@ def __init__(self): self.add_array( "forces", shape=(3,), dtype=np.float64, per="element", fill=np.nan ) + # Store total (per-structure) and atomic charge information. + self.add_array('totalcharge', dtype=np.float64, per='chunk', + fill=np.nan) + self.add_array("charges", dtype=np.float64, per="element", fill=np.nan) # save stress in voigt notation self.add_array("stress", shape=(6,), dtype=np.float64, per="chunk", fill=np.nan) self._table_cache = None @@ -540,6 +530,8 @@ def to_pandas(self): "name": [self.get_array("identifier", i) for i in range(len(self))], "atoms": [self.get_structure(i) for i in range(len(self))], "energy": [self.get_array("energy", i) for i in range(len(self))], + "totalcharge": [self.get_array("totalcharge", i) for i in range(len(self))], + "charges": [self.get_array("charges", i) for i in range(len(self))], "forces": [self.get_array("forces", i) for i in range(len(self))], "stress": [self.get_array("stress", i) for i in range(len(self))], } @@ -563,21 +555,6 @@ def include_job(self, job, iteration_step=-1): forces = ff[iteration_step] else: forces = None - - # Retrieve total charge. - tc = job.output.totalcharge - if tc is not None: - totalcharge = tc[iteration_step] - else: - totalcharge = None - - # Retrieve atomic charges. - cc = job.output.charges - if cc is not None: - charges = cc[iteration_step] - else: - charges = None - # HACK: VASP work-around, current contents of pressures are meaningless, correct values are in # output/generic/stresses pp = job["output/generic/stresses"] @@ -590,14 +567,6 @@ def include_job(self, job, iteration_step=-1): if stress is not None: stress = np.asarray(stress) if stress.shape == (3, 3): - stress = np.array([stress[0, 0], stress[1 ,1], stress[2, 2], - stress[1, 2], stress[0, 2], stress[0, 1]]) - self.include_structure(job.get_structure(iteration_step=iteration_step), - energy=energy, totalcharge=totalcharge, - forces=forces, charges=charges, stress=stress, - name=job.name) - - def include_structure(self, structure, energy, totalcharge=None, forces=None, charges=None, stress=None, name=None): stress = np.array( [ stress[0, 0], @@ -617,7 +586,16 @@ def include_structure(self, structure, energy, totalcharge=None, forces=None, ch ) @deprecate("Use add_structure instead") - def include_structure(self, structure, energy, forces=None, stress=None, name=None): + def include_structure( + self, + structure, + energy, + forces=None, + totalcharge=None, + charges=None, + stress=None, + name=None + ): """ Add new structure to structure list and save energy and forces with it. @@ -632,11 +610,25 @@ def include_structure(self, structure, energy, forces=None, stress=None, name=No name (str, optional): name describing the structure """ self.add_structure( - structure, energy, identifier=name, forces=forces, stress=stress + structure, + energy, + identifier=name, + totalcharge=totalcharge, + charges=charges, + forces=forces, + stress=stress ) def add_structure( - self, structure, energy, identifier=None, forces=None, stress=None, **arrays + self, + structure, + energy, + identifier=None, + totalcharge=None, + charges=None, + forces=None, + stress=None, + **arrays ): data = {"energy": energy} if forces is not None: @@ -647,15 +639,7 @@ def add_structure( data["totalcharge"] = totalcharge if charges is not None: data["charges"] = charges - self._container.add_structure(structure, name, **data) - if self._table_cache: - self._table = self._table.append( - {"name": name, "atoms": structure, "energy": energy, - "totalcharge": totalcharge, - "forces": forces, "charges": charges, - "stress": stress, - "number_of_atoms": len(structure)}, - ignore_index=True) + super().add_structure(structure, identifier, **data) def include_dataset(self, dataset): """ @@ -665,7 +649,6 @@ def include_dataset(self, dataset): - name: human readable name of the structure - atoms(:class:`ase.Atoms`): the atomic structure - energy(float): energy of the whole structure - - totalcharge(float): charge of the whole structure - forces (Nx3 array of float): per atom forces, where N is the number of atoms in the structure - charges (Nx3 array of floats): - stress (6 array of float): per structure stress in voigt notation @@ -680,6 +663,10 @@ def include_dataset(self, dataset): kwargs["forces"] = row.forces if hasattr(row, "stress"): kwargs["stress"] = row.stress + if hasattr(row, "totalcharge"): + kwargs["totalcharge"] = row.totalcharge + if hasattr(row, "charges"): + kwargs["charges"] = row.charges self.add_structure(row.atoms, energy=row.energy, identifier=row.name, **kwargs) def to_list(self, filter_function=None): @@ -701,4 +688,5 @@ def to_list(self, filter_function=None): force_list = data_table.forces.to_list() charges_list = data_table.charges.to_list() num_atoms_list = data_table.number_of_atoms.to_list() - return structure_list, energy_list, force_list, num_atoms_list + return (structure_list, energy_list, force_list, totalcharge_list, + charges_list, num_atoms_list) From 2318312f13ac227c7bc20d47185cc81621f950d9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 May 2022 11:08:19 +0000 Subject: [PATCH 164/434] Bump matplotlib from 3.5.1 to 3.5.2 Bumps [matplotlib](https://github.com/matplotlib/matplotlib) from 3.5.1 to 3.5.2. - [Release notes](https://github.com/matplotlib/matplotlib/releases) - [Commits](https://github.com/matplotlib/matplotlib/compare/v3.5.1...v3.5.2) --- updated-dependencies: - dependency-name: matplotlib dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 895b7356c..5cb7c51b9 100644 --- a/setup.py +++ b/setup.py @@ -31,7 +31,7 @@ keywords='pyiron', packages=find_packages(exclude=["*tests*"]), install_requires=[ - 'matplotlib==3.5.1', + 'matplotlib==3.5.2', 'numpy==1.22.3', 'pyiron_base==0.5.12', 'scipy==1.8.0', From b55154395005216d46dce9ea11eb9d4293cd5c99 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 May 2022 11:08:24 +0000 Subject: [PATCH 165/434] Bump boto3 from 1.22.4 to 1.22.9 Bumps [boto3](https://github.com/boto/boto3) from 1.22.4 to 1.22.9. - [Release notes](https://github.com/boto/boto3/releases) - [Changelog](https://github.com/boto/boto3/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/boto/boto3/compare/1.22.4...1.22.9) --- updated-dependencies: - dependency-name: boto3 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 895b7356c..45c46bb1b 100644 --- a/setup.py +++ b/setup.py @@ -49,7 +49,7 @@ ], 'image': ['scikit-image==0.19.2'], 'generic': [ - 'boto3==1.22.4', + 'boto3==1.22.9', 'moto==3.1.7' ], }, From 3d9720d071e69ca056c559def93a9c08b7706fb3 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 9 May 2022 11:08:37 +0000 Subject: [PATCH 166/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 2eb45d3c4..cbc2eac70 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -5,7 +5,7 @@ dependencies: - coveralls - coverage - codacy-coverage -- matplotlib =3.5.1 +- matplotlib =3.5.2 - numpy =1.22.3 - pyiron_base =0.5.12 - pyiron_atomistics =0.2.45 From 8698caec9c50ed5bdd93bed37122491b755d28a4 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 9 May 2022 11:10:01 +0000 Subject: [PATCH 167/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 2eb45d3c4..f23e3ee13 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -14,5 +14,5 @@ dependencies: - seaborn =0.11.2 - scikit-image =0.19.2 - randspg =0.0.1 -- boto3 =1.22.4 +- boto3 =1.22.9 - moto =3.1.7 From 84e1d4338a065b8ce9c67d8b7aa0f9aae43e1703 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 May 2022 11:26:06 +0000 Subject: [PATCH 168/434] Bump moto from 3.1.7 to 3.1.8 Bumps [moto](https://github.com/spulec/moto) from 3.1.7 to 3.1.8. - [Release notes](https://github.com/spulec/moto/releases) - [Changelog](https://github.com/spulec/moto/blob/master/CHANGELOG.md) - [Commits](https://github.com/spulec/moto/compare/3.1.7...3.1.8) --- updated-dependencies: - dependency-name: moto dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 6278bcc36..a8a1f63d5 100644 --- a/setup.py +++ b/setup.py @@ -50,7 +50,7 @@ 'image': ['scikit-image==0.19.2'], 'generic': [ 'boto3==1.22.9', - 'moto==3.1.7' + 'moto==3.1.8' ], }, cmdclass=versioneer.get_cmdclass(), From 657116c2e68dc42bbb21ac1cf9e1ddf28e7609c6 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 9 May 2022 11:26:21 +0000 Subject: [PATCH 169/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 6c4274fb4..4952e56ae 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -15,4 +15,4 @@ dependencies: - scikit-image =0.19.2 - randspg =0.0.1 - boto3 =1.22.9 -- moto =3.1.7 +- moto =3.1.8 From 62f78f40151c77d070eab9fac16fbf169e47cdf6 Mon Sep 17 00:00:00 2001 From: Niklas Leimeroth Date: Wed, 11 May 2022 15:33:13 +0200 Subject: [PATCH 170/434] implementation --- .../atomistics/atomicrex/structure_list.py | 88 ++++++++++++++++--- 1 file changed, 74 insertions(+), 14 deletions(-) diff --git a/pyiron_contrib/atomistics/atomicrex/structure_list.py b/pyiron_contrib/atomistics/atomicrex/structure_list.py index 3b76d237a..5a0032a93 100644 --- a/pyiron_contrib/atomistics/atomicrex/structure_list.py +++ b/pyiron_contrib/atomistics/atomicrex/structure_list.py @@ -7,11 +7,15 @@ import numpy as np from numpy import ndarray -from pyiron_base import state, DataContainer +from pyiron_base import state, DataContainer, FlattenedStorage from pyiron_atomistics import Atoms, ase_to_pyiron from pyiron_atomistics.atomistics.structure.structurestorage import StructureStorage -from pyiron_contrib.atomistics.atomistics.job.trainingcontainer import TrainingPlots +from pyiron_contrib.atomistics.atomistics.job.trainingcontainer import ( + TrainingPlots, + TrainingContainer, + TrainingStorage, +) from pyiron_contrib.atomistics.atomicrex.fit_properties import ( ARFitPropertyList, ARFitProperty, @@ -38,10 +42,10 @@ def __init__(self, num_atoms=1, num_structures=1): num_atoms=num_atoms, num_structures=num_structures ) self._predefined_storage = DataContainer(table_name="predefined_structures") - self._structures.add_array("fit", dtype=bool, per="chunk") - self._structures.add_array("clamp", dtype=bool, per="chunk") - self._structures.add_array("predefined", dtype=bool, per="chunk") - self._structures.add_array("relative_weight", per="chunk") + self._structures.add_array("fit", dtype=bool, per="chunk", fill=True) + self._structures.add_array("clamp", dtype=bool, per="chunk", fill=True) + self._structures.add_array("predefined", dtype=bool, per="chunk", fill=False) + self._structures.add_array("relative_weight", per="chunk", fill=1.0) self.structure_file_path = None try: self._interactive_library = atomicrex.Job() @@ -56,14 +60,6 @@ def __init__(self, num_atoms=1, num_structures=1): pass self._prepared_plotting = False - @property - def training_data(self): - pass - - @property - def predicted_data(self): - pass - def add_structure( self, structure, @@ -525,6 +521,70 @@ def prepare_plotting(self, final_values=False): * self._structures.length ) + #### PotentialFit methods + def add_training_data(self, container: TrainingContainer) -> None: + storage = container._container + identifier = storage.get_array("identifier") + energy = storage.get_array("energy") + forces = storage.get_array("forces") + length = storage.get_arry("length") + start_index = storage.get_array("start_index") + for idx in range(len(storage)): + self.add_structure( + identifier=identifier[idx], + structure=storage.get_structure(frame=idx), + ) + self.add_scalar_fit_property( + prop="atomic-energy", + target_val=energy[idx]/length[idx], + tolerance=0.001, + ) + self.add_vector_fit_property( + prop="atomic-forces", + target_val=forces[start_index[idx]:start_index[idx]+length[idx]], + tolerance=0.01, + ) + + def get_training_data(self) -> TrainingStorage: + storage = TrainingStorage() + forces = self.fit_properties["atomic-forces"].target_val + atomic_energy = self.fit_properties["atomic-energy"].target_val + identifier = self._structures.get_array("identifier") + length = self._structures.get_arry("length") + start_index = storage.get_array("start_index") + for idx in len(self._structures): + storage.add_structure( + structure = self._structures.get_structure(frame=idx), + energy = atomic_energy[idx]*length[idx], + forces = forces[start_index[idx]:start_index[idx]+length[idx]], + identifier=identifier[idx], + ) + return storage + + def get_predicted_data(self) -> FlattenedStorage: + storage = TrainingStorage() + forces = self.fit_properties["atomic-forces"].final_val + atomic_energy = self.fit_properties["atomic-energy"].final_val + identifier = self._structures.get_array("identifier") + length = self._structures.get_arry("length") + start_index = storage.get_array("start_index") + for idx in len(self._structures): + storage.add_structure( + structure = self._structures.get_structure(frame=idx), + energy = atomic_energy[idx]*length[idx], + forces = forces[start_index[idx]:start_index[idx]+length[idx]], + identifier=identifier[idx], + ) + return storage + + @property + def training_data(self): + return self.get_training_data() + + @property + def predicted_data(self): + return self.get_predicted_data() + ### This is probably useless like this in most cases because forces can't be passed. def user_structure_to_xml_element(structure): From 3d5d9c9d5e14d918a451612f583051a2db26c4ef Mon Sep 17 00:00:00 2001 From: Alexander Knoll Date: Wed, 11 May 2022 15:45:40 +0200 Subject: [PATCH 171/434] New version of the Runnerjob type. --- pyiron_contrib/__init__.py | 2 +- .../atomistics/atomistics/job/__init__.py | 1 + .../atomistics/job/trainingcontainer.py | 121 +++---- pyiron_contrib/atomistics/ml/potentialfit.py | 6 +- pyiron_contrib/atomistics/runner/job.py | 303 +++++++++++------- .../atomistics/runner/storageclasses.py | 37 +-- pyiron_contrib/atomistics/runner/utils.py | 34 +- 7 files changed, 274 insertions(+), 230 deletions(-) diff --git a/pyiron_contrib/__init__.py b/pyiron_contrib/__init__.py index 11cb57a31..1452595e4 100644 --- a/pyiron_contrib/__init__.py +++ b/pyiron_contrib/__init__.py @@ -36,7 +36,7 @@ JOB_CLASS_DICT['TrainingContainer'] = 'pyiron_contrib.atomistics.atomistics.job.trainingcontainer' JOB_CLASS_DICT['RandomDisMaster'] = 'pyiron_contrib.atomistics.mlip.masters' JOB_CLASS_DICT['RandomMDMaster'] = 'pyiron_contrib.atomistics.mlip.masters' -JOB_CLASS_DICT['RunnerFit'] = 'pyiron_contrib.atomistics.runner.job' +JOB_CLASS_DICT['RunnerJob'] = 'pyiron_contrib.atomistics.runner.job' JOB_CLASS_DICT['MlipSelect'] = 'pyiron_contrib.atomistics.mlip.mlipselect' JOB_CLASS_DICT['Mlip'] = 'pyiron_contrib.atomistics.mlip.mlip' JOB_CLASS_DICT['LammpsMlip'] = 'pyiron_contrib.atomistics.mlip.lammps' diff --git a/pyiron_contrib/atomistics/atomistics/job/__init__.py b/pyiron_contrib/atomistics/atomistics/job/__init__.py index e69de29bb..84fcdbee3 100644 --- a/pyiron_contrib/atomistics/atomistics/job/__init__.py +++ b/pyiron_contrib/atomistics/atomistics/job/__init__.py @@ -0,0 +1 @@ +from .trainingcontainer import TrainingContainer, TrainingStorage \ No newline at end of file diff --git a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py index cc823c55b..cac57bbff 100644 --- a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py +++ b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py @@ -28,13 +28,16 @@ Fe_bcc ... """ -from typing import Callable +from typing import Callable, Optional, Union from warnings import catch_warnings import numpy as np import pandas as pd import seaborn as sns import matplotlib.pyplot as plt + +from ase.atoms import Atoms as ASEAtoms + from pyiron_contrib.atomistics.atomistics.job.structurestorage import StructureStorage from pyiron_atomistics.atomistics.structure.atoms import Atoms from pyiron_atomistics.atomistics.structure.has_structure import HasStructure @@ -54,7 +57,8 @@ def __init__(self, project, job_name): self._container = TrainingStorage() self.input = DataContainer( - {"save_neighbors": True, "num_neighbors": 12}, table_name="parameters" + {"save_neighbors": True, "num_neighbors": 12}, + table_name="parameters" ) def include_job(self, job, iteration_step=-1): @@ -63,7 +67,8 @@ def include_job(self, job, iteration_step=-1): Args: job (:class:`.AtomisticGenericJob`): job to take structure from - iteration_step (int, optional): if job has multiple steps, this selects which to add + iteration_step (int, optional): if job has multiple steps, this + selects which to add """ self._container.include_job(job, iteration_step) @@ -71,32 +76,24 @@ def include_job(self, job, iteration_step=-1): def include_structure( self, structure, - energy, - forces=None, - totalcharge=None, - charges=None, - stress=None, - name=None + **properties ): """ Add new structure to structure list and save energy and forces with it. - For consistency with the rest of pyiron, energy should be in units of eV and forces in eV/A, but no conversion - is performed. + For consistency with the rest of pyiron, energy should be in units of eV + and forces in eV/A, but no conversion is performed. Args: structure_or_job (:class:`~.Atoms`): structure to add energy (float): energy of the whole structure - forces (Nx3 array of float, optional): per atom forces, where N is the number of atoms in the structure - stress (6 array of float, optional): per structure stresses in voigt notation + forces (Nx3 array of float, optional): per atom forces, where N is + the number of atoms in the structure + stress (6 array of float, optional): per structure stresses in voigt + notation name (str, optional): name describing the structure """ - self._container.include_structure(structure, energy, - forces=forces, - totalcharge=totalcharge, - charges=charges, - stress=stress, - name=name) + self._container.include_structure(structure, **properties) def include_dataset(self, dataset): """ @@ -178,6 +175,9 @@ def to_list(self, filter_function=None): """ return self._container.to_list(filter_function) + def to_dict(self): + return self._container.to_dict() + def write_input(self): pass @@ -496,16 +496,12 @@ def shell_distances(self, num_shells=4): class TrainingStorage(StructureStorage): def __init__(self): super().__init__() - self.add_array("energy", dtype=np.float64, per="chunk", fill=np.nan) - self.add_array( - "forces", shape=(3,), dtype=np.float64, per="element", fill=np.nan - ) - # Store total (per-structure) and atomic charge information. - self.add_array('totalcharge', dtype=np.float64, per='chunk', - fill=np.nan) - self.add_array("charges", dtype=np.float64, per="element", fill=np.nan) - # save stress in voigt notation - self.add_array("stress", shape=(6,), dtype=np.float64, per="chunk", fill=np.nan) + # self.add_array("energy", dtype=np.float64, per="chunk", fill=np.nan) + # self.add_array( + # "forces", shape=(3,), dtype=np.float64, per="element", fill=np.nan + # ) + # # save stress in voigt notation + # self.add_array("stress", shape=(6,), dtype=np.float64, per="chunk", fill=np.nan) self._table_cache = None self.to_pandas() @@ -530,8 +526,6 @@ def to_pandas(self): "name": [self.get_array("identifier", i) for i in range(len(self))], "atoms": [self.get_structure(i) for i in range(len(self))], "energy": [self.get_array("energy", i) for i in range(len(self))], - "totalcharge": [self.get_array("totalcharge", i) for i in range(len(self))], - "charges": [self.get_array("charges", i) for i in range(len(self))], "forces": [self.get_array("forces", i) for i in range(len(self))], "stress": [self.get_array("stress", i) for i in range(len(self))], } @@ -589,12 +583,7 @@ def include_job(self, job, iteration_step=-1): def include_structure( self, structure, - energy, - forces=None, - totalcharge=None, - charges=None, - stress=None, - name=None + **properties ): """ Add new structure to structure list and save energy and forces with it. @@ -609,37 +598,16 @@ def include_structure( stress (6 array of float, optional): per structure stresses in voigt notation name (str, optional): name describing the structure """ - self.add_structure( - structure, - energy, - identifier=name, - totalcharge=totalcharge, - charges=charges, - forces=forces, - stress=stress - ) + name = properties.pop('name', None) + self.add_structure(structure, identifier=name, **properties) def add_structure( self, - structure, - energy, + structure: Atoms, identifier=None, - totalcharge=None, - charges=None, - forces=None, - stress=None, **arrays - ): - data = {"energy": energy} - if forces is not None: - data["forces"] = forces - if stress is not None: - data["stress"] = stress - if totalcharge is not None: - data["totalcharge"] = totalcharge - if charges is not None: - data["charges"] = charges - super().add_structure(structure, identifier, **data) + ) -> None: + super().add_structure(structure, identifier, **arrays) def include_dataset(self, dataset): """ @@ -663,10 +631,6 @@ def include_dataset(self, dataset): kwargs["forces"] = row.forces if hasattr(row, "stress"): kwargs["stress"] = row.stress - if hasattr(row, "totalcharge"): - kwargs["totalcharge"] = row.totalcharge - if hasattr(row, "charges"): - kwargs["charges"] = row.charges self.add_structure(row.atoms, energy=row.energy, identifier=row.name, **kwargs) def to_list(self, filter_function=None): @@ -684,9 +648,24 @@ def to_list(self, filter_function=None): data_table = filter_function(data_table) structure_list = data_table.atoms.to_list() energy_list = data_table.energy.to_list() - totalcharge_list = data_table.totalcharge.to_list() force_list = data_table.forces.to_list() - charges_list = data_table.charges.to_list() num_atoms_list = data_table.number_of_atoms.to_list() - return (structure_list, energy_list, force_list, totalcharge_list, - charges_list, num_atoms_list) + return (structure_list, energy_list, force_list, num_atoms_list) + + def to_dict(self): + dict = {} + + # Get structure information. + dict['structure'] = list(self.iter_structures()) + + # Some arrays are only for internal usage or structure information that + # was already saved in dict['structure']. + internal_arrays = ['start_index', 'length', 'cell', 'pbc', 'positions', + 'symbols'] + for array in self.list_arrays(): + # Skip internal arrays. + if array in internal_arrays: + continue + + dict[array] = [self.get_array(array, i) for i in range(len(self))] + return dict \ No newline at end of file diff --git a/pyiron_contrib/atomistics/ml/potentialfit.py b/pyiron_contrib/atomistics/ml/potentialfit.py index e15ea13b3..ddefb0f8e 100644 --- a/pyiron_contrib/atomistics/ml/potentialfit.py +++ b/pyiron_contrib/atomistics/ml/potentialfit.py @@ -88,12 +88,12 @@ def plot(self): plt.subplot(1, 2, 1) plt.scatter(energy_train, energy_pred) - plt.xlabel("True Energy Per Atom [eV]") - plt.ylabel("Predicted Energy Per Atom [eV]") + plt.xlabel("True Energy Per Atom [eV / atom]") + plt.ylabel("Predicted Energy Per Atom [eV / atom]") plt.subplot(1, 2, 2) plt.hist(energy_train - energy_pred) - plt.xlabel("Training Error [eV]") + plt.xlabel("Training Error [eV / atom]") @abc.abstractmethod def get_lammps_potential(self) -> pd.DataFrame: diff --git a/pyiron_contrib/atomistics/runner/job.py b/pyiron_contrib/atomistics/runner/job.py index caf286170..a6dc7d594 100644 --- a/pyiron_contrib/atomistics/runner/job.py +++ b/pyiron_contrib/atomistics/runner/job.py @@ -16,41 +16,37 @@ Reference --------- [RuNNer online documentation](https://theochem.gitlab.io/runner) - + FIXME ----- -Group name wieder rausschmeißen -SymmetryFunctionValues no Class, instead make it a function each. -np.nan init ist nicht noetig, 0.0 geht auch. -theoretisch wäre das besser das nicht direkt zu machen. -ersetze trainingcontainer durch trainingstorage Paket bitte auch via Conda Forge anbieten -Try inhereting from PotentialFit class - -use one trainingstorage, one for runner input structures and one for runner -output structures. """ -from typing import Optional, List, Union +from typing import Optional import numpy as np +import pandas as pd -from ase.atoms import Atoms as ASEAtoms +from ase.data import atomic_numbers +# from ase.atoms import Atoms as ASEAtoms from runnerase.io.ase import (read_results_mode1, read_results_mode2, read_results_mode3) from runnerase import Runner from runnerase.defaultoptions import DEFAULT_PARAMETERS -from runnerase.singlepoint import RunnerSinglePointCalculator +# from runnerase.singlepoint import RunnerSinglePointCalculator from pyiron import Project -from pyiron_base import ProjectHDFio +from pyiron_base import ProjectHDFio, FlattenedStorage from pyiron_base import state, Executable, GenericJob, DataContainer from pyiron_base.generic.object import HasStorage -from pyiron_atomistics.atomistics.structure.atoms import Atoms +# from pyiron_atomistics.atomistics.structure.atoms import Atoms + +from pyiron_contrib.atomistics.ml.potentialfit import PotentialFit +from pyiron_contrib.atomistics.atomistics.job import (TrainingContainer, + TrainingStorage) -from ..atomistics.job.trainingcontainer import TrainingContainer from .utils import container_to_ase from .storageclasses import (HDFSymmetryFunctionSet, HDFSymmetryFunctionValues, HDFSplitTrainTest, HDFFitResults, HDFWeights, @@ -63,10 +59,10 @@ 'Group' __version__ = '0.1.0' __status__ = 'development' -__date__ = 'May 02, 2022' +__date__ = 'May 11, 2022' -class RunnerJob(GenericJob, HasStorage): +class RunnerJob(GenericJob, HasStorage, PotentialFit): """Generate a potential energy surface using RuNNer. The RuNNer Neural Network Energy Representation (RuNNer) is a Fortran code @@ -112,13 +108,16 @@ class RunnerJob(GenericJob, HasStorage): pr = Project(path='example') job = pr.create_job(RunnerJob, 'mode1') - # Import training dataset and RuNNer settings from RuNNer input.data - # and input.nn files using ASE's I/O routines. - structures, options = read_runnerase('./') + # Import RuNNer settings from RuNNer input.nn file using ASE's I/O routines. + options = read_runnerconfig('./') + + # Read input structures from a TrainingContainer that was saved before. + container = pr['H2O_MD'] # Attach the information to the job. - job.structures = structures - job.input.update(options) + + job.add_training_data = container + job.parameters.update(options) # Set the RuNNer Mode to 1. job.input.runner_mode = 1 @@ -130,7 +129,7 @@ class RunnerJob(GenericJob, HasStorage): ```python job = Project('example')['mode1'].restart('mode2') - job.input.runner_mode = 2 + job.parameters.runner_mode = 2 job.run() ``` @@ -138,7 +137,7 @@ class RunnerJob(GenericJob, HasStorage): ```python job = Project('runnertest')['mode2'].restart('mode3') - job.input.runner_mode = 3 + job.parameters.runner_mode = 3 job.run() ``` """ @@ -149,6 +148,13 @@ class RunnerJob(GenericJob, HasStorage): # chosen RuNNer mode). _input_properties = ['scaling', 'weights', 'sfvalues', 'splittraintest'] + # Define a default executable. + _executable = Executable( + codename='runner', + module='runner', + path_binary_codes=state.settings.resource_paths + ) + def __init__(self, project: Project, job_name: str) -> None: """Initialize the class. @@ -166,17 +172,13 @@ def __init__(self, project: Project, job_name: str) -> None: # Create groups for storing calculation inputs and outputs. self.storage.create_group('input') self.storage.create_group('output') - # FIXME: use TrainingStorage instead. - self.storage.structures = TrainingContainer(project, job_name) - # Initialize optional RuNNer input data as class properties. - self.storage.sfvalues = HDFSymmetryFunctionValues() - self.storage.splittraintest = HDFSplitTrainTest() - self.storage.scaling = HDFScaling() - self.storage.weights = HDFWeights() + # Create a group for storing the RuNNer configuration parameters. + self.storage.input.create_group('parameters') + self.storage.input.parameters.update(DEFAULT_PARAMETERS) - # Set default parameters. - self.storage.input.update(DEFAULT_PARAMETERS) + # Store training data (structures, energies, ...) in a separate node. + self.storage.input.training_data = TrainingStorage() state.publications.add(self.publication) @@ -227,7 +229,7 @@ def publication(self): @property def input(self) -> DataContainer: - """Show input options in storage.""" + """Show all input properties in storage.""" return self.storage.input @property @@ -236,57 +238,148 @@ def output(self): return self.storage.output @property - def scaling(self): + def parameters(self): + """Show the input parameters/settings in storage.""" + return self.storage.input.parameters + + @property + def scaling(self) -> Optional[HDFScaling]: """Show the symmetry function scaling data in storage.""" - return self.storage.scaling + if 'scaling' in self.output: + return self.output.scaling + + return None + + @scaling.setter + def scaling(self, scaling: HDFScaling) -> None: + """Set the symmetry function scaling data in storage.""" + self.output.scaling = scaling @property - def weights(self): + def weights(self) -> Optional[HDFWeights]: """Show the atomic neural network weights data in storage.""" - return self.storage.weights + if 'weights' in self.output: + return self.output.weights + + return None @weights.setter - def weights(self, weights: HDFWeights): + def weights(self, weights: HDFWeights) -> None: """Set the weights of the atomic neural networks in storage.""" - self.storage.weights = weights + self.output.weights = weights @property - def sfvalues(self): + def sfvalues(self) -> Optional[HDFSymmetryFunctionValues]: """Show the symmetry function value data in storage.""" - return self.storage.sfvalues + if 'sfvalues' in self.output: + return self.output.sfvalues + + return None + + @sfvalues.setter + def sfvalues(self, sfvalues: HDFSymmetryFunctionValues) -> None: + """Set the symmetry function value data in storage.""" + self.output.sfvalues = sfvalues @property def splittraintest(self): """Show the split between training and testing data in storage.""" - return self.storage.splittraintest - - @property - def structures(self) -> TrainingContainer: - """Store a dataset consisting of many chemical structures.""" - return self.storage.structures - - @structures.setter - def structures(self, container: TrainingContainer) -> None: - """Append structures to storage. - - Add a list of structures to storage. - - Parameters - ---------- - structures : List[Atoms] - A list of ASE Atoms objects or Pyiron Atoms objects which are - to be stored. - - Examples - -------- - ```python - >>> job.structures = [structure1, structure2] - >>> job.structures = [structure3, structure4] - >>> print(job.structures) - [structure1, structure2, structure3, structure4] - ``` - """ - self.storage.structures = container + if 'splittraintest' in self.output: + return self.output.splittraintest + + return None + + @splittraintest.setter + def splittraintest(self, splittraintest: HDFSplitTrainTest) -> None: + """Set the split between training and testing data in storage.""" + self.output.splittraintest = splittraintest + + def _add_training_data(self, container: TrainingContainer) -> None: + """Add a set of training data to storage.""" + # Get a dictionary of all property arrays saved in this container. + arrays = container.to_dict() + arraynames = arrays.keys() + + # Iterate over the structures by zipping the dictionary values together. + for properties in zip(*arrays.values()): + zipped = dict(zip(arraynames, properties)) + self.storage.input.training_data.add_structure(**zipped) + + def _get_training_data(self) -> TrainingStorage: + """Show the stored training data.""" + return self.storage.input.training_data + + def _get_predicted_data(self) -> FlattenedStorage: + """Show the predicted data after a successful fit.""" + # Energies and forces will only be available after RuNNer Mode 3. + if 'energy' not in self.output: + raise RuntimeError('You have to run RuNNer prediction mode ' + + '(Mode 3) before you can access predictions.') + + pred_properties = {'energy': None, 'forces': None} + + # Get a list of structures and energies. + structures = list(self.training_data.iter_structures()) + + # Get the values of all properties RuNNer can predict for a structure. + for prop in pred_properties: + if prop in self.output: + pred_properties[prop] = self.output[prop] + + predicted_data = FlattenedStorage() + + for structure, energy, force in zip(structures, + pred_properties['energy'], + pred_properties['forces']): + predicted_data.add_chunk(len(structure), energy=energy, + forces=force) + + return predicted_data + + def get_lammps_potential(self) -> pd.DataFrame: + """Return a pandas dataframe with information for setting up LAMMPS.""" + if not self.status.finished: + raise RuntimeError('LAMMPS potential can only be generated after a ' + + 'successful fit.') + + if 'weights' not in self.output or 'scaling' not in self.output: + raise RuntimeError('This potential has not been trained yet.') + + # Get all elements in the training dataset. + elements = self.training_data.get_elements() + + # Create a list of all files needed by the potential. + files = [f'{self.working_directory}/input.nn', + f'{self.working_directory}/scaling.data'] + + # Add the weight files. + for elem in elements: + atomic_number = atomic_numbers[elem] + filename = f'weights.{atomic_number:03}.data' + files.append(f'{self.working_directory}/{filename}') + + # Save the mapping of elements between LAMMPS and n2p2. + emap = ','.join([f'{i}:{el}' for i, el in enumerate(elements)]) + + # Get the cutoff radius of the symmetry functions. + cutoffs = self.parameters.symfunction_short.cutoffs + cutoff = cutoffs[0] + + if len(cutoffs) > 1: + raise RuntimeError('LAMMPS potential can only be generated for a ' + + 'a uniform cutoff radius.') + + return pd.DataFrame({ + 'Name': [f"RuNNer-{''.join(elements)}"], + 'Filename': [files], + 'Model': ['RuNNer'], + 'Species': [elements], + 'Config': [['pair_style nnp dir "./" ' + + 'showew no showewsum 0 resetew no maxew 100 ' + + 'cflength 1.8897261328 cfenergy 0.0367493254 ' + + f'emap "{emap}"\n', + f'pair_coeff * * {cutoff}\n']] + }) def write_input(self) -> None: """Write the relevant job input files. @@ -294,16 +387,23 @@ def write_input(self) -> None: This routine writes the input files for the job using the ASE Runner calculator. """ + input_properties = {'sfvalues': None, 'splittraintest': None, + 'weights': None, 'scaling': None} + + for prop in input_properties: + if prop in self.output and self.output[prop] is not None: + input_properties[prop] = self.output[prop].to_runnerase() + # Create an ASE Runner calculator object. # Pay attention to the different name: `structures` --> `dataset`. calc = Runner( label='pyiron', - dataset=container_to_ase(self.structures), - scaling=self.storage.scaling.to_runnerase(), - weights=self.storage.weights.to_runnerase(), - sfvalues=self.storage.sfvalues.to_runnerase(), - splittraintest=self.storage.splittraintest.to_runnerase(), - **self.input.to_builtin() + dataset=container_to_ase(self.training_data), + scaling=input_properties['scaling'], + weights=input_properties['weights'], + sfvalues=input_properties['sfvalues'], + splittraintest=input_properties['splittraintest'], + **self.parameters.to_builtin() ) # Set the correct elements of the system. @@ -319,7 +419,7 @@ def write_input(self) -> None: # Set the correct calculation directory and file prefix. calc.directory = self.working_directory - calc.prefix = f'mode{self.input.runner_mode}' + calc.prefix = f'mode{self.parameters.runner_mode}' # Set the 'flags' which ASE uses to see which input files need to # be written. @@ -327,7 +427,7 @@ def write_input(self) -> None: calc.write_input( atoms, - targets[self.input.runner_mode], + targets[self.parameters.runner_mode], system_changes=None ) @@ -343,13 +443,13 @@ def _executable_activate(self, enforce: bool = False) -> None: def collect_output(self) -> None: """Read and store the job results.""" # Compose job label (needed by the ASE I/O routines) and store dir. - label = f'{self.working_directory}/mode{self.input.runner_mode}' + label = f'{self.working_directory}/mode{self.parameters.runner_mode}' directory = self.working_directory # If successful, RuNNer Mode 1 returns symmetry function values for # each structure and the information, which structure belongs to the # training and which to the testing set. - if self.input.runner_mode == 1: + if self.parameters.runner_mode == 1: results = read_results_mode1(label, directory) # Transform sfvalues into the pyiron class for HDF5 storage and @@ -368,7 +468,7 @@ def collect_output(self) -> None: # If successful, RuNNer Mode 2 returns the weights of the atomic neural # networks, the symmetry function scaling data, and the results of the # fitting process. - elif self.input.runner_mode == 2: + elif self.parameters.runner_mode == 2: results = read_results_mode2(label, directory) fitresults = HDFFitResults() @@ -385,7 +485,7 @@ def collect_output(self) -> None: # If successful, RuNNer Mode 3 returns the energy and forces of the # structure for which it was executed. - elif self.input.runner_mode == 3: + elif self.parameters.runner_mode == 3: results = read_results_mode3(directory) self.output.energy = results['energy'] self.output.forces = results['forces'] @@ -410,10 +510,10 @@ def to_hdf( # Replace the runnerase class `SymmetryFunctionSet` by the extended # class from the `storageclasses` module which knows how to write itself # to hdf. - sfset = self.storage.input.pop('symfunction_short') + sfset = self.parameters.pop('symfunction_short') new_sfset = HDFSymmetryFunctionSet() new_sfset.from_runnerase(sfset) - self.input.symfunction_short = new_sfset + self.parameters.symfunction_short = new_sfset GenericJob.to_hdf(self, hdf=hdf, group_name=group_name) HasStorage.to_hdf(self, hdf=self.project_hdf5, group_name='') @@ -434,34 +534,3 @@ def from_hdf( """ GenericJob.from_hdf(self, hdf=hdf, group_name=group_name) HasStorage.from_hdf(self, hdf=self.project_hdf5, group_name='') - - def restart( - self, - job_name: Optional[str] = None, - job_type: Optional[str] = None - ) -> 'RunnerJob': - """Reload all calculation details. - - This procedure extends the base class `restart()` by setting results - from previous calculations as input parameters to the new calculation. - The recognized properties depend on the class variable - self._input_properties (see class docstring for further details). - - Returns - ------- - new_ham : RunnerJob - the newly created RunnerJob object. - """ - # Call the base class routine to generate the new Hamiltonian, which is - # a RunnerJob class instance. - # At this point, the Hamiltonian holds the input parameters, - # structures, and outputs of the previous calculation. However, it - # cannot access the relevant properties as input values which is - # necessary for starting a new calculation. - new_ham = super().restart(job_name, job_type) - - for prop in self._input_properties: - if prop in self.output.keys(): - new_ham.storage[prop] = self.output[prop] - - return new_ham diff --git a/pyiron_contrib/atomistics/runner/storageclasses.py b/pyiron_contrib/atomistics/runner/storageclasses.py index e850e1ce0..9f593908f 100644 --- a/pyiron_contrib/atomistics/runner/storageclasses.py +++ b/pyiron_contrib/atomistics/runner/storageclasses.py @@ -24,7 +24,6 @@ from typing import Optional from abc import abstractmethod - import numpy as np from runnerase.symmetryfunctions import SymmetryFunctionSet @@ -187,36 +186,20 @@ def to_runnerase(self) -> RunnerSplitTrainTest: return runnerase_class - def _to_hdf( - self, - hdf: ProjectHDFio, - group_name: Optional[str] = None - ) -> None: + def _to_hdf(self, hdf: ProjectHDFio) -> None: """Write `self` to HDF5 storage. Parameters ---------- hdf : ProjectHDFio The HDF file where `self` will be stored. - group_name : str - The name of the subgroup. """ - if group_name is None: - group_name = self._get_hdf_group_name() - - # Store HDF node metadata. - with hdf.open(group_name) as hdf_group: - hdf_group['NAME'] = self.__class__.__name__ - hdf_group['TYPE'] = str(type(self)) - hdf_group['HDF_VERSION'] = self.__hdf_version__ - - for idx, prop in enumerate(self.runnerase_properties): - hdf_group[f'{prop}__index_{idx}'] = self.__dict__[prop] + for idx, prop in enumerate(self.runnerase_properties): + hdf[f'{prop}__index_{idx}'] = self.__dict__[prop] def _from_hdf( self, hdf: ProjectHDFio, - group_name: Optional[str] = None, version: Optional[str] = None ) -> 'HDFSplitTrainTest': """Read `self` from HDF5 storage. @@ -225,22 +208,16 @@ def _from_hdf( ---------- hdf : ProjectHDFio The HDF file where `self` will be stored. - group_name : str - The name of the subgroup. """ if version != self.__hdf_version__: raise RuntimeError('Invalid HDF5 version found while reading ' + self.__class__.__name__) - if group_name is None: - group_name = self._get_hdf_group_name() - # Open HDF file at the right group with a context manager. - with hdf.open(group_name) as hdf_group: - for node in hdf_group.list_nodes(): - for prop in self.runnerase_properties: - if prop in node: - self.__dict__[prop] = hdf_group[node] + for node in hdf.list_nodes(): + for prop in self.runnerase_properties: + if prop in node: + self.__dict__[prop] = hdf[node] return self diff --git a/pyiron_contrib/atomistics/runner/utils.py b/pyiron_contrib/atomistics/runner/utils.py index 9ec14d6b5..fef1ac182 100644 --- a/pyiron_contrib/atomistics/runner/utils.py +++ b/pyiron_contrib/atomistics/runner/utils.py @@ -14,7 +14,7 @@ [RuNNer online documentation](https://theochem.gitlab.io/runner) """ -from typing import List, Optional +from typing import List import numpy as np @@ -31,16 +31,35 @@ def container_to_ase(container: TrainingContainer) -> List[Atoms]: """Convert a `TrainingContainer` into a list of ASE Atoms objects.""" structure_lst = [] - for row in list(zip(*container.to_list())): + arrays = container.to_dict() + arraynames = arrays.keys() - # Retrieve all properties, i.e. energy, forces, etc. - structure, energy, forces, totalcharge, charges, _ = row + # Iterate over the structures by zipping the dictionary values. + for properties in zip(*arrays.values()): + zipped = dict(zip(arraynames, properties)) # Retrieve atomic positions, cell vectors, etc. - atoms = pyiron_to_ase(structure) + atoms = pyiron_to_ase(zipped['structure']) # Attach properties to the Atoms object. - atoms.set_initial_charges(charges) + if 'charges' in zipped: + atoms.set_initial_charges(zipped['charges']) + + if 'energy' in zipped: + energy = zipped['energy'] + else: + energy = None + + if 'forces' in zipped: + forces = zipped['forces'] + else: + forces = None + + if 'totalcharge' in zipped: + totalcharge = zipped['totalcharge'] + else: + totalcharge = None + atoms.calc = RunnerSinglePointCalculator( atoms=atoms, energy=energy, @@ -54,7 +73,7 @@ def container_to_ase(container: TrainingContainer) -> List[Atoms]: def ase_to_container( structures: List[Atoms], - container: Optional[TrainingContainer] + container: TrainingContainer ) -> None: """Add `structures` to `TrainingContainer`.""" for structure in structures: @@ -83,7 +102,6 @@ def ase_to_container( container.include_structure(structure, **properties) - def pad(array: np.ndarray, desired_length: int) -> np.ndarray: """Pad `sfvalues` with `np.NaN` rows up to `num_atoms`.""" # Create a sequence of missing indices. From 8874e9246e6352b2cbde83de54efb9e848f74985 Mon Sep 17 00:00:00 2001 From: Leimeroth Date: Thu, 12 May 2022 13:32:28 +0200 Subject: [PATCH 172/434] Vector operations instead of iter --- .../atomistics/atomicrex/structure_list.py | 96 ++++++++++--------- 1 file changed, 51 insertions(+), 45 deletions(-) diff --git a/pyiron_contrib/atomistics/atomicrex/structure_list.py b/pyiron_contrib/atomistics/atomicrex/structure_list.py index 5a0032a93..823a4a0ee 100644 --- a/pyiron_contrib/atomistics/atomicrex/structure_list.py +++ b/pyiron_contrib/atomistics/atomicrex/structure_list.py @@ -303,6 +303,11 @@ def get_vector_property(self, prop, identifier, final=True): else: return self.fit_properties[prop]._per_element_arrays["target_val"][slc] + def _sync(self): + for flat in self.fit_properties.values(): + flat.num_elements = self._structures.num_elements + flat.num_chunks = self._structures.num_chunks + def _shrink(self): self._resize_all( num_chunks=self._structures.num_chunks, @@ -524,58 +529,59 @@ def prepare_plotting(self, final_values=False): #### PotentialFit methods def add_training_data(self, container: TrainingContainer) -> None: storage = container._container - identifier = storage.get_array("identifier") - energy = storage.get_array("energy") - forces = storage.get_array("forces") - length = storage.get_arry("length") - start_index = storage.get_array("start_index") - for idx in range(len(storage)): - self.add_structure( - identifier=identifier[idx], - structure=storage.get_structure(frame=idx), - ) - self.add_scalar_fit_property( - prop="atomic-energy", - target_val=energy[idx]/length[idx], - tolerance=0.001, + atomic_energy_storage = FlattenedARScalarProperty(num_chunks=storage.num_chunks) + atomic_energy_storage._per_chunk_arrays["target_val"] = ( + storage._per_chunk_arrays.pop("energy") + / storage._per_chunk_arrays["length"] + ) + atomic_forces_storage = FlattenedARVectorProperty( + num_chunks=storage.num_chunks, num_elements=storage.num_elements + ) + atomic_forces_storage._per_element_arrays[ + "target_val" + ] = storage._per_element_arrays.pop("forces") + if "atomic-energy" in self.fit_properties: + self._sync() + else: + self.fit_properties["atomic-energy"] = FlattenedARScalarProperty( + num_chunks=self._structures.num_chunks, + num_elements=self._structures.num_elements, ) - self.add_vector_fit_property( - prop="atomic-forces", - target_val=forces[start_index[idx]:start_index[idx]+length[idx]], - tolerance=0.01, + if "atomic-forces" in self.fit_properties: + self._sync() + else: + self.fit_properties["atomic-energy"] = FlattenedARVectorProperty( + num_chunks=self._structures.num_chunks, + num_elements=self._structures.num_elements, ) - def get_training_data(self) -> TrainingStorage: + self._structures.extend(storage) + self.fit_properties["atomic-energy"].extend(atomic_energy_storage) + self.fit_properties["atomic-forces"].extend(atomic_forces_storage) + + + def _to_TrainingStorage(self, final: bool = False) -> TrainingStorage: + self._shrink() storage = TrainingStorage() - forces = self.fit_properties["atomic-forces"].target_val - atomic_energy = self.fit_properties["atomic-energy"].target_val - identifier = self._structures.get_array("identifier") - length = self._structures.get_arry("length") - start_index = storage.get_array("start_index") - for idx in len(self._structures): - storage.add_structure( - structure = self._structures.get_structure(frame=idx), - energy = atomic_energy[idx]*length[idx], - forces = forces[start_index[idx]:start_index[idx]+length[idx]], - identifier=identifier[idx], - ) + storage.extend(self._structures) + if final: + val_str = "final_val" + else: + val_str = "target_val" + storage._per_chunk_arrays["energy"][0 : storage.num_chunks] = ( + self.fit_properties["atomic-energy"][val_str] + * self._structures._per_chunk_arrays["length"] + ) + storage._per_element_arrays["forces"][ + 0 : storage.num_elements + ] = self.fit_properties["atomic-forces"][val_str] return storage + def get_training_data(self) -> TrainingStorage: + return self._to_TrainingStorage(final=False) + def get_predicted_data(self) -> FlattenedStorage: - storage = TrainingStorage() - forces = self.fit_properties["atomic-forces"].final_val - atomic_energy = self.fit_properties["atomic-energy"].final_val - identifier = self._structures.get_array("identifier") - length = self._structures.get_arry("length") - start_index = storage.get_array("start_index") - for idx in len(self._structures): - storage.add_structure( - structure = self._structures.get_structure(frame=idx), - energy = atomic_energy[idx]*length[idx], - forces = forces[start_index[idx]:start_index[idx]+length[idx]], - identifier=identifier[idx], - ) - return storage + return self._to_TrainingStorage(final=True) @property def training_data(self): From 54a01f37c06057dc36592d6c08c687e3936e6364 Mon Sep 17 00:00:00 2001 From: Alexander Knoll Date: Thu, 12 May 2022 13:51:09 +0200 Subject: [PATCH 173/434] Add `energy` argument to `get_lammps_potential` routine. --- pyiron_contrib/atomistics/ml/potentialfit.py | 4 +++- pyiron_contrib/atomistics/runner/job.py | 10 +++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/pyiron_contrib/atomistics/ml/potentialfit.py b/pyiron_contrib/atomistics/ml/potentialfit.py index ddefb0f8e..a710d3b13 100644 --- a/pyiron_contrib/atomistics/ml/potentialfit.py +++ b/pyiron_contrib/atomistics/ml/potentialfit.py @@ -2,6 +2,8 @@ Abstract base class for fitting interactomic potentials. """ +from typing import List + import abc import pandas as pd @@ -96,7 +98,7 @@ def plot(self): plt.xlabel("Training Error [eV / atom]") @abc.abstractmethod - def get_lammps_potential(self) -> pd.DataFrame: + def get_lammps_potential(self, elements: List[str] = None) -> pd.DataFrame: """ Return a pyiron compatible dataframe that defines a potential to be used with a Lammps job (or subclass thereof). diff --git a/pyiron_contrib/atomistics/runner/job.py b/pyiron_contrib/atomistics/runner/job.py index a6dc7d594..fb76f8e5f 100644 --- a/pyiron_contrib/atomistics/runner/job.py +++ b/pyiron_contrib/atomistics/runner/job.py @@ -22,7 +22,7 @@ Paket bitte auch via Conda Forge anbieten """ -from typing import Optional +from typing import Optional, List import numpy as np import pandas as pd @@ -336,7 +336,10 @@ def _get_predicted_data(self) -> FlattenedStorage: return predicted_data - def get_lammps_potential(self) -> pd.DataFrame: + def get_lammps_potential( + self, + elements: Optional[List[str]] = None + ) -> pd.DataFrame: """Return a pandas dataframe with information for setting up LAMMPS.""" if not self.status.finished: raise RuntimeError('LAMMPS potential can only be generated after a ' @@ -346,7 +349,8 @@ def get_lammps_potential(self) -> pd.DataFrame: raise RuntimeError('This potential has not been trained yet.') # Get all elements in the training dataset. - elements = self.training_data.get_elements() + if elements is None: + elements = self.training_data.get_elements() # Create a list of all files needed by the potential. files = [f'{self.working_directory}/input.nn', From 9eeda52ad1d325fb854a7b2bc39b2ef77c842469 Mon Sep 17 00:00:00 2001 From: Leimeroth Date: Thu, 12 May 2022 14:13:49 +0200 Subject: [PATCH 174/434] energy to forces --- .../atomistics/atomicrex/structure_list.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/pyiron_contrib/atomistics/atomicrex/structure_list.py b/pyiron_contrib/atomistics/atomicrex/structure_list.py index 823a4a0ee..eae70e540 100644 --- a/pyiron_contrib/atomistics/atomicrex/structure_list.py +++ b/pyiron_contrib/atomistics/atomicrex/structure_list.py @@ -529,17 +529,20 @@ def prepare_plotting(self, final_values=False): #### PotentialFit methods def add_training_data(self, container: TrainingContainer) -> None: storage = container._container - atomic_energy_storage = FlattenedARScalarProperty(num_chunks=storage.num_chunks) + atomic_energy_storage = FlattenedARScalarProperty( + num_chunks=storage.num_chunks, num_elements=storage.num_elements + ) atomic_energy_storage._per_chunk_arrays["target_val"] = ( - storage._per_chunk_arrays.pop("energy") - / storage._per_chunk_arrays["length"] + storage._per_chunk_arrays["energy"][0 : storage.num_chunks] + / storage.length[0 : storage.num_chunks] ) atomic_forces_storage = FlattenedARVectorProperty( num_chunks=storage.num_chunks, num_elements=storage.num_elements ) atomic_forces_storage._per_element_arrays[ "target_val" - ] = storage._per_element_arrays.pop("forces") + ] = storage._per_element_arrays["forces"][0 : storage.num_elements] + if "atomic-energy" in self.fit_properties: self._sync() else: @@ -550,7 +553,7 @@ def add_training_data(self, container: TrainingContainer) -> None: if "atomic-forces" in self.fit_properties: self._sync() else: - self.fit_properties["atomic-energy"] = FlattenedARVectorProperty( + self.fit_properties["atomic-forces"] = FlattenedARVectorProperty( num_chunks=self._structures.num_chunks, num_elements=self._structures.num_elements, ) @@ -558,7 +561,6 @@ def add_training_data(self, container: TrainingContainer) -> None: self._structures.extend(storage) self.fit_properties["atomic-energy"].extend(atomic_energy_storage) self.fit_properties["atomic-forces"].extend(atomic_forces_storage) - def _to_TrainingStorage(self, final: bool = False) -> TrainingStorage: self._shrink() From 3bcbba554897039d921f768ee441cbd18e159940 Mon Sep 17 00:00:00 2001 From: Leimeroth Date: Thu, 12 May 2022 16:01:32 +0200 Subject: [PATCH 175/434] defaults --- .../atomistics/atomicrex/fit_properties.py | 2 +- .../atomistics/atomicrex/structure_list.py | 25 +++++++++++++------ 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/pyiron_contrib/atomistics/atomicrex/fit_properties.py b/pyiron_contrib/atomistics/atomicrex/fit_properties.py index a5426d38d..5575253ae 100644 --- a/pyiron_contrib/atomistics/atomicrex/fit_properties.py +++ b/pyiron_contrib/atomistics/atomicrex/fit_properties.py @@ -240,7 +240,7 @@ def __init__(self, num_chunks=1, num_elements=1, **kwargs): super().__init__(num_chunks=num_chunks, num_elements=num_elements, **kwargs) self._per_chunk_arrays = {} self.add_array("fit", dtype=bool, per="chunk", fill=False) - self.add_array("relative_weight", per="chunk", fill=np.nan) + self.add_array("relative_weight", per="chunk", fill=1.0) self.add_array("relax", dtype=bool, per="chunk") self.add_array("residual_style", per="chunk", dtype=np.ubyte, fill=0) self.add_array("output", dtype=bool, per="chunk", fill=False) diff --git a/pyiron_contrib/atomistics/atomicrex/structure_list.py b/pyiron_contrib/atomistics/atomicrex/structure_list.py index eae70e540..6785bf131 100644 --- a/pyiron_contrib/atomistics/atomicrex/structure_list.py +++ b/pyiron_contrib/atomistics/atomicrex/structure_list.py @@ -36,7 +36,7 @@ class ARStructureContainer: __version__ = "0.3.0" __hdf_version__ = "0.3.0" - def __init__(self, num_atoms=1, num_structures=1): + def __init__(self, num_atoms=0, num_structures=0): self.fit_properties = DataContainer(table_name="fit_properties") self._structures = StructureStorage( num_atoms=num_atoms, num_structures=num_structures @@ -532,34 +532,45 @@ def add_training_data(self, container: TrainingContainer) -> None: atomic_energy_storage = FlattenedARScalarProperty( num_chunks=storage.num_chunks, num_elements=storage.num_elements ) + atomic_energy_storage.num_chunks = storage.num_chunks + atomic_energy_storage.num_elements = storage.num_elements + atomic_energy_storage._per_chunk_arrays["fit"][0 : storage.num_chunks] = True + atomic_energy_storage._per_chunk_arrays["tolerance"][ + 0 : storage.num_chunks + ] = 0.001 atomic_energy_storage._per_chunk_arrays["target_val"] = ( storage._per_chunk_arrays["energy"][0 : storage.num_chunks] / storage.length[0 : storage.num_chunks] ) + atomic_forces_storage = FlattenedARVectorProperty( num_chunks=storage.num_chunks, num_elements=storage.num_elements ) + atomic_forces_storage.num_chunks = storage.num_chunks + atomic_forces_storage.num_elements = storage.num_elements + atomic_forces_storage._per_chunk_arrays["fit"][0 : storage.num_chunks] = True + atomic_forces_storage._per_chunk_arrays["tolerance"][ + 0 : storage.num_chunks + ] = 0.01 atomic_forces_storage._per_element_arrays[ "target_val" ] = storage._per_element_arrays["forces"][0 : storage.num_elements] - if "atomic-energy" in self.fit_properties: - self._sync() - else: + if "atomic-energy" not in self.fit_properties: self.fit_properties["atomic-energy"] = FlattenedARScalarProperty( num_chunks=self._structures.num_chunks, num_elements=self._structures.num_elements, ) - if "atomic-forces" in self.fit_properties: - self._sync() - else: + if "atomic-forces" not in self.fit_properties: self.fit_properties["atomic-forces"] = FlattenedARVectorProperty( num_chunks=self._structures.num_chunks, num_elements=self._structures.num_elements, ) + self._sync() self._structures.extend(storage) self.fit_properties["atomic-energy"].extend(atomic_energy_storage) + print(self.fit_properties["atomic-energy"].target_val) self.fit_properties["atomic-forces"].extend(atomic_forces_storage) def _to_TrainingStorage(self, final: bool = False) -> TrainingStorage: From 92980d1f803b7f237e90e6f82da0c645ef7c856f Mon Sep 17 00:00:00 2001 From: lxknll <38499263+lxknll@users.noreply.github.com> Date: Fri, 13 May 2022 10:43:24 +0200 Subject: [PATCH 176/434] Update pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py Call `get_array_ragged` instead of `get_array` Co-authored-by: Marvin Poul --- pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py index cac57bbff..1503da322 100644 --- a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py +++ b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py @@ -667,5 +667,5 @@ def to_dict(self): if array in internal_arrays: continue - dict[array] = [self.get_array(array, i) for i in range(len(self))] + dict[array] = self.get_array_ragged(array) return dict \ No newline at end of file From e4335c5abebe7fb50a76a4fc25a708a52035bc21 Mon Sep 17 00:00:00 2001 From: lxknll <38499263+lxknll@users.noreply.github.com> Date: Fri, 13 May 2022 10:46:14 +0200 Subject: [PATCH 177/434] Update pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py Remove deprecation warning from `include_structure` as there is no alternative yet. Co-authored-by: Marvin Poul --- pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py | 1 - 1 file changed, 1 deletion(-) diff --git a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py index 1503da322..da8601144 100644 --- a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py +++ b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py @@ -72,7 +72,6 @@ def include_job(self, job, iteration_step=-1): """ self._container.include_job(job, iteration_step) - @deprecate("Use add_structure instead") def include_structure( self, structure, From 02dd0959b6d0b43db367a61795ecc321b3ce086d Mon Sep 17 00:00:00 2001 From: lxknll <38499263+lxknll@users.noreply.github.com> Date: Fri, 13 May 2022 10:47:11 +0200 Subject: [PATCH 178/434] Update pyiron_contrib/atomistics/runner/storageclasses.py Remove unnecessary '__index' identifier from HDF storageclasses mixin. Co-authored-by: Marvin Poul --- pyiron_contrib/atomistics/runner/storageclasses.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyiron_contrib/atomistics/runner/storageclasses.py b/pyiron_contrib/atomistics/runner/storageclasses.py index 9f593908f..9cd12eb79 100644 --- a/pyiron_contrib/atomistics/runner/storageclasses.py +++ b/pyiron_contrib/atomistics/runner/storageclasses.py @@ -194,8 +194,8 @@ def _to_hdf(self, hdf: ProjectHDFio) -> None: hdf : ProjectHDFio The HDF file where `self` will be stored. """ - for idx, prop in enumerate(self.runnerase_properties): - hdf[f'{prop}__index_{idx}'] = self.__dict__[prop] + for prop in self.runnerase_properties: + hdf[f'{prop}'] = self.__dict__[prop] def _from_hdf( self, From f009c4a1aef8af4c1cf184d61ca98d438ce3acf3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 May 2022 11:06:32 +0000 Subject: [PATCH 179/434] Bump pyparsing from 3.0.8 to 3.0.9 Bumps [pyparsing](https://github.com/pyparsing/pyparsing) from 3.0.8 to 3.0.9. - [Release notes](https://github.com/pyparsing/pyparsing/releases) - [Changelog](https://github.com/pyparsing/pyparsing/blob/master/CHANGES) - [Commits](https://github.com/pyparsing/pyparsing/compare/pyparsing_3.0.8...pyparsing_3.0.9) --- updated-dependencies: - dependency-name: pyparsing dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index a8a1f63d5..670fcdd22 100644 --- a/setup.py +++ b/setup.py @@ -36,7 +36,7 @@ 'pyiron_base==0.5.12', 'scipy==1.8.0', 'seaborn==0.11.2', - 'pyparsing==3.0.8' + 'pyparsing==3.0.9' ], extras_require={ 'atomistic': [ From f43c81bcd71ec5c4b1ac7007bb1cd06e0baee696 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 May 2022 11:06:42 +0000 Subject: [PATCH 180/434] Bump moto from 3.1.8 to 3.1.9 Bumps [moto](https://github.com/spulec/moto) from 3.1.8 to 3.1.9. - [Release notes](https://github.com/spulec/moto/releases) - [Changelog](https://github.com/spulec/moto/blob/master/CHANGELOG.md) - [Commits](https://github.com/spulec/moto/compare/3.1.8...3.1.9) --- updated-dependencies: - dependency-name: moto dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index a8a1f63d5..c5e2db298 100644 --- a/setup.py +++ b/setup.py @@ -50,7 +50,7 @@ 'image': ['scikit-image==0.19.2'], 'generic': [ 'boto3==1.22.9', - 'moto==3.1.8' + 'moto==3.1.9' ], }, cmdclass=versioneer.get_cmdclass(), From 93fa11eae6438c32c56eadd2b2ddc635ab1bbf95 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 16 May 2022 11:07:24 +0000 Subject: [PATCH 181/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 4952e56ae..5fbd8e426 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -9,7 +9,7 @@ dependencies: - numpy =1.22.3 - pyiron_base =0.5.12 - pyiron_atomistics =0.2.45 -- pyparsing =3.0.8 +- pyparsing =3.0.9 - scipy =1.8.0 - seaborn =0.11.2 - scikit-image =0.19.2 From 0329c5b60d042ebebfbc6fe700ed45fe378ecb38 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 16 May 2022 11:12:15 +0000 Subject: [PATCH 182/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 4952e56ae..7eb989c0d 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -15,4 +15,4 @@ dependencies: - scikit-image =0.19.2 - randspg =0.0.1 - boto3 =1.22.9 -- moto =3.1.8 +- moto =3.1.9 From a0b4e84d9d7744a0ee306d29fdf10d34b5f48025 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 May 2022 12:54:57 +0000 Subject: [PATCH 183/434] Bump boto3 from 1.22.9 to 1.23.0 Bumps [boto3](https://github.com/boto/boto3) from 1.22.9 to 1.23.0. - [Release notes](https://github.com/boto/boto3/releases) - [Changelog](https://github.com/boto/boto3/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/boto/boto3/compare/1.22.9...1.23.0) --- updated-dependencies: - dependency-name: boto3 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index d041dff2a..b331da11e 100644 --- a/setup.py +++ b/setup.py @@ -49,7 +49,7 @@ ], 'image': ['scikit-image==0.19.2'], 'generic': [ - 'boto3==1.22.9', + 'boto3==1.23.0', 'moto==3.1.9' ], }, From f402f19df02ab77367912d203a917bdd93432cb8 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 16 May 2022 12:55:35 +0000 Subject: [PATCH 184/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index dcde42e5a..5b3102d49 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -14,5 +14,5 @@ dependencies: - seaborn =0.11.2 - scikit-image =0.19.2 - randspg =0.0.1 -- boto3 =1.22.9 +- boto3 =1.23.0 - moto =3.1.9 From 864c7578dabf1d1c640e5265431fad83cbd4d513 Mon Sep 17 00:00:00 2001 From: usaikia <76955804+usaikia@users.noreply.github.com> Date: Tue, 17 May 2022 10:30:32 +0200 Subject: [PATCH 185/434] Update pyiron_contrib/atomistics/meamfit/meamfit.py Co-authored-by: Marvin Poul --- pyiron_contrib/atomistics/meamfit/meamfit.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyiron_contrib/atomistics/meamfit/meamfit.py b/pyiron_contrib/atomistics/meamfit/meamfit.py index 8667aa807..13272396a 100644 --- a/pyiron_contrib/atomistics/meamfit/meamfit.py +++ b/pyiron_contrib/atomistics/meamfit/meamfit.py @@ -206,7 +206,7 @@ def from_directory(self, directory): self.collect_output() self.status.finished = True else: - return + raise RuntimeError('Can import MEAMfit calculation into finished job. Needs to be `initialized`.) # define hdf5 input and output def to_hdf(self, hdf=None, group_name=None): From 9cf0db12cc53c8a0e598d7a10b88b31adfc4982f Mon Sep 17 00:00:00 2001 From: usaikia <76955804+usaikia@users.noreply.github.com> Date: Tue, 17 May 2022 11:03:25 +0200 Subject: [PATCH 186/434] Update meamfit.py Add doc string and runtime error to from_directory(). Also fixed a small bug in _collect_potential_performance() which was also causing problem in collecting outputs. --- pyiron_contrib/atomistics/meamfit/meamfit.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/pyiron_contrib/atomistics/meamfit/meamfit.py b/pyiron_contrib/atomistics/meamfit/meamfit.py index 13272396a..e07f9649a 100644 --- a/pyiron_contrib/atomistics/meamfit/meamfit.py +++ b/pyiron_contrib/atomistics/meamfit/meamfit.py @@ -198,6 +198,12 @@ def collect_logfiles(self): pass def from_directory(self, directory): + """ + Collect input and output of a finished MeamFit job from a directory and convert into pyiron hdf file. + Args: + directory: working directory of the job. + + """ if not self.status.finished: self.status.collect = True self._import_directory = directory @@ -206,7 +212,7 @@ def from_directory(self, directory): self.collect_output() self.status.finished = True else: - raise RuntimeError('Can import MEAMfit calculation into finished job. Needs to be `initialized`.) + raise RuntimeError("Unable to import MEAMfit calculation into finished job. Needs to be `initialized`.") # define hdf5 input and output def to_hdf(self, hdf=None, group_name=None): @@ -285,7 +291,7 @@ def _collect_potential_performance(cwd=None): if 'datapnts_best' in file: with open(posixpath.join(cwd, file), 'r') as f: content = f.readlines() - data_points_lst = list(zip(*[line.split() for line in content[5:]])) + data_points_lst = list(zip(*[line.split() for line in content[6:]])) df_new = pd.DataFrame({'Potential': [pot_file for pot_file in files_in_cwd_lst if 'alloy_' + str(file).split('_best')[-1] == pot_file.split('.')[-1]] * len(data_points_lst[0]), From 130c57bb137e11a780df5c2d4b299b85857ea61d Mon Sep 17 00:00:00 2001 From: Niklas Leimeroth Date: Tue, 17 May 2022 13:21:36 +0200 Subject: [PATCH 187/434] remove import --- pyiron_contrib/atomistics/ml/potentialfit.py | 1 - 1 file changed, 1 deletion(-) diff --git a/pyiron_contrib/atomistics/ml/potentialfit.py b/pyiron_contrib/atomistics/ml/potentialfit.py index f8996b71b..03aa5a82c 100644 --- a/pyiron_contrib/atomistics/ml/potentialfit.py +++ b/pyiron_contrib/atomistics/ml/potentialfit.py @@ -5,7 +5,6 @@ import abc import pandas as pd -import matplotlib.pyplot as plt from pyiron_base import FlattenedStorage from pyiron_contrib.atomistics.atomistics.job.trainingcontainer import TrainingContainer, TrainingStorage From 702d722426d5835c70e88fdb0c18ba98f5a61a18 Mon Sep 17 00:00:00 2001 From: Niklas Leimeroth Date: Tue, 17 May 2022 13:29:25 +0200 Subject: [PATCH 188/434] add_structure and plotting interface --- .../atomistics/job/trainingcontainer.py | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py index 1fdbc125f..5a5a03254 100644 --- a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py +++ b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py @@ -84,6 +84,22 @@ def include_structure(self, structure, energy, forces=None, stress=None, name=No """ self._container.include_structure(structure, energy, forces, stress, name) + def add_structure(self, structure, energy, forces=None, stress=None, name=None, **arrays): + """ + Add new structure to structure list and save energy and forces with it. + + For consistency with the rest of pyiron, energy should be in units of eV and forces in eV/A, but no conversion + is performed. + + Args: + structure_or_job (:class:`~.Atoms`): structure to add + energy (float): energy of the whole structure + forces (Nx3 array of float, optional): per atom forces, where N is the number of atoms in the structure + stress (6 array of float, optional): per structure stresses in voigt notation + name (str, optional): name describing the structure + """ + self._container.add_structure(structure, energy, identifier=None, forces=None, stress=None, **arrays) + def include_dataset(self, dataset): """ Add a pandas DataFrame to the saved structures. @@ -635,3 +651,10 @@ def to_list(self, filter_function=None): force_list = data_table.forces.to_list() num_atoms_list = data_table.number_of_atoms.to_list() return structure_list, energy_list, force_list, num_atoms_list + + @property + def plot(self): + """ + :class:`.TrainingPlots`: plotting interface + """ + return TrainingPlots(self) \ No newline at end of file From 19441da28db077f7a103974b54df7025be3b7df6 Mon Sep 17 00:00:00 2001 From: Niklas Leimeroth Date: Tue, 17 May 2022 14:39:13 +0200 Subject: [PATCH 189/434] remove print statement --- pyiron_contrib/atomistics/atomicrex/structure_list.py | 1 - 1 file changed, 1 deletion(-) diff --git a/pyiron_contrib/atomistics/atomicrex/structure_list.py b/pyiron_contrib/atomistics/atomicrex/structure_list.py index 6785bf131..844c8faf9 100644 --- a/pyiron_contrib/atomistics/atomicrex/structure_list.py +++ b/pyiron_contrib/atomistics/atomicrex/structure_list.py @@ -570,7 +570,6 @@ def add_training_data(self, container: TrainingContainer) -> None: self._structures.extend(storage) self.fit_properties["atomic-energy"].extend(atomic_energy_storage) - print(self.fit_properties["atomic-energy"].target_val) self.fit_properties["atomic-forces"].extend(atomic_forces_storage) def _to_TrainingStorage(self, final: bool = False) -> TrainingStorage: From 5c1c570607ec487eececa2f51a2e424fedc02b72 Mon Sep 17 00:00:00 2001 From: Alexander Knoll Date: Tue, 17 May 2022 15:01:22 +0200 Subject: [PATCH 190/434] MAINT: replace numpy by google style docstrings and add missing type annotations --- pyiron_contrib/atomistics/runner/job.py | 232 ++++++++++++------ .../atomistics/runner/storageclasses.py | 89 +++---- pyiron_contrib/atomistics/runner/utils.py | 44 +++- 3 files changed, 229 insertions(+), 136 deletions(-) diff --git a/pyiron_contrib/atomistics/runner/job.py b/pyiron_contrib/atomistics/runner/job.py index fb76f8e5f..39d37d5bf 100644 --- a/pyiron_contrib/atomistics/runner/job.py +++ b/pyiron_contrib/atomistics/runner/job.py @@ -7,19 +7,13 @@ construction of high-dimensional neural network potentials developed in the group of Prof. Dr. Jörg Behler at Georg-August-Universität Göttingen. -Attributes ----------- - RunnerJob : GenericJob, HasStorage +Attributes: + RunnerFit : GenericJob, HasStorage, PotentialFit Job class for generating and evaluating potential energy surfaces using RuNNer. -Reference ---------- - [RuNNer online documentation](https://theochem.gitlab.io/runner) - -FIXME ------ -Paket bitte auch via Conda Forge anbieten +.. _RuNNer online documentation: + https://theochem.gitlab.io/runner """ from typing import Optional, List @@ -95,51 +89,50 @@ class RunnerJob(GenericJob, HasStorage, PotentialFit): - energy - forces - Examples - -------- - Starting a new calculation (Mode 1): - - ```python - from pyiron import Project - from job import RunnerFit - from runnerase import read_runnerase + Examples: + Starting a new calculation (Mode 1): - # Create an empty sample project and a new job. - pr = Project(path='example') - job = pr.create_job(RunnerJob, 'mode1') + ```python + from pyiron import Project + from job import RunnerFit + from runnerase import read_runnerase - # Import RuNNer settings from RuNNer input.nn file using ASE's I/O routines. - options = read_runnerconfig('./') + # Create an empty sample project and a new job. + pr = Project(path='example') + job = pr.create_job(RunnerJob, 'mode1') - # Read input structures from a TrainingContainer that was saved before. - container = pr['H2O_MD'] + # Import RuNNer settings from RuNNer input.nn file using ASE's I/O + # routines. + options = read_runnerconfig('./') - # Attach the information to the job. + # Read input structures from a TrainingContainer that was saved before. + container = pr['H2O_MD'] - job.add_training_data = container - job.parameters.update(options) + # Attach the information to the job. + job.add_training_data = container + job.parameters.update(options) - # Set the RuNNer Mode to 1. - job.input.runner_mode = 1 + # Set the RuNNer Mode to 1. + job.input.runner_mode = 1 - job.run() - ``` + job.run() + ``` - Restarting Mode 1 and running Mode 2: + Restarting Mode 1 and running Mode 2: - ```python - job = Project('example')['mode1'].restart('mode2') - job.parameters.runner_mode = 2 - job.run() - ``` + ```python + job = Project('example')['mode1'].restart('mode2') + job.parameters.runner_mode = 2 + job.run() + ``` - Restarting Mode 2 and running Mode 3: + Restarting Mode 2 and running Mode 3: - ```python - job = Project('runnertest')['mode2'].restart('mode3') - job.parameters.runner_mode = 3 - job.run() - ``` + ```python + job = Project('runnertest')['mode2'].restart('mode3') + job.parameters.runner_mode = 3 + job.run() + ``` """ __name__ = 'RuNNerJob' @@ -158,14 +151,11 @@ class RunnerJob(GenericJob, HasStorage, PotentialFit): def __init__(self, project: Project, job_name: str) -> None: """Initialize the class. - Parameters - ---------- - project : Project - The project container where the job is created. - job_name : str - The label of the job (used for all directories). + Args: + project (Project): The project container where the job is created. + job_name (str): The label of the job (used for all directories). """ - # Initialize the base class. + # Initialize first the job, then the job storage. GenericJob.__init__(self, project=project, job_name=job_name) HasStorage.__init__(self) @@ -229,22 +219,42 @@ def publication(self): @property def input(self) -> DataContainer: - """Show all input properties in storage.""" + """Show all input properties in storage. + + Returns: + self.storage.input (DataContainer): The data container with all + input properties. + """ return self.storage.input @property - def output(self): - """Show all calculation output in storage.""" + def output(self) -> DataContainer: + """Show all calculation output in storage. + + Returns: + self.storage.output (DataContainer): The data container with all + output properties. + """ return self.storage.output @property - def parameters(self): - """Show the input parameters/settings in storage.""" + def parameters(self) -> DataContainer: + """Show the input parameters/settings in storage. + + Returns: + self.storage.input.parameters (DataContainer): The data container + with all input parameters for RuNNer. + """ return self.storage.input.parameters @property def scaling(self) -> Optional[HDFScaling]: - """Show the symmetry function scaling data in storage.""" + """Show the symmetry function scaling data in storage. + + Returns: + self.output.scaling (HDFScaling, None): If defined, the symmetry + function scaling data in storage. + """ if 'scaling' in self.output: return self.output.scaling @@ -252,12 +262,22 @@ def scaling(self) -> Optional[HDFScaling]: @scaling.setter def scaling(self, scaling: HDFScaling) -> None: - """Set the symmetry function scaling data in storage.""" + """Set the symmetry function scaling data in storage. + + Args: + scaling (HDFScaling): RuNNer symmetry function scaling data wrapped + in a HDFScaling storage container. + """ self.output.scaling = scaling @property def weights(self) -> Optional[HDFWeights]: - """Show the atomic neural network weights data in storage.""" + """Show the atomic neural network weights data in storage. + + Returns: + self.output.weights (HDFWeights, None): If defined, the weights in + storage. + """ if 'weights' in self.output: return self.output.weights @@ -265,12 +285,22 @@ def weights(self) -> Optional[HDFWeights]: @weights.setter def weights(self, weights: HDFWeights) -> None: - """Set the weights of the atomic neural networks in storage.""" + """Set the weights of the atomic neural networks in storage. + + Args: + weights (HDFWeights): Atomic neural network weights wrapped in a + HDWeights storage container. + """ self.output.weights = weights @property def sfvalues(self) -> Optional[HDFSymmetryFunctionValues]: - """Show the symmetry function value data in storage.""" + """Show the symmetry function value data in storage. + + Returns: + self.output.sfvalues (HDFSymmetryFunctionValues, None): If defined, + the symmetry function values in storage. + """ if 'sfvalues' in self.output: return self.output.sfvalues @@ -278,12 +308,22 @@ def sfvalues(self) -> Optional[HDFSymmetryFunctionValues]: @sfvalues.setter def sfvalues(self, sfvalues: HDFSymmetryFunctionValues) -> None: - """Set the symmetry function value data in storage.""" + """Set the symmetry function value data in storage. + + Args: + sfvalues (HDFSymmetryFunctionValues): Symmetry function values + wrapped in a HDF storage container. + """ self.output.sfvalues = sfvalues @property - def splittraintest(self): - """Show the split between training and testing data in storage.""" + def splittraintest(self) -> Optional[HDFSplitTrainTest]: + """Show the split between training and testing data in storage. + + Returns: + self.output.splittraintest (HDFSplitTrainTest, None): If defined, + the splitting data in storage. + """ if 'splittraintest' in self.output: return self.output.splittraintest @@ -291,11 +331,21 @@ def splittraintest(self): @splittraintest.setter def splittraintest(self, splittraintest: HDFSplitTrainTest) -> None: - """Set the split between training and testing data in storage.""" + """Set the split between training and testing data in storage. + + Args: + splittraintest (HDFSplitTrainTest): Split between training and + testing data wrapped in a HDF storage container. + """ self.output.splittraintest = splittraintest def _add_training_data(self, container: TrainingContainer) -> None: - """Add a set of training data to storage.""" + """Add a set of training data to storage. + + Args: + container (TrainingContainer): The training data that will be added + to `self`. + """ # Get a dictionary of all property arrays saved in this container. arrays = container.to_dict() arraynames = arrays.keys() @@ -306,11 +356,22 @@ def _add_training_data(self, container: TrainingContainer) -> None: self.storage.input.training_data.add_structure(**zipped) def _get_training_data(self) -> TrainingStorage: - """Show the stored training data.""" + """Show the stored training data. + + Returns: + self.storage.input.training_data (TrainingContainer): The stored + training data. + """ return self.storage.input.training_data def _get_predicted_data(self) -> FlattenedStorage: - """Show the predicted data after a successful fit.""" + """Show the predicted data after a successful fit. + + Returns: + predicted_data (TrainingContainer): The predicted data in storage. + At the moment, pyiron can interpret the energies and forces + predicted by RuNNer. + """ # Energies and forces will only be available after RuNNer Mode 3. if 'energy' not in self.output: raise RuntimeError('You have to run RuNNer prediction mode ' @@ -340,7 +401,22 @@ def get_lammps_potential( self, elements: Optional[List[str]] = None ) -> pd.DataFrame: - """Return a pandas dataframe with information for setting up LAMMPS.""" + """Return a pandas dataframe with information for setting up LAMMPS. + + The nnp pair_style for LAMMPS is provided by the external package n2p2, + that is maintained by Andreas Singgraber. Please take a look at their + [documentation](https://compphysvienna.github.io/n2p2/interfaces/pair_\ + nnp.html) + to understand more about the configuration options. + + Args: + elements (List[str], optional): A list of elements for which the + potential will be returned. + + Returns: + df (pd.DataFrame): A dataframe containing all the information + required to set up a LAMMPS job with RuNNer. + """ if not self.status.finished: raise RuntimeError('LAMMPS potential can only be generated after a ' + 'successful fit.') @@ -504,12 +580,9 @@ def to_hdf( ) -> None: """Store all job information in HDF5 format. - Parameters - ---------- - hdf : ProjectHDFio - HDF5-object which contains the project data. - group_name : str - Subcontainer name. + Args: + hdf (ProjectHDFio): HDF5-object which contains the project data. + group_name (str): Subcontainer name. """ # Replace the runnerase class `SymmetryFunctionSet` by the extended # class from the `storageclasses` module which knows how to write itself @@ -529,12 +602,9 @@ def from_hdf( ) -> None: """Reload all job information from HDF5 format. - Parameters - ---------- - hdf : ProjectHDFio - HDF5-object which contains the project data. - group_name : str - Subcontainer name. + Args: + hdf (ProjectHDFio): HDF5-object which contains the project data. + group_name (str): Subcontainer name. """ GenericJob.from_hdf(self, hdf=hdf, group_name=group_name) HasStorage.from_hdf(self, hdf=self.project_hdf5, group_name='') diff --git a/pyiron_contrib/atomistics/runner/storageclasses.py b/pyiron_contrib/atomistics/runner/storageclasses.py index 9f593908f..0faedc236 100644 --- a/pyiron_contrib/atomistics/runner/storageclasses.py +++ b/pyiron_contrib/atomistics/runner/storageclasses.py @@ -10,18 +10,27 @@ extended in this module with additional functions, typically `to_hdf(...)` and `from_hdf(...)`. -Attributes ----------- - SymmetryFunctionSet : runnerase.SymmetryFunctionSet - Job class for generating and evaluating potential energy surfaces using - RuNNer. - -Reference ---------- - [RuNNer online documentation](https://theochem.gitlab.io/runner) +Attributes: + HDFSymmetryFunctionValues (FlattenedStorage): Storage container for + symmetry function values. + RunneraseHDFMixin (HasHDF): Abstract mixin for all classes that store + RuNNer results to HDF. + HDFSymmetryFunctionSet (SymmetryFunctionSet, RunneraseHDFMixin): Storage + container for a set of symmetry functions. + HDFSplitTrainTest (RunnerSplitTrainTest, RunneraseHDFMixin): Storage + container for the splitting between training and testing dataset. + HDFFitResults (RunnerFitResults, RunneraseHDFMixin): Storage container + for the results of a RuNNer fit. + HDFWeights (RunnerWeights, RunneraseHDFMixin): Storage container for the + weights of atomic neural networks. + HDFScaling (RunnerScaling, RunneraseHDFMixin): Storage container for the + symmetry function scaling data. + +.. _RuNNer online documentation: + https://theochem.gitlab.io/runner """ -from typing import Optional +from typing import Optional, Union from abc import abstractmethod import numpy as np @@ -139,7 +148,7 @@ def to_runnerase(self) -> RunnerSymmetryFunctionValues: class RunneraseHDFMixin(HasHDF): - """Extend RunnerStructureSymmetryFunctionValues with HDF5 compatibility.""" + """Abstract Mixin to add HDF5 compatibility to runnerase classes.""" __hdf_version__ = '0.3.0' @@ -152,32 +161,32 @@ def runnerase_properties(self): @property @abstractmethod def baseclass(self): - """Define the base class which is wrapped by this HDF class.""" + """Define the runnerase class which is wrapped by this HDF class.""" ... def from_runnerase( self, - runnerase_class + runnerase_class: Union[RunnerSplitTrainTest, RunnerWeights, + RunnerScaling, RunnerFitResults, + RunnerSymmetryFunctionValues] ) -> None: """Fill `self` with information of the corresponding `runnerase` object. - Parameters - ---------- - runnerase_split : RunnerSplitTrainTest - A `runnerase` class object containing the split between training - and testing data. + Args: + runnerase_class (runnerase storage class): The runnerase class whose + information will be wrapped. """ for prop in self.runnerase_properties: self.__dict__[prop] = runnerase_class.__dict__[prop] - def to_runnerase(self) -> RunnerSplitTrainTest: + def to_runnerase(self) -> Union[RunnerSplitTrainTest, RunnerWeights, + RunnerScaling, RunnerFitResults, + RunnerSymmetryFunctionValues]: """Create the corresponding `runnerase` object from `self`. - Returns - ---------- - runnerase_split : RunnerSplitTrainTest - A `runnerase` class object containing the split between training - and testing data. + Returns: + runnerase_class (runnerase storage class): The runnerase class whose + information was wrapped. """ runnerase_class = self.baseclass() @@ -189,10 +198,8 @@ def to_runnerase(self) -> RunnerSplitTrainTest: def _to_hdf(self, hdf: ProjectHDFio) -> None: """Write `self` to HDF5 storage. - Parameters - ---------- - hdf : ProjectHDFio - The HDF file where `self` will be stored. + Args: + hdf (ProjectHDFio): The HDF file where `self` will be stored. """ for idx, prop in enumerate(self.runnerase_properties): hdf[f'{prop}__index_{idx}'] = self.__dict__[prop] @@ -201,13 +208,13 @@ def _from_hdf( self, hdf: ProjectHDFio, version: Optional[str] = None - ) -> 'HDFSplitTrainTest': + ) -> Union[RunnerSplitTrainTest, RunnerWeights, RunnerScaling, + RunnerFitResults, RunnerSymmetryFunctionValues]: """Read `self` from HDF5 storage. - Parameters - ---------- - hdf : ProjectHDFio - The HDF file where `self` will be stored. + Args: + hdf (ProjectHDFio): The HDF file where `self` will be stored. + version (str): The HDF version of the storage file. """ if version != self.__hdf_version__: raise RuntimeError('Invalid HDF5 version found while reading ' @@ -222,6 +229,7 @@ def _from_hdf( return self def _get_hdf_group_name(self): + """Get the name of the group where this object is stored in HDF.""" return self.__class__.__name__ @@ -250,10 +258,8 @@ def _to_hdf( all symmetry functions can be written to and read from a list representation. Therefore, they are also stored as lists in HDF format. - Parameters - ---------- - hdf : ProjectHDFio - The HDF file where `self` will be stored. + Args: + hdf (ProjectHDFio): The HDF file where `self` will be stored. """ for idx, sfset in enumerate(self.sets): hdfset = HDFSymmetryFunctionSet() @@ -270,12 +276,9 @@ def _from_hdf( ) -> 'HDFSplitTrainTest': """Read `self` from HDF5 storage. - Parameters - ---------- - hdf : ProjectHDFio - The HDF file where `self` will be stored. - group_name : str - The name of the subgroup. + Args: + hdf (ProjectHDFio): The HDF file where `self` will be stored. + version (str): The HDF version of the storage file. """ if version != self.__hdf_version__: raise RuntimeError('Invalid HDF5 version found while reading ' diff --git a/pyiron_contrib/atomistics/runner/utils.py b/pyiron_contrib/atomistics/runner/utils.py index fef1ac182..dc943a1c1 100644 --- a/pyiron_contrib/atomistics/runner/utils.py +++ b/pyiron_contrib/atomistics/runner/utils.py @@ -3,15 +3,8 @@ # Distributed under the terms of "New BSD License", see the LICENSE file. """Utility functions for use with the pyiron Hamiltonian of RuNNer. -Attributes ----------- - RunnerTrainingContainer : TrainingContainer - Extension of the TrainingContainer class with a function to convert - to_ase. - -Reference ---------- - [RuNNer online documentation](https://theochem.gitlab.io/runner) +.. _RuNNer online documentation: + https://theochem.gitlab.io/runner """ from typing import List @@ -28,7 +21,14 @@ def container_to_ase(container: TrainingContainer) -> List[Atoms]: - """Convert a `TrainingContainer` into a list of ASE Atoms objects.""" + """Convert a `TrainingContainer` into a list of ASE Atoms objects. + + Args: + container (TrainingContainer): The training data to be converted. + + Returns: + structures (List[Atoms]): A list of ASE Atoms objects. + """ structure_lst = [] arrays = container.to_dict() @@ -75,7 +75,14 @@ def ase_to_container( structures: List[Atoms], container: TrainingContainer ) -> None: - """Add `structures` to `TrainingContainer`.""" + """Append `structures` to `TrainingContainer`. + + Args: + structures (List[Atoms]): A list of ASE Atoms objects to be stored on + the given `container`. + container (TrainingContainer): The container to which the data will be + appended. + """ for structure in structures: properties = {} @@ -91,6 +98,7 @@ def ase_to_container( properties['totalcharge'] = structure.calc.get_property( 'totalcharge' ) + else: properties['totalcharge'] = np.sum(properties['charges']) @@ -103,7 +111,19 @@ def ase_to_container( def pad(array: np.ndarray, desired_length: int) -> np.ndarray: - """Pad `sfvalues` with `np.NaN` rows up to `num_atoms`.""" + """Pad `array` with `np.NaN` rows up to `desired_length`. + + This routine pads an array of symmetry function values with np.NaN in those + places where the index (first column of sfvalue arrays) is missing. + + Args: + array (np.ndarray): The array to be padded. The first column must + contain a continuous index. + desired_length (int): The final desired length of the array. + + Returns: + array_padded (np.ndarray): The padded array. + """ # Create a sequence of missing indices. all_indices = np.arange(0, desired_length, 1) contained_indices = array[:, 0].astype(int) From f2d8393d958408d0437c656e9842481e4f0e6a74 Mon Sep 17 00:00:00 2001 From: Alexander Knoll Date: Tue, 17 May 2022 15:02:04 +0200 Subject: [PATCH 191/434] MAINT: correct spelling mistakes and remove commented lines. --- pyiron_contrib/atomistics/runner/job.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/pyiron_contrib/atomistics/runner/job.py b/pyiron_contrib/atomistics/runner/job.py index 39d37d5bf..9431c1447 100644 --- a/pyiron_contrib/atomistics/runner/job.py +++ b/pyiron_contrib/atomistics/runner/job.py @@ -22,21 +22,17 @@ import pandas as pd from ase.data import atomic_numbers -# from ase.atoms import Atoms as ASEAtoms from runnerase.io.ase import (read_results_mode1, read_results_mode2, read_results_mode3) from runnerase import Runner from runnerase.defaultoptions import DEFAULT_PARAMETERS -# from runnerase.singlepoint import RunnerSinglePointCalculator from pyiron import Project from pyiron_base import ProjectHDFio, FlattenedStorage from pyiron_base import state, Executable, GenericJob, DataContainer from pyiron_base.generic.object import HasStorage -# from pyiron_atomistics.atomistics.structure.atoms import Atoms - from pyiron_contrib.atomistics.ml.potentialfit import PotentialFit from pyiron_contrib.atomistics.atomistics.job import (TrainingContainer, TrainingStorage) @@ -447,7 +443,7 @@ def get_lammps_potential( if len(cutoffs) > 1: raise RuntimeError('LAMMPS potential can only be generated for a ' - + 'a uniform cutoff radius.') + + 'uniform cutoff radius.') return pd.DataFrame({ 'Name': [f"RuNNer-{''.join(elements)}"], From 1ce40bd347a57f774739762deb8658785d852b9f Mon Sep 17 00:00:00 2001 From: Alexander Knoll Date: Tue, 17 May 2022 15:02:32 +0200 Subject: [PATCH 192/434] ENH: Make n2p2/LAMMPS record extrapolation warnings. --- pyiron_contrib/atomistics/runner/job.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyiron_contrib/atomistics/runner/job.py b/pyiron_contrib/atomistics/runner/job.py index 9431c1447..12fc8edf7 100644 --- a/pyiron_contrib/atomistics/runner/job.py +++ b/pyiron_contrib/atomistics/runner/job.py @@ -451,7 +451,7 @@ def get_lammps_potential( 'Model': ['RuNNer'], 'Species': [elements], 'Config': [['pair_style nnp dir "./" ' - + 'showew no showewsum 0 resetew no maxew 100 ' + + 'showew yes showewsum 0 resetew no maxew 100 ' + 'cflength 1.8897261328 cfenergy 0.0367493254 ' + f'emap "{emap}"\n', f'pair_coeff * * {cutoff}\n']] From 55b6b947ccc02624f15b35aeffbee7aaf6a22f09 Mon Sep 17 00:00:00 2001 From: Alexander Knoll Date: Tue, 17 May 2022 15:03:21 +0200 Subject: [PATCH 193/434] ENH: Simplify the conversion of TrainingContainer to ASE Atoms. --- pyiron_contrib/atomistics/runner/utils.py | 29 +++++++++-------------- 1 file changed, 11 insertions(+), 18 deletions(-) diff --git a/pyiron_contrib/atomistics/runner/utils.py b/pyiron_contrib/atomistics/runner/utils.py index dc943a1c1..b7d5f86bd 100644 --- a/pyiron_contrib/atomistics/runner/utils.py +++ b/pyiron_contrib/atomistics/runner/utils.py @@ -41,31 +41,24 @@ def container_to_ase(container: TrainingContainer) -> List[Atoms]: # Retrieve atomic positions, cell vectors, etc. atoms = pyiron_to_ase(zipped['structure']) - # Attach properties to the Atoms object. + # Attach charges to the Atoms object. if 'charges' in zipped: atoms.set_initial_charges(zipped['charges']) - if 'energy' in zipped: - energy = zipped['energy'] - else: - energy = None - - if 'forces' in zipped: - forces = zipped['forces'] - else: - forces = None - - if 'totalcharge' in zipped: - totalcharge = zipped['totalcharge'] - else: - totalcharge = None + # Store all properties that will be saved on the calculator below. + calc_properties = {'energy': None, 'forces': None, 'totalcharge': None} + for prop in calc_properties: + if prop in zipped: + calc_properties[prop] = zipped[prop] + # Storage energies, forces, and totalcharge on a calculator object. atoms.calc = RunnerSinglePointCalculator( atoms=atoms, - energy=energy, - forces=forces, - totalcharge=totalcharge + energy=calc_properties['energy'], + forces=calc_properties['forces'], + totalcharge=calc_properties['totalcharge'] ) + structure_lst.append(atoms) return structure_lst From db08be5a6f95a33e1a9b8985112ec3b930ffc1db Mon Sep 17 00:00:00 2001 From: Alexander Knoll Date: Tue, 17 May 2022 15:04:21 +0200 Subject: [PATCH 194/434] BUGFIX: Add meaningful defaults to predicted energies and forces. The zip-statement for combining energies, forces, and structures would not work if those were not available otherwise. --- pyiron_contrib/atomistics/runner/job.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pyiron_contrib/atomistics/runner/job.py b/pyiron_contrib/atomistics/runner/job.py index 12fc8edf7..b6610a601 100644 --- a/pyiron_contrib/atomistics/runner/job.py +++ b/pyiron_contrib/atomistics/runner/job.py @@ -373,12 +373,12 @@ def _get_predicted_data(self) -> FlattenedStorage: raise RuntimeError('You have to run RuNNer prediction mode ' + '(Mode 3) before you can access predictions.') - pred_properties = {'energy': None, 'forces': None} - - # Get a list of structures and energies. + # Get a list of structures. structures = list(self.training_data.iter_structures()) # Get the values of all properties RuNNer can predict for a structure. + pred_properties = {'energy': np.full((len(structures),), np.nan), + 'forces': np.full((3, len(structures)), np.nan)} for prop in pred_properties: if prop in self.output: pred_properties[prop] = self.output[prop] From 37416ba614a007b9c9ab30d407c54459579e9469 Mon Sep 17 00:00:00 2001 From: Alexander Knoll Date: Tue, 17 May 2022 15:06:47 +0200 Subject: [PATCH 195/434] MAINT: rename `RunnerJob` to `RunnerFit` --- pyiron_contrib/atomistics/runner/job.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pyiron_contrib/atomistics/runner/job.py b/pyiron_contrib/atomistics/runner/job.py index b6610a601..2817190a2 100644 --- a/pyiron_contrib/atomistics/runner/job.py +++ b/pyiron_contrib/atomistics/runner/job.py @@ -52,7 +52,7 @@ __date__ = 'May 11, 2022' -class RunnerJob(GenericJob, HasStorage, PotentialFit): +class RunnerFit(GenericJob, HasStorage, PotentialFit): """Generate a potential energy surface using RuNNer. The RuNNer Neural Network Energy Representation (RuNNer) is a Fortran code @@ -95,7 +95,7 @@ class RunnerJob(GenericJob, HasStorage, PotentialFit): # Create an empty sample project and a new job. pr = Project(path='example') - job = pr.create_job(RunnerJob, 'mode1') + job = pr.create_job(RunnerFit, 'mode1') # Import RuNNer settings from RuNNer input.nn file using ASE's I/O # routines. @@ -131,7 +131,7 @@ class RunnerJob(GenericJob, HasStorage, PotentialFit): ``` """ - __name__ = 'RuNNerJob' + __name__ = 'RuNNerFit' # These properties are needed by RuNNer as input data (depending on the # chosen RuNNer mode). From 9894e71d6a26923a1434b9d8d8810bf679811ed1 Mon Sep 17 00:00:00 2001 From: Alexander Knoll Date: Tue, 17 May 2022 15:22:09 +0200 Subject: [PATCH 196/434] Add arguments `energy` and `name` back to `include_structure` and `add_structure` routines. --- .../atomistics/job/trainingcontainer.py | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py index da8601144..6bf52e297 100644 --- a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py +++ b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py @@ -28,7 +28,7 @@ Fe_bcc ... """ -from typing import Callable, Optional, Union +from typing import Callable, Dict, Any from warnings import catch_warnings import numpy as np @@ -75,6 +75,8 @@ def include_job(self, job, iteration_step=-1): def include_structure( self, structure, + energy=None, + name=None, **properties ): """ @@ -92,7 +94,8 @@ def include_structure( notation name (str, optional): name describing the structure """ - self._container.include_structure(structure, **properties) + self._container.include_structure(structure, name=name, energy=energy, + **properties) def include_dataset(self, dataset): """ @@ -495,12 +498,7 @@ def shell_distances(self, num_shells=4): class TrainingStorage(StructureStorage): def __init__(self): super().__init__() - # self.add_array("energy", dtype=np.float64, per="chunk", fill=np.nan) - # self.add_array( - # "forces", shape=(3,), dtype=np.float64, per="element", fill=np.nan - # ) - # # save stress in voigt notation - # self.add_array("stress", shape=(6,), dtype=np.float64, per="chunk", fill=np.nan) + self.add_array("energy", dtype=np.float64, per="chunk", fill=np.nan) self._table_cache = None self.to_pandas() @@ -582,6 +580,8 @@ def include_job(self, job, iteration_step=-1): def include_structure( self, structure, + energy, + name=None, **properties ): """ @@ -597,16 +597,18 @@ def include_structure( stress (6 array of float, optional): per structure stresses in voigt notation name (str, optional): name describing the structure """ - name = properties.pop('name', None) - self.add_structure(structure, identifier=name, **properties) + self.add_structure(structure, identifier=name, energy=energy, + **properties) def add_structure( self, structure: Atoms, + energy, identifier=None, **arrays ) -> None: - super().add_structure(structure, identifier, **arrays) + super().add_structure(structure, identifier=identifier, energy=energy, + **arrays) def include_dataset(self, dataset): """ From ccba6d8a86c0316295d2bdfc201838a7e1f35d66 Mon Sep 17 00:00:00 2001 From: Alexander Knoll Date: Tue, 17 May 2022 15:22:39 +0200 Subject: [PATCH 197/434] MAINT: Linting and add documentation to `to_dict` routine. --- .../atomistics/atomistics/job/trainingcontainer.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py index 6bf52e297..3ab955618 100644 --- a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py +++ b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py @@ -653,11 +653,12 @@ def to_list(self, filter_function=None): num_atoms_list = data_table.number_of_atoms.to_list() return (structure_list, energy_list, force_list, num_atoms_list) - def to_dict(self): - dict = {} + def to_dict(self) -> Dict[str, Any]: + """Return a dictionary of all structures and training properties.""" + dict_arrays = {} # Get structure information. - dict['structure'] = list(self.iter_structures()) + dict_arrays['structure'] = list(self.iter_structures()) # Some arrays are only for internal usage or structure information that # was already saved in dict['structure']. @@ -668,5 +669,5 @@ def to_dict(self): if array in internal_arrays: continue - dict[array] = self.get_array_ragged(array) - return dict \ No newline at end of file + dict_arrays[array] = self.get_array_ragged(array) + return dict_arrays From 185b0a67dbd05d64eb2b22b526b59fc29110391e Mon Sep 17 00:00:00 2001 From: Alexander Knoll Date: Tue, 17 May 2022 15:23:11 +0200 Subject: [PATCH 198/434] Rename `RunnerJob` to `RunnerFit` also in module initialization. --- pyiron_contrib/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyiron_contrib/__init__.py b/pyiron_contrib/__init__.py index 1452595e4..11cb57a31 100644 --- a/pyiron_contrib/__init__.py +++ b/pyiron_contrib/__init__.py @@ -36,7 +36,7 @@ JOB_CLASS_DICT['TrainingContainer'] = 'pyiron_contrib.atomistics.atomistics.job.trainingcontainer' JOB_CLASS_DICT['RandomDisMaster'] = 'pyiron_contrib.atomistics.mlip.masters' JOB_CLASS_DICT['RandomMDMaster'] = 'pyiron_contrib.atomistics.mlip.masters' -JOB_CLASS_DICT['RunnerJob'] = 'pyiron_contrib.atomistics.runner.job' +JOB_CLASS_DICT['RunnerFit'] = 'pyiron_contrib.atomistics.runner.job' JOB_CLASS_DICT['MlipSelect'] = 'pyiron_contrib.atomistics.mlip.mlipselect' JOB_CLASS_DICT['Mlip'] = 'pyiron_contrib.atomistics.mlip.mlip' JOB_CLASS_DICT['LammpsMlip'] = 'pyiron_contrib.atomistics.mlip.lammps' From fc63eaf028e0754d623c9e33093332c9e84de1c1 Mon Sep 17 00:00:00 2001 From: Niklas Leimeroth Date: Wed, 18 May 2022 22:04:07 +0200 Subject: [PATCH 199/434] fix spa inheritance --- pyiron_contrib/atomistics/atomicrex/general_input.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/pyiron_contrib/atomistics/atomicrex/general_input.py b/pyiron_contrib/atomistics/atomicrex/general_input.py index 5b6cb8bc6..ae7cbb2ff 100644 --- a/pyiron_contrib/atomistics/atomicrex/general_input.py +++ b/pyiron_contrib/atomistics/atomicrex/general_input.py @@ -649,14 +649,15 @@ def _to_xml_element(self): return algo -class SpaMinimizer: +class SpaMinimizer(DataContainer): """ Global optimizer implemented in atomicrex. Should be used in combination with a local minimizer. See the atomicrex documentation for details. """ - def __init__(self, spa_iterations, seed): + def __init__(self, spa_iterations, seed, *args, **kwargs): + super().__init__(table_name="fitting_algorithm", *args, **kwargs) self.spa_iterations = spa_iterations self.seed = seed self.local_minimizer = None @@ -671,6 +672,8 @@ def _to_xml_element(self): spa.set("seed", f"{self.seed}") if self.local_minimizer is not None: spa.append(self.local_minimizer._to_xml_element()) + else: + raise ValueError("Set a local minimizer for Spa") return spa From 34dbbeaac1cc146897f2110314f7057dde8ccb2c Mon Sep 17 00:00:00 2001 From: Niklas Leimeroth Date: Wed, 18 May 2022 22:09:32 +0200 Subject: [PATCH 200/434] add None defaults --- pyiron_contrib/atomistics/atomicrex/general_input.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyiron_contrib/atomistics/atomicrex/general_input.py b/pyiron_contrib/atomistics/atomicrex/general_input.py index ae7cbb2ff..e152d6345 100644 --- a/pyiron_contrib/atomistics/atomicrex/general_input.py +++ b/pyiron_contrib/atomistics/atomicrex/general_input.py @@ -656,7 +656,7 @@ class SpaMinimizer(DataContainer): See the atomicrex documentation for details. """ - def __init__(self, spa_iterations, seed, *args, **kwargs): + def __init__(self, spa_iterations=None, seed=None, *args, **kwargs): super().__init__(table_name="fitting_algorithm", *args, **kwargs) self.spa_iterations = spa_iterations self.seed = seed From 17bce13b926bf578dbc94ac09882682090995481 Mon Sep 17 00:00:00 2001 From: Leimeroth Date: Thu, 19 May 2022 11:53:12 +0200 Subject: [PATCH 201/434] sketch of plotting interface in PotentiFit --- pyiron_contrib/atomistics/ml/potentialfit.py | 56 +++++++++++++++++++- 1 file changed, 54 insertions(+), 2 deletions(-) diff --git a/pyiron_contrib/atomistics/ml/potentialfit.py b/pyiron_contrib/atomistics/ml/potentialfit.py index 03aa5a82c..f703083e9 100644 --- a/pyiron_contrib/atomistics/ml/potentialfit.py +++ b/pyiron_contrib/atomistics/ml/potentialfit.py @@ -5,9 +5,15 @@ import abc import pandas as pd +import matplotlib.pyplot as plt +import numpy as np from pyiron_base import FlattenedStorage -from pyiron_contrib.atomistics.atomistics.job.trainingcontainer import TrainingContainer, TrainingStorage +from pyiron_contrib.atomistics.atomistics.job.trainingcontainer import ( + TrainingContainer, + TrainingStorage, +) + class PotentialFit(abc.ABC): """ @@ -80,7 +86,7 @@ def plot(self): """ Plots correlation and (training) error histograms. """ - raise NotImplementedError("Implementation of interface to TrainingPlots in subclass necessary") + return PotentialStandardPlots(self.training_data, self.predicted_data) @abc.abstractmethod def get_lammps_potential(self) -> pd.DataFrame: @@ -92,3 +98,49 @@ def get_lammps_potential(self) -> pd.DataFrame: DataFrame: contains potential information to be used with a Lammps job. """ pass + + +def PotentialStandardPlots(): + def __init__(self, training_data, predicted_data): + self.training_data = training_data + self.predicted_data = predicted_data + + def energy_scatter_hist(self): + """ + Plots correlation and (training) error histograms. + """ + energy_train = self.training_data["energy"] / self.training_data["length"] + energy_pred = self.predicted_data["energy"] / self.predicted_data["length"] + plt.subplot(1, 2, 1) + plt.scatter(energy_train, energy_pred) + plt.xlabel("True Energy Per Atom [eV]") + plt.ylabel("Predicted Energy Per Atom [eV]") + plt.subplot(1, 2, 2) + plt.hist(energy_train - energy_pred) + plt.xlabel("Training Error [eV]") + + def force_scatter_hist(self, axis=None): + """ + Plots correlation and (training) error histograms. + + Args: + axis (None, int): Whether to plot for an axis or norm + + """ + force_train = self.training_data["forces"] + force_pred = self.predicted_data["forces"] + + if axis is None: + ft = np.linalg_norm(force_train, axis=1) + fp = np.linalg_norm(force_pred, axis=1) + else: + ft = force_train[:, axis] + fp = force_pred[:, axis] + + plt.subplot(1, 2, 1) + plt.scatter(ft, fp) + plt.xlabel("True Forces [eV]") + plt.ylabel("Predicted Forces [eV/$\AA$]") + plt.subplot(1, 2, 2) + plt.hist(ft - fp) + plt.xlabel("Training Error [eV/$\AA$]") From 43ae8d133ae398b261c3c84e0376865ab6b63c7f Mon Sep 17 00:00:00 2001 From: Leimeroth Date: Thu, 19 May 2022 16:25:50 +0200 Subject: [PATCH 202/434] fixes --- pyiron_contrib/atomistics/atomicrex/base.py | 10 +++++----- pyiron_contrib/atomistics/ml/potentialfit.py | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/pyiron_contrib/atomistics/atomicrex/base.py b/pyiron_contrib/atomistics/atomicrex/base.py index 57f91a55e..947250dbd 100644 --- a/pyiron_contrib/atomistics/atomicrex/base.py +++ b/pyiron_contrib/atomistics/atomicrex/base.py @@ -17,7 +17,11 @@ from pyiron_contrib.atomistics.atomicrex.output import Output from pyiron_contrib.atomistics.atomicrex.function_factory import FunctionFactory from pyiron_contrib.atomistics.ml.potentialfit import PotentialFit -from pyiron_contrib.atomistics.atomistics.job.trainingcontainer import TrainingContainer, TrainingStorage +from pyiron_contrib.atomistics.atomistics.job.trainingcontainer import ( + TrainingContainer, + TrainingStorage, +) + class AtomicrexBase(GenericJob, PotentialFit): __version__ = "0.1.0" @@ -252,7 +256,6 @@ def potential_as_pd_df(self): """ return self.potential._potential_as_pd_df(job=self) - #### PotentialFit methods def _add_training_data(self, container: TrainingContainer) -> None: self.structures.add_training_data(container) @@ -273,9 +276,6 @@ def get_lammps_potential(self) -> pd.DataFrame: """ return self.potential_as_pd_df() - @property - def plot(self): - return self.structures.plot class Factories: """ diff --git a/pyiron_contrib/atomistics/ml/potentialfit.py b/pyiron_contrib/atomistics/ml/potentialfit.py index f703083e9..f5e20640a 100644 --- a/pyiron_contrib/atomistics/ml/potentialfit.py +++ b/pyiron_contrib/atomistics/ml/potentialfit.py @@ -100,7 +100,7 @@ def get_lammps_potential(self) -> pd.DataFrame: pass -def PotentialStandardPlots(): +class PotentialStandardPlots: def __init__(self, training_data, predicted_data): self.training_data = training_data self.predicted_data = predicted_data From f8d0cd9c15eeecf33d7b9b1b7f5196bc5bc2e01d Mon Sep 17 00:00:00 2001 From: Leimeroth Date: Thu, 19 May 2022 16:32:09 +0200 Subject: [PATCH 203/434] works --- pyiron_contrib/atomistics/ml/potentialfit.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pyiron_contrib/atomistics/ml/potentialfit.py b/pyiron_contrib/atomistics/ml/potentialfit.py index f5e20640a..02a215521 100644 --- a/pyiron_contrib/atomistics/ml/potentialfit.py +++ b/pyiron_contrib/atomistics/ml/potentialfit.py @@ -115,6 +115,7 @@ def energy_scatter_hist(self): plt.scatter(energy_train, energy_pred) plt.xlabel("True Energy Per Atom [eV]") plt.ylabel("Predicted Energy Per Atom [eV]") + plt.plot() plt.subplot(1, 2, 2) plt.hist(energy_train - energy_pred) plt.xlabel("Training Error [eV]") @@ -131,8 +132,8 @@ def force_scatter_hist(self, axis=None): force_pred = self.predicted_data["forces"] if axis is None: - ft = np.linalg_norm(force_train, axis=1) - fp = np.linalg_norm(force_pred, axis=1) + ft = np.linalg.norm(force_train, axis=1) + fp = np.linalg.norm(force_pred, axis=1) else: ft = force_train[:, axis] fp = force_pred[:, axis] From df8e2bda01acb686a42d745bd3ef49557dde09db Mon Sep 17 00:00:00 2001 From: Yury Lysogorskiy Date: Fri, 20 May 2022 15:58:06 +0200 Subject: [PATCH 204/434] WIP: first draft of Pacemaker2022 --- pyiron_contrib/__init__.py | 2 +- .../atomistics/pacemaker/__init__.py | 0 pyiron_contrib/atomistics/pacemaker/job.py | 259 ++++++++++++++++++ 3 files changed, 260 insertions(+), 1 deletion(-) create mode 100644 pyiron_contrib/atomistics/pacemaker/__init__.py create mode 100644 pyiron_contrib/atomistics/pacemaker/job.py diff --git a/pyiron_contrib/__init__.py b/pyiron_contrib/__init__.py index 11cb57a31..71715401f 100644 --- a/pyiron_contrib/__init__.py +++ b/pyiron_contrib/__init__.py @@ -44,7 +44,7 @@ JOB_CLASS_DICT['Atomicrex'] = 'pyiron_contrib.atomistics.atomicrex.atomicrex_job' JOB_CLASS_DICT['StructureMasterInt'] = 'pyiron_contrib.atomistics.atomistics.job.structurelistmasterinteractive' JOB_CLASS_DICT['StorageJob'] = 'pyiron_contrib.RDM.storagejob' - +JOB_CLASS_DICT['Pacemaker2022'] = 'pyiron_contrib.atomistics.pacemaker.job' from ._version import get_versions diff --git a/pyiron_contrib/atomistics/pacemaker/__init__.py b/pyiron_contrib/atomistics/pacemaker/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pyiron_contrib/atomistics/pacemaker/job.py b/pyiron_contrib/atomistics/pacemaker/job.py new file mode 100644 index 000000000..93302c0f2 --- /dev/null +++ b/pyiron_contrib/atomistics/pacemaker/job.py @@ -0,0 +1,259 @@ +# coding: utf-8 +# Copyright (c) ICAMS, Ruhr University Bochum, 2022 + +## Executable required: $pyiron/resources/pacemaker/bin/run_pacemaker_tf_cpu.sh AND run_pacemaker_tf.sh + + +import logging +import numpy as np +import os +import pandas as pd +import re +import ruamel.yaml as yaml + +from shutil import copyfile + +from pyiron_base import GenericJob, GenericParameters, state, Executable, FlattenedStorage + +from pyiron_contrib.atomistics.atomistics.job.trainingcontainer import TrainingStorage, TrainingContainer +from pyiron_contrib.atomistics.ml.potentialfit import PotentialFit + +s = state.settings + +# set loggers +loggers = [logging.getLogger(name) for name in logging.root.manager.loggerDict] +for logger in loggers: + logger.setLevel(logging.WARNING) + + +#TODO: maybe need better name +class Pacemaker2022(GenericJob, PotentialFit): + + def __init__(self, project, job_name): + super().__init__(project, job_name) + self.__name__ = "Pacemaker2022" + self.__version__ = "0.2" + + self._job_dict = {} + + self.input = GenericParameters(table_name="input") + self.input['cutoff'] = 7. + self.input['metadata'] = {'comment': 'pyiron-generated fitting job'} + self.input['data'] = {} # data_config + self.input['potential'] = {} # potential_config + self.input['fit'] = {} # fit_config + self.input['backend'] = {'evaluator': 'tensorpot'} # backend_config + + self.structure_data = None + + # self.executable = "pacemaker input.yaml -l log.txt" + self._executable = None + self._executable_activate() + + state.publications.add(self.publication) + + @property + def publication(self): + return { + "pacemaker": [ + { + "title": "Efficient parametrization of the atomic cluster expansion", + "journal": "Physical Review Materials", + "volume": "6", + "number": "1", + "year": "2022", + "doi": "10.1103/PhysRevMaterials.6.013804", + "url": "https://doi.org/10.1103/PhysRevMaterials.6.013804", + "author": ["Anton Bochkarev", "Yury Lysogorskiy", "Sarath Menon", "Minaam Qamar", "Matous Mrovec", + "Ralf Drautz"], + }, + + { + "title": "Performant implementation of the atomic cluster expansion (PACE) and application to copper and silicon", + "journal": "npj Computational Materials", + "volume": "7", + "number": "1", + "year": "2021", + "doi": "10.1038/s41524-021-00559-9", + "url": "https://doi.org/10.1038/s41524-021-00559-9", + "author": ["Yury Lysogorskiy", "Cas van der Oord", "Anton Bochkarev", "Sarath Menon", + "Matteo Rinaldi", + "Thomas Hammerschmidt", "Matous Mrovec", "Aidan Thompson", "Gábor Csányi", + "Christoph Ortner", + "Ralf Drautz"], + }, + { + "title": "Atomic cluster expansion for accurate and transferable interatomic potentials", + "journal": "Physical Review B", + "volume": "99", + "year": "2019", + "doi": "10.1103/PhysRevB.99.014104", + "url": "https://doi.org/10.1103/PhysRevB.99.014104", + "author": ["Ralf Drautz"], + }, + ] + } + + # TODO: rewrite? + def _save_structure_dataframe_pckl_gzip(self, df): + df.rename(columns={"number_of_atoms": "NUMBER_OF_ATOMS", + "energy": "energy_corrected", + "atoms": "ase_atoms"}, inplace=True) + df["NUMBER_OF_ATOMS"] = df["NUMBER_OF_ATOMS"].astype(int) + if "pbc" not in df.columns: + df["pbc"] = df["ase_atoms"].map(lambda atoms: np.all(atoms.pbc)) + + data_file_name = os.path.join(self.working_directory, "df_fit.pckl.gzip") + logging.info("Saving training structures dataframe into {} with pickle protocol = 4, compression = gzip".format( + data_file_name)) + df.to_pickle(data_file_name, compression="gzip", protocol=4) + return data_file_name + + def write_input(self): + # prepare datafile + if self.structure_data is None: + raise ValueError( + "`structure_data` is none, but should be pd.DataFrame, TrainingContainer or valid pickle.gzip filename") + if isinstance(self.structure_data, pd.DataFrame): + logging.info("structure_data is pandas.DataFrame") + data_file_name = self._save_structure_dataframe_pckl_gzip(self.structure_data) + self.input["data"] = {"filename": data_file_name} + elif isinstance(self.structure_data, str): # filename + if os.path.isfile(self.structure_data): + logging.info("structure_data is valid file path") + self.input["data"] = {"filename": self.structure_data} + else: + raise ValueError("Provided structure_data filename ({}) doesn't exists".format(self.structure_data)) + elif hasattr(self.structure_data, "get_pandas"): # duck-typing check for TrainingContainer + logging.info("structure_data is TrainingContainer") + df = self.structure_data.to_pandas() + data_file_name = self._save_structure_dataframe_pckl_gzip(df) + self.input["data"] = {"filename": data_file_name} + elif self._training_ids: + logging.info("structure_data is from another pyiron jobs") + + metadata_dict = self.input["metadata"] + metadata_dict["pyiron_job_id"] = str(self.job_id) + + input_yaml_dict = { + "cutoff": self.input["cutoff"], + "metadata": metadata_dict, + 'potential': self.input['potential'], + 'data': self.input["data"], + 'fit': self.input["fit"], + 'backend': self.input["backend"], + } + + if isinstance(self.input["potential"], str): + pot_file_name = self.input["potential"] + if os.path.isfile(pot_file_name): + logging.info("Input potential is filename") + pot_basename = os.path.basename(pot_file_name) + copyfile(pot_file_name, os.path.join(self.working_directory, pot_basename)) + input_yaml_dict['potential'] = pot_basename + else: + raise ValueError("Provided potential filename ({}) doesn't exists".format(self.input["potential"])) + + with open(os.path.join(self.working_directory, "input.yaml"), "w") as f: + yaml.dump(input_yaml_dict, f) + + + def _analyse_log(self, logfile="metrics.txt"): + metrics_filename = os.path.join(self.working_directory, logfile) + + metrics_df = pd.read_csv(metrics_filename, sep="\s+") + res_dict = metrics_df.to_dict(orient="list") + return res_dict + + def collect_output(self): + final_potential_filename_yaml = self.get_final_potential_filename() + with open(final_potential_filename_yaml, "r") as f: + yaml_lines = f.readlines() + final_potential_yaml_string = "".join(yaml_lines) + + final_potential_filename_yace = self.get_final_potential_filename_ace() + # os.system("pace_yaml2yace {}".format(final_potential_filename_yaml)) + + with open(self.get_final_potential_filename_ace(), "r") as f: + ace_lines = f.readlines() + final_potential_yace_string = "".join(ace_lines) + + with open(self.get_final_potential_filename_ace(), "r") as f: + yace_data = yaml.safe_load(f) + + elements_name = yace_data["elements"] + + with self.project_hdf5.open("output/potential") as h5out: + h5out["yaml"] = final_potential_yaml_string + h5out["yace"] = final_potential_yace_string + h5out["elements_name"] = elements_name + + log_res_dict = self._analyse_log() + + with self.project_hdf5.open("output/log") as h5out: + for key, arr in log_res_dict.items(): + h5out[key] = arr + + def get_lammps_potential(self): + elements_name = self["output/potential/elements_name"] + elem = " ".join(elements_name) + pot_file_name = self.get_final_potential_filename_ace() + pot_dict = { + 'Config': [["pair_style pace\n", "pair_coeff * * {} {}\n".format(pot_file_name, elem)]], + 'Filename': [""], + 'Model': ["ACE"], + 'Name': [self.job_name], + 'Species': [elements_name] + } + + ace_potential = pd.DataFrame(pot_dict) + + return ace_potential + + def to_hdf(self, hdf=None, group_name=None): + super().to_hdf( + hdf=hdf, + group_name=group_name + ) + with self.project_hdf5.open("input") as h5in: + self.input.to_hdf(h5in) + + def from_hdf(self, hdf=None, group_name=None): + super().from_hdf( + hdf=hdf, + group_name=group_name + ) + with self.project_hdf5.open("input") as h5in: + self.input.from_hdf(h5in) + + def get_final_potential_filename(self): + return os.path.join(self.working_directory, "output_potential.yaml") + + def get_final_potential_filename_ace(self): + return os.path.join(self.working_directory, "output_potential.yace") + + def get_current_potential_filename(self): + return os.path.join(self.working_directory, "interim_potential_0.yaml") + + # To link to the executable from the notebook + def _executable_activate(self, enforce=False): + if self._executable is None or enforce: + self._executable = Executable( + codename="pacemaker", module="pacemaker", path_binary_codes=state.settings.resource_paths + ) + + def _add_training_data(self, container: TrainingContainer) -> None: + self.add_job_to_fitting(container.id, 0, container.number_of_structures - 1, 1) + + def add_job_to_fitting(self, job_id, time_step_start=0, time_step_end=-1, time_step_delta=10): + if time_step_end == -1: + time_step_end = np.shape(self.project.inspect(int(job_id))['output/generic/cells'])[0] - 1 + self._job_dict[job_id] = {'time_step_start': time_step_start, + 'time_step_end': time_step_end, + 'time_step_delta': time_step_delta} + + def _get_training_data(self) -> TrainingStorage: + raise NotImplementedError() + + def _get_predicted_data(self) -> FlattenedStorage: + raise NotImplementedError() From 53ba58cf83b7e82d1cf7080bbaacdab17fa2ef65 Mon Sep 17 00:00:00 2001 From: Yury Lysogorskiy Date: Fri, 20 May 2022 16:04:04 +0200 Subject: [PATCH 205/434] WIP: elif self._job_dict: raise NotImplementedError() --- pyiron_contrib/atomistics/pacemaker/job.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyiron_contrib/atomistics/pacemaker/job.py b/pyiron_contrib/atomistics/pacemaker/job.py index 93302c0f2..74c08958e 100644 --- a/pyiron_contrib/atomistics/pacemaker/job.py +++ b/pyiron_contrib/atomistics/pacemaker/job.py @@ -129,8 +129,8 @@ def write_input(self): df = self.structure_data.to_pandas() data_file_name = self._save_structure_dataframe_pckl_gzip(df) self.input["data"] = {"filename": data_file_name} - elif self._training_ids: - logging.info("structure_data is from another pyiron jobs") + elif self._job_dict: + raise NotImplementedError() metadata_dict = self.input["metadata"] metadata_dict["pyiron_job_id"] = str(self.job_id) From 86f4cc8e6ecba8a119241e280e1230b5feacb883 Mon Sep 17 00:00:00 2001 From: Niklas Leimeroth Date: Sun, 22 May 2022 09:20:03 +0200 Subject: [PATCH 206/434] spa name --- pyiron_contrib/atomistics/atomicrex/general_input.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pyiron_contrib/atomistics/atomicrex/general_input.py b/pyiron_contrib/atomistics/atomicrex/general_input.py index e152d6345..812b8390b 100644 --- a/pyiron_contrib/atomistics/atomicrex/general_input.py +++ b/pyiron_contrib/atomistics/atomicrex/general_input.py @@ -661,6 +661,10 @@ def __init__(self, spa_iterations=None, seed=None, *args, **kwargs): self.spa_iterations = spa_iterations self.seed = seed self.local_minimizer = None + + @property + def name(self): + return "spa" def _to_xml_element(self): """Internal function. From 6f4e62372eba85d5c2a168b62aa1b595df84b525 Mon Sep 17 00:00:00 2001 From: Niklas Leimeroth Date: Sun, 22 May 2022 09:30:55 +0200 Subject: [PATCH 207/434] spa max iter --- pyiron_contrib/atomistics/atomicrex/general_input.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pyiron_contrib/atomistics/atomicrex/general_input.py b/pyiron_contrib/atomistics/atomicrex/general_input.py index 812b8390b..0b679fcf2 100644 --- a/pyiron_contrib/atomistics/atomicrex/general_input.py +++ b/pyiron_contrib/atomistics/atomicrex/general_input.py @@ -656,9 +656,9 @@ class SpaMinimizer(DataContainer): See the atomicrex documentation for details. """ - def __init__(self, spa_iterations=None, seed=None, *args, **kwargs): + def __init__(self, max_iter=None, seed=None, *args, **kwargs): super().__init__(table_name="fitting_algorithm", *args, **kwargs) - self.spa_iterations = spa_iterations + self.max_iter = max_iter self.seed = seed self.local_minimizer = None @@ -672,7 +672,7 @@ def _to_xml_element(self): and returns it """ spa = ET.Element("spa") - spa.set("max-iter", f"{self.spa_iterations}") + spa.set("max-iter", f"{self.max_iter}") spa.set("seed", f"{self.seed}") if self.local_minimizer is not None: spa.append(self.local_minimizer._to_xml_element()) From 26dc1841bedc5924fbc04a9d43cbb8b7892f2c2c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 May 2022 11:06:18 +0000 Subject: [PATCH 208/434] Bump boto3 from 1.23.0 to 1.23.5 Bumps [boto3](https://github.com/boto/boto3) from 1.23.0 to 1.23.5. - [Release notes](https://github.com/boto/boto3/releases) - [Changelog](https://github.com/boto/boto3/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/boto/boto3/compare/1.23.0...1.23.5) --- updated-dependencies: - dependency-name: boto3 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index b331da11e..2a3124399 100644 --- a/setup.py +++ b/setup.py @@ -49,7 +49,7 @@ ], 'image': ['scikit-image==0.19.2'], 'generic': [ - 'boto3==1.23.0', + 'boto3==1.23.5', 'moto==3.1.9' ], }, From f006ad5dc4cda8a6886a440370e92c2d77cb5795 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 May 2022 11:06:26 +0000 Subject: [PATCH 209/434] Bump scipy from 1.8.0 to 1.8.1 Bumps [scipy](https://github.com/scipy/scipy) from 1.8.0 to 1.8.1. - [Release notes](https://github.com/scipy/scipy/releases) - [Commits](https://github.com/scipy/scipy/compare/v1.8.0...v1.8.1) --- updated-dependencies: - dependency-name: scipy dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index b331da11e..0b101e5e1 100644 --- a/setup.py +++ b/setup.py @@ -34,7 +34,7 @@ 'matplotlib==3.5.2', 'numpy==1.22.3', 'pyiron_base==0.5.12', - 'scipy==1.8.0', + 'scipy==1.8.1', 'seaborn==0.11.2', 'pyparsing==3.0.9' ], From ee56c6fa4f2c0ab96be70cb1405b52bb6d192dad Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 23 May 2022 11:06:32 +0000 Subject: [PATCH 210/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 5b3102d49..74b431e60 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -14,5 +14,5 @@ dependencies: - seaborn =0.11.2 - scikit-image =0.19.2 - randspg =0.0.1 -- boto3 =1.23.0 +- boto3 =1.23.5 - moto =3.1.9 From b292b51c795ce0fa70f9abd5c003d3175ac300f0 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 23 May 2022 11:06:44 +0000 Subject: [PATCH 211/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 5b3102d49..a80688484 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -10,7 +10,7 @@ dependencies: - pyiron_base =0.5.12 - pyiron_atomistics =0.2.45 - pyparsing =3.0.9 -- scipy =1.8.0 +- scipy =1.8.1 - seaborn =0.11.2 - scikit-image =0.19.2 - randspg =0.0.1 From a4389ad6eb3b2c8c27a3cb00f3345563f8800bcb Mon Sep 17 00:00:00 2001 From: Alexander Knoll Date: Tue, 24 May 2022 09:21:03 +0200 Subject: [PATCH 212/434] Add stress and force arrays back to TrainingStorage. --- .../atomistics/atomistics/job/trainingcontainer.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py index 3ab955618..106a986ba 100644 --- a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py +++ b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py @@ -499,6 +499,11 @@ class TrainingStorage(StructureStorage): def __init__(self): super().__init__() self.add_array("energy", dtype=np.float64, per="chunk", fill=np.nan) + self.add_array("forces", shape=(3,), dtype=np.float64, per="element", + fill=np.nan) + # save stress in voigt notation + self.add_array("stress", shape=(6,), dtype=np.float64, per="chunk", + fill=np.nan) self._table_cache = None self.to_pandas() From c7e6a1e0c72471c6e5628824c5bed700ea2d7350 Mon Sep 17 00:00:00 2001 From: Alexander Knoll Date: Tue, 24 May 2022 09:21:47 +0200 Subject: [PATCH 213/434] Bugfix: deepcopy the default parameters so the template does not change. --- pyiron_contrib/atomistics/runner/job.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/pyiron_contrib/atomistics/runner/job.py b/pyiron_contrib/atomistics/runner/job.py index 2817190a2..c7084490b 100644 --- a/pyiron_contrib/atomistics/runner/job.py +++ b/pyiron_contrib/atomistics/runner/job.py @@ -17,6 +17,7 @@ """ from typing import Optional, List +from copy import deepcopy import numpy as np import pandas as pd @@ -47,9 +48,9 @@ __email__ = 'alexander.knoll@chemie.uni-goettingen.de' __copyright__ = 'Copyright 2022, Georg-August-Universität Göttingen - Behler '\ 'Group' -__version__ = '0.1.0' +__version__ = '0.1.1' __status__ = 'development' -__date__ = 'May 11, 2022' +__date__ = 'May 17, 2022' class RunnerFit(GenericJob, HasStorage, PotentialFit): @@ -161,7 +162,8 @@ def __init__(self, project: Project, job_name: str) -> None: # Create a group for storing the RuNNer configuration parameters. self.storage.input.create_group('parameters') - self.storage.input.parameters.update(DEFAULT_PARAMETERS) + + self.storage.input.parameters.update(deepcopy(DEFAULT_PARAMETERS)) # Store training data (structures, energies, ...) in a separate node. self.storage.input.training_data = TrainingStorage() From 81552b55d5e202e7f1a64ebaa2aaa8e9a5d6acc4 Mon Sep 17 00:00:00 2001 From: Alexander Knoll Date: Tue, 24 May 2022 09:22:20 +0200 Subject: [PATCH 214/434] MAINT: make comment more descriptive. --- pyiron_contrib/atomistics/runner/job.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pyiron_contrib/atomistics/runner/job.py b/pyiron_contrib/atomistics/runner/job.py index c7084490b..a195b71f9 100644 --- a/pyiron_contrib/atomistics/runner/job.py +++ b/pyiron_contrib/atomistics/runner/job.py @@ -348,7 +348,8 @@ def _add_training_data(self, container: TrainingContainer) -> None: arrays = container.to_dict() arraynames = arrays.keys() - # Iterate over the structures by zipping the dictionary values together. + # Iterate over the structures by zipping, i.e. transposing the + # dictionary values. for properties in zip(*arrays.values()): zipped = dict(zip(arraynames, properties)) self.storage.input.training_data.add_structure(**zipped) From 42fbbd2d51d653660fcf611b113a33cee6510d5f Mon Sep 17 00:00:00 2001 From: Niklas Leimeroth <63864024+Leimeroth@users.noreply.github.com> Date: Tue, 24 May 2022 13:31:19 +0200 Subject: [PATCH 215/434] Update pyiron_contrib/atomistics/ml/potentialfit.py Co-authored-by: Marvin Poul --- pyiron_contrib/atomistics/ml/potentialfit.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyiron_contrib/atomistics/ml/potentialfit.py b/pyiron_contrib/atomistics/ml/potentialfit.py index 02a215521..40fab38c9 100644 --- a/pyiron_contrib/atomistics/ml/potentialfit.py +++ b/pyiron_contrib/atomistics/ml/potentialfit.py @@ -100,7 +100,7 @@ def get_lammps_potential(self) -> pd.DataFrame: pass -class PotentialStandardPlots: +class PotentialPlots: def __init__(self, training_data, predicted_data): self.training_data = training_data self.predicted_data = predicted_data From bdffce88707fd25fe03de47d7ea4c2936ca517f2 Mon Sep 17 00:00:00 2001 From: Niklas Leimeroth <63864024+Leimeroth@users.noreply.github.com> Date: Tue, 24 May 2022 13:31:29 +0200 Subject: [PATCH 216/434] Update pyiron_contrib/atomistics/ml/potentialfit.py Co-authored-by: Marvin Poul --- pyiron_contrib/atomistics/ml/potentialfit.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyiron_contrib/atomistics/ml/potentialfit.py b/pyiron_contrib/atomistics/ml/potentialfit.py index 40fab38c9..56d42fac3 100644 --- a/pyiron_contrib/atomistics/ml/potentialfit.py +++ b/pyiron_contrib/atomistics/ml/potentialfit.py @@ -105,7 +105,7 @@ def __init__(self, training_data, predicted_data): self.training_data = training_data self.predicted_data = predicted_data - def energy_scatter_hist(self): + def energy_scatter_histogram(self): """ Plots correlation and (training) error histograms. """ From a0ae3c9a2ae94ac110adf7f02802b79c96a90b7e Mon Sep 17 00:00:00 2001 From: Niklas Leimeroth <63864024+Leimeroth@users.noreply.github.com> Date: Tue, 24 May 2022 13:32:05 +0200 Subject: [PATCH 217/434] Update pyiron_contrib/atomistics/ml/potentialfit.py Co-authored-by: Marvin Poul --- pyiron_contrib/atomistics/ml/potentialfit.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyiron_contrib/atomistics/ml/potentialfit.py b/pyiron_contrib/atomistics/ml/potentialfit.py index 56d42fac3..e86cbd71f 100644 --- a/pyiron_contrib/atomistics/ml/potentialfit.py +++ b/pyiron_contrib/atomistics/ml/potentialfit.py @@ -120,7 +120,7 @@ def energy_scatter_histogram(self): plt.hist(energy_train - energy_pred) plt.xlabel("Training Error [eV]") - def force_scatter_hist(self, axis=None): + def force_scatter_histogram(self, axis=None): """ Plots correlation and (training) error histograms. From f19f475da5e15ff33589e4ba7c0251d388f14a44 Mon Sep 17 00:00:00 2001 From: Niklas Leimeroth Date: Tue, 24 May 2022 13:49:49 +0200 Subject: [PATCH 218/434] auto set atom_types --- pyiron_contrib/atomistics/atomicrex/base.py | 2 +- .../atomistics/atomicrex/general_input.py | 31 +++++++++++-------- 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/pyiron_contrib/atomistics/atomicrex/base.py b/pyiron_contrib/atomistics/atomicrex/base.py index 947250dbd..ef973cd5a 100644 --- a/pyiron_contrib/atomistics/atomicrex/base.py +++ b/pyiron_contrib/atomistics/atomicrex/base.py @@ -216,7 +216,7 @@ def write_input(self, directory=None): """ if directory is None: directory = self.working_directory - self.input._write_xml_file(directory=directory) + self.input._write_xml_file(directory=directory, job=self) self.potential.write_xml_file(directory=directory) self.structures.write_xml_file(directory=directory) diff --git a/pyiron_contrib/atomistics/atomicrex/general_input.py b/pyiron_contrib/atomistics/atomicrex/general_input.py index 0b679fcf2..e0d3a8880 100644 --- a/pyiron_contrib/atomistics/atomicrex/general_input.py +++ b/pyiron_contrib/atomistics/atomicrex/general_input.py @@ -51,31 +51,36 @@ def __init__( self.output_file = "atomicrex.out" self.parameter_constraints = ParameterConstraints() - def _write_xml_file(self, directory): + def _write_xml_file(self, directory, job=None): """Internal function. Write the main input xml file in a directory. Args: directory (str): Working directory """ - job = ET.Element("job") + root = ET.Element("job") - output_file = ET.SubElement(job, "output-file") + output_file = ET.SubElement(root, "output-file") output_file.text = self.output_file - name = ET.SubElement(job, "name") + name = ET.SubElement(root, "name") name.text = self.name - verbosity = ET.SubElement(job, "verbosity") + verbosity = ET.SubElement(root, "verbosity") verbosity.text = self.verbosity if self.validate_potentials: - validate_potentials = ET.SubElement(job, "validate-potentials") + validate_potentials = ET.SubElement(root, "validate-potentials") - real_precision = ET.SubElement(job, "real-precision") + real_precision = ET.SubElement(root, "real-precision") real_precision.text = f"{self.real_precision}" - atom_types = ET.SubElement(job, "atom-types") + atom_types = ET.SubElement(root, "atom-types") + if len(self.atom_types) == 0: + eles = job.structures._structures.get_elements() + for ele in eles: + self.atom_types[ele] = None + for k, v in self.atom_types.items(): species = ET.SubElement(atom_types, "species") species.text = k @@ -89,7 +94,7 @@ def _write_xml_file(self, directory): species.set("atomic-number", f"{index}") if not isinstance(self.fit_algorithm, ScipyAlgorithm): - fitting = ET.SubElement(job, "fitting") + fitting = ET.SubElement(root, "fitting") if self.enable_fitting: fitting.set("enabled", "true") else: @@ -97,21 +102,21 @@ def _write_xml_file(self, directory): fitting.set("output-interval", f"{self.output_interval}") fitting.append(self.fit_algorithm._to_xml_element()) - potentials = ET.SubElement(job, "potentials") + potentials = ET.SubElement(root, "potentials") include = ET.SubElement(potentials, "xi:include") include.set("href", "potential.xml") include.set("xmlns:xi", "http://www.w3.org/2003/XInclude") - structures = ET.SubElement(job, "structures") + structures = ET.SubElement(root, "structures") include = ET.SubElement(structures, "xi:include") include.set("href", "structures.xml") include.set("xmlns:xi", "http://www.w3.org/2003/XInclude") if len(self.parameter_constraints) > 0: - job.append(self.parameter_constraints._to_xml_element()) + root.append(self.parameter_constraints._to_xml_element()) file_name = posixpath.join(directory, "main.xml") - write_pretty_xml(job, file_name) + write_pretty_xml(root, file_name) class AtomTypes(DataContainer): From 292e3294cd93c7c9c7f0d63151267b44b86e24c9 Mon Sep 17 00:00:00 2001 From: Niklas Leimeroth Date: Tue, 24 May 2022 14:32:02 +0200 Subject: [PATCH 219/434] naming --- pyiron_contrib/atomistics/ml/potentialfit.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyiron_contrib/atomistics/ml/potentialfit.py b/pyiron_contrib/atomistics/ml/potentialfit.py index e86cbd71f..3e05673c1 100644 --- a/pyiron_contrib/atomistics/ml/potentialfit.py +++ b/pyiron_contrib/atomistics/ml/potentialfit.py @@ -86,7 +86,7 @@ def plot(self): """ Plots correlation and (training) error histograms. """ - return PotentialStandardPlots(self.training_data, self.predicted_data) + return PotentialPlots(self.training_data, self.predicted_data) @abc.abstractmethod def get_lammps_potential(self) -> pd.DataFrame: From d7ad8efc89af82727ce1b2158ab6a31d776de869 Mon Sep 17 00:00:00 2001 From: Niklas Leimeroth Date: Tue, 24 May 2022 15:29:05 +0200 Subject: [PATCH 220/434] fix add structure --- pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py index 5a5a03254..fc6c71b58 100644 --- a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py +++ b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py @@ -98,7 +98,7 @@ def add_structure(self, structure, energy, forces=None, stress=None, name=None, stress (6 array of float, optional): per structure stresses in voigt notation name (str, optional): name describing the structure """ - self._container.add_structure(structure, energy, identifier=None, forces=None, stress=None, **arrays) + self._container.add_structure(structure, energy, name=name, forces=forces, stress=stress, **arrays) def include_dataset(self, dataset): """ From b89fe5d519d7eeaa2ad7fffb2e4cfd8249b27d40 Mon Sep 17 00:00:00 2001 From: Yury Lysogorskiy Date: Tue, 24 May 2022 17:04:19 +0200 Subject: [PATCH 221/434] Pacemaker job: - add elements and cutoff properties - set default self.input - rewrite _save_structure_dataframe_pckl_gzip - write_input: if _train_job_id_list is non empty, after adding job.add_training_data(training_container), then compose training dataframe using 'job.create_training_dataframe' - automatically determine the list of elements if self.structure_data is pd.DataFrame - implement _get_training_data and _get_predicted_data --- pyiron_contrib/atomistics/pacemaker/job.py | 177 ++++++++++++++++----- 1 file changed, 140 insertions(+), 37 deletions(-) diff --git a/pyiron_contrib/atomistics/pacemaker/job.py b/pyiron_contrib/atomistics/pacemaker/job.py index 74c08958e..66add2877 100644 --- a/pyiron_contrib/atomistics/pacemaker/job.py +++ b/pyiron_contrib/atomistics/pacemaker/job.py @@ -3,12 +3,12 @@ ## Executable required: $pyiron/resources/pacemaker/bin/run_pacemaker_tf_cpu.sh AND run_pacemaker_tf.sh - import logging +from typing import List + import numpy as np import os import pandas as pd -import re import ruamel.yaml as yaml from shutil import copyfile @@ -18,6 +18,9 @@ from pyiron_contrib.atomistics.atomistics.job.trainingcontainer import TrainingStorage, TrainingContainer from pyiron_contrib.atomistics.ml.potentialfit import PotentialFit +from pyiron_atomistics.atomistics.structure.atoms import Atoms as pyironAtoms +from ase.atoms import Atoms as aseAtoms + s = state.settings # set loggers @@ -26,7 +29,7 @@ logger.setLevel(logging.WARNING) -#TODO: maybe need better name +# TODO: maybe need better rename to Pacemaker class Pacemaker2022(GenericJob, PotentialFit): def __init__(self, project, job_name): @@ -34,24 +37,79 @@ def __init__(self, project, job_name): self.__name__ = "Pacemaker2022" self.__version__ = "0.2" - self._job_dict = {} + self._train_job_id_list = [] self.input = GenericParameters(table_name="input") - self.input['cutoff'] = 7. + self._cutoff = 7.0 + self.input['cutoff'] = self._cutoff self.input['metadata'] = {'comment': 'pyiron-generated fitting job'} - self.input['data'] = {} # data_config - self.input['potential'] = {} # potential_config - self.input['fit'] = {} # fit_config - self.input['backend'] = {'evaluator': 'tensorpot'} # backend_config - self.structure_data = None + # data_config + self.input['data'] = {} + # potential_config + self.input['potential'] = { + "elements": [], + "bonds": { + "ALL": { + "radbase": "SBessel", + "rcut": self._cutoff, + "dcut": 0.01, + "radparameters": [5.25] + } + }, + + "embeddings": { + "ALL": { + "fs_parameters": [1, 1, 1, 0.5], + "ndensity": 2, + "npot": "FinnisSinclairShiftedScaled" + } + }, + + "functions": { + "ALL": { + "nradmax_by_orders": [15, 3, 2, 1], + "lmax_by_orders": [0, 3, 2, 1], + } + } + } + + # fit_config + self.input['fit'] = { + "loss": {"L1_coeffs": 1e-8, "L2_coeffs": 1e-8, "kappa": 0.3, "w0_rad": 0, + "w1_rad": 0, "w2_rad": 0}, + "maxiter": 1000, + "optimizer": "BFGS", + "fit_cycles": 1 + } + self.input['backend'] = {"batch_size": 100, + "display_step": 50, + "evaluator": "tensorpot"} # backend_config - # self.executable = "pacemaker input.yaml -l log.txt" + self.structure_data = None self._executable = None self._executable_activate() state.publications.add(self.publication) + @property + def elements(self): + return self.input["potential"].get("elements") + + @elements.setter + def elements(self, val): + self.input["potential"]["elements"] = val + + @property + def cutoff(self): + return self._cutoff + + @cutoff.setter + def cutoff(self, val): + self._cutoff = val + self.input["cutoff"] = self._cutoff + self.input["potential"]["bonds"]["ALL"]["rcut"] = self._cutoff + @property def publication(self): return { @@ -94,12 +152,31 @@ def publication(self): ] } - # TODO: rewrite? def _save_structure_dataframe_pckl_gzip(self, df): - df.rename(columns={"number_of_atoms": "NUMBER_OF_ATOMS", - "energy": "energy_corrected", - "atoms": "ase_atoms"}, inplace=True) + + if "NUMBER_OF_ATOMS" not in df.columns and "number_of_atoms" in df.columns: + df.rename(columns={"number_of_atoms": "NUMBER_OF_ATOMS"}, inplace=True) df["NUMBER_OF_ATOMS"] = df["NUMBER_OF_ATOMS"].astype(int) + + # TODO: reference energy subtraction ? + if "energy_corrected" not in df.columns and "energy" in df.columns: + df.rename(columns={"energy": "energy_corrected"}, inplace=True) + + if "atoms" in df.columns: + # check if this is pyironAtoms -> aseAtoms + at = df.iloc[0]["atoms"] + if isinstance(at, pyironAtoms): + df["ase_atoms"] = df["atoms"].map(lambda s: s.to_ase()) + df.drop(columns=["atoms"], inplace=True) + else: + assert isinstance(at, aseAtoms), "'atoms' column is not a valid ASE Atoms object" + df.rename(columns={"atoms": "ase_atom"}, inplace=True) + elif "ase_atoms" not in df.columns: + raise ValueError("DataFrame should contain 'atoms' (pyiron Atoms) or 'ase_atoms' (ASE atoms) columns") + + if "stress" in df.columns: + df.drop(columns=["stress"], inplace=True) + if "pbc" not in df.columns: df["pbc"] = df["ase_atoms"].map(lambda atoms: np.all(atoms.pbc)) @@ -111,13 +188,20 @@ def _save_structure_dataframe_pckl_gzip(self, df): def write_input(self): # prepare datafile - if self.structure_data is None: - raise ValueError( - "`structure_data` is none, but should be pd.DataFrame, TrainingContainer or valid pickle.gzip filename") + if self._train_job_id_list and self.structure_data is None: + train_df = self.create_training_dataframe(self._train_job_id_list) + self.structure_data = train_df + if isinstance(self.structure_data, pd.DataFrame): logging.info("structure_data is pandas.DataFrame") data_file_name = self._save_structure_dataframe_pckl_gzip(self.structure_data) self.input["data"] = {"filename": data_file_name} + elements_set = set() + for at in self.structure_data["ase_atoms"]: + elements_set.update(at.get_chemical_symbols()) + elements = sorted(elements_set) + print("Set automatically determined list of elements: {}".format(elements)) + self.elements = elements elif isinstance(self.structure_data, str): # filename if os.path.isfile(self.structure_data): logging.info("structure_data is valid file path") @@ -129,8 +213,9 @@ def write_input(self): df = self.structure_data.to_pandas() data_file_name = self._save_structure_dataframe_pckl_gzip(df) self.input["data"] = {"filename": data_file_name} - elif self._job_dict: - raise NotImplementedError() + elif self.structure_data is None: + raise ValueError( + "`structure_data` is none, but should be pd.DataFrame, TrainingContainer or valid pickle.gzip filename") metadata_dict = self.input["metadata"] metadata_dict["pyiron_job_id"] = str(self.job_id) @@ -138,9 +223,9 @@ def write_input(self): input_yaml_dict = { "cutoff": self.input["cutoff"], "metadata": metadata_dict, - 'potential': self.input['potential'], - 'data': self.input["data"], - 'fit': self.input["fit"], + "potential": self.input["potential"], + "data": self.input["data"], + "fit": self.input["fit"], 'backend': self.input["backend"], } @@ -157,7 +242,6 @@ def write_input(self): with open(os.path.join(self.working_directory, "input.yaml"), "w") as f: yaml.dump(input_yaml_dict, f) - def _analyse_log(self, logfile="metrics.txt"): metrics_filename = os.path.join(self.working_directory, logfile) @@ -171,8 +255,6 @@ def collect_output(self): yaml_lines = f.readlines() final_potential_yaml_string = "".join(yaml_lines) - final_potential_filename_yace = self.get_final_potential_filename_ace() - # os.system("pace_yaml2yace {}".format(final_potential_filename_yaml)) with open(self.get_final_potential_filename_ace(), "r") as f: ace_lines = f.readlines() @@ -236,24 +318,45 @@ def get_current_potential_filename(self): return os.path.join(self.working_directory, "interim_potential_0.yaml") # To link to the executable from the notebook - def _executable_activate(self, enforce=False): + def _executable_activate(self, enforce=False, codename="pacemaker"): if self._executable is None or enforce: self._executable = Executable( - codename="pacemaker", module="pacemaker", path_binary_codes=state.settings.resource_paths + codename=codename, module="pacemaker", path_binary_codes=state.settings.resource_paths ) def _add_training_data(self, container: TrainingContainer) -> None: - self.add_job_to_fitting(container.id, 0, container.number_of_structures - 1, 1) + self.add_job_to_fitting(container.id) - def add_job_to_fitting(self, job_id, time_step_start=0, time_step_end=-1, time_step_delta=10): - if time_step_end == -1: - time_step_end = np.shape(self.project.inspect(int(job_id))['output/generic/cells'])[0] - 1 - self._job_dict[job_id] = {'time_step_start': time_step_start, - 'time_step_end': time_step_end, - 'time_step_delta': time_step_delta} + def add_job_to_fitting(self, job_id, *args, **kwargs): + self._train_job_id_list.append(job_id) def _get_training_data(self) -> TrainingStorage: - raise NotImplementedError() + # TODO: convert to TrainingStorage ? + fname = os.path.join(self.working_directory, "fitting_data_info.pckl.gzip") + df = pd.read_pickle(fname, compression="gzip") + return df def _get_predicted_data(self) -> FlattenedStorage: - raise NotImplementedError() + # TODO: convert to FlattenedStorage ? + fname = os.path.join(self.working_directory, "train_pred.pckl.gzip") + df = pd.read_pickle(fname, compression="gzip") + return df + + # copied/adapted from mlip.py + def create_training_dataframe(self, _train_job_id_list: List = None) -> pd.DataFrame: + if _train_job_id_list is None: + _train_job_id_list = self._train_job_id_list + df_list = [] + for job_id in _train_job_id_list: + ham = self.project.inspect(job_id) + if ham.__name__ == "TrainingContainer": + job = ham.to_object() + data_df = job.to_pandas() + df_list.append(data_df) + else: + raise NotImplementedError("Currently only TrainingContainer is supported") + + total_training_df = pd.concat(df_list, axis=0) + total_training_df.reset_index(drop=True, inplace=True) + + return total_training_df From 37f85d985767466899da9a602527b7dc4827243f Mon Sep 17 00:00:00 2001 From: Yury Lysogorskiy Date: Tue, 24 May 2022 17:12:15 +0200 Subject: [PATCH 222/434] rename Pacemaker2022 to PacemakerJob --- pyiron_contrib/__init__.py | 2 +- pyiron_contrib/atomistics/pacemaker/job.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pyiron_contrib/__init__.py b/pyiron_contrib/__init__.py index 71715401f..e4842e156 100644 --- a/pyiron_contrib/__init__.py +++ b/pyiron_contrib/__init__.py @@ -44,7 +44,7 @@ JOB_CLASS_DICT['Atomicrex'] = 'pyiron_contrib.atomistics.atomicrex.atomicrex_job' JOB_CLASS_DICT['StructureMasterInt'] = 'pyiron_contrib.atomistics.atomistics.job.structurelistmasterinteractive' JOB_CLASS_DICT['StorageJob'] = 'pyiron_contrib.RDM.storagejob' -JOB_CLASS_DICT['Pacemaker2022'] = 'pyiron_contrib.atomistics.pacemaker.job' +JOB_CLASS_DICT['PacemakerJob'] = 'pyiron_contrib.atomistics.pacemaker.job' from ._version import get_versions diff --git a/pyiron_contrib/atomistics/pacemaker/job.py b/pyiron_contrib/atomistics/pacemaker/job.py index 66add2877..36f9593c1 100644 --- a/pyiron_contrib/atomistics/pacemaker/job.py +++ b/pyiron_contrib/atomistics/pacemaker/job.py @@ -30,7 +30,7 @@ # TODO: maybe need better rename to Pacemaker -class Pacemaker2022(GenericJob, PotentialFit): +class PacemakerJob(GenericJob, PotentialFit): def __init__(self, project, job_name): super().__init__(project, job_name) From 14e2ccc55ffc273b5c0ce28b22e471442a9a897b Mon Sep 17 00:00:00 2001 From: Yury Lysogorskiy Date: Tue, 24 May 2022 17:53:45 +0200 Subject: [PATCH 223/434] add pacemaker_example.ipynb --- notebooks/pacemaker_example.ipynb | 809 +++++++++++++++++++++ pyiron_contrib/atomistics/pacemaker/job.py | 1 - 2 files changed, 809 insertions(+), 1 deletion(-) create mode 100644 notebooks/pacemaker_example.ipynb diff --git a/notebooks/pacemaker_example.ipynb b/notebooks/pacemaker_example.ipynb new file mode 100644 index 000000000..a3cd4f501 --- /dev/null +++ b/notebooks/pacemaker_example.ipynb @@ -0,0 +1,809 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "f4eaae76", + "metadata": {}, + "source": [ + "# Pre-requisites\n", + "\n", + "1. Install [`python-ace`](https://github.com/ICAMS/python-ace) and [`tensorpotential`](https://github.com/ICAMS/TensorPotential), check more instructions [here](https://pacemaker.readthedocs.io/en/latest/pacemaker/install/) into pyiron conda environment\n", + "\n", + "2. Add following files into `~/pyiron/resources/pacemaker/bin`:\n", + "\n", + "**~/pyiron/resources/pacemaker/bin/run_pacemaker_tf.sh**:\n", + "```bash\n", + "#!/bin/bash\n", + "\n", + "source $HOME/.bashrc\n", + "conda activate PYIRON_AND_PACEMAKER_CONDA_ENVIRONMENT\n", + "TF_FORCE_GPU_ALLOW_GROWTH=true pacemaker input.yaml -l log.txt\n", + "pace_yaml2yace output_potential.yaml\n", + "```\n", + "\n", + "**~/pyiron/resources/pacemaker/bin/run_pacemaker_tf_cpu.sh**:\n", + "```bash\n", + "#!/bin/bash\n", + "\n", + "source $HOME/.bashrc\n", + "conda activate PYIRON_AND_PACEMAKER_CONDA_ENVIRONMENT\n", + "CUDA_VISIBLE_DEVICES=-1 pacemaker input.yaml -l log.txt\n", + "pace_yaml2yace output_potential.yaml\n", + "\n", + "```\n", + "\n", + "or get it from https://github.com/pyiron/pyiron-resources" + ] + }, + { + "cell_type": "markdown", + "id": "180f4a44", + "metadata": {}, + "source": [ + "# Import and load" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a24477d0", + "metadata": {}, + "outputs": [], + "source": [ + "%pylab inline" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "d19586ef", + "metadata": {}, + "outputs": [], + "source": [ + "from pyiron import Project" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "78425c8c", + "metadata": {}, + "outputs": [], + "source": [ + "pr = Project('fit_project')" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "dc7ef7ee", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
idstatuschemicalformulajobsubjobprojectpathprojecttimestarttimestoptotalcputimecomputerhamiltonhamversionparentidmasterid
02finishedNoneinitial/initialNone/home/users/lysogy36/PycharmProjects/pyiron2021/pyiron_contrib/workshop_data/unpack/initial/2022-05-20 07:33:26.696857NoneNonezora@cmti001#1TrainingContainer0.4NoneNone
13finishedNoneoffstoichiometry/offstoichiometryNone/home/users/lysogy36/PycharmProjects/pyiron2021/pyiron_contrib/workshop_data/unpack/initial/2022-05-20 07:40:54.302418NoneNonezora@cmti001#1TrainingContainer0.4NoneNone
\n", + "
" + ], + "text/plain": [ + " id status chemicalformula job subjob \\\n", + "0 2 finished None initial /initial \n", + "1 3 finished None offstoichiometry /offstoichiometry \n", + "\n", + " projectpath \\\n", + "0 None \n", + "1 None \n", + "\n", + " project \\\n", + "0 /home/users/lysogy36/PycharmProjects/pyiron2021/pyiron_contrib/workshop_data/unpack/initial/ \n", + "1 /home/users/lysogy36/PycharmProjects/pyiron2021/pyiron_contrib/workshop_data/unpack/initial/ \n", + "\n", + " timestart timestop totalcputime computer \\\n", + "0 2022-05-20 07:33:26.696857 None None zora@cmti001#1 \n", + "1 2022-05-20 07:40:54.302418 None None zora@cmti001#1 \n", + "\n", + " hamilton hamversion parentid masterid \n", + "0 TrainingContainer 0.4 None None \n", + "1 TrainingContainer 0.4 None None " + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pr.job_table()" + ] + }, + { + "cell_type": "markdown", + "id": "be711442", + "metadata": {}, + "source": [ + "# Loading training containers" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "e8588cf3", + "metadata": {}, + "outputs": [], + "source": [ + "training_container_1 = pr['initial/initial']" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "05ea947a", + "metadata": {}, + "outputs": [], + "source": [ + "training_container_2 = pr['initial/offstoichiometry']" + ] + }, + { + "cell_type": "markdown", + "id": "5ddc4df8", + "metadata": {}, + "source": [ + "# Create PacemakerJob" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "932a7b46", + "metadata": {}, + "outputs": [], + "source": [ + "job = pr.create_job(pr.job_type.PacemakerJob, \"pacemaker_job\")" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "6bd31372", + "metadata": {}, + "outputs": [], + "source": [ + "job.add_training_data(training_container_1)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "6b8edcef", + "metadata": {}, + "outputs": [], + "source": [ + "job.add_training_data(training_container_2)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "180d92d9", + "metadata": {}, + "outputs": [], + "source": [ + "# set cutoff\n", + "job.cutoff=7.0" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "b25f83e8", + "metadata": {}, + "outputs": [], + "source": [ + "# set number of iterations\n", + "job.input[\"fit\"][\"maxiter\"]=1000" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "id": "f9d67b89", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ParameterValueComment
0cutoff7.0
1metadata{'comment': 'pyiron-generated fitting job', 'pyiron_job_id': '4'}
2data{'filename': '/home/users/lysogy36/PycharmProjects/pyiron2021/pyiron_contrib/workshop_data/unpack/pacemaker_job_hdf5/pacemaker_job/df_fit.pckl.gzip'}
3potential{'elements': ['Al', 'Li'], 'bonds': {'ALL': {'radbase': 'SBessel', 'rcut': 7.0, 'dcut': 0.01, 'radparameters': [5.25]}}, 'embeddings': {'ALL': {'fs_parameters': [1, 1, 1, 0.5], 'ndensity': 2, 'npo...
4fit{'loss': {'L1_coeffs': 1e-08, 'L2_coeffs': 1e-08, 'kappa': 0.3, 'w0_rad': 0, 'w1_rad': 0, 'w2_rad': 0}, 'maxiter': 1000, 'optimizer': 'BFGS', 'fit_cycles': 1}
5backend{'batch_size': 100, 'display_step': 50, 'evaluator': 'tensorpot'}
\n", + "
" + ], + "text/plain": [ + " Parameter \\\n", + "0 cutoff \n", + "1 metadata \n", + "2 data \n", + "3 potential \n", + "4 fit \n", + "5 backend \n", + "\n", + " Value \\\n", + "0 7.0 \n", + "1 {'comment': 'pyiron-generated fitting job', 'pyiron_job_id': '4'} \n", + "2 {'filename': '/home/users/lysogy36/PycharmProjects/pyiron2021/pyiron_contrib/workshop_data/unpack/pacemaker_job_hdf5/pacemaker_job/df_fit.pckl.gzip'} \n", + "3 {'elements': ['Al', 'Li'], 'bonds': {'ALL': {'radbase': 'SBessel', 'rcut': 7.0, 'dcut': 0.01, 'radparameters': [5.25]}}, 'embeddings': {'ALL': {'fs_parameters': [1, 1, 1, 0.5], 'ndensity': 2, 'npo... \n", + "4 {'loss': {'L1_coeffs': 1e-08, 'L2_coeffs': 1e-08, 'kappa': 0.3, 'w0_rad': 0, 'w1_rad': 0, 'w2_rad': 0}, 'maxiter': 1000, 'optimizer': 'BFGS', 'fit_cycles': 1} \n", + "5 {'batch_size': 100, 'display_step': 50, 'evaluator': 'tensorpot'} \n", + "\n", + " Comment \n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 " + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "job.input" + ] + }, + { + "cell_type": "markdown", + "id": "18f2a543", + "metadata": {}, + "source": [ + "# Run fit" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "4bff02a2", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Set automatically determined list of elements: ['Al', 'Li']\n", + "The job pacemaker_job was saved and received the ID: 4\n" + ] + } + ], + "source": [ + "job.run()" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "id": "58687533", + "metadata": {}, + "outputs": [], + "source": [ + "job.collect_output()" + ] + }, + { + "cell_type": "markdown", + "id": "27f90579", + "metadata": {}, + "source": [ + "# Analyse fit" + ] + }, + { + "cell_type": "markdown", + "id": "30654b6e", + "metadata": {}, + "source": [ + "plot loss function" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "id": "1640ba96", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAY4AAAEKCAYAAAAFJbKyAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAAsTAAALEwEAmpwYAAAkPElEQVR4nO3deXxV9Z3/8dcn+0IWCAlLCEsIgoBssqN1V7DuVXEZFVBcWluntZ3qTKfTX6fVsf3Vqi1WQRF36lZFxTpqRVBACSICsoctrElYk0DW7/yRoEgTyA335tx78n4+Hnkk99xzD2+/TXlztu8x5xwiIiJNFeV1ABERiSwqDhERCYiKQ0REAqLiEBGRgKg4REQkICoOEREJSIzXAUKhffv2rnv37l7HEBGJKIsXLy52zmUebz1fFYeZXQxcnJeXR35+vtdxREQiipltasp6vjpU5Zx70zl3a1pamtdRRER8y1fFISIioafiEBGRgKg4REQkICoOEREJiIpDREQC4qviMLOLzWzqvn37vI4iIuJb5sfnceSePMDd9/RbzfpsTHQUyXHRJMfHkBxf/z0uhuT4GJLioomPicLMgpxYRMR7ZrbYOTf0eOv56gbAw7buPcg9ry0LybZjooykuGjaxMeQFB/zdckkxcXQJj6apPiYuvcOrxNXX0BxMaQmxjK4azqx0b7a0RORVsaXxdGnYwp/v/fsZn22qtpRVllNWUU1ZZU1dd8rvv26vLKG0opqyiurKa2oobyimt1l5ZQfXr+ymkNVtQ1uf1RuBo/dcCppibEn8p8oIuIZXxZHbHQUndISPc1QXVNLedXh4qn7vrRwL79+8yuuemw+MyYOp3O6txlFRJrDl8URDmKio0iNjiI14Zs9i4E56fTMbMPtzy7m8kc/4akJw+nbOdXDlCIigdPB9hY2Jq89L98xCsO4+vEFzFtb5HUkEZGAqDg80KdjKn/7wWi6tE1k4lOLeDl/i9eRRESaTMXhkU5pibx0+yhG5mbws1e+5OH31+LHS6NFxH9UHB5KTYhl+oRhXDEkmz++v4Z7Xl1GVU3DV2OJiIQLX50cP/JBTpEiLiaKP1w1kC7piTzyj3Vs33+IR68fQpt4X/1PIyI+4qs9jkh9kJOZ8ZPze/M/V5zCJ+uKufqxBezcf8jrWCIiDfJVcUS6a4Z35YmbhrKxpIwrHp3Pmp0HvI4kIvJPVBxh5qzeWbx02ygqa2r53l/ms2B9ideRRES+RcURhvpnp/G374+mQ2oCN03/jDe+2Op1JBGRr6k4wlSXtkm8evtoBnVN566ZX3DDk5/yj1U7qa3VJbsi4i0VRxhLS4rl2ZuH87MLerNm5wEmzcjnnAc/4un5GymtqPY6noi0Ur58HsfQoUNdfn6+1zGCqqqmltnLtvPUJxv5YsteUuJjuHpYDjeN6k7XjCSv44mIDzT1eRwqjgi0ZPMenvpkI7OXbafGOc49uQMTx3RnVG6GHjIlIs2m4vBxcRy2Y98hnlu4iec/3cSe8ioGdElj+oRhtG8T73U0EYlATS0OneOIYB3TEvjpBb1ZcO853H/FKazecYBbn8nnUFWN19FExMdUHD6QEBvNtcO78tD4QXy+eS93v7xUV1+JSMioOHxk3CmduHdcH97+cjv//39Xex1HRHxKM+n5zK3fyWVjSTmPzllP94xkrh6W43UkEfGZsC8OM0sGHgUqgTnOuec9jhTWzIxfX9qPwj3l/PvflpHdNpExee29jiUiPuLJoSozm25mu8xs+VHLx5rZajNbZ2b31C++AnjFOTcZuKTFw0ag2Ogoplw/pO755s8tZq0mSxSRIPLqHMcMYOyRC8wsGpgCjAP6AteaWV+gC3D42aq6XKiJUhNimT5xGAmx0UycsYiiAxVeRxIRn/CkOJxzc4HdRy0eDqxzzhU45yqBmcClQCF15QHHyGtmt5pZvpnlFxUVhSJ2xMlOT+TJm4ZSXFrBZF2mKyJBEk7nOLL5Zs8C6gpjBPAI8Gcz+y7wZmMfds5NBaZC3Q2AIcwZUQZ0Seeh8YO54/nFDPnv92gTH0NSXDSJcXXfk+Ki6Z6RzE2ju5GXleJ1XBGJAOFUHA3NleGcc2XAxJYO4ydj+3dk6g1Dmb++mIOVNZTXfx2squbAoWpeyt/Csws3ce7JWUw+PZfhPdpp6hIRaVQ4FUchcOS1o12AbYFsIBKfOd5SzuvbgfP6dmjwvZLSCp5duIlnFmxi/NSFDMxJ544zcrmgX0cViIj8E8/mqjKz7sBbzrn+9a9jgDXAOcBWYBFwnXNuRaDbbi1zVQXbwcoaXvm8kCfmFbCppJwfnNWTn57fW+Uh0kqE9VxVZvYisADobWaFZnazc64auBN4F1gJvNSc0pDmS4yL5oaR3fjH3Wdy7fCuTPlwPb97dzV+nAhTRJrPk0NVzrlrG1k+G5jd3O3qUFVwREcZv72sP1EGf5mznlrnuGdsH+15iAjgs7mqnHNvOuduTUtL8zpKxIuKMn5zWX9uGNmNxz8q4L7ZK7XnISJAeJ0clzBzePqSKINp8zZQVeP45UV9iYrSnodIa+ar4tChquAzM351ST+io6KY/skG9h+s4oErBxAb7audVREJgK/+369DVaFhZvznRSdz93kn8dqSrdz27GIOVuoudJHWylfFIaFjZvzwnF785rL+fLh6Fzc8+Sn7DlZ5HUtEPKDikID8y8hu/OnawSwt3MudL3zudRwR8YCvisPMLjazqfv27fM6iq9dNKAzPx/bh3lri1lYUOJ1HBFpYb4qDp3jaDn/MrIbmSnxPPT+Gq+jiEgL81VxSMtJiI3mjjN6srBgNwvWa69DpDVRcUizXTeiK1kp8fzx/TW6OVCkFfFVcegcR8tKiI3mB2fl8dkG7XWItCa+Kg6d42h544fl0DE1QXsdIq2Ir4pDWl7dXkdPFm3cw6Nz1lNbq/IQ8TsVh5yw8cO6Mq5/R37/7mpufnoRu8sqvY4kIiGk4pATFhcTxaPXD+HXl/bjk3UlXPjwPL4s3Ot1LBEJERWHBIWZceOo7rz2/dFERxm3PbuYfeWakkTEj3xVHLqqynv9s9N49PohFB2o4BdvLNcJcxEf8lVx6Kqq8DAwJ51/PbcXby7dxutfbPU6jogEma+KQ8LHHWfmMax7W375+gq27C73Oo6IBJGKQ0IiOsp48OpBANw4/TO27T3obSARCRoVh4RMTrskZkwaTnFpBVc9toBNJWVeRxKRIFBxSEid2q0tL04eSXllNVc/voD564u9jiQiJ0jFISHXPzuNmbeOIj4mmuumfcqPXlzCzv2HvI4lIs3kq+LQ5bjhq3fHFP73x9/hrnN68fcVO7jgobl8tKbI61gi0gy+Kg5djhveEmKj+fF5J/HOXafTMTWBCU99xiMfrNW9HiIRxlfFIZGhZ2Yb/vb9MVw+KJsH31vDXz5a73UkEQlAjNcBpHVKjIvmD1cPpLrW8ft3V3NSVgrn9u3gdSwRaQLtcYhnzIzfXTmA/p3TuGvmEpZu2et1JBFpAhWHeCohNpppNw4lPSmO8VMX8PflO7yOJCLHoeIQz3VMS+D1H4yhT8dU7nh+MVPnrtcJc5EwpuKQsJCZEs/MW0dyYf9O3Dd7Ff/x+nKqamq9jiUiDdDJcQkbCbHR/OnawXTLSOLROetZv6uUP183hMyUeK+jicgRtMchYSUqyvi3sX14aPwglhbu5aI/zdPsuiJhxlfFoTvH/eOywdm8dscYyipq+PmrX+qch0gY8VVx6M5xf+nbOZV/v/Bk5q8v4YXPNnsdR0Tq+ao4xH+uHZ7DaXnt+c1bK1lWqD1JkXCg4pCwZmY8ePVA2iXHMenpRRTu0fkOEa+pOCTsZaUm8NTEYRyqquGHLy6hplbnO0S8pOKQiHBShxT++9L+LNm8lxnzN3odR6RVU3FIxLh0UGfO7pPF799dpUt0RTyk4pCIYWb89vL+RJnx67e+8jqOSKul4pCI0iktkR+e3Yv3vtrJh6t3eR1HpFVScUjEmXRad3LbJ/Ozl5eyblep13FEWh0Vh0Sc+Jhopt44FIDrn1jI9n0HPU4k0rqoOCQi5WW14blbRlB6qJrvP/85ldWaSVekpag4JGL16ZjK764cyJLNe7lv9kqv44i0GioOiWjfHdCJSWN6MGP+RmYt3eZ1HJFWIeyLw8xyzexJM3vF6ywSnu69sA9Du7Xlpy8v5b2vdnodR8T3QlocZjbdzHaZ2fKjlo81s9Vmts7M7jnWNpxzBc65m0OZUyJbbHQU024cysmdUrn9ucV8tKbI60givhbqPY4ZwNgjF5hZNDAFGAf0Ba41s75mdoqZvXXUV1aI84lPtE2O44VbRtArqw13zVyiO8tFQiikxeGcmwvsPmrxcGBd/Z5EJTATuNQ5t8w5d9FRX02+w8vMbjWzfDPLLyrSvzhbo+T4GB6/4VSqaxz/+cZyPfxJJES8OMeRDWw54nVh/bIGmVmGmT0GDDazextbzzk31Tk31Dk3NDMzM3hpJaJ0y0jmX8/txZzVRby/UneWi4SCF8VhDSxr9J+GzrkS59ztzrmezrn7Q5hLfOKm0d3pmZnM799dRa2mYBcJOi+KoxDIOeJ1FyAo11HqmeMCdSfLf3h2L9bsLOX9lbrKSiTYvCiORUAvM+thZnHANcCsYGxYzxyXwy4a0Imu7ZL45RsrmKPJEEWCKtSX474ILAB6m1mhmd3snKsG7gTeBVYCLznnVoQyh7Q+MdFRTLluCKmJMUyasUj3d4gEkfnpyhMzuxi4OC8vb/LatWu9jiNhoLyymuumfcqqHfv54O4zyU5P9DqSSNgys8XOuaHHWy/s7xwPhA5VydGS4mKYcv0QnIMH3lnldRwRX2hScZhZsplF1f98kpldYmaxoY0mEhzZ6YlMPj2XWUu3sXbnAa/jiES8pu5xzAUSzCwb+ACYSN1d4WFFV1VJYyaO6U5cTBRPL9jodRSRiNfU4jDnXDlwBfAn59zl1E0XElZ0qEoak9EmnksGdubVxVvZd7DK6zgiEa3JxWFmo4Drgbfrl8WEJpJIaEwY3Z2DVTW8nL/l+CuLSKOaWhz/CtwL/M05t8LMcoEPQ5ZKJAT6Z6cxrHtbnlmwiRrdUS7SbE0qDufcR865S5xzD9SfJC92zv0oxNkCpnMccjw3je7O5t3lfLhKNwWKNFdTr6p6wcxSzSwZ+ApYbWY/C220wOkchxzPBf060jE1gWnzCiivrPY6jkhEauqhqr7Ouf3AZcBsoCtwQ6hCiYRKbHQUk7+Ty6cbdnP6Ax/yvu4oFwlYU4sjtv6+jcuAN5xzVRxjRluRcDZpTHdeum0UHVITmPxsPi8t0slykUA0tTgeBzYCycBcM+sG7A9VqObSOQ5pCjNjeI92vHrHaE7La88vXl+uGwNFAtDsuarMLKZ+wsKwM3ToUJefn+91DIkAxaUVnPfgR5zSJZ1nJg33Oo6Ip4I6V5WZpZnZg4cfzWpmf6Bu70MkorVvE8/k7+Qyd00Rywq1pyrSFE09VDUdOABcXf+1H3gqVKFEWtINI7uRkhDDlA/XeR1FJCI0tTh6Ouf+yzlXUP/1/4DcUAYTaSkpCbFMGN2dv6/YwYxPNuCnRw2IhEJTi+OgmZ12+IWZjQEOhiaSSMu75bRcRuVm8Ks3v+Le15Z5HUckrDW1OG4HppjZRjPbCPwZuC1kqZpJV1VJc6UlxfLC5BHccWZPZi7awmufF3odSSRsNXXKkaXOuYHAAGCAc24wcHZIkzWD7hyXE2Fm3H3eSQzv3o5/e+VL5q8r9jqSSFgK6AmAzrn99XeQA/wkBHlEPBUTHcWTE4bStV0S97y2jIrqGq8jiYSdE3l0rAUthUgYSUmI5T8v6svm3eX8ffkOr+OIhJ0TKQ5deiK+dcZJmXTLSGL6xxuo1RTsIt9yzOIwswNmtr+BrwNA5xbKKNLioqKMH53di6WF+/irHvwk8i3HLA7nXIpzLrWBrxTnnJ4AKL52xZBsBuakM21ugfY6RI5wIoeqwo4ux5VgMjMmjelOQXEZc9cWeR1HJGz4qjh0Oa4E27j+nchMiecvc9ZTWV3rdRyRsOCr4hAJtriYKO46pxefbtjNXTOXaDoSEVQcIsf1LyO7ce+4PryzfAcvL9Yd5SIqDpEmmHx6Lqd2a8sD76xiX3mV13FEPKXiEGmCqCjj15f2Y095JX94b7XXcUQ8peIQaaJ+ndO4cVR3nlu4ieVbdeWetF4qDpEA/Pi8k2iXHMcv31iuezuk1VJxiAQgLTGWe8adzOeb9/L8Z5u9jiPiCRWHSIC+NySb03u15763V7KppMzrOCItzlfFoTvHpSWYGb+7cgBRBn98b43XcURanK+KQ3eOS0vplJbIdSO6MmvpNjaXlHsdR6RF+ao4RFrSLafnEhMVxeNz13sdRaRFqThEmqlDagLfOzWblxcXsuvAIa/jiLQYFYfICbjtOz2prqnlyY83eB1FpMWoOEROQPf2yXx3QGeeX7iZfQc1FYm0DioOkRN0xxk9Ka2o5tkFG72OItIiVBwiJ6hv51TO6p3Jkx9v0LkOaRVUHCJBcNe5J1FWUcM1jy/kwCEdshJ/U3GIBMGgnHRmTBpGQXEZzyzY5HUckZBScYgEyeie7TmrdyZPzCvQISvxNRWHSBDdfX5vDlbVMPGpRXpGufiWikMkiPpnp/HwNYNZsW0/Mxdp9lzxp7AvDjO7zMymmdkbZna+13lEjuf8vh0Y3qMdj3ywjvLKaq/jiARdSIvDzKab2S4zW37U8rFmttrM1pnZPcfahnPudefcZGACMD6EcUWCwsz4+djeFJdW8NQnG72OIxJ0od7jmAGMPXKBmUUDU4BxQF/gWjPra2anmNlbR31lHfHRX9R/TiTsndqtHef0yeLxj9azr1yX54q/hLQ4nHNzgd1HLR4OrHPOFTjnKoGZwKXOuWXOuYuO+tpldR4A3nHOfR7KvCLB9NMLelNaUc1/zVp+/JVFIogX5ziygS1HvC6sX9aYHwLnAlea2e2NrWRmt5pZvpnlFxUVBSepyAk4uVMqd57di9e/2MbCghKv44gEjRfFYQ0sc42t7Jx7xDl3qnPudufcY8dYb6pzbqhzbmhmZmZQgoqcqDvO6EnntAR+NWsFVTW6PFf8wYviKARyjnjdBdgWjA3r0bESbhLjovmvS/qxascBnp6/0es4IkHhRXEsAnqZWQ8ziwOuAWYFY8N6dKyEowv6deT0Xu2Z8uE6Sit0ea5EvlBfjvsisADobWaFZnazc64auBN4F1gJvOScWxHKHCJeu/v83uwpr+LJeXrgk0S+mFBu3Dl3bSPLZwOzg/3nmdnFwMV5eXnB3rTICRmUk86Fp3RkyofrOLdvFv06a69YIlfY3zkeCB2qknD2m8tOITUxll+8vpya2kavBxEJe74qDpFw1i45jv/4bh+WbN7Lox+u8zqOSLOpOERa0OWDu/DdAZ146IO1vPVlUC4mFGlxvioOXY4rkeC+y09hUE4697y6jO37DnodRyRgvioOneOQSJCWGMsfrx5ETa3jRy8u0XM7JOL4qjhEIkXXjCT+53unsGjjHn779ldexxEJiK+KQ4eqJJJcOiibW07rwdMLNvHK4kKv44g0ma+KQ4eqJNLcM64Po3tm8O9/W8aXhXu9jiPSJL4qDpFIExMdxZ+uHUxmm3gmzchny+5yryOJHJeKQ8RjGW3imTFxGJXVNdz01GeUlFZ4HUnkmFQcImGgV4cUnrhpGNv2HuT6Jz6lWOUhYcxXxaGT4xLJhvdoxxM3DmNjSRnjH1/Ajn2HvI4k0iBfFYdOjkukO61Xe56eOJyd+yu46vH5OuchYclXxSHiByNyM3julhHsP1jNVY8tYH1RqdeRRL5FxSEShgblpDPz1pFU19Yy/vEFrNy+3+tIIl9TcYiEqZM7pfLX20YRExXFNVMXsnjTHq8jiQA+Kw6dHBe/6ZnZhpdvH0XbpFium7aQ/12xw+tIIv4qDp0cFz/KaZfEq3eMpk+nVG5/bjF/mbNeD4IST/mqOET8KqNNPC9OHsEF/TrywN9XcdVj8ynQSXPxiIpDJEIkxcXw6PVD+OP4gawvKmPcw/N4Yl6B9j6kxak4RCKImXH54C689+PvcHqv9vzm7ZWMf3wBG4rLvI4mrYiKQyQCZaUmMO3GofzhqoGs2XmACx6ayyMfrKWiusbraNIKqDhEIpSZ8b1Tu/D+T87gvL4dePC9NYx7eB7z1xd7HU18zlfFoctxpTXKSk1gynVDeGriMKpqarlu2qf8+K9faK4rCRlzzn8n1oYOHery8/O9jiHS4g5V1fDnf6zj8bnriTLjhpHduH5kN3q0T/Y6mkQAM1vsnBt63PVUHCL+s2V3OX98bw1vLN1GTa1jRI92jB+Ww7j+nUiMi/Y6noQpFYeKQ4Sd+w/xyuJC/rpoC5t3l5OSEMNlg7K5Ykg2g3LSMTOvI0oYUXGoOES+Vlvr+HTDbl7K38LsZdupqK4lOz2RC0/pyNj+nRick05UlEqktVNxqDhEGrTvYBXvf7WTt77cxsfriqmqcXRMTeD8fh04vVcmI3PbkZIQ63VM8YCKQ8Uhclz7Dlbxj1U7eWfZDuauLeJQVS3RUcagnHTG5LXntLz2DO6aTmy0ry7AlEaoOFQcIgGpqK7h8017+XhdER+vK2FZ4V5qHSTHRTMiN4PT8tpzWq/29Mpqo3MjPqXiUHGInJB95VUsKCjm43XFfLy2mI0ldY+xTUuMZUCXNAbnpDMwJ51BOelktIn3OK0Eg4pDxSESVFt2l7NgfQlLtuxhyea9rNl5gMPzK+a0S2Rgl7oSGZSTTv/sNBJiddlvpGmVxWFmFwMX5+XlTV67dq3XcUR8rbyymmWF+1hauJelW/bxxZa9bN17EIDoKOOkDikMyE6jX3YqfTqm0rtjCmmJOukezlplcRymPQ4Rb+w6cIilW/bxZeFelhbWfd9bXvX1+9npifTpmEKfTin06ZjKyZ1S6J6RTIxOvoeFphZHTEuEEZHWISslgfP6JnBe3w4AOOfYsf8Qq3YcYNX2A6zasZ9V2w/w0ZoiquuPc8VEGdltE8lpm0ROuyS6HvWVlqS9lHCj4hCRkDEzOqUl0iktkbN6Z329vKK6hvW7yli1Yz/ri0rZvPsgm3eX8+6KHewuq/zWNlITYujSNoms1Hjat4knMyWezMPfU75ZlpoQo6u9WoiKQ0RaXHxMNH07p9K3c+o/vXfgUBVb6otky+5yNu8up3BPOcWllazafoDi0oqv91aOFBcTRWabeNofVSx1RRNX/z2BzJR4zdd1glQcIhJWUhJi6ds5tsFSgbrpU/YdrKKotIKiA3VfxUf8XFRaQeGecr7YsoeSskoaOo177slZTL1hqKZZaSYVh4hElKgoo21yHG2T4zipQ8ox162uqWV3WSW76gul+EAFCwpKeO3zrUz/ZAO3nJ7bQqn9RcUhIr4VEx1FVmoCWakJXy+78tQulB6q5rezV9I5PZELT+nkYcLIpGvgRKRVMTMevmYwp3Zty10zlzBvbZHXkSKOikNEWp3EuGienDCMnpltmDRjEffNXsm+I+43kWNTcYhIq5SWGMsLk0dy+eBsps0rYMT973P3S0vJ37gbP94YHUy6c1xEWr2vtu3n2YWbmPXFVsoqa8jLasM1w3IY278jXdomeR2vxWjKERWHiASorKKat7/czouLNrNk814AurRNZFRuBiNzMxjVM4PO6YnehgwhFYeKQ0ROwLpdpXy8togFBSV8umH313NudctIYmSPDIb3aEfvjin0zGzjmxsKfVMcZnYycBfQHvjAOfeX431GxSEiwVRb61i14wALCkpYWFDCpwUl7D9UDYBZ3eSNeVlt6JXVhrysNuRlpdA/O5X4mMgqlLAoDjObDlwE7HLO9T9i+VjgYSAaeMI59z9N2FYUMM05d/Px1lVxiEgo1dQ61heVsnZnKet2lbKuqO57QVEpFdW1QN2TE0fntWdot7bkZrYhNzOZru2SwvoxvOEyO+4M4M/AM4cXmFk0MAU4DygEFpnZLOpK5P6jPj/JObfLzC4B7qnfloiIpw4/b+ToO9drah1b9xxk5Y79zFtbxIerinjvq51fvx9l0L5NPB1SE+iQGk9WagIdUup+7pSeSG77ZDqnJxId5lOhhLQ4nHNzzaz7UYuHA+uccwUAZjYTuNQ5dz91eycNbWcWMMvM3gZeCGFkEZFmi44yumYk0TUjiQv6dQTqHsFbUFxKQVEZm0rK2Lm/gp0HDrF17yGWbN5LyVGzAcfFRNEpLYG2SXG0S/7mq21SHBnJcWSlxtOlbRLZ6YmenVvxYsqRbGDLEa8LgRGNrWxmZwJXAPHA7GOsdytwK0DXrl2DEFNE5MSlJcUyuGtbBndt2+D7ldW1dRMz7i6noLiMDcVl7Nx/iN1llezcf4hV2/dTUlb59SGwI6UmxNTN25UUR9ukWNomx/FvF/ShY1pCA39S8HhRHA3tgzV6osU5NweYc7yNOuemAlOh7hxHM7OJiLSouJgostMTyU5PZERuRqPrlVdWU1JayY79h9i65yCFe8opOlDBnvIq9pRXUlRawZqdpdS2wAVPXhRHIZBzxOsuwLZgbPiIZ44HY3MiImEjKS6GpHYx5LRLYlh3b7N4cXp/EdDLzHqYWRxwDTArGBt2zr3pnLs1LS0tGJsTEZEGhLQ4zOxFYAHQ28wKzexm51w1cCfwLrASeMk5tyKUOUREJHhCfVXVtY0sn80xTnQ3lw5ViYiEXvjeidIMOlQlIhJ6vioOEREJPV8Vh5ldbGZT9+3b53UUERHf8lVx6FCViEjo+ao4REQk9MJ+WvXmMLMiYFP9yzTgyGNXx3vdHigOYbyj/7xgfu546zT2fkPLm7KsJcculON2vPUCfS/QsdPvXNOXtZbfuWO9H8rfuW7OucxjZKrjnPP1FzA1wNf5LZknmJ873jqNvd/Q8qYsa8mxC+W4HW+9QN8LdOz0O6ffuZYeuxMdt9ZwqOrNAF+HWnP/vKZ87njrNPZ+Q8ubsqwlxy6U43a89QJ9rzWNnX7nmv+5iB07Xx6qOhFmlu+a8CAT+Wcau+bRuDWfxq55TnTcWsMeR6Cmeh0ggmnsmkfj1nwau+Y5oXHTHoeIiAREexwiIhIQFYeIiARExSEiIgFRcRyHmSWb2dNmNs3Mrvc6T6Qws1wze9LMXvE6S6Qxs8vqf9/eMLPzvc4TKczsZDN7zMxeMbM7vM4Taer/rltsZhcdb91WWRxmNt3MdpnZ8qOWjzWz1Wa2zszuqV98BfCKc24ycEmLhw0jgYybc67AOXezN0nDT4Bj93r979sEYLwHccNGgOO20jl3O3A10Oov0Q3w7zmAnwMvNWXbrbI4gBnA2CMXmFk0MAUYB/QFrjWzvtQ9E31L/Wo1LZgxHM2g6eMm3zaDwMfuF/Xvt2YzCGDczOwS4GPgg5aNGZZm0MSxM7Nzga+AnU3ZcKssDufcXGD3UYuHA+vq/6VcCcwELgUKqSsPaKXjdViA4yZHCGTsrM4DwDvOuc9bOms4CfR3zjk3yzk3Gmj1h5UDHLuzgJHAdcBkMzvm33UhfXRshMnmmz0LqCuMEcAjwJ/N7Lu0/PQkkaDBcTOzDOC3wGAzu9c5d78n6cJbY79zPwTOBdLMLM8595gX4cJYY79zZ1J3aDmeEDya2icaHDvn3J0AZjYBKHbO1R5rIyqOb1gDy5xzrgyY2NJhIkhj41YC3N7SYSJMY2P3CHX/YJGGNTZuc4A5LRsl4jQ4dl//4NyMpmykVR96OUohkHPE6y7ANo+yRBKNW/Np7JpH49Z8QRk7Fcc3FgG9zKyHmcUB1wCzPM4UCTRuzaexax6NW/MFZexaZXGY2YvAAqC3mRWa2c3OuWrgTuBdYCXwknNuhZc5w43Grfk0ds2jcWu+UI6dJjkUEZGAtMo9DhERaT4Vh4iIBETFISIiAVFxiIhIQFQcIiISEBWHiIgERMUhcoLM7H4zO7P+ORr3NLLO7WZ2Y/3PE8ysc8umFAkeFYfIiRsBfAqcAcxraAXn3GPOuWfqX04AAioOM9O8chI2dAOgSDOZ2e+BC4AewHqgJ7CBugd//fqodX8FlAIbqXtOwlbgIDCKuuciPAi0AYqBCc657WY2B5gPjAFmOef+EOr/JpGm0L9iRJrJOfczM3sZuAH4CTDHOTfmOJ95xczuBH7qnMs3s1jgT8ClzrkiMxtP3XT0k+o/ku6cOyOE/xkiAVNxiJyYwcAXQB/qnqAWqN5Af+A9MwOIBrYf8f5fTzCfSNCpOESawcwGUXfIqQt1h5eS6hbbF8Ao59zBpm4KWOGcG9XI+2UnllQk+HRyXKQZnHNfOOcGAWuoO0fxD+AC59ygJpTGASCl/ufVQKaZjQIws1gz6xei2CJBoeIQaSYzywT21D9ms49zrqmHqmYAj9XvnUQDVwIPmNlS6g57jQ5+WpHg0VVVIiISEO1xiIhIQFQcIiISEBWHiIgERMUhIiIBUXGIiEhAVBwiIhIQFYeIiARExSEiIgH5P2BfrqswXrf2AAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(job[\"output/log/loss\"])\n", + "plt.xlabel(\"# iter\")\n", + "plt.ylabel(\"Loss\")\n", + "plt.loglog()" + ] + }, + { + "cell_type": "markdown", + "id": "4e8d5e7d", + "metadata": {}, + "source": [ + "plot energy per atom RMSE" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "id": "9c52dd86", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 50, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(job[\"output/log/rmse_epa\"])\n", + "plt.xlabel(\"# iter\")\n", + "plt.ylabel(\"RMSE E, eV/atom\")\n", + "plt.loglog()" + ] + }, + { + "cell_type": "markdown", + "id": "ae6c3689", + "metadata": {}, + "source": [ + "plot force component RMSE" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "id": "e55598f4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 51, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(job[\"output/log/rmse_f_comp\"])\n", + "plt.xlabel(\"# iter\")\n", + "plt.ylabel(\"RMSE F_i, eV/A\")\n", + "plt.loglog()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f09f50f6", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "f23dd5c8", + "metadata": {}, + "source": [ + "load DataFrame with predictions" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "id": "0acc3ed8", + "metadata": {}, + "outputs": [], + "source": [ + "pred_df = job.predicted_data" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "id": "604da991", + "metadata": {}, + "outputs": [], + "source": [ + "pred_df[\"energy_pred_per_atom\"] = pred_df[\"energy_pred\"]/pred_df[\"NUMBER_OF_ATOMS\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "id": "0456dfe6", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0, 0.5, 'ACE E, eV/atom')" + ] + }, + "execution_count": 54, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(pred_df[\"energy_corrected_per_atom\"], pred_df[\"energy_pred_per_atom\"])\n", + "plt.xlabel(\"DFT E, eV/atom\")\n", + "plt.ylabel(\"ACE E, eV/atom\")" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "id": "07e559d1", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0, 0.5, 'ACE F_i, eV/A')" + ] + }, + "execution_count": 55, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(np.vstack(pred_df[\"forces\"]), np.vstack(pred_df[\"forces_pred\"]))\n", + "plt.xlabel(\"DFT F_i, eV/A\")\n", + "plt.ylabel(\"ACE F_i, eV/A\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "43303071", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "a400fd18", + "metadata": {}, + "source": [ + "Check more in `job.working_directory`/report folder" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "id": "06ddc750", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "train_E-dE-dist.png train_EF-pairplots.png train_Fi-dFi-dist.png\r\n", + "train_E-dE-nn.png train_F-dF-dist.png\r\n" + ] + } + ], + "source": [ + "! ls {job.working_directory}/report" + ] + }, + { + "cell_type": "markdown", + "id": "aeea434a", + "metadata": {}, + "source": [ + "# Get LAMMPS potential " + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "id": "a739431f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ConfigFilenameModelNameSpecies
0[pair_style pace\\n, pair_coeff * * /home/users/lysogy36/PycharmProjects/pyiron2021/pyiron_contrib/workshop_data/unpack/pacemaker_job_hdf5/pacemaker_job/output_potential.yace Al Li\\n]ACEpacemaker_job[Al, Li]
\n", + "
" + ], + "text/plain": [ + " Config \\\n", + "0 [pair_style pace\\n, pair_coeff * * /home/users/lysogy36/PycharmProjects/pyiron2021/pyiron_contrib/workshop_data/unpack/pacemaker_job_hdf5/pacemaker_job/output_potential.yace Al Li\\n] \n", + "\n", + " Filename Model Name Species \n", + "0 ACE pacemaker_job [Al, Li] " + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "lammps_potential = job.get_lammps_potential()\n", + "lammps_potential" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7d6534da", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python (pyiron2022)", + "language": "python", + "name": "pyiron2022" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/pyiron_contrib/atomistics/pacemaker/job.py b/pyiron_contrib/atomistics/pacemaker/job.py index 36f9593c1..d35ce616a 100644 --- a/pyiron_contrib/atomistics/pacemaker/job.py +++ b/pyiron_contrib/atomistics/pacemaker/job.py @@ -29,7 +29,6 @@ logger.setLevel(logging.WARNING) -# TODO: maybe need better rename to Pacemaker class PacemakerJob(GenericJob, PotentialFit): def __init__(self, project, job_name): From 0b8459e53a37796910de96d2158051611f5ecbe1 Mon Sep 17 00:00:00 2001 From: Leimeroth Date: Wed, 25 May 2022 16:28:10 +0200 Subject: [PATCH 224/434] iter functionality and small fix --- .../atomistics/atomicrex/function_factory.py | 2 +- .../atomistics/job/trainingcontainer.py | 68 ++++++++++++++++--- 2 files changed, 60 insertions(+), 10 deletions(-) diff --git a/pyiron_contrib/atomistics/atomicrex/function_factory.py b/pyiron_contrib/atomistics/atomicrex/function_factory.py index 95a1013f7..852b6b92c 100644 --- a/pyiron_contrib/atomistics/atomicrex/function_factory.py +++ b/pyiron_contrib/atomistics/atomicrex/function_factory.py @@ -166,7 +166,7 @@ def gaussian(identifier, prefactor, eta, mu, species=["*", "*"], cutoff=None): @staticmethod def x_pow_n_cutoff( - identifier, cutoff, h=1, N=4, species=["*"], is_screening_function=True + identifier, cutoff, h=1, N=4, species=["*", "*"], is_screening_function=True ): return XpowNCutoff( identifier=identifier, diff --git a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py index fc6c71b58..7cf453495 100644 --- a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py +++ b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py @@ -84,7 +84,9 @@ def include_structure(self, structure, energy, forces=None, stress=None, name=No """ self._container.include_structure(structure, energy, forces, stress, name) - def add_structure(self, structure, energy, forces=None, stress=None, name=None, **arrays): + def add_structure( + self, structure, energy, forces=None, stress=None, name=None, **arrays + ): """ Add new structure to structure list and save energy and forces with it. @@ -98,7 +100,9 @@ def add_structure(self, structure, energy, forces=None, stress=None, name=None, stress (6 array of float, optional): per structure stresses in voigt notation name (str, optional): name describing the structure """ - self._container.add_structure(structure, energy, name=name, forces=forces, stress=stress, **arrays) + self._container.add_structure( + structure, energy, name=name, forces=forces, stress=stress, **arrays + ) def include_dataset(self, dataset): """ @@ -216,7 +220,9 @@ def from_hdf(self, hdf=None, group_name=None): if hdf_version == "0.3.0": self.input.from_hdf(self.project_hdf5, "parameters") - def sample(self, name: str, selector: Callable[[StructureStorage, int], bool]) -> "TrainingContainer": + def sample( + self, name: str, selector: Callable[[StructureStorage, int], bool] + ) -> "TrainingContainer": """ Create a new TrainingContainer with structures filtered by selector. @@ -248,6 +254,20 @@ def plot(self): """ return TrainingPlots(self._container) + def iter(self, *arrays, wrap_atoms=True): + """ + Iterate over all structures in this object and all arrays that are defined + + Args: + wrap_atoms (bool): True if the atoms are to be wrapped back into the unit cell; passed to + :meth:`.get_structure()` + *arrays (str): name of arrays that should be iterated over + + Yields: + :class:`pyiron_atomistics.atomistitcs.structure.atoms.Atoms`, arrays: every structure attached to the object and queried arrays + """ + return self._container.iter(*arrays, wrap_atoms=wrap_atoms) + class TrainingPlots: """ @@ -621,17 +641,23 @@ def include_dataset(self, dataset): - forces (Nx3 array of float): per atom forces, where N is the number of atoms in the structure - stress (6 array of float): per structure stress in voigt notation """ - if 'name' not in dataset.columns \ - or 'atoms' not in dataset.columns \ - or 'energy' not in dataset.columns: - raise ValueError("At least columns 'name', 'atoms' and 'energy' must be present in dataset!") + if ( + "name" not in dataset.columns + or "atoms" not in dataset.columns + or "energy" not in dataset.columns + ): + raise ValueError( + "At least columns 'name', 'atoms' and 'energy' must be present in dataset!" + ) for row in dataset.itertuples(index=False): kwargs = {} if hasattr(row, "forces"): kwargs["forces"] = row.forces if hasattr(row, "stress"): kwargs["stress"] = row.stress - self.add_structure(row.atoms, energy=row.energy, identifier=row.name, **kwargs) + self.add_structure( + row.atoms, energy=row.energy, identifier=row.name, **kwargs + ) def to_list(self, filter_function=None): """ @@ -652,9 +678,33 @@ def to_list(self, filter_function=None): num_atoms_list = data_table.number_of_atoms.to_list() return structure_list, energy_list, force_list, num_atoms_list + def iter(self, *arrays, wrap_atoms=True): + """ + Iterate over all structures in this object and all arrays that are defined + + Args: + wrap_atoms (bool): True if the atoms are to be wrapped back into the unit cell; passed to + :meth:`.get_structure()` + *arrays (str): name of arrays that should be iterated over + + Yields: + :class:`pyiron_atomistics.atomistitcs.structure.atoms.Atoms`, arrays: every structure attached to the object and queried arrays + """ + for i in range(self.number_of_structures): + s = self._get_structure(frame=i, wrap_atoms=wrap_atoms) + vals = [s] + for a in arrays: + vals.append( + self.get_array( + name=a, + frame=i, + ) + ) + yield vals + @property def plot(self): """ :class:`.TrainingPlots`: plotting interface """ - return TrainingPlots(self) \ No newline at end of file + return TrainingPlots(self) From ac31f23ca0f51ae1a672808b5e0c2c9a6cdb3b8c Mon Sep 17 00:00:00 2001 From: Leimeroth Date: Wed, 25 May 2022 16:38:00 +0200 Subject: [PATCH 225/434] forces label --- pyiron_contrib/atomistics/ml/potentialfit.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyiron_contrib/atomistics/ml/potentialfit.py b/pyiron_contrib/atomistics/ml/potentialfit.py index 3e05673c1..123199d08 100644 --- a/pyiron_contrib/atomistics/ml/potentialfit.py +++ b/pyiron_contrib/atomistics/ml/potentialfit.py @@ -140,7 +140,7 @@ def force_scatter_histogram(self, axis=None): plt.subplot(1, 2, 1) plt.scatter(ft, fp) - plt.xlabel("True Forces [eV]") + plt.xlabel("True Forces [eV$\AA$]") plt.ylabel("Predicted Forces [eV/$\AA$]") plt.subplot(1, 2, 2) plt.hist(ft - fp) From 6df612865f1f2fd7b5feb570397da1a3295f231b Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Thu, 26 May 2022 17:00:48 +0200 Subject: [PATCH 226/434] Add Force Plot --- .../atomistics/job/trainingcontainer.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py index fc6c71b58..29813cf66 100644 --- a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py +++ b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py @@ -28,7 +28,7 @@ Fe_bcc ... """ -from typing import Callable +from typing import Callable, Optional from warnings import catch_warnings import numpy as np @@ -494,6 +494,21 @@ def shell_distances(self, num_shells=4): plt.xlabel(r"Distance [$\AA$]") plt.ylabel("Shell") + def forces(self, axis: Optional[int] = None): + """ + Plot a histogram of all forces. + + Args: + axis (int, optional): plot only forces along this axis, if not given plot all forces + """ + f = self._train.get_array("forces") + if axis is not None: + f = f[:, axis] + else: + f = f.ravel() + plt.hist(f, bins=20) + plt.xlabel(r"Force [eV/$\mathrm{\AA}$]") + class TrainingStorage(StructureStorage): def __init__(self): @@ -657,4 +672,4 @@ def plot(self): """ :class:`.TrainingPlots`: plotting interface """ - return TrainingPlots(self) \ No newline at end of file + return TrainingPlots(self) From d9e479c38ec7eb2af45f26d3e79953ce5e2d1b59 Mon Sep 17 00:00:00 2001 From: Niklas Leimeroth <63864024+Leimeroth@users.noreply.github.com> Date: Sat, 28 May 2022 08:29:54 +0200 Subject: [PATCH 227/434] Update pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py Co-authored-by: Marvin Poul --- pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py index 7cf453495..88ebe976e 100644 --- a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py +++ b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py @@ -266,7 +266,7 @@ def iter(self, *arrays, wrap_atoms=True): Yields: :class:`pyiron_atomistics.atomistitcs.structure.atoms.Atoms`, arrays: every structure attached to the object and queried arrays """ - return self._container.iter(*arrays, wrap_atoms=wrap_atoms) + yield from self._container.iter(*arrays, wrap_atoms=wrap_atoms) class TrainingPlots: From 8066177e7c4b853f6755f7785f0c3d7f642b323d Mon Sep 17 00:00:00 2001 From: Niklas Leimeroth <63864024+Leimeroth@users.noreply.github.com> Date: Sat, 28 May 2022 08:31:00 +0200 Subject: [PATCH 228/434] Update pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py Co-authored-by: Marvin Poul --- .../atomistics/atomistics/job/trainingcontainer.py | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py index 88ebe976e..849a4383e 100644 --- a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py +++ b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py @@ -690,17 +690,7 @@ def iter(self, *arrays, wrap_atoms=True): Yields: :class:`pyiron_atomistics.atomistitcs.structure.atoms.Atoms`, arrays: every structure attached to the object and queried arrays """ - for i in range(self.number_of_structures): - s = self._get_structure(frame=i, wrap_atoms=wrap_atoms) - vals = [s] - for a in arrays: - vals.append( - self.get_array( - name=a, - frame=i, - ) - ) - yield vals +yield from zip(self._container.iter_structures(), *(self._container.get_array_ragged(a) for a in arrays)) @property def plot(self): From 74e850d51a2ba8781d4ab71b90f11800f943de98 Mon Sep 17 00:00:00 2001 From: Niklas Leimeroth Date: Sat, 28 May 2022 08:43:14 +0200 Subject: [PATCH 229/434] indent --- pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py index 849a4383e..208147c90 100644 --- a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py +++ b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py @@ -690,7 +690,7 @@ def iter(self, *arrays, wrap_atoms=True): Yields: :class:`pyiron_atomistics.atomistitcs.structure.atoms.Atoms`, arrays: every structure attached to the object and queried arrays """ -yield from zip(self._container.iter_structures(), *(self._container.get_array_ragged(a) for a in arrays)) + yield from zip(self._container.iter_structures(), *(self._container.get_array_ragged(a) for a in arrays)) @property def plot(self): From ac0028e7dd2fbd59ed62cc5cd7b0a7abe8967b44 Mon Sep 17 00:00:00 2001 From: Niklas Leimeroth Date: Sat, 28 May 2022 08:45:42 +0200 Subject: [PATCH 230/434] safe some function calls --- pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py index 208147c90..57e8eec73 100644 --- a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py +++ b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py @@ -690,7 +690,8 @@ def iter(self, *arrays, wrap_atoms=True): Yields: :class:`pyiron_atomistics.atomistitcs.structure.atoms.Atoms`, arrays: every structure attached to the object and queried arrays """ - yield from zip(self._container.iter_structures(), *(self._container.get_array_ragged(a) for a in arrays)) + array_vals = (self._container.get_array_ragged(a) for a in arrays) + yield from zip(self._container.iter_structures(), *array_vals) @property def plot(self): From cc7784fbc48c237f32dc3e9318e1b4bd92226937 Mon Sep 17 00:00:00 2001 From: Niklas Leimeroth Date: Sat, 28 May 2022 08:48:31 +0200 Subject: [PATCH 231/434] fix --- pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py index 57e8eec73..ce62dbab2 100644 --- a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py +++ b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py @@ -690,8 +690,8 @@ def iter(self, *arrays, wrap_atoms=True): Yields: :class:`pyiron_atomistics.atomistitcs.structure.atoms.Atoms`, arrays: every structure attached to the object and queried arrays """ - array_vals = (self._container.get_array_ragged(a) for a in arrays) - yield from zip(self._container.iter_structures(), *array_vals) + array_vals = (self.get_array_ragged(a) for a in arrays) + yield from zip(self.iter_structures(), *array_vals) @property def plot(self): From 8c5efcc2cfd26bb9ec34eafbb7d943296fbe6aa0 Mon Sep 17 00:00:00 2001 From: Leimeroth Date: Mon, 30 May 2022 07:59:11 +0200 Subject: [PATCH 232/434] missing / --- pyiron_contrib/atomistics/ml/potentialfit.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyiron_contrib/atomistics/ml/potentialfit.py b/pyiron_contrib/atomistics/ml/potentialfit.py index 123199d08..52cf5c02f 100644 --- a/pyiron_contrib/atomistics/ml/potentialfit.py +++ b/pyiron_contrib/atomistics/ml/potentialfit.py @@ -140,7 +140,7 @@ def force_scatter_histogram(self, axis=None): plt.subplot(1, 2, 1) plt.scatter(ft, fp) - plt.xlabel("True Forces [eV$\AA$]") + plt.xlabel("True Forces [eV/$\AA$]") plt.ylabel("Predicted Forces [eV/$\AA$]") plt.subplot(1, 2, 2) plt.hist(ft - fp) From 975a99895296fb39c1cf1c18dc16e47f1a573507 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 30 May 2022 11:11:03 +0000 Subject: [PATCH 233/434] Bump boto3 from 1.23.5 to 1.23.10 Bumps [boto3](https://github.com/boto/boto3) from 1.23.5 to 1.23.10. - [Release notes](https://github.com/boto/boto3/releases) - [Changelog](https://github.com/boto/boto3/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/boto/boto3/compare/1.23.5...1.23.10) --- updated-dependencies: - dependency-name: boto3 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 6e49f83cd..d793c87cc 100644 --- a/setup.py +++ b/setup.py @@ -49,7 +49,7 @@ ], 'image': ['scikit-image==0.19.2'], 'generic': [ - 'boto3==1.23.5', + 'boto3==1.23.10', 'moto==3.1.9' ], }, From b8fbdc5d830b105593c154ec49ea46725c5c027a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 30 May 2022 11:11:17 +0000 Subject: [PATCH 234/434] Bump pyiron-atomistics from 0.2.45 to 0.2.47 Bumps [pyiron-atomistics](https://github.com/pyiron/pyiron_atomistics) from 0.2.45 to 0.2.47. - [Release notes](https://github.com/pyiron/pyiron_atomistics/releases) - [Changelog](https://github.com/pyiron/pyiron_atomistics/blob/master/CHANGELOG.md) - [Commits](https://github.com/pyiron/pyiron_atomistics/compare/pyiron_atomistics-0.2.45...pyiron_atomistics-0.2.47) --- updated-dependencies: - dependency-name: pyiron-atomistics dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 6e49f83cd..b2faae868 100644 --- a/setup.py +++ b/setup.py @@ -41,7 +41,7 @@ extras_require={ 'atomistic': [ 'ase==3.22.1', - 'pyiron_atomistics==0.2.45', + 'pyiron_atomistics==0.2.47', ], 'fenics': [ 'fenics==2019.1.0', From b04fcdd313912ba2e627d9901c4721ee861bffcf Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 30 May 2022 11:11:20 +0000 Subject: [PATCH 235/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index ff9210205..c6efc1016 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -14,5 +14,5 @@ dependencies: - seaborn =0.11.2 - scikit-image =0.19.2 - randspg =0.0.1 -- boto3 =1.23.5 +- boto3 =1.23.10 - moto =3.1.9 From caff7a22ed255ad02ac5adfce749738dc4fccee7 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 30 May 2022 11:17:14 +0000 Subject: [PATCH 236/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index ff9210205..fe0b89165 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -8,7 +8,7 @@ dependencies: - matplotlib =3.5.2 - numpy =1.22.3 - pyiron_base =0.5.12 -- pyiron_atomistics =0.2.45 +- pyiron_atomistics =0.2.47 - pyparsing =3.0.9 - scipy =1.8.1 - seaborn =0.11.2 From 228497c80240bda0387f6e7f1956dcfc6f56d561 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 30 May 2022 13:14:43 +0000 Subject: [PATCH 237/434] Bump moto from 3.1.9 to 3.1.11 Bumps [moto](https://github.com/spulec/moto) from 3.1.9 to 3.1.11. - [Release notes](https://github.com/spulec/moto/releases) - [Changelog](https://github.com/spulec/moto/blob/master/CHANGELOG.md) - [Commits](https://github.com/spulec/moto/compare/3.1.9...3.1.11) --- updated-dependencies: - dependency-name: moto dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index d793c87cc..c762bf224 100644 --- a/setup.py +++ b/setup.py @@ -50,7 +50,7 @@ 'image': ['scikit-image==0.19.2'], 'generic': [ 'boto3==1.23.10', - 'moto==3.1.9' + 'moto==3.1.11' ], }, cmdclass=versioneer.get_cmdclass(), From 9bf42ae714c86986167dcb01c4e1459010f2ff69 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 30 May 2022 13:15:01 +0000 Subject: [PATCH 238/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index c6efc1016..3f52049ca 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -15,4 +15,4 @@ dependencies: - scikit-image =0.19.2 - randspg =0.0.1 - boto3 =1.23.10 -- moto =3.1.9 +- moto =3.1.11 From 35525636a04fca5f132cca15297a0d171e6d297a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 30 May 2022 13:32:15 +0000 Subject: [PATCH 239/434] Bump numpy from 1.22.3 to 1.22.4 Bumps [numpy](https://github.com/numpy/numpy) from 1.22.3 to 1.22.4. - [Release notes](https://github.com/numpy/numpy/releases) - [Changelog](https://github.com/numpy/numpy/blob/main/doc/HOWTO_RELEASE.rst.txt) - [Commits](https://github.com/numpy/numpy/compare/v1.22.3...v1.22.4) --- updated-dependencies: - dependency-name: numpy dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 89939740b..c90a6f1ce 100644 --- a/setup.py +++ b/setup.py @@ -32,7 +32,7 @@ packages=find_packages(exclude=["*tests*"]), install_requires=[ 'matplotlib==3.5.2', - 'numpy==1.22.3', + 'numpy==1.22.4', 'pyiron_base==0.5.12', 'scipy==1.8.1', 'seaborn==0.11.2', From b13ae164821bf10c700fd18c884d564402840608 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 30 May 2022 13:32:32 +0000 Subject: [PATCH 240/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 5ed9c7e5b..f436cad8a 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -6,7 +6,7 @@ dependencies: - coverage - codacy-coverage - matplotlib =3.5.2 -- numpy =1.22.3 +- numpy =1.22.4 - pyiron_base =0.5.12 - pyiron_atomistics =0.2.47 - pyparsing =3.0.9 From 98e7332a996c4976fceb35e5500c085ca90cfe32 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 30 May 2022 13:40:41 +0000 Subject: [PATCH 241/434] Bump pyiron-base from 0.5.12 to 0.5.13 Bumps [pyiron-base](https://github.com/pyiron/pyiron_base) from 0.5.12 to 0.5.13. - [Release notes](https://github.com/pyiron/pyiron_base/releases) - [Changelog](https://github.com/pyiron/pyiron_base/blob/master/CHANGELOG.md) - [Commits](https://github.com/pyiron/pyiron_base/compare/pyiron_base-0.5.12...pyiron_base-0.5.13) --- updated-dependencies: - dependency-name: pyiron-base dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index c90a6f1ce..dba39060b 100644 --- a/setup.py +++ b/setup.py @@ -33,7 +33,7 @@ install_requires=[ 'matplotlib==3.5.2', 'numpy==1.22.4', - 'pyiron_base==0.5.12', + 'pyiron_base==0.5.13', 'scipy==1.8.1', 'seaborn==0.11.2', 'pyparsing==3.0.9' From ab61cbd99eaa01bb5db6971725c416f2ed1c4e17 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 30 May 2022 13:40:57 +0000 Subject: [PATCH 242/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index f436cad8a..e01f80665 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -7,7 +7,7 @@ dependencies: - codacy-coverage - matplotlib =3.5.2 - numpy =1.22.4 -- pyiron_base =0.5.12 +- pyiron_base =0.5.13 - pyiron_atomistics =0.2.47 - pyparsing =3.0.9 - scipy =1.8.1 From 3d51bf9742f0ddd6ab9927cc1015396a0801ff25 Mon Sep 17 00:00:00 2001 From: Alexander Knoll Date: Wed, 1 Jun 2022 01:05:06 +0200 Subject: [PATCH 243/434] BUGFIX: update get_lammps_potential to work with the hdnnp pair_style. --- pyiron_contrib/atomistics/runner/job.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pyiron_contrib/atomistics/runner/job.py b/pyiron_contrib/atomistics/runner/job.py index a195b71f9..d3ec3d5ce 100644 --- a/pyiron_contrib/atomistics/runner/job.py +++ b/pyiron_contrib/atomistics/runner/job.py @@ -23,6 +23,7 @@ import pandas as pd from ase.data import atomic_numbers +from ase.units import Bohr from runnerase.io.ase import (read_results_mode1, read_results_mode2, read_results_mode3) @@ -438,7 +439,7 @@ def get_lammps_potential( files.append(f'{self.working_directory}/{filename}') # Save the mapping of elements between LAMMPS and n2p2. - emap = ','.join([f'{i}:{el}' for i, el in enumerate(elements)]) + emap = ' '.join(el for el in elements) # Get the cutoff radius of the symmetry functions. cutoffs = self.parameters.symfunction_short.cutoffs @@ -453,11 +454,10 @@ def get_lammps_potential( 'Filename': [files], 'Model': ['RuNNer'], 'Species': [elements], - 'Config': [['pair_style nnp dir "./" ' + 'Config': [[f'pair_style hdnnp {cutoff * Bohr} dir "./" ' + 'showew yes showewsum 0 resetew no maxew 100 ' - + 'cflength 1.8897261328 cfenergy 0.0367493254 ' - + f'emap "{emap}"\n', - f'pair_coeff * * {cutoff}\n']] + + 'cflength 1.8897261328 cfenergy 0.0367493254\n', + f'pair_coeff * * {emap}\n']] }) def write_input(self) -> None: From 096c40901f7086c041c03f03ec3bde50b9d319f1 Mon Sep 17 00:00:00 2001 From: Alexander Knoll Date: Wed, 1 Jun 2022 11:29:19 +0200 Subject: [PATCH 244/434] BUGFIX: totalcharge must not be present in training_data. --- pyiron_contrib/atomistics/runner/utils.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pyiron_contrib/atomistics/runner/utils.py b/pyiron_contrib/atomistics/runner/utils.py index b7d5f86bd..b9e465351 100644 --- a/pyiron_contrib/atomistics/runner/utils.py +++ b/pyiron_contrib/atomistics/runner/utils.py @@ -51,6 +51,11 @@ def container_to_ase(container: TrainingContainer) -> List[Atoms]: if prop in zipped: calc_properties[prop] = zipped[prop] + # Overwrite the totalcharge if the property was not present. + if calc_properties['totalcharge'] is None: + totalcharge = np.sum(atoms.get_initial_charges()) + calc_properties['totalcharge'] = totalcharge + # Storage energies, forces, and totalcharge on a calculator object. atoms.calc = RunnerSinglePointCalculator( atoms=atoms, From bc48b0b26f977a2e282e80649414705a872d99bc Mon Sep 17 00:00:00 2001 From: Yury Lysogorskiy Date: Wed, 1 Jun 2022 18:59:55 +0200 Subject: [PATCH 245/434] removed log setters extract training_data(TrainingStorage) and predicted_data_fs(FlattenedStorage) in collect_output --- pyiron_contrib/atomistics/pacemaker/job.py | 57 ++++++++++++++++------ 1 file changed, 42 insertions(+), 15 deletions(-) diff --git a/pyiron_contrib/atomistics/pacemaker/job.py b/pyiron_contrib/atomistics/pacemaker/job.py index d35ce616a..74bb2d3e1 100644 --- a/pyiron_contrib/atomistics/pacemaker/job.py +++ b/pyiron_contrib/atomistics/pacemaker/job.py @@ -18,16 +18,11 @@ from pyiron_contrib.atomistics.atomistics.job.trainingcontainer import TrainingStorage, TrainingContainer from pyiron_contrib.atomistics.ml.potentialfit import PotentialFit -from pyiron_atomistics.atomistics.structure.atoms import Atoms as pyironAtoms +from pyiron_atomistics.atomistics.structure.atoms import Atoms as pyironAtoms, ase_to_pyiron from ase.atoms import Atoms as aseAtoms s = state.settings -# set loggers -loggers = [logging.getLogger(name) for name in logging.root.manager.loggerDict] -for logger in loggers: - logger.setLevel(logging.WARNING) - class PacemakerJob(GenericJob, PotentialFit): @@ -254,7 +249,6 @@ def collect_output(self): yaml_lines = f.readlines() final_potential_yaml_string = "".join(yaml_lines) - with open(self.get_final_potential_filename_ace(), "r") as f: ace_lines = f.readlines() final_potential_yace_string = "".join(ace_lines) @@ -275,6 +269,45 @@ def collect_output(self): for key, arr in log_res_dict.items(): h5out[key] = arr + # training data + training_data_fname = os.path.join(self.working_directory, "fitting_data_info.pckl.gzip") + df = pd.read_pickle(training_data_fname, compression="gzip") + df["atoms"] = df.ase_atoms.map(ase_to_pyiron) + training_data_ts = TrainingStorage() + for _, r in df.iterrows(): + training_data_ts.add_structure(r.atoms, + energy=r.energy_corrected, + forces=r.forces, + identifier=r['name']) + + # predicted data + predicted_fname = os.path.join(self.working_directory, "train_pred.pckl.gzip") + df = pd.read_pickle(predicted_fname, compression="gzip") + predicted_data_fs = FlattenedStorage() + predicted_data_fs.add_array('energy', dtype=np.float64, shape=(), per='chunk') + predicted_data_fs.add_array('energy_true', dtype=np.float64, shape=(), per='chunk') + + predicted_data_fs.add_array('number_of_atoms', dtype=np.int, shape=(), per='chunk') + + predicted_data_fs.add_array('forces', dtype=np.float64, shape=(3,), per='element') + predicted_data_fs.add_array('forces_true', dtype=np.float64, shape=(3,), per='element') + for i, r in df.iterrows(): + identifier = r['name'] if "name" in r else str(i) + predicted_data_fs.add_chunk(r["NUMBER_OF_ATOMS"], identifier=identifier, + energy=r.energy_pred, + forces=r.forces_pred, + energy_true=r.energy_corrected, + forces_true=r.forces, + number_of_atoms = r.NUMBER_OF_ATOMS, + + energy_per_atom = r.energy_pred / r.NUMBER_OF_ATOMS, + energy_per_atom_true=r.energy_corrected / r.NUMBER_OF_ATOMS, + ) + + with self.project_hdf5.open("output") as hdf5_output: + training_data_ts.to_hdf(hdf=hdf5_output, group_name="training_data") + predicted_data_fs.to_hdf(hdf=hdf5_output, group_name="predicted_data") + def get_lammps_potential(self): elements_name = self["output/potential/elements_name"] elem = " ".join(elements_name) @@ -330,16 +363,10 @@ def add_job_to_fitting(self, job_id, *args, **kwargs): self._train_job_id_list.append(job_id) def _get_training_data(self) -> TrainingStorage: - # TODO: convert to TrainingStorage ? - fname = os.path.join(self.working_directory, "fitting_data_info.pckl.gzip") - df = pd.read_pickle(fname, compression="gzip") - return df + return self["output/training_data"].to_object() def _get_predicted_data(self) -> FlattenedStorage: - # TODO: convert to FlattenedStorage ? - fname = os.path.join(self.working_directory, "train_pred.pckl.gzip") - df = pd.read_pickle(fname, compression="gzip") - return df + return self["output/predicted_data"].to_object() # copied/adapted from mlip.py def create_training_dataframe(self, _train_job_id_list: List = None) -> pd.DataFrame: From b05890fde200d1e2f80bd453a4b1d1e91cb4f1e9 Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Wed, 1 Jun 2022 21:16:24 +0200 Subject: [PATCH 246/434] Do not import from pyiron in example notebook --- notebooks/pacemaker_example.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/notebooks/pacemaker_example.ipynb b/notebooks/pacemaker_example.ipynb index a3cd4f501..be6bc429c 100644 --- a/notebooks/pacemaker_example.ipynb +++ b/notebooks/pacemaker_example.ipynb @@ -60,7 +60,7 @@ "metadata": {}, "outputs": [], "source": [ - "from pyiron import Project" + "from pyiron_contrib import Project" ] }, { From c50a420efb7d314e463369f4bb8b4d48d0f6c897 Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Wed, 1 Jun 2022 21:47:14 +0200 Subject: [PATCH 247/434] Remove example notebook --- notebooks/pacemaker_example.ipynb | 809 ------------------------------ 1 file changed, 809 deletions(-) delete mode 100644 notebooks/pacemaker_example.ipynb diff --git a/notebooks/pacemaker_example.ipynb b/notebooks/pacemaker_example.ipynb deleted file mode 100644 index be6bc429c..000000000 --- a/notebooks/pacemaker_example.ipynb +++ /dev/null @@ -1,809 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "f4eaae76", - "metadata": {}, - "source": [ - "# Pre-requisites\n", - "\n", - "1. Install [`python-ace`](https://github.com/ICAMS/python-ace) and [`tensorpotential`](https://github.com/ICAMS/TensorPotential), check more instructions [here](https://pacemaker.readthedocs.io/en/latest/pacemaker/install/) into pyiron conda environment\n", - "\n", - "2. Add following files into `~/pyiron/resources/pacemaker/bin`:\n", - "\n", - "**~/pyiron/resources/pacemaker/bin/run_pacemaker_tf.sh**:\n", - "```bash\n", - "#!/bin/bash\n", - "\n", - "source $HOME/.bashrc\n", - "conda activate PYIRON_AND_PACEMAKER_CONDA_ENVIRONMENT\n", - "TF_FORCE_GPU_ALLOW_GROWTH=true pacemaker input.yaml -l log.txt\n", - "pace_yaml2yace output_potential.yaml\n", - "```\n", - "\n", - "**~/pyiron/resources/pacemaker/bin/run_pacemaker_tf_cpu.sh**:\n", - "```bash\n", - "#!/bin/bash\n", - "\n", - "source $HOME/.bashrc\n", - "conda activate PYIRON_AND_PACEMAKER_CONDA_ENVIRONMENT\n", - "CUDA_VISIBLE_DEVICES=-1 pacemaker input.yaml -l log.txt\n", - "pace_yaml2yace output_potential.yaml\n", - "\n", - "```\n", - "\n", - "or get it from https://github.com/pyiron/pyiron-resources" - ] - }, - { - "cell_type": "markdown", - "id": "180f4a44", - "metadata": {}, - "source": [ - "# Import and load" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "a24477d0", - "metadata": {}, - "outputs": [], - "source": [ - "%pylab inline" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "d19586ef", - "metadata": {}, - "outputs": [], - "source": [ - "from pyiron_contrib import Project" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "78425c8c", - "metadata": {}, - "outputs": [], - "source": [ - "pr = Project('fit_project')" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "dc7ef7ee", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
idstatuschemicalformulajobsubjobprojectpathprojecttimestarttimestoptotalcputimecomputerhamiltonhamversionparentidmasterid
02finishedNoneinitial/initialNone/home/users/lysogy36/PycharmProjects/pyiron2021/pyiron_contrib/workshop_data/unpack/initial/2022-05-20 07:33:26.696857NoneNonezora@cmti001#1TrainingContainer0.4NoneNone
13finishedNoneoffstoichiometry/offstoichiometryNone/home/users/lysogy36/PycharmProjects/pyiron2021/pyiron_contrib/workshop_data/unpack/initial/2022-05-20 07:40:54.302418NoneNonezora@cmti001#1TrainingContainer0.4NoneNone
\n", - "
" - ], - "text/plain": [ - " id status chemicalformula job subjob \\\n", - "0 2 finished None initial /initial \n", - "1 3 finished None offstoichiometry /offstoichiometry \n", - "\n", - " projectpath \\\n", - "0 None \n", - "1 None \n", - "\n", - " project \\\n", - "0 /home/users/lysogy36/PycharmProjects/pyiron2021/pyiron_contrib/workshop_data/unpack/initial/ \n", - "1 /home/users/lysogy36/PycharmProjects/pyiron2021/pyiron_contrib/workshop_data/unpack/initial/ \n", - "\n", - " timestart timestop totalcputime computer \\\n", - "0 2022-05-20 07:33:26.696857 None None zora@cmti001#1 \n", - "1 2022-05-20 07:40:54.302418 None None zora@cmti001#1 \n", - "\n", - " hamilton hamversion parentid masterid \n", - "0 TrainingContainer 0.4 None None \n", - "1 TrainingContainer 0.4 None None " - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "pr.job_table()" - ] - }, - { - "cell_type": "markdown", - "id": "be711442", - "metadata": {}, - "source": [ - "# Loading training containers" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "e8588cf3", - "metadata": {}, - "outputs": [], - "source": [ - "training_container_1 = pr['initial/initial']" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "05ea947a", - "metadata": {}, - "outputs": [], - "source": [ - "training_container_2 = pr['initial/offstoichiometry']" - ] - }, - { - "cell_type": "markdown", - "id": "5ddc4df8", - "metadata": {}, - "source": [ - "# Create PacemakerJob" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "932a7b46", - "metadata": {}, - "outputs": [], - "source": [ - "job = pr.create_job(pr.job_type.PacemakerJob, \"pacemaker_job\")" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "6bd31372", - "metadata": {}, - "outputs": [], - "source": [ - "job.add_training_data(training_container_1)" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "6b8edcef", - "metadata": {}, - "outputs": [], - "source": [ - "job.add_training_data(training_container_2)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "180d92d9", - "metadata": {}, - "outputs": [], - "source": [ - "# set cutoff\n", - "job.cutoff=7.0" - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "id": "b25f83e8", - "metadata": {}, - "outputs": [], - "source": [ - "# set number of iterations\n", - "job.input[\"fit\"][\"maxiter\"]=1000" - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "id": "f9d67b89", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
ParameterValueComment
0cutoff7.0
1metadata{'comment': 'pyiron-generated fitting job', 'pyiron_job_id': '4'}
2data{'filename': '/home/users/lysogy36/PycharmProjects/pyiron2021/pyiron_contrib/workshop_data/unpack/pacemaker_job_hdf5/pacemaker_job/df_fit.pckl.gzip'}
3potential{'elements': ['Al', 'Li'], 'bonds': {'ALL': {'radbase': 'SBessel', 'rcut': 7.0, 'dcut': 0.01, 'radparameters': [5.25]}}, 'embeddings': {'ALL': {'fs_parameters': [1, 1, 1, 0.5], 'ndensity': 2, 'npo...
4fit{'loss': {'L1_coeffs': 1e-08, 'L2_coeffs': 1e-08, 'kappa': 0.3, 'w0_rad': 0, 'w1_rad': 0, 'w2_rad': 0}, 'maxiter': 1000, 'optimizer': 'BFGS', 'fit_cycles': 1}
5backend{'batch_size': 100, 'display_step': 50, 'evaluator': 'tensorpot'}
\n", - "
" - ], - "text/plain": [ - " Parameter \\\n", - "0 cutoff \n", - "1 metadata \n", - "2 data \n", - "3 potential \n", - "4 fit \n", - "5 backend \n", - "\n", - " Value \\\n", - "0 7.0 \n", - "1 {'comment': 'pyiron-generated fitting job', 'pyiron_job_id': '4'} \n", - "2 {'filename': '/home/users/lysogy36/PycharmProjects/pyiron2021/pyiron_contrib/workshop_data/unpack/pacemaker_job_hdf5/pacemaker_job/df_fit.pckl.gzip'} \n", - "3 {'elements': ['Al', 'Li'], 'bonds': {'ALL': {'radbase': 'SBessel', 'rcut': 7.0, 'dcut': 0.01, 'radparameters': [5.25]}}, 'embeddings': {'ALL': {'fs_parameters': [1, 1, 1, 0.5], 'ndensity': 2, 'npo... \n", - "4 {'loss': {'L1_coeffs': 1e-08, 'L2_coeffs': 1e-08, 'kappa': 0.3, 'w0_rad': 0, 'w1_rad': 0, 'w2_rad': 0}, 'maxiter': 1000, 'optimizer': 'BFGS', 'fit_cycles': 1} \n", - "5 {'batch_size': 100, 'display_step': 50, 'evaluator': 'tensorpot'} \n", - "\n", - " Comment \n", - "0 \n", - "1 \n", - "2 \n", - "3 \n", - "4 \n", - "5 " - ] - }, - "execution_count": 38, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "job.input" - ] - }, - { - "cell_type": "markdown", - "id": "18f2a543", - "metadata": {}, - "source": [ - "# Run fit" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "4bff02a2", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Set automatically determined list of elements: ['Al', 'Li']\n", - "The job pacemaker_job was saved and received the ID: 4\n" - ] - } - ], - "source": [ - "job.run()" - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "id": "58687533", - "metadata": {}, - "outputs": [], - "source": [ - "job.collect_output()" - ] - }, - { - "cell_type": "markdown", - "id": "27f90579", - "metadata": {}, - "source": [ - "# Analyse fit" - ] - }, - { - "cell_type": "markdown", - "id": "30654b6e", - "metadata": {}, - "source": [ - "plot loss function" - ] - }, - { - "cell_type": "code", - "execution_count": 48, - "id": "1640ba96", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[]" - ] - }, - "execution_count": 48, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "plt.plot(job[\"output/log/loss\"])\n", - "plt.xlabel(\"# iter\")\n", - "plt.ylabel(\"Loss\")\n", - "plt.loglog()" - ] - }, - { - "cell_type": "markdown", - "id": "4e8d5e7d", - "metadata": {}, - "source": [ - "plot energy per atom RMSE" - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "id": "9c52dd86", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[]" - ] - }, - "execution_count": 50, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "plt.plot(job[\"output/log/rmse_epa\"])\n", - "plt.xlabel(\"# iter\")\n", - "plt.ylabel(\"RMSE E, eV/atom\")\n", - "plt.loglog()" - ] - }, - { - "cell_type": "markdown", - "id": "ae6c3689", - "metadata": {}, - "source": [ - "plot force component RMSE" - ] - }, - { - "cell_type": "code", - "execution_count": 51, - "id": "e55598f4", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[]" - ] - }, - "execution_count": 51, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "plt.plot(job[\"output/log/rmse_f_comp\"])\n", - "plt.xlabel(\"# iter\")\n", - "plt.ylabel(\"RMSE F_i, eV/A\")\n", - "plt.loglog()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "f09f50f6", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "id": "f23dd5c8", - "metadata": {}, - "source": [ - "load DataFrame with predictions" - ] - }, - { - "cell_type": "code", - "execution_count": 52, - "id": "0acc3ed8", - "metadata": {}, - "outputs": [], - "source": [ - "pred_df = job.predicted_data" - ] - }, - { - "cell_type": "code", - "execution_count": 53, - "id": "604da991", - "metadata": {}, - "outputs": [], - "source": [ - "pred_df[\"energy_pred_per_atom\"] = pred_df[\"energy_pred\"]/pred_df[\"NUMBER_OF_ATOMS\"]" - ] - }, - { - "cell_type": "code", - "execution_count": 54, - "id": "0456dfe6", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Text(0, 0.5, 'ACE E, eV/atom')" - ] - }, - "execution_count": 54, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "plt.scatter(pred_df[\"energy_corrected_per_atom\"], pred_df[\"energy_pred_per_atom\"])\n", - "plt.xlabel(\"DFT E, eV/atom\")\n", - "plt.ylabel(\"ACE E, eV/atom\")" - ] - }, - { - "cell_type": "code", - "execution_count": 55, - "id": "07e559d1", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Text(0, 0.5, 'ACE F_i, eV/A')" - ] - }, - "execution_count": 55, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "plt.scatter(np.vstack(pred_df[\"forces\"]), np.vstack(pred_df[\"forces_pred\"]))\n", - "plt.xlabel(\"DFT F_i, eV/A\")\n", - "plt.ylabel(\"ACE F_i, eV/A\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "43303071", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "id": "a400fd18", - "metadata": {}, - "source": [ - "Check more in `job.working_directory`/report folder" - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "id": "06ddc750", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "train_E-dE-dist.png train_EF-pairplots.png train_Fi-dFi-dist.png\r\n", - "train_E-dE-nn.png train_F-dF-dist.png\r\n" - ] - } - ], - "source": [ - "! ls {job.working_directory}/report" - ] - }, - { - "cell_type": "markdown", - "id": "aeea434a", - "metadata": {}, - "source": [ - "# Get LAMMPS potential " - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "id": "a739431f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
ConfigFilenameModelNameSpecies
0[pair_style pace\\n, pair_coeff * * /home/users/lysogy36/PycharmProjects/pyiron2021/pyiron_contrib/workshop_data/unpack/pacemaker_job_hdf5/pacemaker_job/output_potential.yace Al Li\\n]ACEpacemaker_job[Al, Li]
\n", - "
" - ], - "text/plain": [ - " Config \\\n", - "0 [pair_style pace\\n, pair_coeff * * /home/users/lysogy36/PycharmProjects/pyiron2021/pyiron_contrib/workshop_data/unpack/pacemaker_job_hdf5/pacemaker_job/output_potential.yace Al Li\\n] \n", - "\n", - " Filename Model Name Species \n", - "0 ACE pacemaker_job [Al, Li] " - ] - }, - "execution_count": 34, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "lammps_potential = job.get_lammps_potential()\n", - "lammps_potential" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "7d6534da", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python (pyiron2022)", - "language": "python", - "name": "pyiron2022" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.12" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} From cd42c03d5a5df23236da5c52aed64fa7f85936b4 Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Fri, 3 Jun 2022 02:22:35 +0200 Subject: [PATCH 248/434] Allow to pass delete_existing_job to TrainingContainer.sample --- .../atomistics/atomistics/job/trainingcontainer.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py index 427c24679..6f651f248 100644 --- a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py +++ b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py @@ -238,7 +238,8 @@ def from_hdf(self, hdf=None, group_name=None): self.input.from_hdf(self.project_hdf5, "parameters") def sample( - self, name: str, selector: Callable[[StructureStorage, int], bool] + self, name: str, selector: Callable[[StructureStorage, int], bool], + delete_existing_job: bool = False ) -> "TrainingContainer": """ Create a new TrainingContainer with structures filtered by selector. @@ -250,6 +251,7 @@ def sample( Args: name (str): name of the new TrainingContainer selector (Callable[[StructureStorage, int], bool]): callable that selects structure to include + delete_existing_job (bool): if job with name exist, remove it first Returns: :class:`.TrainingContainer`: new container with selected structures @@ -257,7 +259,7 @@ def sample( Raises: ValueError: if a job with the given `name` already exists. """ - cont = self.project.create.job.TrainingContainer(name) + cont = self.project.create.job.TrainingContainer(name, delete_existing_job=delete_existing_job) if not cont.status.initialized: raise ValueError(f"Job '{name}' already exists with status: {cont.status}!") cont._container = self._container.sample(selector) From 7cc85203e7f83445bd5996bafa0faa13e38aa796 Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Fri, 3 Jun 2022 02:24:07 +0200 Subject: [PATCH 249/434] Add error to sample if called on unfinished job --- pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py index 6f651f248..27d5f47e0 100644 --- a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py +++ b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py @@ -259,6 +259,8 @@ def sample( Raises: ValueError: if a job with the given `name` already exists. """ + if not self.status.finished: + raise ValueError(f"Job must be finished, not '{self.status}'!") cont = self.project.create.job.TrainingContainer(name, delete_existing_job=delete_existing_job) if not cont.status.initialized: raise ValueError(f"Job '{name}' already exists with status: {cont.status}!") From 643b63c7e315789f05c5503d96cc55442694c706 Mon Sep 17 00:00:00 2001 From: Niklas Leimeroth Date: Fri, 3 Jun 2022 06:46:37 +0200 Subject: [PATCH 250/434] rename to identifier and update doc --- .../atomistics/atomistics/job/trainingcontainer.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py index ab229aaaf..6b82e362f 100644 --- a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py +++ b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py @@ -14,7 +14,7 @@ >>> structure = pr.create.structure.ase_bulk("Fe") >>> forces = numpy.array([-1, 1, -1]) ->>> container.include_structure(structure, energy=-1.234, forces=forces, name="Fe_bcc") +>>> container.add_structure(structure, energy=-1.234, forces=forces, identifier="Fe_bcc") If you have a lot of precomputed structures you may also add them in bulk from a pandas DataFrame @@ -85,7 +85,7 @@ def include_structure(self, structure, energy, forces=None, stress=None, name=No self._container.include_structure(structure, energy, forces, stress, name) def add_structure( - self, structure, energy, forces=None, stress=None, name=None, **arrays + self, structure, energy, forces=None, stress=None, identifier=None, **arrays ): """ Add new structure to structure list and save energy and forces with it. @@ -101,7 +101,7 @@ def add_structure( name (str, optional): name describing the structure """ self._container.add_structure( - structure, energy, name=name, forces=forces, stress=stress, **arrays + structure, energy, identifier=identifier, forces=forces, stress=stress, **arrays ) def include_dataset(self, dataset): From d8b501fbeffee5a4069a2cab747f0cc0b9934779 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Jun 2022 11:09:47 +0000 Subject: [PATCH 251/434] Bump boto3 from 1.23.10 to 1.24.2 Bumps [boto3](https://github.com/boto/boto3) from 1.23.10 to 1.24.2. - [Release notes](https://github.com/boto/boto3/releases) - [Changelog](https://github.com/boto/boto3/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/boto/boto3/compare/1.23.10...1.24.2) --- updated-dependencies: - dependency-name: boto3 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index dba39060b..b65ed17fe 100644 --- a/setup.py +++ b/setup.py @@ -49,7 +49,7 @@ ], 'image': ['scikit-image==0.19.2'], 'generic': [ - 'boto3==1.23.10', + 'boto3==1.24.2', 'moto==3.1.11' ], }, From 20b7d550c5c26610f8de0f57ea8906115b51f6a8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Jun 2022 11:09:54 +0000 Subject: [PATCH 252/434] Bump moto from 3.1.11 to 3.1.12 Bumps [moto](https://github.com/spulec/moto) from 3.1.11 to 3.1.12. - [Release notes](https://github.com/spulec/moto/releases) - [Changelog](https://github.com/spulec/moto/blob/master/CHANGELOG.md) - [Commits](https://github.com/spulec/moto/compare/3.1.11...3.1.12) --- updated-dependencies: - dependency-name: moto dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index dba39060b..f204fae07 100644 --- a/setup.py +++ b/setup.py @@ -50,7 +50,7 @@ 'image': ['scikit-image==0.19.2'], 'generic': [ 'boto3==1.23.10', - 'moto==3.1.11' + 'moto==3.1.12' ], }, cmdclass=versioneer.get_cmdclass(), From 8fa88a455adae9b3ef310ac59e897acffae6cf4d Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 6 Jun 2022 11:10:03 +0000 Subject: [PATCH 253/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index e01f80665..435b454e6 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -14,5 +14,5 @@ dependencies: - seaborn =0.11.2 - scikit-image =0.19.2 - randspg =0.0.1 -- boto3 =1.23.10 +- boto3 =1.24.2 - moto =3.1.11 From 9d0ac3e15855886a83863677ef0e6bbb80e644c2 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 6 Jun 2022 11:10:11 +0000 Subject: [PATCH 254/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index e01f80665..c02e1f170 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -15,4 +15,4 @@ dependencies: - scikit-image =0.19.2 - randspg =0.0.1 - boto3 =1.23.10 -- moto =3.1.11 +- moto =3.1.12 From fe68582deb10461a5e579da20515eb694c41c14f Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Fri, 10 Jun 2022 13:45:14 +0000 Subject: [PATCH 255/434] Use mathrm for units --- pyiron_contrib/atomistics/ml/potentialfit.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyiron_contrib/atomistics/ml/potentialfit.py b/pyiron_contrib/atomistics/ml/potentialfit.py index 52cf5c02f..0236d30a4 100644 --- a/pyiron_contrib/atomistics/ml/potentialfit.py +++ b/pyiron_contrib/atomistics/ml/potentialfit.py @@ -140,7 +140,7 @@ def force_scatter_histogram(self, axis=None): plt.subplot(1, 2, 1) plt.scatter(ft, fp) - plt.xlabel("True Forces [eV/$\AA$]") + plt.xlabel("True Forces [eV/$\mathrm{\AA}$]") plt.ylabel("Predicted Forces [eV/$\AA$]") plt.subplot(1, 2, 2) plt.hist(ft - fp) From 0cbb00ec84e932fc86fb342a57203ed5a71f06e5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Jun 2022 11:08:19 +0000 Subject: [PATCH 256/434] Bump boto3 from 1.24.2 to 1.24.7 Bumps [boto3](https://github.com/boto/boto3) from 1.24.2 to 1.24.7. - [Release notes](https://github.com/boto/boto3/releases) - [Changelog](https://github.com/boto/boto3/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/boto/boto3/compare/1.24.2...1.24.7) --- updated-dependencies: - dependency-name: boto3 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 057ecc82c..6fb2232f9 100644 --- a/setup.py +++ b/setup.py @@ -49,7 +49,7 @@ ], 'image': ['scikit-image==0.19.2'], 'generic': [ - 'boto3==1.24.2', + 'boto3==1.24.7', 'moto==3.1.12' ], }, From 4ab4d969508cc316f72d0c4e2432d37c78ae4c30 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 13 Jun 2022 11:08:34 +0000 Subject: [PATCH 257/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 70e6f5e38..c023d6344 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -14,5 +14,5 @@ dependencies: - seaborn =0.11.2 - scikit-image =0.19.2 - randspg =0.0.1 -- boto3 =1.24.2 -- moto =3.1.12 \ No newline at end of file +- boto3 =1.24.7 +- moto =3.1.12 From d761a9f62d60ade39c1b29d4b5a590f8e7cb4f15 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Jun 2022 12:34:04 +0000 Subject: [PATCH 258/434] Bump moto from 3.1.12 to 3.1.13 Bumps [moto](https://github.com/spulec/moto) from 3.1.12 to 3.1.13. - [Release notes](https://github.com/spulec/moto/releases) - [Changelog](https://github.com/spulec/moto/blob/master/CHANGELOG.md) - [Commits](https://github.com/spulec/moto/compare/3.1.12...3.1.13) --- updated-dependencies: - dependency-name: moto dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 6fb2232f9..15f35b262 100644 --- a/setup.py +++ b/setup.py @@ -50,7 +50,7 @@ 'image': ['scikit-image==0.19.2'], 'generic': [ 'boto3==1.24.7', - 'moto==3.1.12' + 'moto==3.1.13' ], }, cmdclass=versioneer.get_cmdclass(), From 6282ae0afd8f15ad254ee4ece4f6092b21a2a36b Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 13 Jun 2022 12:37:27 +0000 Subject: [PATCH 259/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index c023d6344..cd94b0a06 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -15,4 +15,4 @@ dependencies: - scikit-image =0.19.2 - randspg =0.0.1 - boto3 =1.24.7 -- moto =3.1.12 +- moto =3.1.13 From 5d0f8e26b1fc52464f7fbee0cec27776c8bb0338 Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Tue, 14 Jun 2022 23:35:45 +0200 Subject: [PATCH 260/434] Only add stress/forces to TrainingContainer if defined on structures --- .../atomistics/atomistics/job/trainingcontainer.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py index 689dc8c77..dd568e33f 100644 --- a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py +++ b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py @@ -551,11 +551,11 @@ class TrainingStorage(StructureStorage): def __init__(self): super().__init__() self.add_array("energy", dtype=np.float64, per="chunk", fill=np.nan) - self.add_array("forces", shape=(3,), dtype=np.float64, per="element", - fill=np.nan) + # self.add_array("forces", shape=(3,), dtype=np.float64, per="element", + # fill=np.nan) # save stress in voigt notation - self.add_array("stress", shape=(6,), dtype=np.float64, per="chunk", - fill=np.nan) + # self.add_array("stress", shape=(6,), dtype=np.float64, per="chunk", + # fill=np.nan) self._table_cache = None self.to_pandas() @@ -654,6 +654,12 @@ def include_structure( stress (6 array of float, optional): per structure stresses in voigt notation name (str, optional): name describing the structure """ + if 'forces' in properties: + self.add_array("forces", shape=(3,), dtype=np.float64, per="element", + fill=np.nan) + if 'stress' in properties: + self.add_array("stress", shape=(6,), dtype=np.float64, per="chunk", + fill=np.nan) self.add_structure(structure, identifier=name, energy=energy, **properties) From 2847ceae032da420f04d05b65b26ee23df1d4588 Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Wed, 15 Jun 2022 10:22:59 +0200 Subject: [PATCH 261/434] Do not fail job when potential parser fails The current MTP potential parser breaks for multicomponent systems. This is just a stop gap until I get it fixed. --- pyiron_contrib/atomistics/mlip/mlip.py | 11 ++++++++--- pyiron_contrib/atomistics/mlip/parser.py | 4 ++-- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/pyiron_contrib/atomistics/mlip/mlip.py b/pyiron_contrib/atomistics/mlip/mlip.py index b70b5f13e..3ccae86ed 100644 --- a/pyiron_contrib/atomistics/mlip/mlip.py +++ b/pyiron_contrib/atomistics/mlip/mlip.py @@ -115,7 +115,7 @@ def potential_dataframe(self, elements=None): @property def potential(self): - if self.status.finished: + if self.status.finished and self._potential is not None: return self._potential else: raise ValueError("potential only available on successfully finished jobs") @@ -192,7 +192,11 @@ def collect_output(self): _, _, _, _, _, _, grades_lst, job_id_grades_lst, timestep_grades_lst = read_cgfs(file_name) else: grades_lst, job_id_grades_lst, timestep_grades_lst = [], [], [] - self._potential.load(os.path.join(self.working_directory, "Trained.mtp_")) + try: + self._potential.load(os.path.join(self.working_directory, "Trained.mtp_")) + except: + self.logger.warn('Failed to parse potential file! job.potential will not be available.') + self._potential = None training_store = FlattenedStorage() training_store.add_array('energy', dtype=np.float64, shape=(), per='chunk') @@ -220,7 +224,8 @@ def collect_output(self): hdf5_output['timestep_diff'] = timestep_diff_lst hdf5_output['job_id_new'] = job_id_new_training_lst hdf5_output['timestep_new'] = timestep_new_training_lst - self._potential.to_hdf(hdf=hdf5_output) + if self._potential is not None: + self._potential.to_hdf(hdf=hdf5_output) training_store.to_hdf(hdf=hdf5_output, group_name="training_efs") testing_store.to_hdf(hdf=hdf5_output, group_name="testing_efs") diff --git a/pyiron_contrib/atomistics/mlip/parser.py b/pyiron_contrib/atomistics/mlip/parser.py index fe13daa42..ca54d070d 100644 --- a/pyiron_contrib/atomistics/mlip/parser.py +++ b/pyiron_contrib/atomistics/mlip/parser.py @@ -63,8 +63,8 @@ def make_list(field_expr, grouped=False): + pp.IndentedBlock( radial_func_types \ + pp.IndentedBlock(radial_func_coeffs + NL)[1, ...] - ) - )[1, ...] + )[1, ...] + ) radial_funcs = radial_funcs.set_results_name("funcs") radial_funcs = pp.ungroup(radial_funcs).set_results_name("funcs") From 49feaa80ed7e42076aac9692470b2c995f0cf2d0 Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Wed, 15 Jun 2022 10:26:00 +0200 Subject: [PATCH 262/434] Add arrays in add_structure; check whether they exist first --- .../atomistics/job/trainingcontainer.py | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py index dd568e33f..a179f61b8 100644 --- a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py +++ b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py @@ -551,11 +551,6 @@ class TrainingStorage(StructureStorage): def __init__(self): super().__init__() self.add_array("energy", dtype=np.float64, per="chunk", fill=np.nan) - # self.add_array("forces", shape=(3,), dtype=np.float64, per="element", - # fill=np.nan) - # save stress in voigt notation - # self.add_array("stress", shape=(6,), dtype=np.float64, per="chunk", - # fill=np.nan) self._table_cache = None self.to_pandas() @@ -654,12 +649,6 @@ def include_structure( stress (6 array of float, optional): per structure stresses in voigt notation name (str, optional): name describing the structure """ - if 'forces' in properties: - self.add_array("forces", shape=(3,), dtype=np.float64, per="element", - fill=np.nan) - if 'stress' in properties: - self.add_array("stress", shape=(6,), dtype=np.float64, per="chunk", - fill=np.nan) self.add_structure(structure, identifier=name, energy=energy, **properties) @@ -670,6 +659,13 @@ def add_structure( identifier=None, **arrays ) -> None: + if "forces" in properties and not self._container.has_array("forces"): + self.add_array("forces", shape=(3,), dtype=np.float64, per="element", + fill=np.nan) + if "stress" in properties and not self._container.has_array("stress"): + # save stress in voigt notation + self.add_array("stress", shape=(6,), dtype=np.float64, per="chunk", + fill=np.nan) super().add_structure(structure, identifier=identifier, energy=energy, **arrays) From 76aa76db17387f04f72d4253c87008d4504eeff0 Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Wed, 15 Jun 2022 10:58:39 +0200 Subject: [PATCH 263/434] Fix typo --- pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py index a179f61b8..32b18142a 100644 --- a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py +++ b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py @@ -659,10 +659,10 @@ def add_structure( identifier=None, **arrays ) -> None: - if "forces" in properties and not self._container.has_array("forces"): + if "forces" in arrays and not self._container.has_array("forces"): self.add_array("forces", shape=(3,), dtype=np.float64, per="element", fill=np.nan) - if "stress" in properties and not self._container.has_array("stress"): + if "stress" in arrays and not self._container.has_array("stress"): # save stress in voigt notation self.add_array("stress", shape=(6,), dtype=np.float64, per="chunk", fill=np.nan) From 63b3d775f17c8d6ac78729190f3434aef5aa4ac1 Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Wed, 15 Jun 2022 11:02:01 +0200 Subject: [PATCH 264/434] Do not write nans to Mlip input files --- pyiron_contrib/atomistics/mlip/mlip.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pyiron_contrib/atomistics/mlip/mlip.py b/pyiron_contrib/atomistics/mlip/mlip.py index b70b5f13e..79a2757a5 100644 --- a/pyiron_contrib/atomistics/mlip/mlip.py +++ b/pyiron_contrib/atomistics/mlip/mlip.py @@ -369,6 +369,8 @@ def _write_configurations(self, file_name='training.cfg', cwd=None, respect_step if job._container.has_array("stress"): volume = np.abs(np.linalg.det(cell_lst[-1])) stress_lst.append(job._container.get_array("stress", time_step) * volume) + if np.isnan(stress_lst[-1]): + stress_lst[-1] = None track_lst.append(str(ham.job_id) + '_' + str(time_step)) continue original_dict = {el: ind for ind, el in enumerate(sorted(ham['input/structure/species']))} From be4d82530ced175a4e5bcd6d6b92b37823f0de1e Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Wed, 15 Jun 2022 11:20:48 +0200 Subject: [PATCH 265/434] More typos --- pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py index 32b18142a..22e40a261 100644 --- a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py +++ b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py @@ -659,10 +659,10 @@ def add_structure( identifier=None, **arrays ) -> None: - if "forces" in arrays and not self._container.has_array("forces"): + if "forces" in arrays and not self.has_array("forces"): self.add_array("forces", shape=(3,), dtype=np.float64, per="element", fill=np.nan) - if "stress" in arrays and not self._container.has_array("stress"): + if "stress" in arrays and not self.has_array("stress"): # save stress in voigt notation self.add_array("stress", shape=(6,), dtype=np.float64, per="chunk", fill=np.nan) From c0f3d4e1c5ba50fb55cf44f4bc1deac8fd8f2c40 Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Wed, 15 Jun 2022 11:46:36 +0200 Subject: [PATCH 266/434] Do not export forces/stress in pandas if not defined on storage --- .../atomistics/atomistics/job/trainingcontainer.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py index 22e40a261..aca8aabb1 100644 --- a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py +++ b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py @@ -575,10 +575,12 @@ def to_pandas(self): "name": [self.get_array("identifier", i) for i in range(len(self))], "atoms": [self.get_structure(i) for i in range(len(self))], "energy": [self.get_array("energy", i) for i in range(len(self))], - "forces": [self.get_array("forces", i) for i in range(len(self))], - "stress": [self.get_array("stress", i) for i in range(len(self))], } ) + if self.has_array("forces"): + self._table_cache["forces"] = [self.get_array("forces", i) for i in range(len(self))] + if self.has_array("stress"): + self._table_cache["stress"] = [self.get_array("stress", i) for i in range(len(self))] self._table_cache["number_of_atoms"] = [ len(s) for s in self._table_cache.atoms ] From 444f8b44ae87db40d8dfe0b6d0d0e9cb0f9d982c Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Wed, 15 Jun 2022 11:53:41 +0200 Subject: [PATCH 267/434] Throw error in to_list if no forces present --- pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py index aca8aabb1..634f7ac2b 100644 --- a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py +++ b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py @@ -716,6 +716,8 @@ def to_list(self, filter_function=None): data_table = filter_function(data_table) structure_list = data_table.atoms.to_list() energy_list = data_table.energy.to_list() + if "forces" not in data_table.columns: + raise ValueError("no forces defined in storage; call to_dict() instead.") force_list = data_table.forces.to_list() num_atoms_list = data_table.number_of_atoms.to_list() From dfde100e76684c1063781cae615a8080374e437f Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Wed, 15 Jun 2022 12:06:02 +0200 Subject: [PATCH 268/434] Check array correctly --- pyiron_contrib/atomistics/mlip/mlip.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyiron_contrib/atomistics/mlip/mlip.py b/pyiron_contrib/atomistics/mlip/mlip.py index 79a2757a5..e87fc225b 100644 --- a/pyiron_contrib/atomistics/mlip/mlip.py +++ b/pyiron_contrib/atomistics/mlip/mlip.py @@ -369,7 +369,7 @@ def _write_configurations(self, file_name='training.cfg', cwd=None, respect_step if job._container.has_array("stress"): volume = np.abs(np.linalg.det(cell_lst[-1])) stress_lst.append(job._container.get_array("stress", time_step) * volume) - if np.isnan(stress_lst[-1]): + if np.isnan(stress_lst[-1]).any(): stress_lst[-1] = None track_lst.append(str(ham.job_id) + '_' + str(time_step)) continue From eade1fdd62c078cf276d12b07bf9ca7dd32b528d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Jun 2022 11:13:03 +0000 Subject: [PATCH 269/434] Bump boto3 from 1.24.7 to 1.24.12 Bumps [boto3](https://github.com/boto/boto3) from 1.24.7 to 1.24.12. - [Release notes](https://github.com/boto/boto3/releases) - [Changelog](https://github.com/boto/boto3/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/boto/boto3/compare/1.24.7...1.24.12) --- updated-dependencies: - dependency-name: boto3 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 15f35b262..d70efb93b 100644 --- a/setup.py +++ b/setup.py @@ -49,7 +49,7 @@ ], 'image': ['scikit-image==0.19.2'], 'generic': [ - 'boto3==1.24.7', + 'boto3==1.24.12', 'moto==3.1.13' ], }, From 9bbfb5d9bb6840e5b2210ea4c562831a7389f6e2 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 20 Jun 2022 11:13:23 +0000 Subject: [PATCH 270/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index cd94b0a06..fbf050f7f 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -14,5 +14,5 @@ dependencies: - seaborn =0.11.2 - scikit-image =0.19.2 - randspg =0.0.1 -- boto3 =1.24.7 +- boto3 =1.24.12 - moto =3.1.13 From 0f6a2702c3e974e025cd32c02fec7ac1b3c6cbf6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Jun 2022 13:23:48 +0000 Subject: [PATCH 271/434] Bump moto from 3.1.13 to 3.1.14 Bumps [moto](https://github.com/spulec/moto) from 3.1.13 to 3.1.14. - [Release notes](https://github.com/spulec/moto/releases) - [Changelog](https://github.com/spulec/moto/blob/master/CHANGELOG.md) - [Commits](https://github.com/spulec/moto/compare/3.1.13...3.1.14) --- updated-dependencies: - dependency-name: moto dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index d70efb93b..d1b272168 100644 --- a/setup.py +++ b/setup.py @@ -50,7 +50,7 @@ 'image': ['scikit-image==0.19.2'], 'generic': [ 'boto3==1.24.12', - 'moto==3.1.13' + 'moto==3.1.14' ], }, cmdclass=versioneer.get_cmdclass(), From 998aab7d837cd655dba6e110044b2a955e64b799 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 20 Jun 2022 13:29:57 +0000 Subject: [PATCH 272/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index fbf050f7f..f77c76fbe 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -15,4 +15,4 @@ dependencies: - scikit-image =0.19.2 - randspg =0.0.1 - boto3 =1.24.12 -- moto =3.1.13 +- moto =3.1.14 From e1a9b1afabedeb468cf2afa574b75b258e478ce9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Jun 2022 13:47:52 +0000 Subject: [PATCH 273/434] Bump scikit-image from 0.19.2 to 0.19.3 Bumps [scikit-image](https://github.com/scikit-image/scikit-image) from 0.19.2 to 0.19.3. - [Release notes](https://github.com/scikit-image/scikit-image/releases) - [Changelog](https://github.com/scikit-image/scikit-image/blob/main/RELEASE.txt) - [Commits](https://github.com/scikit-image/scikit-image/compare/v0.19.2...v0.19.3) --- updated-dependencies: - dependency-name: scikit-image dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index d1b272168..71c79c4e4 100644 --- a/setup.py +++ b/setup.py @@ -47,7 +47,7 @@ 'fenics==2019.1.0', 'mshr==2019.1.0', ], - 'image': ['scikit-image==0.19.2'], + 'image': ['scikit-image==0.19.3'], 'generic': [ 'boto3==1.24.12', 'moto==3.1.14' From d7b757846f46ffccd90b805433abccf1395fd5e8 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 20 Jun 2022 13:48:09 +0000 Subject: [PATCH 274/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index f77c76fbe..3ca5ab4a3 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -12,7 +12,7 @@ dependencies: - pyparsing =3.0.9 - scipy =1.8.1 - seaborn =0.11.2 -- scikit-image =0.19.2 +- scikit-image =0.19.3 - randspg =0.0.1 - boto3 =1.24.12 - moto =3.1.14 From 35851cf52e1f7b5529797a47a2bdc4936a51cd90 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Jun 2022 11:07:11 +0000 Subject: [PATCH 275/434] Bump moto from 3.1.14 to 3.1.15 Bumps [moto](https://github.com/spulec/moto) from 3.1.14 to 3.1.15. - [Release notes](https://github.com/spulec/moto/releases) - [Changelog](https://github.com/spulec/moto/blob/master/CHANGELOG.md) - [Commits](https://github.com/spulec/moto/compare/3.1.14...3.1.15) --- updated-dependencies: - dependency-name: moto dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 71c79c4e4..66e1735f5 100644 --- a/setup.py +++ b/setup.py @@ -50,7 +50,7 @@ 'image': ['scikit-image==0.19.3'], 'generic': [ 'boto3==1.24.12', - 'moto==3.1.14' + 'moto==3.1.15' ], }, cmdclass=versioneer.get_cmdclass(), From 0ddb43d202aece99c7f1e4c3ce99a60000bf426b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Jun 2022 11:07:20 +0000 Subject: [PATCH 276/434] Bump pyiron-base from 0.5.13 to 0.5.14 Bumps [pyiron-base](https://github.com/pyiron/pyiron_base) from 0.5.13 to 0.5.14. - [Release notes](https://github.com/pyiron/pyiron_base/releases) - [Changelog](https://github.com/pyiron/pyiron_base/blob/master/CHANGELOG.md) - [Commits](https://github.com/pyiron/pyiron_base/compare/pyiron_base-0.5.13...pyiron_base-0.5.14) --- updated-dependencies: - dependency-name: pyiron-base dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 71c79c4e4..b6a8affea 100644 --- a/setup.py +++ b/setup.py @@ -33,7 +33,7 @@ install_requires=[ 'matplotlib==3.5.2', 'numpy==1.22.4', - 'pyiron_base==0.5.13', + 'pyiron_base==0.5.14', 'scipy==1.8.1', 'seaborn==0.11.2', 'pyparsing==3.0.9' From e07142317fe0be843b65f463194f8d696088ae61 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 27 Jun 2022 11:13:23 +0000 Subject: [PATCH 277/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 3ca5ab4a3..e449d86c0 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -15,4 +15,4 @@ dependencies: - scikit-image =0.19.3 - randspg =0.0.1 - boto3 =1.24.12 -- moto =3.1.14 +- moto =3.1.15 From 6afa84271dd0320c7bc509dfb4bd3ebd787179b8 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 27 Jun 2022 11:15:29 +0000 Subject: [PATCH 278/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 3ca5ab4a3..bd73debf8 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -7,7 +7,7 @@ dependencies: - codacy-coverage - matplotlib =3.5.2 - numpy =1.22.4 -- pyiron_base =0.5.13 +- pyiron_base =0.5.14 - pyiron_atomistics =0.2.47 - pyparsing =3.0.9 - scipy =1.8.1 From b402366f6e9c02ea331df88cfe24a7558a997b27 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Jun 2022 12:30:35 +0000 Subject: [PATCH 279/434] Bump pyiron-atomistics from 0.2.47 to 0.2.48 Bumps [pyiron-atomistics](https://github.com/pyiron/pyiron_atomistics) from 0.2.47 to 0.2.48. - [Release notes](https://github.com/pyiron/pyiron_atomistics/releases) - [Changelog](https://github.com/pyiron/pyiron_atomistics/blob/master/CHANGELOG.md) - [Commits](https://github.com/pyiron/pyiron_atomistics/compare/pyiron_atomistics-0.2.47...pyiron_atomistics-0.2.48) --- updated-dependencies: - dependency-name: pyiron-atomistics dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index af487858c..4702f6cc4 100644 --- a/setup.py +++ b/setup.py @@ -41,7 +41,7 @@ extras_require={ 'atomistic': [ 'ase==3.22.1', - 'pyiron_atomistics==0.2.47', + 'pyiron_atomistics==0.2.48', ], 'fenics': [ 'fenics==2019.1.0', From 96a30ada52c3c57150153d349d290714ec9151a2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Jun 2022 12:30:45 +0000 Subject: [PATCH 280/434] Bump boto3 from 1.24.12 to 1.24.17 Bumps [boto3](https://github.com/boto/boto3) from 1.24.12 to 1.24.17. - [Release notes](https://github.com/boto/boto3/releases) - [Changelog](https://github.com/boto/boto3/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/boto/boto3/compare/1.24.12...1.24.17) --- updated-dependencies: - dependency-name: boto3 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index af487858c..d7e83a731 100644 --- a/setup.py +++ b/setup.py @@ -49,7 +49,7 @@ ], 'image': ['scikit-image==0.19.3'], 'generic': [ - 'boto3==1.24.12', + 'boto3==1.24.17', 'moto==3.1.15' ], }, From 66709d45b937498644f129357f0c7c005d3f33bd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Jun 2022 12:30:47 +0000 Subject: [PATCH 281/434] Bump numpy from 1.22.4 to 1.23.0 Bumps [numpy](https://github.com/numpy/numpy) from 1.22.4 to 1.23.0. - [Release notes](https://github.com/numpy/numpy/releases) - [Changelog](https://github.com/numpy/numpy/blob/main/doc/HOWTO_RELEASE.rst) - [Commits](https://github.com/numpy/numpy/compare/v1.22.4...v1.23.0) --- updated-dependencies: - dependency-name: numpy dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index af487858c..8b9c0c194 100644 --- a/setup.py +++ b/setup.py @@ -32,7 +32,7 @@ packages=find_packages(exclude=["*tests*"]), install_requires=[ 'matplotlib==3.5.2', - 'numpy==1.22.4', + 'numpy==1.23.0', 'pyiron_base==0.5.14', 'scipy==1.8.1', 'seaborn==0.11.2', From 8a38701bb17d309f0f9efb513f93cecbe3096d7a Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 27 Jun 2022 12:30:51 +0000 Subject: [PATCH 282/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 251019c56..8e1ff5699 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -8,7 +8,7 @@ dependencies: - matplotlib =3.5.2 - numpy =1.22.4 - pyiron_base =0.5.14 -- pyiron_atomistics =0.2.47 +- pyiron_atomistics =0.2.48 - pyparsing =3.0.9 - scipy =1.8.1 - seaborn =0.11.2 From 682aa12f9e170dab52cfe04f2fb36ed00402f5c2 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 27 Jun 2022 12:32:04 +0000 Subject: [PATCH 283/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 251019c56..3c9769f08 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -14,5 +14,5 @@ dependencies: - seaborn =0.11.2 - scikit-image =0.19.3 - randspg =0.0.1 -- boto3 =1.24.12 +- boto3 =1.24.17 - moto =3.1.15 From 1bbd381db60568aaf15b34d9b3be8873ecf685da Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 27 Jun 2022 12:38:55 +0000 Subject: [PATCH 284/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 251019c56..46344e905 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -6,7 +6,7 @@ dependencies: - coverage - codacy-coverage - matplotlib =3.5.2 -- numpy =1.22.4 +- numpy =1.23.0 - pyiron_base =0.5.14 - pyiron_atomistics =0.2.47 - pyparsing =3.0.9 From 6e1ed8d4ea591bed3b9938193667a8701600734b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Jul 2022 11:10:05 +0000 Subject: [PATCH 285/434] Bump pyiron-base from 0.5.14 to 0.5.15 Bumps [pyiron-base](https://github.com/pyiron/pyiron_base) from 0.5.14 to 0.5.15. - [Release notes](https://github.com/pyiron/pyiron_base/releases) - [Changelog](https://github.com/pyiron/pyiron_base/blob/master/CHANGELOG.md) - [Commits](https://github.com/pyiron/pyiron_base/compare/pyiron_base-0.5.14...pyiron_base-0.5.15) --- updated-dependencies: - dependency-name: pyiron-base dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index efeb71526..da32ac798 100644 --- a/setup.py +++ b/setup.py @@ -33,7 +33,7 @@ install_requires=[ 'matplotlib==3.5.2', 'numpy==1.23.0', - 'pyiron_base==0.5.14', + 'pyiron_base==0.5.15', 'scipy==1.8.1', 'seaborn==0.11.2', 'pyparsing==3.0.9' From 139f848739ddfe9f5d7f50aa39c017a551fcbe90 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Jul 2022 11:10:12 +0000 Subject: [PATCH 286/434] Bump boto3 from 1.24.17 to 1.24.22 Bumps [boto3](https://github.com/boto/boto3) from 1.24.17 to 1.24.22. - [Release notes](https://github.com/boto/boto3/releases) - [Changelog](https://github.com/boto/boto3/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/boto/boto3/compare/1.24.17...1.24.22) --- updated-dependencies: - dependency-name: boto3 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index efeb71526..f3678fbe2 100644 --- a/setup.py +++ b/setup.py @@ -49,7 +49,7 @@ ], 'image': ['scikit-image==0.19.3'], 'generic': [ - 'boto3==1.24.17', + 'boto3==1.24.22', 'moto==3.1.15' ], }, From 4a48903f4a49b6c2cb473caa0d57e64bcd2281eb Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 4 Jul 2022 11:10:30 +0000 Subject: [PATCH 287/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index e95a33d85..6be3efea0 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -7,7 +7,7 @@ dependencies: - codacy-coverage - matplotlib =3.5.2 - numpy =1.23.0 -- pyiron_base =0.5.14 +- pyiron_base =0.5.15 - pyiron_atomistics =0.2.48 - pyparsing =3.0.9 - scipy =1.8.1 From 32fa9cccc2fe9384eb9091b445ba2658c28a4087 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 4 Jul 2022 11:10:44 +0000 Subject: [PATCH 288/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index e95a33d85..d1ccd11a5 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -14,5 +14,5 @@ dependencies: - seaborn =0.11.2 - scikit-image =0.19.3 - randspg =0.0.1 -- boto3 =1.24.17 +- boto3 =1.24.22 - moto =3.1.15 From 7aa3648108de76021c44e6a9ba3b22df97862b73 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Jul 2022 11:52:17 +0000 Subject: [PATCH 289/434] Bump moto from 3.1.15 to 3.1.16 Bumps [moto](https://github.com/spulec/moto) from 3.1.15 to 3.1.16. - [Release notes](https://github.com/spulec/moto/releases) - [Changelog](https://github.com/spulec/moto/blob/master/CHANGELOG.md) - [Commits](https://github.com/spulec/moto/compare/3.1.15...3.1.16) --- updated-dependencies: - dependency-name: moto dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index de49b7fd2..47c187bc7 100644 --- a/setup.py +++ b/setup.py @@ -50,7 +50,7 @@ 'image': ['scikit-image==0.19.3'], 'generic': [ 'boto3==1.24.22', - 'moto==3.1.15' + 'moto==3.1.16' ], }, cmdclass=versioneer.get_cmdclass(), From cf4623ec683a8b47bedf6ef19cece73e18b272f8 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 4 Jul 2022 12:02:15 +0000 Subject: [PATCH 290/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 562fbfa78..a1d08d8fe 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -15,4 +15,4 @@ dependencies: - scikit-image =0.19.3 - randspg =0.0.1 - boto3 =1.24.22 -- moto =3.1.15 +- moto =3.1.16 From 1838397c737844e0f328a35642fb72972d199f64 Mon Sep 17 00:00:00 2001 From: Niklas Siemer <70580458+niklassiemer@users.noreply.github.com> Date: Thu, 7 Jul 2022 21:46:42 +0200 Subject: [PATCH 291/434] Add Docs workflow --- .github/workflows/docs.yml | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 .github/workflows/docs.yml diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml new file mode 100644 index 000000000..97cfc21cf --- /dev/null +++ b/.github/workflows/docs.yml @@ -0,0 +1,37 @@ +# This workflow is used to test, if the documentation can build + +name: Docs + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - uses: conda-incubator/setup-miniconda@v2 + with: + python-version: "3.10" + mamba-version: "*" + channels: conda-forge + channel-priority: strict + auto-update-conda: true + environment-file: .ci_support/environment.yml + - name: Setup + shell: bash -l {0} + run: | + python .ci_support/pyironconfig.py + pip install --no-deps . + conda env update --name test --file docs/environment.yml + - name: Documentation + shell: bash -l {0} + run: | + mkdir public_html; cd docs + sphinx-build -b html ./ ../public_html || exit 1; + cd .. From 3a62f6b87d8d62755a17ecb3a4684cd089ca13be Mon Sep 17 00:00:00 2001 From: Niklas Siemer <70580458+niklassiemer@users.noreply.github.com> Date: Fri, 8 Jul 2022 11:37:44 +0200 Subject: [PATCH 292/434] Update .readthedocs.yml --- .readthedocs.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.readthedocs.yml b/.readthedocs.yml index 5cd4f83c6..cf20a64f1 100644 --- a/.readthedocs.yml +++ b/.readthedocs.yml @@ -5,20 +5,21 @@ # Required version: 2 +build: + os: "ubuntu-20.04" + tools: + python: "mambaforge-4.10" + # Build documentation in the docs/ directory with Sphinx sphinx: configuration: docs/conf.py -# Optionally build your docs in additional formats such as PDF and ePub -formats: [] - # Install pyiron from conda conda: environment: docs/environment.yml # Optionally set the version of Python and requirements required to build your docs python: - version: 3.7 install: - method: pip path: . From e298474e867b4af80f055f441778290943d3d46c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Jul 2022 11:12:51 +0000 Subject: [PATCH 293/434] Bump boto3 from 1.24.22 to 1.24.26 Bumps [boto3](https://github.com/boto/boto3) from 1.24.22 to 1.24.26. - [Release notes](https://github.com/boto/boto3/releases) - [Changelog](https://github.com/boto/boto3/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/boto/boto3/compare/1.24.22...1.24.26) --- updated-dependencies: - dependency-name: boto3 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 47c187bc7..39f7cc260 100644 --- a/setup.py +++ b/setup.py @@ -49,7 +49,7 @@ ], 'image': ['scikit-image==0.19.3'], 'generic': [ - 'boto3==1.24.22', + 'boto3==1.24.26', 'moto==3.1.16' ], }, From a94b1636d26d8a9c13ec86e9755f946bc7cf277b Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 11 Jul 2022 11:13:08 +0000 Subject: [PATCH 294/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index a1d08d8fe..9ba94bf52 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -14,5 +14,5 @@ dependencies: - seaborn =0.11.2 - scikit-image =0.19.3 - randspg =0.0.1 -- boto3 =1.24.22 +- boto3 =1.24.26 - moto =3.1.16 From 55b9210bf87f7a0a441693fb3500ca5b21c49968 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Jul 2022 11:13:11 +0000 Subject: [PATCH 295/434] Bump numpy from 1.23.0 to 1.23.1 Bumps [numpy](https://github.com/numpy/numpy) from 1.23.0 to 1.23.1. - [Release notes](https://github.com/numpy/numpy/releases) - [Changelog](https://github.com/numpy/numpy/blob/main/doc/RELEASE_WALKTHROUGH.rst) - [Commits](https://github.com/numpy/numpy/compare/v1.23.0...v1.23.1) --- updated-dependencies: - dependency-name: numpy dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 47c187bc7..5825fe119 100644 --- a/setup.py +++ b/setup.py @@ -32,7 +32,7 @@ packages=find_packages(exclude=["*tests*"]), install_requires=[ 'matplotlib==3.5.2', - 'numpy==1.23.0', + 'numpy==1.23.1', 'pyiron_base==0.5.15', 'scipy==1.8.1', 'seaborn==0.11.2', From 1288843fa6734865d42dc3ac04b1951e9b67525b Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 11 Jul 2022 11:27:22 +0000 Subject: [PATCH 296/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index a1d08d8fe..a351c4a06 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -6,7 +6,7 @@ dependencies: - coverage - codacy-coverage - matplotlib =3.5.2 -- numpy =1.23.0 +- numpy =1.23.1 - pyiron_base =0.5.15 - pyiron_atomistics =0.2.48 - pyparsing =3.0.9 From 7dff0fda3fbec4e5f72d09caabe2a09a625479f5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Jul 2022 13:05:53 +0000 Subject: [PATCH 297/434] Bump pyiron-base from 0.5.15 to 0.5.16 Bumps [pyiron-base](https://github.com/pyiron/pyiron_base) from 0.5.15 to 0.5.16. - [Release notes](https://github.com/pyiron/pyiron_base/releases) - [Changelog](https://github.com/pyiron/pyiron_base/blob/master/CHANGELOG.md) - [Commits](https://github.com/pyiron/pyiron_base/compare/pyiron_base-0.5.15...pyiron_base-0.5.16) --- updated-dependencies: - dependency-name: pyiron-base dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 1d0a5015b..ec7052c8f 100644 --- a/setup.py +++ b/setup.py @@ -33,7 +33,7 @@ install_requires=[ 'matplotlib==3.5.2', 'numpy==1.23.1', - 'pyiron_base==0.5.15', + 'pyiron_base==0.5.16', 'scipy==1.8.1', 'seaborn==0.11.2', 'pyparsing==3.0.9' From a685eaeefa4bb842482c6a67062254e47b4ddfe2 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 11 Jul 2022 13:12:36 +0000 Subject: [PATCH 298/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index d9eca7da1..d78856c45 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -7,7 +7,7 @@ dependencies: - codacy-coverage - matplotlib =3.5.2 - numpy =1.23.1 -- pyiron_base =0.5.15 +- pyiron_base =0.5.16 - pyiron_atomistics =0.2.48 - pyparsing =3.0.9 - scipy =1.8.1 From f32b2360e7accc91328b22d7912cf92f7773a37f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Jul 2022 13:22:36 +0000 Subject: [PATCH 299/434] Bump pyiron-atomistics from 0.2.48 to 0.2.49 Bumps [pyiron-atomistics](https://github.com/pyiron/pyiron_atomistics) from 0.2.48 to 0.2.49. - [Release notes](https://github.com/pyiron/pyiron_atomistics/releases) - [Changelog](https://github.com/pyiron/pyiron_atomistics/blob/master/CHANGELOG.md) - [Commits](https://github.com/pyiron/pyiron_atomistics/compare/pyiron_atomistics-0.2.48...pyiron_atomistics-0.2.49) --- updated-dependencies: - dependency-name: pyiron-atomistics dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index ec7052c8f..90d38b6e6 100644 --- a/setup.py +++ b/setup.py @@ -41,7 +41,7 @@ extras_require={ 'atomistic': [ 'ase==3.22.1', - 'pyiron_atomistics==0.2.48', + 'pyiron_atomistics==0.2.49', ], 'fenics': [ 'fenics==2019.1.0', From 38ae77aa83ef580c7aec01a5427f6b078b6865eb Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 11 Jul 2022 13:22:55 +0000 Subject: [PATCH 300/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index d78856c45..8484c6770 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -8,7 +8,7 @@ dependencies: - matplotlib =3.5.2 - numpy =1.23.1 - pyiron_base =0.5.16 -- pyiron_atomistics =0.2.48 +- pyiron_atomistics =0.2.49 - pyparsing =3.0.9 - scipy =1.8.1 - seaborn =0.11.2 From 1a036e3a50a58a242ec6774097f70b3299168cc3 Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Wed, 13 Jul 2022 22:29:49 +0200 Subject: [PATCH 301/434] Use private names for storages in PotentialPlots --- pyiron_contrib/atomistics/ml/potentialfit.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pyiron_contrib/atomistics/ml/potentialfit.py b/pyiron_contrib/atomistics/ml/potentialfit.py index fcb7f9cfb..49c5b6009 100644 --- a/pyiron_contrib/atomistics/ml/potentialfit.py +++ b/pyiron_contrib/atomistics/ml/potentialfit.py @@ -104,15 +104,15 @@ def get_lammps_potential(self) -> pd.DataFrame: class PotentialPlots: def __init__(self, training_data, predicted_data): - self.training_data = training_data - self.predicted_data = predicted_data + self._training_data = training_data + self._predicted_data = predicted_data def energy_scatter_histogram(self): """ Plots correlation and (training) error histograms. """ - energy_train = self.training_data["energy"] / self.training_data["length"] - energy_pred = self.predicted_data["energy"] / self.predicted_data["length"] + energy_train = self._training_data["energy"] / self._training_data["length"] + energy_pred = self._predicted_data["energy"] / self._predicted_data["length"] plt.subplot(1, 2, 1) plt.scatter(energy_train, energy_pred) @@ -132,8 +132,8 @@ def force_scatter_histogram(self, axis=None): axis (None, int): Whether to plot for an axis or norm """ - force_train = self.training_data["forces"] - force_pred = self.predicted_data["forces"] + force_train = self._training_data["forces"] + force_pred = self._predicted_data["forces"] if axis is None: ft = np.linalg.norm(force_train, axis=1) From 1eeec0ffcd721c10fdf5c588f9a2d305022b3231 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Jul 2022 11:11:11 +0000 Subject: [PATCH 302/434] Bump boto3 from 1.24.26 to 1.24.31 Bumps [boto3](https://github.com/boto/boto3) from 1.24.26 to 1.24.31. - [Release notes](https://github.com/boto/boto3/releases) - [Changelog](https://github.com/boto/boto3/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/boto/boto3/compare/1.24.26...1.24.31) --- updated-dependencies: - dependency-name: boto3 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 90d38b6e6..50b3dfa8e 100644 --- a/setup.py +++ b/setup.py @@ -49,7 +49,7 @@ ], 'image': ['scikit-image==0.19.3'], 'generic': [ - 'boto3==1.24.26', + 'boto3==1.24.31', 'moto==3.1.16' ], }, From 55b8e7bc665c617a3c0ce1b1cf77f883488ec3a3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Jul 2022 11:11:23 +0000 Subject: [PATCH 303/434] Bump pyiron-base from 0.5.16 to 0.5.17 Bumps [pyiron-base](https://github.com/pyiron/pyiron_base) from 0.5.16 to 0.5.17. - [Release notes](https://github.com/pyiron/pyiron_base/releases) - [Changelog](https://github.com/pyiron/pyiron_base/blob/master/CHANGELOG.md) - [Commits](https://github.com/pyiron/pyiron_base/compare/pyiron_base-0.5.16...pyiron_base-0.5.17) --- updated-dependencies: - dependency-name: pyiron-base dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 90d38b6e6..480ddbc9a 100644 --- a/setup.py +++ b/setup.py @@ -33,7 +33,7 @@ install_requires=[ 'matplotlib==3.5.2', 'numpy==1.23.1', - 'pyiron_base==0.5.16', + 'pyiron_base==0.5.17', 'scipy==1.8.1', 'seaborn==0.11.2', 'pyparsing==3.0.9' From ad07bbc4f3e64d7e721ed62d2e7582e598e5b58c Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 18 Jul 2022 11:14:55 +0000 Subject: [PATCH 304/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 8484c6770..0f3b4594e 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -14,5 +14,5 @@ dependencies: - seaborn =0.11.2 - scikit-image =0.19.3 - randspg =0.0.1 -- boto3 =1.24.26 +- boto3 =1.24.31 - moto =3.1.16 From 841658521e5f892fe944a20336da1f81c74b7ef7 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 18 Jul 2022 11:30:29 +0000 Subject: [PATCH 305/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 8484c6770..e14e16fa3 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -7,7 +7,7 @@ dependencies: - codacy-coverage - matplotlib =3.5.2 - numpy =1.23.1 -- pyiron_base =0.5.16 +- pyiron_base =0.5.17 - pyiron_atomistics =0.2.49 - pyparsing =3.0.9 - scipy =1.8.1 From 626474f5fe7b1b2170bef4f6a1bec8d94cb6ea76 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Jul 2022 12:27:37 +0000 Subject: [PATCH 306/434] Bump pyiron-atomistics from 0.2.49 to 0.2.50 Bumps [pyiron-atomistics](https://github.com/pyiron/pyiron_atomistics) from 0.2.49 to 0.2.50. - [Release notes](https://github.com/pyiron/pyiron_atomistics/releases) - [Changelog](https://github.com/pyiron/pyiron_atomistics/blob/master/CHANGELOG.md) - [Commits](https://github.com/pyiron/pyiron_atomistics/compare/pyiron_atomistics-0.2.49...pyiron_atomistics-0.2.50) --- updated-dependencies: - dependency-name: pyiron-atomistics dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index b07d9616f..1851b03e3 100644 --- a/setup.py +++ b/setup.py @@ -41,7 +41,7 @@ extras_require={ 'atomistic': [ 'ase==3.22.1', - 'pyiron_atomistics==0.2.49', + 'pyiron_atomistics==0.2.50', ], 'fenics': [ 'fenics==2019.1.0', From 12f98859658d9f6d026f4abd0b8cd0b0ae6fb9dd Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 18 Jul 2022 12:34:30 +0000 Subject: [PATCH 307/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 66e090dbf..1d914f54d 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -8,7 +8,7 @@ dependencies: - matplotlib =3.5.2 - numpy =1.23.1 - pyiron_base =0.5.17 -- pyiron_atomistics =0.2.49 +- pyiron_atomistics =0.2.50 - pyparsing =3.0.9 - scipy =1.8.1 - seaborn =0.11.2 From 56a0747335beb9ee49d2edb0d73ef36db594cf8d Mon Sep 17 00:00:00 2001 From: Jan Janssen Date: Thu, 21 Jul 2022 22:29:46 -0600 Subject: [PATCH 308/434] Import only from pyiron_base directly --- pyiron_contrib/RDM/storagejob.py | 2 +- pyiron_contrib/atomistics/atomicrex/interactive.py | 2 +- pyiron_contrib/atomistics/runner/job.py | 2 +- pyiron_contrib/atomistics/runner/storageclasses.py | 2 +- pyiron_contrib/generic/s3io.py | 4 ++-- tests/RDM/test_storagejob.py | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/pyiron_contrib/RDM/storagejob.py b/pyiron_contrib/RDM/storagejob.py index e9b40c8e8..c10a7bd81 100644 --- a/pyiron_contrib/RDM/storagejob.py +++ b/pyiron_contrib/RDM/storagejob.py @@ -3,7 +3,7 @@ import shutil from pyiron_base import GenericJob, DataContainer -from pyiron_base.generic.filedata import FileData +from pyiron_base import FileData from pyiron_contrib.generic.s3io import FileS3IO diff --git a/pyiron_contrib/atomistics/atomicrex/interactive.py b/pyiron_contrib/atomistics/atomicrex/interactive.py index d77df05c9..936b936ee 100644 --- a/pyiron_contrib/atomistics/atomicrex/interactive.py +++ b/pyiron_contrib/atomistics/atomicrex/interactive.py @@ -1,7 +1,7 @@ import posixpath, os, time from scipy import optimize -from pyiron_base.job.interactive import InteractiveBase +from pyiron_base import InteractiveBase from pyiron_contrib.atomistics.atomicrex.general_input import ScipyAlgorithm from pyiron_contrib.atomistics.atomicrex.base import AtomicrexBase diff --git a/pyiron_contrib/atomistics/runner/job.py b/pyiron_contrib/atomistics/runner/job.py index d3ec3d5ce..254399f0a 100644 --- a/pyiron_contrib/atomistics/runner/job.py +++ b/pyiron_contrib/atomistics/runner/job.py @@ -33,7 +33,7 @@ from pyiron import Project from pyiron_base import ProjectHDFio, FlattenedStorage from pyiron_base import state, Executable, GenericJob, DataContainer -from pyiron_base.generic.object import HasStorage +from pyiron_base import HasStorage from pyiron_contrib.atomistics.ml.potentialfit import PotentialFit from pyiron_contrib.atomistics.atomistics.job import (TrainingContainer, diff --git a/pyiron_contrib/atomistics/runner/storageclasses.py b/pyiron_contrib/atomistics/runner/storageclasses.py index 40237e38c..5daaff5fc 100644 --- a/pyiron_contrib/atomistics/runner/storageclasses.py +++ b/pyiron_contrib/atomistics/runner/storageclasses.py @@ -42,7 +42,7 @@ RunnerFitResults, RunnerWeights, RunnerScaling) from pyiron_base import ProjectHDFio -from pyiron_base.interfaces.has_hdf import HasHDF +from pyiron_base import HasHDF from pyiron_base import FlattenedStorage from .utils import pad, unpad diff --git a/pyiron_contrib/generic/s3io.py b/pyiron_contrib/generic/s3io.py index 973e1bf54..35d77e69a 100644 --- a/pyiron_contrib/generic/s3io.py +++ b/pyiron_contrib/generic/s3io.py @@ -8,8 +8,8 @@ import boto3 from botocore.client import Config -from pyiron_base.interfaces.has_groups import HasGroups -from pyiron_base.generic.filedata import load_file, FileDataTemplate +from pyiron_base import HasGroups +from pyiron_base import load_file, FileDataTemplate class S3FileData(FileDataTemplate): diff --git a/tests/RDM/test_storagejob.py b/tests/RDM/test_storagejob.py index ef98ab19d..4252a616c 100644 --- a/tests/RDM/test_storagejob.py +++ b/tests/RDM/test_storagejob.py @@ -8,7 +8,7 @@ from pyiron_contrib.RDM.storagejob import StorageJob from pyiron_contrib.generic.s3io import FileS3IO from pyiron_base._tests import TestWithCleanProject -from pyiron_base.generic.filedata import FileDataTemplate +from pyiron_base import FileDataTemplate full_bucket = "full_bucket" io_bucket = "io_bucket" From 2bf6a80dc74cc7793c875babad95c62a1c3e646a Mon Sep 17 00:00:00 2001 From: Jan Janssen Date: Fri, 22 Jul 2022 06:49:38 -0600 Subject: [PATCH 309/434] Update environment.yml --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 1d914f54d..e395ae992 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -7,7 +7,7 @@ dependencies: - codacy-coverage - matplotlib =3.5.2 - numpy =1.23.1 -- pyiron_base =0.5.17 +- pyiron_base =0.5.19 - pyiron_atomistics =0.2.50 - pyparsing =3.0.9 - scipy =1.8.1 From d231804520a85d4c63954c34420e3cfb16a4454d Mon Sep 17 00:00:00 2001 From: Jan Janssen Date: Fri, 22 Jul 2022 06:49:57 -0600 Subject: [PATCH 310/434] Update setup.py --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 1851b03e3..c8cbb9390 100644 --- a/setup.py +++ b/setup.py @@ -33,7 +33,7 @@ install_requires=[ 'matplotlib==3.5.2', 'numpy==1.23.1', - 'pyiron_base==0.5.17', + 'pyiron_base==0.5.19', 'scipy==1.8.1', 'seaborn==0.11.2', 'pyparsing==3.0.9' From 5cf085f43539a5072bafbf69e9625eb24b115861 Mon Sep 17 00:00:00 2001 From: Jan Janssen Date: Fri, 22 Jul 2022 08:32:33 -0600 Subject: [PATCH 311/434] Update environment.yml --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index e395ae992..2db23c9ab 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -8,7 +8,7 @@ dependencies: - matplotlib =3.5.2 - numpy =1.23.1 - pyiron_base =0.5.19 -- pyiron_atomistics =0.2.50 +- pyiron_atomistics =0.2.51 - pyparsing =3.0.9 - scipy =1.8.1 - seaborn =0.11.2 From 0f9f2923f7bcf2674ff79e7f848ca0875365185d Mon Sep 17 00:00:00 2001 From: Jan Janssen Date: Fri, 22 Jul 2022 08:32:49 -0600 Subject: [PATCH 312/434] Update setup.py --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index c8cbb9390..5b6fe5126 100644 --- a/setup.py +++ b/setup.py @@ -41,7 +41,7 @@ extras_require={ 'atomistic': [ 'ase==3.22.1', - 'pyiron_atomistics==0.2.50', + 'pyiron_atomistics==0.2.51', ], 'fenics': [ 'fenics==2019.1.0', From 93b31db8bee80982767e50e633a99234d1e5b143 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 25 Jul 2022 11:15:55 +0000 Subject: [PATCH 313/434] Bump boto3 from 1.24.31 to 1.24.36 Bumps [boto3](https://github.com/boto/boto3) from 1.24.31 to 1.24.36. - [Release notes](https://github.com/boto/boto3/releases) - [Changelog](https://github.com/boto/boto3/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/boto/boto3/compare/1.24.31...1.24.36) --- updated-dependencies: - dependency-name: boto3 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 5b6fe5126..a0646b337 100644 --- a/setup.py +++ b/setup.py @@ -49,7 +49,7 @@ ], 'image': ['scikit-image==0.19.3'], 'generic': [ - 'boto3==1.24.31', + 'boto3==1.24.36', 'moto==3.1.16' ], }, From af680af2c25f6452cb76ce6e55fd83cc67ee8361 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 25 Jul 2022 11:16:11 +0000 Subject: [PATCH 314/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 2db23c9ab..b77162931 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -14,5 +14,5 @@ dependencies: - seaborn =0.11.2 - scikit-image =0.19.3 - randspg =0.0.1 -- boto3 =1.24.31 +- boto3 =1.24.36 - moto =3.1.16 From a0233e88c244809121f52f4e7defa8563e142359 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Aug 2022 11:10:14 +0000 Subject: [PATCH 315/434] Bump scipy from 1.8.1 to 1.9.0 Bumps [scipy](https://github.com/scipy/scipy) from 1.8.1 to 1.9.0. - [Release notes](https://github.com/scipy/scipy/releases) - [Commits](https://github.com/scipy/scipy/compare/v1.8.1...v1.9.0) --- updated-dependencies: - dependency-name: scipy dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index a0646b337..39810dfe6 100644 --- a/setup.py +++ b/setup.py @@ -34,7 +34,7 @@ 'matplotlib==3.5.2', 'numpy==1.23.1', 'pyiron_base==0.5.19', - 'scipy==1.8.1', + 'scipy==1.9.0', 'seaborn==0.11.2', 'pyparsing==3.0.9' ], From c06ef7ff7f97cf9d1d142cc5e045a4ae7a591d33 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 1 Aug 2022 11:11:22 +0000 Subject: [PATCH 316/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index b77162931..a5b6d684f 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -10,7 +10,7 @@ dependencies: - pyiron_base =0.5.19 - pyiron_atomistics =0.2.51 - pyparsing =3.0.9 -- scipy =1.8.1 +- scipy =1.9.0 - seaborn =0.11.2 - scikit-image =0.19.3 - randspg =0.0.1 From 632a322f89ef70d32b150f755af512e144bc36c5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Aug 2022 11:06:02 +0000 Subject: [PATCH 317/434] Bump boto3 from 1.24.36 to 1.24.46 Bumps [boto3](https://github.com/boto/boto3) from 1.24.36 to 1.24.46. - [Release notes](https://github.com/boto/boto3/releases) - [Changelog](https://github.com/boto/boto3/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/boto/boto3/compare/1.24.36...1.24.46) --- updated-dependencies: - dependency-name: boto3 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 39810dfe6..3ca06ef53 100644 --- a/setup.py +++ b/setup.py @@ -49,7 +49,7 @@ ], 'image': ['scikit-image==0.19.3'], 'generic': [ - 'boto3==1.24.36', + 'boto3==1.24.46', 'moto==3.1.16' ], }, From b5e14e00b92d88840eb2dbf5b35547ebdf2fff9e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Aug 2022 11:06:07 +0000 Subject: [PATCH 318/434] Bump pyiron-base from 0.5.19 to 0.5.20 Bumps [pyiron-base](https://github.com/pyiron/pyiron_base) from 0.5.19 to 0.5.20. - [Release notes](https://github.com/pyiron/pyiron_base/releases) - [Changelog](https://github.com/pyiron/pyiron_base/blob/master/CHANGELOG.md) - [Commits](https://github.com/pyiron/pyiron_base/compare/pyiron_base-0.5.19...pyiron_base-0.5.20) --- updated-dependencies: - dependency-name: pyiron-base dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 39810dfe6..b61b6619c 100644 --- a/setup.py +++ b/setup.py @@ -33,7 +33,7 @@ install_requires=[ 'matplotlib==3.5.2', 'numpy==1.23.1', - 'pyiron_base==0.5.19', + 'pyiron_base==0.5.20', 'scipy==1.9.0', 'seaborn==0.11.2', 'pyparsing==3.0.9' From d0b4ee51c8a80ec795b5aec2c79128235715d45c Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 8 Aug 2022 11:06:22 +0000 Subject: [PATCH 319/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index a5b6d684f..3d40e5c4f 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -14,5 +14,5 @@ dependencies: - seaborn =0.11.2 - scikit-image =0.19.3 - randspg =0.0.1 -- boto3 =1.24.36 +- boto3 =1.24.46 - moto =3.1.16 From 0a956e467cc3080d6b165f7dc88a07c115fa854a Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 8 Aug 2022 11:07:04 +0000 Subject: [PATCH 320/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index a5b6d684f..d4e2521af 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -7,7 +7,7 @@ dependencies: - codacy-coverage - matplotlib =3.5.2 - numpy =1.23.1 -- pyiron_base =0.5.19 +- pyiron_base =0.5.20 - pyiron_atomistics =0.2.51 - pyparsing =3.0.9 - scipy =1.9.0 From c1d9ec3052843257bae212fad8e51bf91eee26ba Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Aug 2022 11:56:40 +0000 Subject: [PATCH 321/434] Bump moto from 3.1.16 to 3.1.17 Bumps [moto](https://github.com/spulec/moto) from 3.1.16 to 3.1.17. - [Release notes](https://github.com/spulec/moto/releases) - [Changelog](https://github.com/spulec/moto/blob/master/CHANGELOG.md) - [Commits](https://github.com/spulec/moto/compare/3.1.16...3.1.17) --- updated-dependencies: - dependency-name: moto dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 3ca06ef53..0c314232b 100644 --- a/setup.py +++ b/setup.py @@ -50,7 +50,7 @@ 'image': ['scikit-image==0.19.3'], 'generic': [ 'boto3==1.24.46', - 'moto==3.1.16' + 'moto==3.1.17' ], }, cmdclass=versioneer.get_cmdclass(), From 9d1b46748b0166065f87610509daefebaa304092 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 8 Aug 2022 11:56:58 +0000 Subject: [PATCH 322/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 3d40e5c4f..31f947f81 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -15,4 +15,4 @@ dependencies: - scikit-image =0.19.3 - randspg =0.0.1 - boto3 =1.24.46 -- moto =3.1.16 +- moto =3.1.17 From a6d60f0ca7b8844bb9b003500bd0cd30bf815756 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Aug 2022 12:27:49 +0000 Subject: [PATCH 323/434] Bump pyiron-atomistics from 0.2.51 to 0.2.52 Bumps [pyiron-atomistics](https://github.com/pyiron/pyiron_atomistics) from 0.2.51 to 0.2.52. - [Release notes](https://github.com/pyiron/pyiron_atomistics/releases) - [Changelog](https://github.com/pyiron/pyiron_atomistics/blob/master/CHANGELOG.md) - [Commits](https://github.com/pyiron/pyiron_atomistics/compare/pyiron_atomistics-0.2.51...pyiron_atomistics-0.2.52) --- updated-dependencies: - dependency-name: pyiron-atomistics dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 36d2b698a..22873a170 100644 --- a/setup.py +++ b/setup.py @@ -41,7 +41,7 @@ extras_require={ 'atomistic': [ 'ase==3.22.1', - 'pyiron_atomistics==0.2.51', + 'pyiron_atomistics==0.2.52', ], 'fenics': [ 'fenics==2019.1.0', From 7e52db76dbfcb1c0bedeac6acbd28dad025d8cad Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 8 Aug 2022 12:33:42 +0000 Subject: [PATCH 324/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 4232b7e1f..29e2cb9a3 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -8,7 +8,7 @@ dependencies: - matplotlib =3.5.2 - numpy =1.23.1 - pyiron_base =0.5.20 -- pyiron_atomistics =0.2.51 +- pyiron_atomistics =0.2.52 - pyparsing =3.0.9 - scipy =1.9.0 - seaborn =0.11.2 From 333d0b4f3f93f457ce01cc3839b93a86ca98639a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Aug 2022 11:06:05 +0000 Subject: [PATCH 325/434] Bump pyiron-base from 0.5.20 to 0.5.21 Bumps [pyiron-base](https://github.com/pyiron/pyiron_base) from 0.5.20 to 0.5.21. - [Release notes](https://github.com/pyiron/pyiron_base/releases) - [Changelog](https://github.com/pyiron/pyiron_base/blob/master/CHANGELOG.md) - [Commits](https://github.com/pyiron/pyiron_base/compare/pyiron_base-0.5.20...pyiron_base-0.5.21) --- updated-dependencies: - dependency-name: pyiron-base dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 22873a170..248e835e7 100644 --- a/setup.py +++ b/setup.py @@ -33,7 +33,7 @@ install_requires=[ 'matplotlib==3.5.2', 'numpy==1.23.1', - 'pyiron_base==0.5.20', + 'pyiron_base==0.5.21', 'scipy==1.9.0', 'seaborn==0.11.2', 'pyparsing==3.0.9' From 3a16b04262c7e2f11dbc9c9c9d4ff00cff1078e7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Aug 2022 11:06:16 +0000 Subject: [PATCH 326/434] Bump boto3 from 1.24.46 to 1.24.51 Bumps [boto3](https://github.com/boto/boto3) from 1.24.46 to 1.24.51. - [Release notes](https://github.com/boto/boto3/releases) - [Changelog](https://github.com/boto/boto3/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/boto/boto3/compare/1.24.46...1.24.51) --- updated-dependencies: - dependency-name: boto3 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 22873a170..97ecb456b 100644 --- a/setup.py +++ b/setup.py @@ -49,7 +49,7 @@ ], 'image': ['scikit-image==0.19.3'], 'generic': [ - 'boto3==1.24.46', + 'boto3==1.24.51', 'moto==3.1.17' ], }, From da511b704c8b631238e80f0b5c47dc8309126a94 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 15 Aug 2022 11:13:29 +0000 Subject: [PATCH 327/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 29e2cb9a3..f076d9a79 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -7,7 +7,7 @@ dependencies: - codacy-coverage - matplotlib =3.5.2 - numpy =1.23.1 -- pyiron_base =0.5.20 +- pyiron_base =0.5.21 - pyiron_atomistics =0.2.52 - pyparsing =3.0.9 - scipy =1.9.0 From 1c7ad6090652f793c1bb15d7fddfe4a24f54c9d5 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 15 Aug 2022 11:19:40 +0000 Subject: [PATCH 328/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 29e2cb9a3..ae572e091 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -14,5 +14,5 @@ dependencies: - seaborn =0.11.2 - scikit-image =0.19.3 - randspg =0.0.1 -- boto3 =1.24.46 +- boto3 =1.24.51 - moto =3.1.17 From 1c1463d5de60adecb520ec1648ab6cde83de22e7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Aug 2022 12:34:26 +0000 Subject: [PATCH 329/434] Bump moto from 3.1.17 to 3.1.18 Bumps [moto](https://github.com/spulec/moto) from 3.1.17 to 3.1.18. - [Release notes](https://github.com/spulec/moto/releases) - [Changelog](https://github.com/spulec/moto/blob/master/CHANGELOG.md) - [Commits](https://github.com/spulec/moto/compare/3.1.17...3.1.18) --- updated-dependencies: - dependency-name: moto dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 5fe422f1c..141a7e36e 100644 --- a/setup.py +++ b/setup.py @@ -50,7 +50,7 @@ 'image': ['scikit-image==0.19.3'], 'generic': [ 'boto3==1.24.51', - 'moto==3.1.17' + 'moto==3.1.18' ], }, cmdclass=versioneer.get_cmdclass(), From cf3df56e6bbd50443f036d6cb9042d0761cced37 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 15 Aug 2022 12:41:06 +0000 Subject: [PATCH 330/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index dff71e8a2..3904d7a97 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -15,4 +15,4 @@ dependencies: - scikit-image =0.19.3 - randspg =0.0.1 - boto3 =1.24.51 -- moto =3.1.17 +- moto =3.1.18 From d28b8f81eac5cb085d1c535642a5cf55412261e9 Mon Sep 17 00:00:00 2001 From: Raynol Dsouza Date: Tue, 16 Aug 2022 12:50:06 +0200 Subject: [PATCH 331/434] basic i-pi from my directory --- pyiron_contrib/__init__.py | 1 + pyiron_contrib/pimd/piglet.py | 226 ++++++++++++++++++++++++++++++++++ 2 files changed, 227 insertions(+) create mode 100644 pyiron_contrib/pimd/piglet.py diff --git a/pyiron_contrib/__init__.py b/pyiron_contrib/__init__.py index e4842e156..b811d0f6f 100644 --- a/pyiron_contrib/__init__.py +++ b/pyiron_contrib/__init__.py @@ -45,6 +45,7 @@ JOB_CLASS_DICT['StructureMasterInt'] = 'pyiron_contrib.atomistics.atomistics.job.structurelistmasterinteractive' JOB_CLASS_DICT['StorageJob'] = 'pyiron_contrib.RDM.storagejob' JOB_CLASS_DICT['PacemakerJob'] = 'pyiron_contrib.atomistics.pacemaker.job' +JOB_CLASS_DICT['Piglet'] = 'pyiron_contrib.pimd.piglet' from ._version import get_versions diff --git a/pyiron_contrib/pimd/piglet.py b/pyiron_contrib/pimd/piglet.py new file mode 100644 index 000000000..531173c4f --- /dev/null +++ b/pyiron_contrib/pimd/piglet.py @@ -0,0 +1,226 @@ +# 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_atomistics.atomistics.job.atomistic import AtomisticGenericJob +from pyiron_base.storage.datacontainer import DataContainer +from pyiron_atomistics.lammps.potential import LammpsPotentialFile +from pyiron_atomistics.lammps.base import Input + +import numpy as np +import xml.etree.ElementTree as ET +import subprocess +import os +import shutil + +__author__ = "Raynol Dsouza" +__copyright__ = "Copyright 2022, Max-Planck-Institut für Eisenforschung GmbH " \ + "- Computational Materials Design (CM) Department" +__version__ = "0.0" +__maintainer__ = "Raynol Dsouza" +__email__ = "dsouza@mpie.de" +__status__ = "development" +__date__ = "Aug 16, 2022" + + +class Piglet(AtomisticGenericJob): + + def __init__(self, project, job_name): + super(Piglet, self).__init__(project, job_name) + self.potential_input = Input() + self.input = DataContainer(table_name='inp') + self.output = DataContainer(table_name='out') + self._templates_directory = None + + @property + def templates_directory(self): + return self._templates_directory + + @templates_directory.setter + def templates_directory(self, templates_directory): + self._templates_directory = templates_directory + + @property + def potential(self): + return self.potential_input.potential.df + + @potential.setter + def potential(self, potential_filename): + stringtypes = str + if isinstance(potential_filename, stringtypes): + if ".lmp" in potential_filename: + potential_filename = potential_filename.split(".lmp")[0] + potential_db = LammpsPotentialFile() + potential = potential_db.find_by_name(potential_filename) + elif isinstance(potential_filename, pd.DataFrame): + potential = potential_filename + else: + raise TypeError("Potentials have to be strings or pandas dataframes.") + self.potential_input.potential.df = potential + + def calc_npt_md(self, temperature=300., pressure=101325e-9, n_beads=4, timestep=1., damping_timescale=100., + n_ionic_steps=100, n_print=1, seed=32345, port=31415, A=None, C=None, rdf_r_min=2., rdf_r_max=5., + rdf_bins=100, rdf_thermalize=50): + self.input.temperature = temperature + self.input.pressure = pressure + self.input.n_beads = n_beads + self.input.timestep = timestep + self.input.damping_timescale = damping_timescale + self.input.n_ionic_steps = n_ionic_steps + self.input.n_print = n_print + self.input.seed = seed + self.input.port = port + self.input.A = A + self.input.C = C + self.input.rdf_r_min = rdf_r_min + self.input.rdf_r_max = rdf_r_max + self.input.rdf_bins = rdf_bins + self.input.rdf_thermalize = rdf_thermalize + + def write_potential(self): + self.potential_input.potential.write_file(file_name="potential.inp", cwd=self.working_directory) + self.potential_input.potential.copy_pot_files(self.working_directory) + + def write_init_xyz(self): + filepath = self.working_directory + '/init.xyz' + self.structure.write(filename=filepath, format='xyz') + cell = self.structure.cell.array.diagonal() + angle = self.structure.cell.angles() + with open(filepath, 'r') as file: + data = file.readlines() + data[1] = "# CELL(abcABC): " \ + + str(cell[0]) + " " + str(cell[1]) + " " + str(cell[2]) + " " \ + + str(angle[0]) + " " + str(angle[1]) + " "+str(angle[2]) + \ + " positions{angstrom} cell{angstrom}\n" + with open(filepath, 'w') as file: + file.writelines(data) + + def write_data_lmp(self): + filepath = self.working_directory + '/data.lmp' + self.structure.write(filename=filepath, format='lammps-data') + + def write_input_lmp(self): + filepath = self.working_directory + '/input.lmp' + mass = self.structure.get_masses()[0] + data = "# LAMMPS input file\n\n" + \ + "atom_style \t atomic\n" + \ + "units \t metal\n" + \ + "dimension \t 3\n" + \ + "boundary \t p p p\n" + \ + "\n" + \ + "read_data \t data.lmp\n" + \ + "mass \t 1 " + str(mass) + "\n\n" + \ + "include potential.inp\n\n" + \ + "fix \t 1 all ipi " + self.job_name + " " + str(self.input.port) + " unix\n" + \ + "run \t 5000000" + with open(filepath, 'w') as file: + file.writelines(data) + + def write_ipi_xml(self): + tree = ET.parse(self._templates_directory+ '/piglet_template.xml') + root = tree.getroot() + filepath = self.working_directory + '/ipi_input.xml' + for i in range(3): + root[0][i].attrib['stride'] = str(self.input.n_print) + root[1].text = str(self.input.n_ionic_steps) + root[2][0].text = str(self.input.seed) + root[3][0].text = self.job_name + root[4][0].attrib['nbeads'] = str(self.input.n_beads) + root[4][0][0].text = 'init.xyz' + root[4][0][1].text = str(self.input.temperature) + root[4][2][0][0][0].text = str(self.input.damping_timescale) + for i in range(2): + root[4][2][0][1][i].attrib['shape'] = str((self.input.n_beads,9,9)) + root[4][2][0][1][0].text = str(self.input.A) + root[4][2][0][1][1].text = str(self.input.C) + root[4][2][0][2].text = str(self.input.timestep) + root[4][3][0].text = str(self.input.temperature) + root[4][3][1].text = str(self.input.pressure) + tree.write(filepath) + + @staticmethod + def copy_file(src, dst): + shutil.copy(src, dst) + + def write_shell_scripts(self): + self.copy_file(self._templates_directory + '/run_ipi.sh', self.working_directory + '/run_ipi.sh') + self.copy_file(self._templates_directory + '/run_rdf.sh', self.working_directory + '/run_rdf.sh') + + def write_input(self): + if not os.path.isdir(self.working_directory): + self.project_hdf5.create_working_directory() + self.write_potential() + self.write_init_xyz() + self.write_data_lmp() + self.write_input_lmp() + self.write_ipi_xml() + self.write_shell_scripts() + + def collect_rdf(self): + f=open(self.working_directory + '/ipi_out.AlAl.rdf.dat', "r") + lines=f.readlines() + self.output.rdf_r = [] + self.output.rdf_g_r = [] + for x in lines: + self.output.rdf_r.append(x.split()[0]) + self.output.rdf_g_r.append(x.split()[1]) + f.close() + self.output.rdf_r = np.array([float(i) for i in self.output.rdf_r]) + self.output.rdf_g_r = np.array([float(i) for i in self.output.rdf_g_r]) + + def collect_props(self): + f=open(self.working_directory + '/ipi_out.out', "r") + lines=f.readlines() + self.output.time=[] + self.output.kinetic=[] + self.output.potential=[] + self.output.temperature=[] + self.output.pressure=[] + self.output.volume=[] + for x in lines: + if not x.startswith('#'): + self.output.time.append(x.split()[1]) + self.output.temperature.append(x.split()[2]) + self.output.kinetic.append(x.split()[3]) + self.output.potential.append(x.split()[4]) + self.output.volume.append(x.split()[5]) + self.output.pressure.append(x.split()[6]) + f.close() + self.output.time = np.array([float(i) for i in self.output.time]) + self.output.kinetic = np.array([float(i) for i in self.output.kinetic]) + self.output.potential = np.array([float(i) for i in self.output.potential]) + self.output.temperature = np.array([float(i) for i in self.output.temperature]) + self.output.volume = np.array([float(i) for i in self.output.volume]) + self.output.pressure = np.array([float(i) for i in self.output.pressure]) + + def collect_output(self): + self.collect_props() + self.collect_rdf() + self.compress() + + def run_static(self): + subprocess.check_call([self.working_directory + '/./run_ipi.sh', self.working_directory, str(self.server.cores)]) + rdf_list = [self.working_directory + '/./run_rdf.sh', + self.working_directory, + str(self.input.temperature), + self.structure.get_chemical_symbols()[0], self.structure.get_chemical_symbols()[0], + str(self.input.rdf_bins), + str(self.input.rdf_r_min), str(self.input.rdf_r_max), + str(self.input.rdf_thermalize)] + subprocess.check_call(rdf_list) + self.collect_output() + self.to_hdf() + + def to_hdf(self, hdf=None, group_name=None): + super(Piglet, self).to_hdf(hdf=hdf, group_name=group_name) + self._structure_to_hdf() + self.input.templates_directory = self._templates_directory + self.input.to_hdf(self._hdf5) + self.output.to_hdf(self._hdf5) + + def from_hdf(self, hdf=None, group_name=None): + super(Piglet, self).from_hdf(hdf=hdf, group_name=group_name) + self._structure_from_hdf() + self.input.from_hdf(self._hdf5) + self._templates_directory = self.input.templates_directory + self.output.from_hdf(self._hdf5) \ No newline at end of file From 74ed7b065a9bbd2bf5e52d1c55cfbe01dbef58ae Mon Sep 17 00:00:00 2001 From: Raynol Dsouza Date: Tue, 16 Aug 2022 19:16:20 +0200 Subject: [PATCH 332/434] seperate rdf method --- pyiron_contrib/pimd/piglet.py | 58 +++++++++++++++++------------------ 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/pyiron_contrib/pimd/piglet.py b/pyiron_contrib/pimd/piglet.py index 531173c4f..04b5419e8 100644 --- a/pyiron_contrib/pimd/piglet.py +++ b/pyiron_contrib/pimd/piglet.py @@ -59,8 +59,7 @@ def potential(self, potential_filename): self.potential_input.potential.df = potential def calc_npt_md(self, temperature=300., pressure=101325e-9, n_beads=4, timestep=1., damping_timescale=100., - n_ionic_steps=100, n_print=1, seed=32345, port=31415, A=None, C=None, rdf_r_min=2., rdf_r_max=5., - rdf_bins=100, rdf_thermalize=50): + n_ionic_steps=100, n_print=1, seed=32345, port=31415, A=None, C=None): self.input.temperature = temperature self.input.pressure = pressure self.input.n_beads = n_beads @@ -72,10 +71,6 @@ def calc_npt_md(self, temperature=300., pressure=101325e-9, n_beads=4, timestep= self.input.port = port self.input.A = A self.input.C = C - self.input.rdf_r_min = rdf_r_min - self.input.rdf_r_max = rdf_r_max - self.input.rdf_bins = rdf_bins - self.input.rdf_thermalize = rdf_thermalize def write_potential(self): self.potential_input.potential.write_file(file_name="potential.inp", cwd=self.working_directory) @@ -120,7 +115,7 @@ def write_ipi_xml(self): tree = ET.parse(self._templates_directory+ '/piglet_template.xml') root = tree.getroot() filepath = self.working_directory + '/ipi_input.xml' - for i in range(3): + for i in range(4): root[0][i].attrib['stride'] = str(self.input.n_print) root[1].text = str(self.input.n_ionic_steps) root[2][0].text = str(self.input.seed) @@ -159,55 +154,60 @@ def write_input(self): def collect_rdf(self): f=open(self.working_directory + '/ipi_out.AlAl.rdf.dat', "r") lines=f.readlines() - self.output.rdf_r = [] - self.output.rdf_g_r = [] + rdf_r = [] + rdf_g_r = [] for x in lines: - self.output.rdf_r.append(x.split()[0]) - self.output.rdf_g_r.append(x.split()[1]) + rdf_r.append(x.split()[0]) + rdf_g_r.append(x.split()[1]) f.close() - self.output.rdf_r = np.array([float(i) for i in self.output.rdf_r]) - self.output.rdf_g_r = np.array([float(i) for i in self.output.rdf_g_r]) + return np.array([float(i) for i in rdf_r]), np.array([float(i) for i in rdf_g_r]) def collect_props(self): f=open(self.working_directory + '/ipi_out.out', "r") lines=f.readlines() self.output.time=[] - self.output.kinetic=[] - self.output.potential=[] self.output.temperature=[] - self.output.pressure=[] + self.output.en_kin=[] + self.output.en_pot=[] self.output.volume=[] + self.output.pressure=[] for x in lines: if not x.startswith('#'): self.output.time.append(x.split()[1]) self.output.temperature.append(x.split()[2]) - self.output.kinetic.append(x.split()[3]) - self.output.potential.append(x.split()[4]) + self.output.en_kin.append(x.split()[3]) + self.output.en_pot.append(x.split()[4]) self.output.volume.append(x.split()[5]) self.output.pressure.append(x.split()[6]) f.close() self.output.time = np.array([float(i) for i in self.output.time]) - self.output.kinetic = np.array([float(i) for i in self.output.kinetic]) - self.output.potential = np.array([float(i) for i in self.output.potential]) self.output.temperature = np.array([float(i) for i in self.output.temperature]) + self.output.en_kin = np.array([float(i) for i in self.output.en_kin]) + self.output.en_pot = np.array([float(i) for i in self.output.en_pot]) self.output.volume = np.array([float(i) for i in self.output.volume]) - self.output.pressure = np.array([float(i) for i in self.output.pressure]) + self.output.pressure = np.array([float(i) for i in self.output.pressure]) + self.output.en_tot = self.output.en_pot + self.output.en_kin def collect_output(self): self.collect_props() - self.collect_rdf() self.compress() - - def run_static(self): - subprocess.check_call([self.working_directory + '/./run_ipi.sh', self.working_directory, str(self.server.cores)]) + + def get_rdf(self, r_min=2., r_max=5., bins=100, thermalize=50): + self.decompress() rdf_list = [self.working_directory + '/./run_rdf.sh', self.working_directory, str(self.input.temperature), self.structure.get_chemical_symbols()[0], self.structure.get_chemical_symbols()[0], - str(self.input.rdf_bins), - str(self.input.rdf_r_min), str(self.input.rdf_r_max), - str(self.input.rdf_thermalize)] - subprocess.check_call(rdf_list) + str(bins), + str(r_min), str(r_max), + str(thermalize)] + subprocess.check_call(rdf_list) + rdf_r, rdf_g_r = self.collect_rdf() + self.compress() + return rdf_r, rdf_g_r + + def run_static(self): + subprocess.check_call([self.working_directory + '/./run_ipi.sh', self.working_directory, str(self.server.cores)]) self.collect_output() self.to_hdf() From 34f04228cc8a21ed5ee7144799999cde4881d17b Mon Sep 17 00:00:00 2001 From: Raynol Dsouza Date: Fri, 19 Aug 2022 23:01:38 +0200 Subject: [PATCH 333/434] create a separate job to run mlips --- pyiron_contrib/__init__.py | 3 +- .../{ => atomistics}/pimd/piglet.py | 139 +++++----- pyiron_contrib/atomistics/pimd/piglet_mlip.py | 243 ++++++++++++++++++ 3 files changed, 323 insertions(+), 62 deletions(-) rename pyiron_contrib/{ => atomistics}/pimd/piglet.py (62%) create mode 100644 pyiron_contrib/atomistics/pimd/piglet_mlip.py diff --git a/pyiron_contrib/__init__.py b/pyiron_contrib/__init__.py index b811d0f6f..f48d29cde 100644 --- a/pyiron_contrib/__init__.py +++ b/pyiron_contrib/__init__.py @@ -45,7 +45,8 @@ JOB_CLASS_DICT['StructureMasterInt'] = 'pyiron_contrib.atomistics.atomistics.job.structurelistmasterinteractive' JOB_CLASS_DICT['StorageJob'] = 'pyiron_contrib.RDM.storagejob' JOB_CLASS_DICT['PacemakerJob'] = 'pyiron_contrib.atomistics.pacemaker.job' -JOB_CLASS_DICT['Piglet'] = 'pyiron_contrib.pimd.piglet' +JOB_CLASS_DICT['Piglet'] = 'pyiron_contrib.atomistics.pimd.piglet' +JOB_CLASS_DICT['PigletMlip'] = 'pyiron_contrib.atomistics.pimd.piglet_mlip' from ._version import get_versions diff --git a/pyiron_contrib/pimd/piglet.py b/pyiron_contrib/atomistics/pimd/piglet.py similarity index 62% rename from pyiron_contrib/pimd/piglet.py rename to pyiron_contrib/atomistics/pimd/piglet.py index 04b5419e8..b28a554eb 100644 --- a/pyiron_contrib/pimd/piglet.py +++ b/pyiron_contrib/atomistics/pimd/piglet.py @@ -8,6 +8,7 @@ from pyiron_atomistics.lammps.base import Input import numpy as np +import pandas as pd import xml.etree.ElementTree as ET import subprocess import os @@ -27,9 +28,9 @@ class Piglet(AtomisticGenericJob): def __init__(self, project, job_name): super(Piglet, self).__init__(project, job_name) - self.potential_input = Input() - self.input = DataContainer(table_name='inp') - self.output = DataContainer(table_name='out') + self.input = Input() + self.custom_input = DataContainer(table_name='custom_inp') + self.custom_output = DataContainer(table_name='custom_out') self._templates_directory = None @property @@ -42,7 +43,7 @@ def templates_directory(self, templates_directory): @property def potential(self): - return self.potential_input.potential.df + return self.input.potential.df @potential.setter def potential(self, potential_filename): @@ -56,25 +57,25 @@ def potential(self, potential_filename): potential = potential_filename else: raise TypeError("Potentials have to be strings or pandas dataframes.") - self.potential_input.potential.df = potential + self.input.potential.df = potential def calc_npt_md(self, temperature=300., pressure=101325e-9, n_beads=4, timestep=1., damping_timescale=100., n_ionic_steps=100, n_print=1, seed=32345, port=31415, A=None, C=None): - self.input.temperature = temperature - self.input.pressure = pressure - self.input.n_beads = n_beads - self.input.timestep = timestep - self.input.damping_timescale = damping_timescale - self.input.n_ionic_steps = n_ionic_steps - self.input.n_print = n_print - self.input.seed = seed - self.input.port = port - self.input.A = A - self.input.C = C + self.custom_input.temperature = temperature + self.custom_input.pressure = pressure + self.custom_input.n_beads = n_beads + self.custom_input.timestep = timestep + self.custom_input.damping_timescale = damping_timescale + self.custom_input.n_ionic_steps = n_ionic_steps + self.custom_input.n_print = n_print + self.custom_input.seed = seed + self.custom_input.port = port + self.custom_input.A = A + self.custom_input.C = C def write_potential(self): - self.potential_input.potential.write_file(file_name="potential.inp", cwd=self.working_directory) - self.potential_input.potential.copy_pot_files(self.working_directory) + self.input.potential.write_file(file_name="potential.inp", cwd=self.working_directory) + self.input.potential.copy_pot_files(self.working_directory) def write_init_xyz(self): filepath = self.working_directory + '/init.xyz' @@ -106,7 +107,7 @@ def write_input_lmp(self): "read_data \t data.lmp\n" + \ "mass \t 1 " + str(mass) + "\n\n" + \ "include potential.inp\n\n" + \ - "fix \t 1 all ipi " + self.job_name + " " + str(self.input.port) + " unix\n" + \ + "fix \t 1 all ipi " + self.job_name + " " + str(self.custom_input.port) + " unix\n" + \ "run \t 5000000" with open(filepath, 'w') as file: file.writelines(data) @@ -116,21 +117,21 @@ def write_ipi_xml(self): root = tree.getroot() filepath = self.working_directory + '/ipi_input.xml' for i in range(4): - root[0][i].attrib['stride'] = str(self.input.n_print) - root[1].text = str(self.input.n_ionic_steps) - root[2][0].text = str(self.input.seed) + root[0][i].attrib['stride'] = str(self.custom_input.n_print) + root[1].text = str(self.custom_input.n_ionic_steps) + root[2][0].text = str(self.custom_input.seed) root[3][0].text = self.job_name - root[4][0].attrib['nbeads'] = str(self.input.n_beads) + root[4][0].attrib['nbeads'] = str(self.custom_input.n_beads) root[4][0][0].text = 'init.xyz' - root[4][0][1].text = str(self.input.temperature) - root[4][2][0][0][0].text = str(self.input.damping_timescale) + root[4][0][1].text = str(self.custom_input.temperature) + root[4][2][0][0][0].text = str(self.custom_input.damping_timescale) for i in range(2): - root[4][2][0][1][i].attrib['shape'] = str((self.input.n_beads,9,9)) - root[4][2][0][1][0].text = str(self.input.A) - root[4][2][0][1][1].text = str(self.input.C) - root[4][2][0][2].text = str(self.input.timestep) - root[4][3][0].text = str(self.input.temperature) - root[4][3][1].text = str(self.input.pressure) + root[4][2][0][1][i].attrib['shape'] = str((self.custom_input.n_beads,9,9)) + root[4][2][0][1][0].text = str(self.custom_input.A) + root[4][2][0][1][1].text = str(self.custom_input.C) + root[4][2][0][2].text = str(self.custom_input.timestep) + root[4][3][0].text = str(self.custom_input.temperature) + root[4][3][1].text = str(self.custom_input.pressure) tree.write(filepath) @staticmethod @@ -144,6 +145,7 @@ def write_shell_scripts(self): def write_input(self): if not os.path.isdir(self.working_directory): self.project_hdf5.create_working_directory() + super(Piglet, self).write_input() self.write_potential() self.write_init_xyz() self.write_data_lmp() @@ -163,44 +165,59 @@ def collect_rdf(self): return np.array([float(i) for i in rdf_r]), np.array([float(i) for i in rdf_g_r]) def collect_props(self): - f=open(self.working_directory + '/ipi_out.out', "r") + f = open(self.working_directory + '/ipi_out.out', "r") lines=f.readlines() - self.output.time=[] - self.output.temperature=[] - self.output.en_kin=[] - self.output.en_pot=[] - self.output.volume=[] - self.output.pressure=[] + time=[] + temperature=[] + en_kin=[] + en_pot=[] + volume=[] + pressure=[] for x in lines: if not x.startswith('#'): - self.output.time.append(x.split()[1]) - self.output.temperature.append(x.split()[2]) - self.output.en_kin.append(x.split()[3]) - self.output.en_pot.append(x.split()[4]) - self.output.volume.append(x.split()[5]) - self.output.pressure.append(x.split()[6]) + time.append(x.split()[1]) + temperature.append(x.split()[2]) + en_kin.append(x.split()[3]) + en_pot.append(x.split()[4]) + volume.append(x.split()[5]) + pressure.append(x.split()[6]) f.close() - self.output.time = np.array([float(i) for i in self.output.time]) - self.output.temperature = np.array([float(i) for i in self.output.temperature]) - self.output.en_kin = np.array([float(i) for i in self.output.en_kin]) - self.output.en_pot = np.array([float(i) for i in self.output.en_pot]) - self.output.volume = np.array([float(i) for i in self.output.volume]) - self.output.pressure = np.array([float(i) for i in self.output.pressure]) - self.output.en_tot = self.output.en_pot + self.output.en_kin + self.custom_output.time = np.array([float(i) for i in time]) + self.custom_output.temperature = np.array([float(i) for i in temperature]) + self.custom_output.en_kin = np.array([float(i) for i in en_kin]) + self.custom_output.en_pot = np.array([float(i) for i in en_pot]) + self.custom_output.volume = np.array([float(i) for i in volume]) + self.custom_output.pressure = np.array([float(i) for i in pressure]) + self.custom_output.en_tot = self.custom_output.en_pot + self.custom_output.en_kin + + def collect_cells(self): + f = open(self.working_directory + '/ipi_out.pos_0.xyz') + lines=f.readlines() + abc = [] + ABC = [] + for x in lines: + if x.startswith("#"): + split_line = x.split() + abc.append([float(i) for i in split_line[2:5]]) + ABC.append([float(i) for i in split_line[5:8]]) + f.close() + self.custom_output.cell_abc = np.array(abc) + self.custom_output.cell_ABC = np.array(ABC) def collect_output(self): self.collect_props() + self.collect_cells() self.compress() def get_rdf(self, r_min=2., r_max=5., bins=100, thermalize=50): self.decompress() rdf_list = [self.working_directory + '/./run_rdf.sh', self.working_directory, - str(self.input.temperature), + str(self.custom_input.temperature), self.structure.get_chemical_symbols()[0], self.structure.get_chemical_symbols()[0], - str(bins), - str(r_min), str(r_max), - str(thermalize)] + str(rdf_bins), + str(rdf_r_min), str(rdf_r_max), + str(rdf_thermalize)] subprocess.check_call(rdf_list) rdf_r, rdf_g_r = self.collect_rdf() self.compress() @@ -214,13 +231,13 @@ def run_static(self): def to_hdf(self, hdf=None, group_name=None): super(Piglet, self).to_hdf(hdf=hdf, group_name=group_name) self._structure_to_hdf() - self.input.templates_directory = self._templates_directory - self.input.to_hdf(self._hdf5) - self.output.to_hdf(self._hdf5) + self.custom_input.templates_directory = self._templates_directory + self.custom_input.to_hdf(self._hdf5) + self.custom_output.to_hdf(self._hdf5) def from_hdf(self, hdf=None, group_name=None): super(Piglet, self).from_hdf(hdf=hdf, group_name=group_name) self._structure_from_hdf() - self.input.from_hdf(self._hdf5) - self._templates_directory = self.input.templates_directory - self.output.from_hdf(self._hdf5) \ No newline at end of file + self.custom_input.from_hdf(self._hdf5) + self._templates_directory = self.custom_input.templates_directory + self.custom_output.from_hdf(self._hdf5) \ No newline at end of file diff --git a/pyiron_contrib/atomistics/pimd/piglet_mlip.py b/pyiron_contrib/atomistics/pimd/piglet_mlip.py new file mode 100644 index 000000000..37e8956d7 --- /dev/null +++ b/pyiron_contrib/atomistics/pimd/piglet_mlip.py @@ -0,0 +1,243 @@ +# 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_atomistics.atomistics.job.atomistic import AtomisticGenericJob +from pyiron_base.storage.datacontainer import DataContainer +from pyiron_atomistics.lammps.potential import LammpsPotentialFile +from pyiron_contrib.atomistics.mlip.lammps import LammpsMlip, MlipInput + +import numpy as np +import pandas as pd +import xml.etree.ElementTree as ET +import subprocess +import os +import shutil + +__author__ = "Raynol Dsouza" +__copyright__ = "Copyright 2022, Max-Planck-Institut für Eisenforschung GmbH " \ + "- Computational Materials Design (CM) Department" +__version__ = "0.0" +__maintainer__ = "Raynol Dsouza" +__email__ = "dsouza@mpie.de" +__status__ = "development" +__date__ = "Aug 19, 2022" + + +class PigletMlip(LammpsMlip): + + def __init__(self, project, job_name): + super(PigletMlip, self).__init__(project, job_name) + self.input = MlipInput() + self.custom_input = DataContainer(table_name='custom_inp') + self.custom_output = DataContainer(table_name='custom_out') + self._templates_directory = None + + @property + def templates_directory(self): + return self._templates_directory + + @templates_directory.setter + def templates_directory(self, templates_directory): + self._templates_directory = templates_directory + + @property + def potential(self): + return self.input.potential.df + + @potential.setter + def potential(self, potential_filename): + stringtypes = str + if isinstance(potential_filename, stringtypes): + if ".lmp" in potential_filename: + potential_filename = potential_filename.split(".lmp")[0] + potential_db = LammpsPotentialFile() + potential = potential_db.find_by_name(potential_filename) + elif isinstance(potential_filename, pd.DataFrame): + potential = potential_filename + else: + raise TypeError("Potentials have to be strings or pandas dataframes.") + self.input.potential.df = potential + + def calc_npt_md(self, temperature=300., pressure=101325e-9, n_beads=4, timestep=1., damping_timescale=100., + n_ionic_steps=100, n_print=1, seed=32345, port=31415, A=None, C=None): + self.custom_input.temperature = temperature + self.custom_input.pressure = pressure + self.custom_input.n_beads = n_beads + self.custom_input.timestep = timestep + self.custom_input.damping_timescale = damping_timescale + self.custom_input.n_ionic_steps = n_ionic_steps + self.custom_input.n_print = n_print + self.custom_input.seed = seed + self.custom_input.port = port + self.custom_input.A = A + self.custom_input.C = C + + def write_potential(self): + self.input.potential.write_file(file_name="potential.inp", cwd=self.working_directory) + self.input.potential.copy_pot_files(self.working_directory) + + def write_init_xyz(self): + filepath = self.working_directory + '/init.xyz' + self.structure.write(filename=filepath, format='xyz') + cell = self.structure.cell.array.diagonal() + angle = self.structure.cell.angles() + with open(filepath, 'r') as file: + data = file.readlines() + data[1] = "# CELL(abcABC): " \ + + str(cell[0]) + " " + str(cell[1]) + " " + str(cell[2]) + " " \ + + str(angle[0]) + " " + str(angle[1]) + " "+str(angle[2]) + \ + " positions{angstrom} cell{angstrom}\n" + with open(filepath, 'w') as file: + file.writelines(data) + + def write_data_lmp(self): + filepath = self.working_directory + '/data.lmp' + self.structure.write(filename=filepath, format='lammps-data') + + def write_input_lmp(self): + filepath = self.working_directory + '/input.lmp' + mass = self.structure.get_masses()[0] + data = "# LAMMPS input file\n\n" + \ + "atom_style \t atomic\n" + \ + "units \t metal\n" + \ + "dimension \t 3\n" + \ + "boundary \t p p p\n" + \ + "\n" + \ + "read_data \t data.lmp\n" + \ + "mass \t 1 " + str(mass) + "\n\n" + \ + "include potential.inp\n\n" + \ + "fix \t 1 all ipi " + self.job_name + " " + str(self.custom_input.port) + " unix\n" + \ + "run \t 5000000" + with open(filepath, 'w') as file: + file.writelines(data) + + def write_ipi_xml(self): + tree = ET.parse(self._templates_directory+ '/piglet_template.xml') + root = tree.getroot() + filepath = self.working_directory + '/ipi_input.xml' + for i in range(4): + root[0][i].attrib['stride'] = str(self.custom_input.n_print) + root[1].text = str(self.custom_input.n_ionic_steps) + root[2][0].text = str(self.custom_input.seed) + root[3][0].text = self.job_name + root[4][0].attrib['nbeads'] = str(self.custom_input.n_beads) + root[4][0][0].text = 'init.xyz' + root[4][0][1].text = str(self.custom_input.temperature) + root[4][2][0][0][0].text = str(self.custom_input.damping_timescale) + for i in range(2): + root[4][2][0][1][i].attrib['shape'] = str((self.custom_input.n_beads,9,9)) + root[4][2][0][1][0].text = str(self.custom_input.A) + root[4][2][0][1][1].text = str(self.custom_input.C) + root[4][2][0][2].text = str(self.custom_input.timestep) + root[4][3][0].text = str(self.custom_input.temperature) + root[4][3][1].text = str(self.custom_input.pressure) + tree.write(filepath) + + @staticmethod + def copy_file(src, dst): + shutil.copy(src, dst) + + def write_shell_scripts(self): + self.copy_file(self._templates_directory + '/run_ipi.sh', self.working_directory + '/run_ipi.sh') + self.copy_file(self._templates_directory + '/run_rdf.sh', self.working_directory + '/run_rdf.sh') + + def write_input(self): + if not os.path.isdir(self.working_directory): + self.project_hdf5.create_working_directory() + super(PigletMlip, self).write_input() + self.write_potential() + self.write_init_xyz() + self.write_data_lmp() + self.write_input_lmp() + self.write_ipi_xml() + self.write_shell_scripts() + + def collect_rdf(self): + f=open(self.working_directory + '/ipi_out.AlAl.rdf.dat', "r") + lines=f.readlines() + rdf_r = [] + rdf_g_r = [] + for x in lines: + rdf_r.append(x.split()[0]) + rdf_g_r.append(x.split()[1]) + f.close() + return np.array([float(i) for i in rdf_r]), np.array([float(i) for i in rdf_g_r]) + + def collect_props(self): + f = open(self.working_directory + '/ipi_out.out', "r") + lines=f.readlines() + time=[] + temperature=[] + en_kin=[] + en_pot=[] + volume=[] + pressure=[] + for x in lines: + if not x.startswith('#'): + time.append(x.split()[1]) + temperature.append(x.split()[2]) + en_kin.append(x.split()[3]) + en_pot.append(x.split()[4]) + volume.append(x.split()[5]) + pressure.append(x.split()[6]) + f.close() + self.custom_output.time = np.array([float(i) for i in time]) + self.custom_output.temperature = np.array([float(i) for i in temperature]) + self.custom_output.en_kin = np.array([float(i) for i in en_kin]) + self.custom_output.en_pot = np.array([float(i) for i in en_pot]) + self.custom_output.volume = np.array([float(i) for i in volume]) + self.custom_output.pressure = np.array([float(i) for i in pressure]) + self.custom_output.en_tot = self.custom_output.en_pot + self.custom_output.en_kin + + def collect_cells(self): + f = open(self.working_directory + '/ipi_out.pos_0.xyz') + lines=f.readlines() + abc = [] + ABC = [] + for x in lines: + if x.startswith("#"): + split_line = x.split() + abc.append([float(i) for i in split_line[2:5]]) + ABC.append([float(i) for i in split_line[5:8]]) + f.close() + self.custom_output.cell_abc = np.array(abc) + self.custom_output.cell_ABC = np.array(ABC) + + def collect_output(self): + self.collect_props() + self.collect_cells() + self.compress() + + def get_rdf(self, r_min=2., r_max=5., bins=100, thermalize=50): + self.decompress() + rdf_list = [self.working_directory + '/./run_rdf.sh', + self.working_directory, + str(self.custom_input.temperature), + self.structure.get_chemical_symbols()[0], self.structure.get_chemical_symbols()[0], + str(rdf_bins), + str(rdf_r_min), str(rdf_r_max), + str(rdf_thermalize)] + subprocess.check_call(rdf_list) + rdf_r, rdf_g_r = self.collect_rdf() + self.compress() + return rdf_r, rdf_g_r + + def run_static(self): + subprocess.check_call([self.working_directory + '/./run_ipi.sh', self.working_directory, str(self.server.cores)]) + self.collect_output() + self.to_hdf() + + def to_hdf(self, hdf=None, group_name=None): + super(PigletMlip, self).to_hdf(hdf=hdf, group_name=group_name) + self._structure_to_hdf() + self.custom_input.templates_directory = self._templates_directory + self.custom_input.to_hdf(self._hdf5) + self.custom_output.to_hdf(self._hdf5) + + def from_hdf(self, hdf=None, group_name=None): + super(PigletMlip, self).from_hdf(hdf=hdf, group_name=group_name) + self._structure_from_hdf() + self.custom_input.from_hdf(self._hdf5) + self._templates_directory = self.custom_input.templates_directory + self.custom_output.from_hdf(self._hdf5) \ No newline at end of file From 09fc62648f6eba1c070005de0c534ed4efdcd5a9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Aug 2022 11:10:27 +0000 Subject: [PATCH 334/434] Bump pyiron-base from 0.5.21 to 0.5.22 Bumps [pyiron-base](https://github.com/pyiron/pyiron_base) from 0.5.21 to 0.5.22. - [Release notes](https://github.com/pyiron/pyiron_base/releases) - [Changelog](https://github.com/pyiron/pyiron_base/blob/master/CHANGELOG.md) - [Commits](https://github.com/pyiron/pyiron_base/compare/pyiron_base-0.5.21...pyiron_base-0.5.22) --- updated-dependencies: - dependency-name: pyiron-base dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 141a7e36e..1d1ee766a 100644 --- a/setup.py +++ b/setup.py @@ -33,7 +33,7 @@ install_requires=[ 'matplotlib==3.5.2', 'numpy==1.23.1', - 'pyiron_base==0.5.21', + 'pyiron_base==0.5.22', 'scipy==1.9.0', 'seaborn==0.11.2', 'pyparsing==3.0.9' From 733bef9313cc00f85d14709523512b6874dff3cb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Aug 2022 11:10:41 +0000 Subject: [PATCH 335/434] Bump boto3 from 1.24.51 to 1.24.56 Bumps [boto3](https://github.com/boto/boto3) from 1.24.51 to 1.24.56. - [Release notes](https://github.com/boto/boto3/releases) - [Changelog](https://github.com/boto/boto3/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/boto/boto3/compare/1.24.51...1.24.56) --- updated-dependencies: - dependency-name: boto3 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 141a7e36e..60f9021e5 100644 --- a/setup.py +++ b/setup.py @@ -49,7 +49,7 @@ ], 'image': ['scikit-image==0.19.3'], 'generic': [ - 'boto3==1.24.51', + 'boto3==1.24.56', 'moto==3.1.18' ], }, From 51249d6be81d5f0a41927b9a8d760184faea572b Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 22 Aug 2022 11:10:45 +0000 Subject: [PATCH 336/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 3904d7a97..10d00c9a4 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -7,7 +7,7 @@ dependencies: - codacy-coverage - matplotlib =3.5.2 - numpy =1.23.1 -- pyiron_base =0.5.21 +- pyiron_base =0.5.22 - pyiron_atomistics =0.2.52 - pyparsing =3.0.9 - scipy =1.9.0 From 4e6c4ec784fca762db0d16df24139f5491197e1c Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 22 Aug 2022 11:12:28 +0000 Subject: [PATCH 337/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 3904d7a97..6e5ea2f85 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -14,5 +14,5 @@ dependencies: - seaborn =0.11.2 - scikit-image =0.19.3 - randspg =0.0.1 -- boto3 =1.24.51 +- boto3 =1.24.56 - moto =3.1.18 From e8f67d49aeb567cbc8d96d438569c2ccdfb7166d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Aug 2022 13:10:37 +0000 Subject: [PATCH 338/434] Bump numpy from 1.23.1 to 1.23.2 Bumps [numpy](https://github.com/numpy/numpy) from 1.23.1 to 1.23.2. - [Release notes](https://github.com/numpy/numpy/releases) - [Changelog](https://github.com/numpy/numpy/blob/main/doc/RELEASE_WALKTHROUGH.rst) - [Commits](https://github.com/numpy/numpy/compare/v1.23.1...v1.23.2) --- updated-dependencies: - dependency-name: numpy dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 1d1ee766a..fd9f226d8 100644 --- a/setup.py +++ b/setup.py @@ -32,7 +32,7 @@ packages=find_packages(exclude=["*tests*"]), install_requires=[ 'matplotlib==3.5.2', - 'numpy==1.23.1', + 'numpy==1.23.2', 'pyiron_base==0.5.22', 'scipy==1.9.0', 'seaborn==0.11.2', From 5d35644ec3b4153bf42ab177521540671c1abe43 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 22 Aug 2022 13:10:56 +0000 Subject: [PATCH 339/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 10d00c9a4..f02e95998 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -6,7 +6,7 @@ dependencies: - coverage - codacy-coverage - matplotlib =3.5.2 -- numpy =1.23.1 +- numpy =1.23.2 - pyiron_base =0.5.22 - pyiron_atomistics =0.2.52 - pyparsing =3.0.9 From e7a779fd697c764f722f1a1975644957dc7cf005 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Aug 2022 13:12:16 +0000 Subject: [PATCH 340/434] Bump moto from 3.1.18 to 4.0.0 Bumps [moto](https://github.com/spulec/moto) from 3.1.18 to 4.0.0. - [Release notes](https://github.com/spulec/moto/releases) - [Changelog](https://github.com/spulec/moto/blob/master/CHANGELOG.md) - [Commits](https://github.com/spulec/moto/compare/3.1.18...4.0.0) --- updated-dependencies: - dependency-name: moto dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 385eb28b4..8d5b9fd15 100644 --- a/setup.py +++ b/setup.py @@ -50,7 +50,7 @@ 'image': ['scikit-image==0.19.3'], 'generic': [ 'boto3==1.24.56', - 'moto==3.1.18' + 'moto==4.0.0' ], }, cmdclass=versioneer.get_cmdclass(), From 62b7213fa76bd9349739aaaad87490b5439657ed Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Aug 2022 13:17:43 +0000 Subject: [PATCH 341/434] Bump pyiron-atomistics from 0.2.52 to 0.2.54 Bumps [pyiron-atomistics](https://github.com/pyiron/pyiron_atomistics) from 0.2.52 to 0.2.54. - [Release notes](https://github.com/pyiron/pyiron_atomistics/releases) - [Changelog](https://github.com/pyiron/pyiron_atomistics/blob/master/CHANGELOG.md) - [Commits](https://github.com/pyiron/pyiron_atomistics/compare/pyiron_atomistics-0.2.52...pyiron_atomistics-0.2.54) --- updated-dependencies: - dependency-name: pyiron-atomistics dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 385eb28b4..c1d60bd85 100644 --- a/setup.py +++ b/setup.py @@ -41,7 +41,7 @@ extras_require={ 'atomistic': [ 'ase==3.22.1', - 'pyiron_atomistics==0.2.52', + 'pyiron_atomistics==0.2.54', ], 'fenics': [ 'fenics==2019.1.0', From 8f14f38f4e71dc63b8d1b92008995741da205508 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 22 Aug 2022 13:29:41 +0000 Subject: [PATCH 342/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index b9b549f06..b3e0a9aa7 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -15,4 +15,4 @@ dependencies: - scikit-image =0.19.3 - randspg =0.0.1 - boto3 =1.24.56 -- moto =3.1.18 +- moto =4.0.0 From 14cef2f2783a16016409e45d1ef9302f3faf636e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Aug 2022 13:33:08 +0000 Subject: [PATCH 343/434] Bump matplotlib from 3.5.2 to 3.5.3 Bumps [matplotlib](https://github.com/matplotlib/matplotlib) from 3.5.2 to 3.5.3. - [Release notes](https://github.com/matplotlib/matplotlib/releases) - [Commits](https://github.com/matplotlib/matplotlib/compare/v3.5.2...v3.5.3) --- updated-dependencies: - dependency-name: matplotlib dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 61354bee5..660ae4ee2 100644 --- a/setup.py +++ b/setup.py @@ -31,7 +31,7 @@ keywords='pyiron', packages=find_packages(exclude=["*tests*"]), install_requires=[ - 'matplotlib==3.5.2', + 'matplotlib==3.5.3', 'numpy==1.23.2', 'pyiron_base==0.5.22', 'scipy==1.9.0', From efa89f321e4ba99b21e014f98f7c5066d835a2bc Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 22 Aug 2022 13:33:48 +0000 Subject: [PATCH 344/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index b9b549f06..801cd6d75 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -8,7 +8,7 @@ dependencies: - matplotlib =3.5.2 - numpy =1.23.1 - pyiron_base =0.5.22 -- pyiron_atomistics =0.2.52 +- pyiron_atomistics =0.2.54 - pyparsing =3.0.9 - scipy =1.9.0 - seaborn =0.11.2 From bea08d79d9a8b9b13ea5bc3d25c2d3d2f4836dfd Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 22 Aug 2022 13:42:39 +0000 Subject: [PATCH 345/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index e1ff7db9a..765e89745 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -5,7 +5,7 @@ dependencies: - coveralls - coverage - codacy-coverage -- matplotlib =3.5.2 +- matplotlib =3.5.3 - numpy =1.23.2 - pyiron_base =0.5.22 - pyiron_atomistics =0.2.52 From 07c63c3dac6d2e4d5e105dc18c7bc2f3800017cb Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Wed, 10 Aug 2022 10:52:07 +0200 Subject: [PATCH 346/434] Adapt to StructurePlots from atomistics --- .../atomistics/job/trainingcontainer.py | 224 +----------------- 1 file changed, 10 insertions(+), 214 deletions(-) diff --git a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py index 7f189fd66..0eccddaa8 100644 --- a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py +++ b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py @@ -39,7 +39,7 @@ from ase.atoms import Atoms as ASEAtoms -from pyiron_contrib.atomistics.atomistics.job.structurestorage import StructureStorage +from pyiron_contrib.atomistics.atomistics.job.structurestorage import StructureStorage, StructurePlots from pyiron_atomistics.atomistics.structure.atoms import Atoms from pyiron_atomistics.atomistics.structure.has_structure import HasStructure from pyiron_atomistics.atomistics.structure.neighbors import NeighborsTrajectory @@ -273,7 +273,7 @@ def plot(self): """ :class:`.TrainingPlots`: plotting interface """ - return TrainingPlots(self._container) + return self._container.plot def iter(self, *arrays, wrap_atoms=True): """ @@ -290,160 +290,11 @@ def iter(self, *arrays, wrap_atoms=True): yield from self._container.iter(*arrays, wrap_atoms=wrap_atoms) -class TrainingPlots: +class TrainingPlots(StructurePlots): """ Simple interface to plot various properties of the structures inside the given :class:`.TrainingContainer`. """ - __slots__ = "_train" - - def __init__(self, train): - self._train = train - - def _calc_spacegroups(self, symprec=1e-3): - """ - Calculate space groups of all structures. - - Args: - symprec (float): symmetry precision given to spglib - - Returns: - DataFrame: contains columns 'crystal_system' (str) and 'space_group' (int) for each structure - """ - - def get_crystal_system(num): - if num in range(1, 3): - return "triclinic" - elif num in range(3, 16): - return "monoclinic" - elif num in range(16, 75): - return "orthorombic" - elif num in range(75, 143): - return "trigonal" - elif num in range(143, 168): - return "tetragonal" - elif num in range(168, 195): - return "hexagonal" - elif num in range(195, 230): - return "cubic" - - def extract(s): - spg = s.get_symmetry(symprec=symprec).spacegroup["Number"] - return {"space_group": spg, "crystal_system": get_crystal_system(spg)} - - return pd.DataFrame(map(extract, self._train.iter_structures())) - - def cell(self, angle_in_degrees=True): - """ - Plot histograms of cell parameters. - - Plotted are atomic volume, density, cell vector lengths and cell vector angles in separate subplots all on a - log-scale. - - Args: - angle_in_degrees (bool): whether unit for angles is degree or radians - - Returns: - `DataFrame`: contains the plotted information in the columns: - - a: length of first vector - - b: length of second vector - - c: length of third vector - - alpha: angle between first and second vector - - beta: angle between second and third vector - - gamma: angle between third and first vector - - V: volume of the cell - - N: number of atoms in the cell - """ - N = self._train.get_array("length") - C = self._train.get_array("cell") - - def get_angle(cell, idx=0): - return np.arccos( - np.dot(cell[idx], cell[(idx + 1) % 3]) - / np.linalg.norm(cell[idx]) - / np.linalg.norm(cell[(idx + 1) % 3]) - ) - - def extract(n, c): - return { - "a": np.linalg.norm(c[0]), - "b": np.linalg.norm(c[1]), - "c": np.linalg.norm(c[2]), - "alpha": get_angle(c, 0), - "beta": get_angle(c, 1), - "gamma": get_angle(c, 2), - } - - df = pd.DataFrame([extract(n, c) for n, c in zip(N, C)]) - df["V"] = np.linalg.det(C) - df["N"] = N - if angle_in_degrees: - df["alpha"] = np.rad2deg(df["alpha"]) - df["beta"] = np.rad2deg(df["beta"]) - df["gamma"] = np.rad2deg(df["gamma"]) - - plt.subplot(1, 4, 1) - plt.title("Atomic Volume") - plt.hist(df.V / df.N, bins=20, log=True) - plt.xlabel(r"$V$ [$\AA^3$]") - - plt.subplot(1, 4, 2) - plt.title("Density") - plt.hist(df.N / df.V, bins=20, log=True) - plt.xlabel(r"$\rho$ [$\AA^{-3}$]") - - plt.subplot(1, 4, 3) - plt.title("Lattice Vector Lengths") - plt.hist([df.a, df.b, df.c], log=True) - plt.xlabel(r"$a,b,c$ [$\AA$]") - - plt.subplot(1, 4, 4) - plt.title("Lattice Vector Angles") - plt.hist([df.alpha, df.beta, df.gamma], log=True) - if angle_in_degrees: - label = r"$\alpha,\beta,\gamma$ [°]" - else: - label = r"$\alpha,\beta,\gamma$ [rad]" - plt.xlabel(label) - - return df - - def spacegroups(self, symprec=1e-3): - """ - Plot histograms of space groups and crystal systems. - - Spacegroups and crystal systems are plotted in separate subplots. - - Args: - symprec (float): precision of the symmetry search (passed to spglib) - - Returns: - DataFrame: contains two columns "space_group", "crystal_system" - for each structure in `train` - """ - - df = self._calc_spacegroups(symprec=symprec) - plt.subplot(1, 2, 1) - plt.hist(df.space_group, bins=230) - plt.xlabel("Space Group") - - plt.subplot(1, 2, 2) - l, h = np.unique(df.crystal_system, return_counts=True) - sort_key = { - "triclinic": 1, - "monoclinic": 3, - "orthorombic": 16, - "trigonal": 75, - "tetragonal": 143, - "hexagonal": 168, - "cubic": 195, - } - I = np.argsort([sort_key[ll] for ll in l]) - plt.bar(l[I], h[I]) - plt.xlabel("Crystal System") - plt.xticks(rotation=35) - return df - def energy_volume(self, crystal_systems=False): """ Plot volume vs. energy. @@ -458,9 +309,9 @@ def energy_volume(self, crystal_systems=False): also contain space groups and crystal systems of each structure """ - N = self._train.get_array("length") - E = self._train.get_array("energy") / N - C = self._train.get_array("cell") + N = self._store.get_array("length") + E = self._store.get_array("energy") / N + C = self._store.get_array("cell") V = np.linalg.det(C) / N df = pd.DataFrame({"V": V, "E": E}) @@ -478,63 +329,6 @@ def energy_volume(self, crystal_systems=False): return df - def coordination(self, num_shells=4, log=True): - """ - Plot histogram of coordination in neighbor shells. - - Computes one histogram of the number of neighbors in each neighbor shell up to `num_shells` and then plots them - together. - - Args: - num_shells (int): maximum shell to plot - log (float): plot histogram values on a log scale - """ - if not self._train.has_array("shells"): - raise ValueError( - "TrainingContainer contains no neighbor information, call TrainingContainer.get_neighbors first!" - ) - shells = self._train.get_array("shells") - shell_index = ( - shells[np.newaxis, :, :] - == np.arange(1, num_shells + 1)[:, np.newaxis, np.newaxis] - ) - neigh_count = shell_index.sum(axis=-1) - ticks = np.arange(neigh_count.min(), neigh_count.max() + 1) - plt.hist( - neigh_count.T, - bins=ticks - 0.5, - log=True, - label=[f"{i}." for i in range(1, num_shells + 1)], - ) - plt.xticks(ticks) - plt.xlabel("Number of Neighbors") - plt.legend(title="Shell") - plt.title("Neighbor Coordination in Shells") - - def shell_distances(self, num_shells=4): - """ - Plot a violin plot of the neighbor distances in shells up to `num_shells`. - - Args: - num_shells (int): maximum shell to plot - """ - if not self._train.has_array("shells") or not self._train.has_array( - "distances" - ): - raise ValueError( - "TrainingContainer contains no neighbor information, call TrainingContainer.get_neighbors first!" - ) - dists = self._train.get_array("distances") - R = dists.flatten() - shells = self._train.get_array("shells") - S = shells.ravel() - d = pd.DataFrame( - {"distance": R[S < num_shells + 1], "shells": S[S < num_shells + 1]} - ) - sns.violinplot(y=d.shells, x=d.distance, scale="width", orient="h") - plt.xlabel(r"Distance [$\AA$]") - plt.ylabel("Shell") - def forces(self, axis: Optional[int] = None): """ Plot a histogram of all forces. @@ -542,7 +336,7 @@ def forces(self, axis: Optional[int] = None): Args: axis (int, optional): plot only forces along this axis, if not given plot all forces """ - f = self._train.get_array("forces") + f = self._store.get_array("forces") if axis is not None: f = f[:, axis] else: @@ -766,4 +560,6 @@ def plot(self): """ :class:`.TrainingPlots`: plotting interface """ - return TrainingPlots(self) + if self._plot is None: + self._plot = TrainingPlots(self) + return self._plot From 038b8072ec20d5f59c44f615aa8319515b4e03b4 Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Wed, 10 Aug 2022 11:13:49 +0200 Subject: [PATCH 347/434] Correct import --- .../atomistics/atomistics/job/structurestorage.py | 7 ------- .../atomistics/atomistics/job/trainingcontainer.py | 2 +- 2 files changed, 1 insertion(+), 8 deletions(-) delete mode 100644 pyiron_contrib/atomistics/atomistics/job/structurestorage.py diff --git a/pyiron_contrib/atomistics/atomistics/job/structurestorage.py b/pyiron_contrib/atomistics/atomistics/job/structurestorage.py deleted file mode 100644 index 22b11ccbf..000000000 --- a/pyiron_contrib/atomistics/atomistics/job/structurestorage.py +++ /dev/null @@ -1,7 +0,0 @@ -from pyiron_atomistics.atomistics.structure.structurestorage import StructureStorage as StructureStorageBase -from pyiron_base import deprecate - -class StructureStorage(StructureStorageBase): - @deprecate("import from pyiron_atomistics.atomistics.structure.structurestorage instead") - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) diff --git a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py index 0eccddaa8..ad9e6581b 100644 --- a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py +++ b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py @@ -39,9 +39,9 @@ from ase.atoms import Atoms as ASEAtoms -from pyiron_contrib.atomistics.atomistics.job.structurestorage import StructureStorage, StructurePlots from pyiron_atomistics.atomistics.structure.atoms import Atoms from pyiron_atomistics.atomistics.structure.has_structure import HasStructure +from pyiron_atomistics.atomistics.structure.structurestorage import StructureStorage, StructurePlots from pyiron_atomistics.atomistics.structure.neighbors import NeighborsTrajectory from pyiron_base import GenericJob, DataContainer, deprecate From a9c14f0719491db181ba93e7ec9fe601645550b8 Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Wed, 10 Aug 2022 11:37:23 +0200 Subject: [PATCH 348/434] Fix typo --- .../atomistics/atomistics/job/trainingcontainer.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py index ad9e6581b..ac54aeb32 100644 --- a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py +++ b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py @@ -560,6 +560,6 @@ def plot(self): """ :class:`.TrainingPlots`: plotting interface """ - if self._plot is None: - self._plot = TrainingPlots(self) - return self._plot + if self._plots is None: + self._plots = TrainingPlots(self) + return self._plots From 351d284991c78a64ec38a50b564878400d08e178 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Aug 2022 11:07:53 +0000 Subject: [PATCH 349/434] Bump moto from 4.0.0 to 4.0.1 Bumps [moto](https://github.com/spulec/moto) from 4.0.0 to 4.0.1. - [Release notes](https://github.com/spulec/moto/releases) - [Changelog](https://github.com/spulec/moto/blob/master/CHANGELOG.md) - [Commits](https://github.com/spulec/moto/compare/4.0.0...4.0.1) --- updated-dependencies: - dependency-name: moto dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index df1d5f40e..9ae584b95 100644 --- a/setup.py +++ b/setup.py @@ -50,7 +50,7 @@ 'image': ['scikit-image==0.19.3'], 'generic': [ 'boto3==1.24.56', - 'moto==4.0.0' + 'moto==4.0.1' ], }, cmdclass=versioneer.get_cmdclass(), From faf805b7bbccc578c0b0821e19592d7c5b38d565 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Aug 2022 11:07:59 +0000 Subject: [PATCH 350/434] Bump scipy from 1.9.0 to 1.9.1 Bumps [scipy](https://github.com/scipy/scipy) from 1.9.0 to 1.9.1. - [Release notes](https://github.com/scipy/scipy/releases) - [Commits](https://github.com/scipy/scipy/compare/v1.9.0...v1.9.1) --- updated-dependencies: - dependency-name: scipy dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index df1d5f40e..06a15ded6 100644 --- a/setup.py +++ b/setup.py @@ -34,7 +34,7 @@ 'matplotlib==3.5.3', 'numpy==1.23.2', 'pyiron_base==0.5.22', - 'scipy==1.9.0', + 'scipy==1.9.1', 'seaborn==0.11.2', 'pyparsing==3.0.9' ], From 4b9ff6f84833a65f936ac7e082d48f45bcca2bc5 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 29 Aug 2022 11:08:14 +0000 Subject: [PATCH 351/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 9aafcf639..8582ccef9 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -15,4 +15,4 @@ dependencies: - scikit-image =0.19.3 - randspg =0.0.1 - boto3 =1.24.56 -- moto =4.0.0 +- moto =4.0.1 From e9b39f522993323ab7c37fc00595fa1dd7cf3090 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 29 Aug 2022 11:08:48 +0000 Subject: [PATCH 352/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 9aafcf639..8d65a7320 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -10,7 +10,7 @@ dependencies: - pyiron_base =0.5.22 - pyiron_atomistics =0.2.54 - pyparsing =3.0.9 -- scipy =1.9.0 +- scipy =1.9.1 - seaborn =0.11.2 - scikit-image =0.19.3 - randspg =0.0.1 From 130e00ac823bb8922142bcb782470cd09394ed6b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Aug 2022 13:34:56 +0000 Subject: [PATCH 353/434] Bump boto3 from 1.24.56 to 1.24.61 Bumps [boto3](https://github.com/boto/boto3) from 1.24.56 to 1.24.61. - [Release notes](https://github.com/boto/boto3/releases) - [Changelog](https://github.com/boto/boto3/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/boto/boto3/compare/1.24.56...1.24.61) --- updated-dependencies: - dependency-name: boto3 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 9ae584b95..b939f4694 100644 --- a/setup.py +++ b/setup.py @@ -49,7 +49,7 @@ ], 'image': ['scikit-image==0.19.3'], 'generic': [ - 'boto3==1.24.56', + 'boto3==1.24.61', 'moto==4.0.1' ], }, From 2f85d29444ccaaea45eb11cfdafe6bd9e7368568 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 29 Aug 2022 13:35:19 +0000 Subject: [PATCH 354/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 8582ccef9..c3d58dd8d 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -14,5 +14,5 @@ dependencies: - seaborn =0.11.2 - scikit-image =0.19.3 - randspg =0.0.1 -- boto3 =1.24.56 +- boto3 =1.24.61 - moto =4.0.1 From b3f7195abd470260dcb28098a767f47c26da79ca Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Sep 2022 15:35:34 +0000 Subject: [PATCH 355/434] Bump moto from 4.0.1 to 4.0.2 Bumps [moto](https://github.com/spulec/moto) from 4.0.1 to 4.0.2. - [Release notes](https://github.com/spulec/moto/releases) - [Changelog](https://github.com/spulec/moto/blob/master/CHANGELOG.md) - [Commits](https://github.com/spulec/moto/compare/4.0.1...4.0.2) --- updated-dependencies: - dependency-name: moto dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 4471fd603..7b9e4ff02 100644 --- a/setup.py +++ b/setup.py @@ -50,7 +50,7 @@ 'image': ['scikit-image==0.19.3'], 'generic': [ 'boto3==1.24.61', - 'moto==4.0.1' + 'moto==4.0.2' ], }, cmdclass=versioneer.get_cmdclass(), From a8f74134ba997169938cd41f6b0223fed10affaf Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 5 Sep 2022 15:35:55 +0000 Subject: [PATCH 356/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 4feb9bf06..9d1614820 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -15,4 +15,4 @@ dependencies: - scikit-image =0.19.3 - randspg =0.0.1 - boto3 =1.24.61 -- moto =4.0.1 +- moto =4.0.2 From fc8a6940bf02fe14be3dabea7fb5b5c3feeae903 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 6 Sep 2022 04:15:28 +0000 Subject: [PATCH 357/434] Bump boto3 from 1.24.61 to 1.24.66 Bumps [boto3](https://github.com/boto/boto3) from 1.24.61 to 1.24.66. - [Release notes](https://github.com/boto/boto3/releases) - [Changelog](https://github.com/boto/boto3/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/boto/boto3/compare/1.24.61...1.24.66) --- updated-dependencies: - dependency-name: boto3 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 7b9e4ff02..52c6924e8 100644 --- a/setup.py +++ b/setup.py @@ -49,7 +49,7 @@ ], 'image': ['scikit-image==0.19.3'], 'generic': [ - 'boto3==1.24.61', + 'boto3==1.24.66', 'moto==4.0.2' ], }, From 095e0cebed8773eefa0a0be0854677a6b6134825 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Tue, 6 Sep 2022 04:16:26 +0000 Subject: [PATCH 358/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 9d1614820..89413a80b 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -14,5 +14,5 @@ dependencies: - seaborn =0.11.2 - scikit-image =0.19.3 - randspg =0.0.1 -- boto3 =1.24.61 +- boto3 =1.24.66 - moto =4.0.2 From 9c3115fecfab3c2f43317ab31bc8183a1680f40d Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Mon, 12 Sep 2022 08:12:58 +0000 Subject: [PATCH 359/434] Only load job once when copying input --- pyiron_contrib/atomistics/meamfit/meamfit.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pyiron_contrib/atomistics/meamfit/meamfit.py b/pyiron_contrib/atomistics/meamfit/meamfit.py index e07f9649a..b93c139e4 100644 --- a/pyiron_contrib/atomistics/meamfit/meamfit.py +++ b/pyiron_contrib/atomistics/meamfit/meamfit.py @@ -161,11 +161,12 @@ def add_job_to_fitting(self, job_id, time_step_start=0, time_step_end=-1, time_s def _copy_vasprun_xml(self, cwd=None): for job_id in self._calculation_dataframe.index: - self.project.load(job_id).decompress() + job = self.project.load(job_id) + job.decompress() working_directory = self.project.get_job_working_directory(int(job_id)) shutil.copyfile(posixpath.join(working_directory, 'vasprun.xml'), posixpath.join(cwd, 'vasprun_' + str(int(job_id)) + '.xml')) - self.project.load(job_id).compress() + job.compress() @staticmethod def _write_calc_db(calculation_dataframe, file_name="fitdbse", cwd=None): From b42356610549470b82f83b62c940acffda42c714 Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Mon, 12 Sep 2022 08:13:30 +0000 Subject: [PATCH 360/434] Expand doc string when adding training data --- pyiron_contrib/atomistics/meamfit/meamfit.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pyiron_contrib/atomistics/meamfit/meamfit.py b/pyiron_contrib/atomistics/meamfit/meamfit.py index b93c139e4..b3c5b56aa 100644 --- a/pyiron_contrib/atomistics/meamfit/meamfit.py +++ b/pyiron_contrib/atomistics/meamfit/meamfit.py @@ -123,6 +123,7 @@ def write_input(self): def add_job_to_fitting(self, job_id, time_step_start=0, time_step_end=-1, time_step_delta=10, quantity='E0', weight=[1.0, 0.0, 0.0]): """ + Add output of VASP jobs to training data. Args: job_id (int): job_id of the vasp MD job you want to use for potential fitting. @@ -139,8 +140,8 @@ def add_job_to_fitting(self, job_id, time_step_start=0, time_step_end=-1, time_s More information on these parameters are available in the MeamFit user manual- https://www.scd.stfc.ac.uk/Pages/MEAMfit-v2.aspx - Returns: - + Raises: + ValueError: if given job is a not a Vasp job """ if time_step_end == -1: time_step_end = np.shape(self.project.inspect(int(job_id))['output/generic/cells'])[0]-1 From 86c8d0eb7b3985f9a1b08eac14b2e1fa6470fec9 Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Mon, 12 Sep 2022 08:13:48 +0000 Subject: [PATCH 361/434] Add error message --- pyiron_contrib/atomistics/meamfit/meamfit.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyiron_contrib/atomistics/meamfit/meamfit.py b/pyiron_contrib/atomistics/meamfit/meamfit.py index b3c5b56aa..e9d679950 100644 --- a/pyiron_contrib/atomistics/meamfit/meamfit.py +++ b/pyiron_contrib/atomistics/meamfit/meamfit.py @@ -103,7 +103,7 @@ def set_input_to_read_only(self): def validate_ready_to_run(self): if self._calculation_dataframe.empty: - raise ValueError() + raise ValueError("No training data added yet!") def write_input(self): """ From 2c587f0d8e3e866264da8293cae0013b11fd8d42 Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Mon, 12 Sep 2022 08:14:16 +0000 Subject: [PATCH 362/434] Raise error when training job is not Vasp --- pyiron_contrib/atomistics/meamfit/meamfit.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pyiron_contrib/atomistics/meamfit/meamfit.py b/pyiron_contrib/atomistics/meamfit/meamfit.py index e9d679950..f4c187894 100644 --- a/pyiron_contrib/atomistics/meamfit/meamfit.py +++ b/pyiron_contrib/atomistics/meamfit/meamfit.py @@ -143,6 +143,9 @@ def add_job_to_fitting(self, job_id, time_step_start=0, time_step_end=-1, time_s Raises: ValueError: if given job is a not a Vasp job """ + job = self.project.load(job_id) + if job.__name__ != "Vasp": + raise ValueError("Training data must be from VASP jobs!") if time_step_end == -1: time_step_end = np.shape(self.project.inspect(int(job_id))['output/generic/cells'])[0]-1 if int(job_id) in [int(job) for job in self._calculation_dataframe.index]: From e8659bf9d5a04db0c18b26f4e39ff23b0694dd46 Mon Sep 17 00:00:00 2001 From: usaikia <76955804+usaikia@users.noreply.github.com> Date: Mon, 12 Sep 2022 11:10:54 +0200 Subject: [PATCH 363/434] remove link and add reference remove link to manual as it is not available publicly and add reference to MeamFit paper. --- pyiron_contrib/atomistics/meamfit/meamfit.py | 21 +++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/pyiron_contrib/atomistics/meamfit/meamfit.py b/pyiron_contrib/atomistics/meamfit/meamfit.py index f4c187894..1732b9b4f 100644 --- a/pyiron_contrib/atomistics/meamfit/meamfit.py +++ b/pyiron_contrib/atomistics/meamfit/meamfit.py @@ -93,7 +93,24 @@ def random_seed(self): @random_seed.setter def random_seed(self, seed): self.input['SEED'] = seed - + + @property + def publication(self): + return { + "MeamFit": [ + { + "title": "MEAMfit: A reference-free modified embedded atom method (RF-MEAM) energy and force-fitting code", + "journal": "Computer Physics Communications", + "volume": "196", + "year": "2015", + "doi": "10.1016/j.cpc.2015.05.016", + "url": "https://doi.org/10.1016/j.cpc.2015.05.016", + "author": ["Andrew Ian Duff", "M.W. Finnis", "Philippe Maugis", "Barend J. Thijsse", "Marcel H.F. Sluiter"], + }, + ] + } + + def set_input_to_read_only(self): """ This function enforces read-only mode for the input classes, but it has to be implement in the individual @@ -137,8 +154,6 @@ def add_job_to_fitting(self, job_id, time_step_start=0, time_step_end=-1, time_s Note that only the first two letters are in fact read in by MEAMfit, so that it is sufficient to write ‘Fr’ or ‘Fo’ for the second and third cases respectively. weight (list): default is [1.0, 0.0, 0.0]. - - More information on these parameters are available in the MeamFit user manual- https://www.scd.stfc.ac.uk/Pages/MEAMfit-v2.aspx Raises: ValueError: if given job is a not a Vasp job From be21084f4bc5789159efa0f6f9bdeebed1e9f50e Mon Sep 17 00:00:00 2001 From: usaikia <76955804+usaikia@users.noreply.github.com> Date: Mon, 12 Sep 2022 11:15:46 +0200 Subject: [PATCH 364/434] Update __init__.py --- pyiron_contrib/__init__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pyiron_contrib/__init__.py b/pyiron_contrib/__init__.py index 7f2d3d6f7..84d1f99e5 100644 --- a/pyiron_contrib/__init__.py +++ b/pyiron_contrib/__init__.py @@ -44,6 +44,7 @@ JOB_CLASS_DICT['Atomicrex'] = 'pyiron_contrib.atomistics.atomicrex.atomicrex_job' JOB_CLASS_DICT['StructureMasterInt'] = 'pyiron_contrib.atomistics.atomistics.job.structurelistmasterinteractive' JOB_CLASS_DICT['StorageJob'] = 'pyiron_contrib.RDM.storagejob' +JOB_CLASS_DICT['PacemakerJob'] = 'pyiron_contrib.atomistics.pacemaker.job' JOB_CLASS_DICT['MeamFit'] = 'pyiron_contrib.atomistics.meamfit.meamfit' From 6becaf8338425425755c1c3996d290cd9a8a7a84 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Sep 2022 11:06:10 +0000 Subject: [PATCH 365/434] Bump boto3 from 1.24.66 to 1.24.70 Bumps [boto3](https://github.com/boto/boto3) from 1.24.66 to 1.24.70. - [Release notes](https://github.com/boto/boto3/releases) - [Changelog](https://github.com/boto/boto3/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/boto/boto3/compare/1.24.66...1.24.70) --- updated-dependencies: - dependency-name: boto3 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 52c6924e8..848859a53 100644 --- a/setup.py +++ b/setup.py @@ -49,7 +49,7 @@ ], 'image': ['scikit-image==0.19.3'], 'generic': [ - 'boto3==1.24.66', + 'boto3==1.24.70', 'moto==4.0.2' ], }, From 40594ff728723c5fcf48fbdfadead83ac4161a6f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Sep 2022 11:06:18 +0000 Subject: [PATCH 366/434] Bump pyiron-base from 0.5.22 to 0.5.23 Bumps [pyiron-base](https://github.com/pyiron/pyiron_base) from 0.5.22 to 0.5.23. - [Release notes](https://github.com/pyiron/pyiron_base/releases) - [Changelog](https://github.com/pyiron/pyiron_base/blob/master/CHANGELOG.md) - [Commits](https://github.com/pyiron/pyiron_base/compare/pyiron_base-0.5.22...pyiron_base-0.5.23) --- updated-dependencies: - dependency-name: pyiron-base dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 52c6924e8..4dea23e87 100644 --- a/setup.py +++ b/setup.py @@ -33,7 +33,7 @@ install_requires=[ 'matplotlib==3.5.3', 'numpy==1.23.2', - 'pyiron_base==0.5.22', + 'pyiron_base==0.5.23', 'scipy==1.9.1', 'seaborn==0.11.2', 'pyparsing==3.0.9' From aebd16e6c5eef2729e9fe480098591ce10f5183e Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 12 Sep 2022 11:06:32 +0000 Subject: [PATCH 367/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 89413a80b..d785ab30e 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -14,5 +14,5 @@ dependencies: - seaborn =0.11.2 - scikit-image =0.19.3 - randspg =0.0.1 -- boto3 =1.24.66 +- boto3 =1.24.70 - moto =4.0.2 From 48e279c1e05228a96e8e7cda09615e5e80e62ccf Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 12 Sep 2022 11:07:01 +0000 Subject: [PATCH 368/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 89413a80b..7546bfb27 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -7,7 +7,7 @@ dependencies: - codacy-coverage - matplotlib =3.5.3 - numpy =1.23.2 -- pyiron_base =0.5.22 +- pyiron_base =0.5.23 - pyiron_atomistics =0.2.54 - pyparsing =3.0.9 - scipy =1.9.1 From 83b1fef24f598d50445069a497764902dd32a60b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Sep 2022 14:54:56 +0000 Subject: [PATCH 369/434] Bump seaborn from 0.11.2 to 0.12.0 Bumps [seaborn](https://github.com/mwaskom/seaborn) from 0.11.2 to 0.12.0. - [Release notes](https://github.com/mwaskom/seaborn/releases) - [Commits](https://github.com/mwaskom/seaborn/compare/v0.11.2...v0.12.0) --- updated-dependencies: - dependency-name: seaborn dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 4dea23e87..32e3ebb04 100644 --- a/setup.py +++ b/setup.py @@ -35,7 +35,7 @@ 'numpy==1.23.2', 'pyiron_base==0.5.23', 'scipy==1.9.1', - 'seaborn==0.11.2', + 'seaborn==0.12.0', 'pyparsing==3.0.9' ], extras_require={ From 51d70448f9a75928cc1c15b5495c4bdf1802769a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Sep 2022 14:54:57 +0000 Subject: [PATCH 370/434] Bump pyiron-atomistics from 0.2.54 to 0.2.55 Bumps [pyiron-atomistics](https://github.com/pyiron/pyiron_atomistics) from 0.2.54 to 0.2.55. - [Release notes](https://github.com/pyiron/pyiron_atomistics/releases) - [Changelog](https://github.com/pyiron/pyiron_atomistics/blob/master/CHANGELOG.md) - [Commits](https://github.com/pyiron/pyiron_atomistics/compare/pyiron_atomistics-0.2.54...pyiron_atomistics-0.2.55) --- updated-dependencies: - dependency-name: pyiron-atomistics dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 4dea23e87..1bfb59bba 100644 --- a/setup.py +++ b/setup.py @@ -41,7 +41,7 @@ extras_require={ 'atomistic': [ 'ase==3.22.1', - 'pyiron_atomistics==0.2.54', + 'pyiron_atomistics==0.2.55', ], 'fenics': [ 'fenics==2019.1.0', From 65057c51a8d7fa1cedb7a990a1cc58e793d901b8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Sep 2022 14:54:58 +0000 Subject: [PATCH 371/434] Bump numpy from 1.23.2 to 1.23.3 Bumps [numpy](https://github.com/numpy/numpy) from 1.23.2 to 1.23.3. - [Release notes](https://github.com/numpy/numpy/releases) - [Changelog](https://github.com/numpy/numpy/blob/main/doc/RELEASE_WALKTHROUGH.rst) - [Commits](https://github.com/numpy/numpy/compare/v1.23.2...v1.23.3) --- updated-dependencies: - dependency-name: numpy dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 4dea23e87..0c5977542 100644 --- a/setup.py +++ b/setup.py @@ -32,7 +32,7 @@ packages=find_packages(exclude=["*tests*"]), install_requires=[ 'matplotlib==3.5.3', - 'numpy==1.23.2', + 'numpy==1.23.3', 'pyiron_base==0.5.23', 'scipy==1.9.1', 'seaborn==0.11.2', From 786f99122a0c0ce266c8104f6212cd581107d7b3 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 12 Sep 2022 14:55:19 +0000 Subject: [PATCH 372/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 7546bfb27..979838828 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -11,7 +11,7 @@ dependencies: - pyiron_atomistics =0.2.54 - pyparsing =3.0.9 - scipy =1.9.1 -- seaborn =0.11.2 +- seaborn =0.12.0 - scikit-image =0.19.3 - randspg =0.0.1 - boto3 =1.24.66 From 0eefb4067ce40a81802a9dc4b6fe3226efda8b51 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 12 Sep 2022 14:55:19 +0000 Subject: [PATCH 373/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 7546bfb27..88f987579 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -6,7 +6,7 @@ dependencies: - coverage - codacy-coverage - matplotlib =3.5.3 -- numpy =1.23.2 +- numpy =1.23.3 - pyiron_base =0.5.23 - pyiron_atomistics =0.2.54 - pyparsing =3.0.9 From 372a9a9464df43031e2dfaa84c54ee4b82de1d83 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 12 Sep 2022 14:56:13 +0000 Subject: [PATCH 374/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 7546bfb27..7c5e6f734 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -8,7 +8,7 @@ dependencies: - matplotlib =3.5.3 - numpy =1.23.2 - pyiron_base =0.5.23 -- pyiron_atomistics =0.2.54 +- pyiron_atomistics =0.2.55 - pyparsing =3.0.9 - scipy =1.9.1 - seaborn =0.11.2 From 71bdfa0e248908bac1a9ea1af232844b07b2409b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 18 Sep 2022 14:56:04 +0000 Subject: [PATCH 375/434] Bump moto from 4.0.2 to 4.0.3 Bumps [moto](https://github.com/spulec/moto) from 4.0.2 to 4.0.3. - [Release notes](https://github.com/spulec/moto/releases) - [Changelog](https://github.com/spulec/moto/blob/master/CHANGELOG.md) - [Commits](https://github.com/spulec/moto/compare/4.0.2...4.0.3) --- updated-dependencies: - dependency-name: moto dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 3fbf0d24e..c9f58edbf 100644 --- a/setup.py +++ b/setup.py @@ -50,7 +50,7 @@ 'image': ['scikit-image==0.19.3'], 'generic': [ 'boto3==1.24.70', - 'moto==4.0.2' + 'moto==4.0.3' ], }, cmdclass=versioneer.get_cmdclass(), From 6d6dc33e283167a91009d8295fcf5c3cffefb109 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Sun, 18 Sep 2022 15:28:18 +0000 Subject: [PATCH 376/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 891f9e574..6aead2422 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -15,4 +15,4 @@ dependencies: - scikit-image =0.19.3 - randspg =0.0.1 - boto3 =1.24.70 -- moto =4.0.2 +- moto =4.0.3 From 2e7c0819a507d9de995cbb9cd75aadb850295a09 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Sep 2022 11:10:36 +0000 Subject: [PATCH 377/434] Bump matplotlib from 3.5.3 to 3.6.0 Bumps [matplotlib](https://github.com/matplotlib/matplotlib) from 3.5.3 to 3.6.0. - [Release notes](https://github.com/matplotlib/matplotlib/releases) - [Commits](https://github.com/matplotlib/matplotlib/compare/v3.5.3...v3.6.0) --- updated-dependencies: - dependency-name: matplotlib dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index c9f58edbf..99c7e2f30 100644 --- a/setup.py +++ b/setup.py @@ -31,7 +31,7 @@ keywords='pyiron', packages=find_packages(exclude=["*tests*"]), install_requires=[ - 'matplotlib==3.5.3', + 'matplotlib==3.6.0', 'numpy==1.23.3', 'pyiron_base==0.5.23', 'scipy==1.9.1', From d58c666a444074202c2542f55c8e92388fcca3a4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Sep 2022 11:10:46 +0000 Subject: [PATCH 378/434] Bump pyiron-atomistics from 0.2.55 to 0.2.56 Bumps [pyiron-atomistics](https://github.com/pyiron/pyiron_atomistics) from 0.2.55 to 0.2.56. - [Release notes](https://github.com/pyiron/pyiron_atomistics/releases) - [Changelog](https://github.com/pyiron/pyiron_atomistics/blob/master/CHANGELOG.md) - [Commits](https://github.com/pyiron/pyiron_atomistics/compare/pyiron_atomistics-0.2.55...pyiron_atomistics-0.2.56) --- updated-dependencies: - dependency-name: pyiron-atomistics dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index c9f58edbf..9d9849e49 100644 --- a/setup.py +++ b/setup.py @@ -41,7 +41,7 @@ extras_require={ 'atomistic': [ 'ase==3.22.1', - 'pyiron_atomistics==0.2.55', + 'pyiron_atomistics==0.2.56', ], 'fenics': [ 'fenics==2019.1.0', From 7352a6366df46b14bf88cf27b1b0b1e6ef0d49cc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Sep 2022 11:10:52 +0000 Subject: [PATCH 379/434] Bump boto3 from 1.24.70 to 1.24.75 Bumps [boto3](https://github.com/boto/boto3) from 1.24.70 to 1.24.75. - [Release notes](https://github.com/boto/boto3/releases) - [Changelog](https://github.com/boto/boto3/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/boto/boto3/compare/1.24.70...1.24.75) --- updated-dependencies: - dependency-name: boto3 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index c9f58edbf..88d009e58 100644 --- a/setup.py +++ b/setup.py @@ -49,7 +49,7 @@ ], 'image': ['scikit-image==0.19.3'], 'generic': [ - 'boto3==1.24.70', + 'boto3==1.24.75', 'moto==4.0.3' ], }, From 0d7c9b16919b4f1e6dbc50277e8dd79cdd8a9281 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 19 Sep 2022 11:10:56 +0000 Subject: [PATCH 380/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 6aead2422..787150ef1 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -5,7 +5,7 @@ dependencies: - coveralls - coverage - codacy-coverage -- matplotlib =3.5.3 +- matplotlib =3.6.0 - numpy =1.23.3 - pyiron_base =0.5.23 - pyiron_atomistics =0.2.55 From a0747e2b3c67159e3b62154aa220c6f299041529 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 19 Sep 2022 11:11:07 +0000 Subject: [PATCH 381/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 6aead2422..5a0c73b24 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -8,7 +8,7 @@ dependencies: - matplotlib =3.5.3 - numpy =1.23.3 - pyiron_base =0.5.23 -- pyiron_atomistics =0.2.55 +- pyiron_atomistics =0.2.56 - pyparsing =3.0.9 - scipy =1.9.1 - seaborn =0.12.0 From 65c183ef930761adf16b7cdb81956146242649d7 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 19 Sep 2022 11:12:37 +0000 Subject: [PATCH 382/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 6aead2422..3369fff56 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -14,5 +14,5 @@ dependencies: - seaborn =0.12.0 - scikit-image =0.19.3 - randspg =0.0.1 -- boto3 =1.24.70 +- boto3 =1.24.75 - moto =4.0.3 From 5c4886c7e86335dcdae05c6212b8885b9d3abcc1 Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Thu, 22 Sep 2022 11:37:58 +0200 Subject: [PATCH 383/434] Mlip: Raise error when accessing potential on unfinished job --- pyiron_contrib/atomistics/mlip/mlip.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pyiron_contrib/atomistics/mlip/mlip.py b/pyiron_contrib/atomistics/mlip/mlip.py index 9af8cb5b4..72e26670d 100644 --- a/pyiron_contrib/atomistics/mlip/mlip.py +++ b/pyiron_contrib/atomistics/mlip/mlip.py @@ -112,6 +112,8 @@ def potential_dataframe(self, elements=None): "pair_coeff * *\n" ]] }) + else: + raise ValueError(f"Potential only available after job is finished, not {self.status}!") @property def potential(self): From 0d28e1688065df066b91d2c51effa1eb6171e423 Mon Sep 17 00:00:00 2001 From: Marvin Poul Date: Thu, 22 Sep 2022 11:40:07 +0200 Subject: [PATCH 384/434] TrainingContainer: Check for empty pressures --- pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py index ac54aeb32..017eaab0a 100644 --- a/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py +++ b/pyiron_contrib/atomistics/atomistics/job/trainingcontainer.py @@ -403,7 +403,7 @@ def include_job(self, job, iteration_step=-1): pp = job["output/generic/stresses"] if pp is None: pp = job.output.pressures - if pp is not None: + if pp is not None and len(pp) > 0: stress = pp[iteration_step] else: stress = None From 294ef56f021c98ab598ecf693400de6d9ad8971b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 26 Sep 2022 11:08:31 +0000 Subject: [PATCH 385/434] Bump boto3 from 1.24.75 to 1.24.80 Bumps [boto3](https://github.com/boto/boto3) from 1.24.75 to 1.24.80. - [Release notes](https://github.com/boto/boto3/releases) - [Changelog](https://github.com/boto/boto3/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/boto/boto3/compare/1.24.75...1.24.80) --- updated-dependencies: - dependency-name: boto3 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 3a497e449..9d7cfacb1 100644 --- a/setup.py +++ b/setup.py @@ -49,7 +49,7 @@ ], 'image': ['scikit-image==0.19.3'], 'generic': [ - 'boto3==1.24.75', + 'boto3==1.24.80', 'moto==4.0.3' ], }, From 20942c18dbdb5d35e758920aee86b43896c73280 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 26 Sep 2022 11:09:31 +0000 Subject: [PATCH 386/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index c1a777326..6d56e4b72 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -14,5 +14,5 @@ dependencies: - seaborn =0.12.0 - scikit-image =0.19.3 - randspg =0.0.1 -- boto3 =1.24.75 +- boto3 =1.24.80 - moto =4.0.3 From 3e4952264d497d9a730249f8bf6c5b2064a680ea Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 26 Sep 2022 13:06:48 +0000 Subject: [PATCH 387/434] Bump moto from 4.0.3 to 4.0.5 Bumps [moto](https://github.com/spulec/moto) from 4.0.3 to 4.0.5. - [Release notes](https://github.com/spulec/moto/releases) - [Changelog](https://github.com/spulec/moto/blob/master/CHANGELOG.md) - [Commits](https://github.com/spulec/moto/compare/4.0.3...4.0.5) --- updated-dependencies: - dependency-name: moto dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 9d7cfacb1..1a7a9f4e5 100644 --- a/setup.py +++ b/setup.py @@ -50,7 +50,7 @@ 'image': ['scikit-image==0.19.3'], 'generic': [ 'boto3==1.24.80', - 'moto==4.0.3' + 'moto==4.0.5' ], }, cmdclass=versioneer.get_cmdclass(), From b9b3b58da1df2836ffcf51d5cb11ed5359678436 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 26 Sep 2022 13:07:10 +0000 Subject: [PATCH 388/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 6d56e4b72..4f8c4bbbd 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -15,4 +15,4 @@ dependencies: - scikit-image =0.19.3 - randspg =0.0.1 - boto3 =1.24.80 -- moto =4.0.3 +- moto =4.0.5 From c976010c376fae01c1aaf94c0b4b85e1b902bdc2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Oct 2022 11:08:21 +0000 Subject: [PATCH 389/434] Bump moto from 4.0.5 to 4.0.6 Bumps [moto](https://github.com/spulec/moto) from 4.0.5 to 4.0.6. - [Release notes](https://github.com/spulec/moto/releases) - [Changelog](https://github.com/spulec/moto/blob/master/CHANGELOG.md) - [Commits](https://github.com/spulec/moto/compare/4.0.5...4.0.6) --- updated-dependencies: - dependency-name: moto dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 1a7a9f4e5..7ef2899f2 100644 --- a/setup.py +++ b/setup.py @@ -50,7 +50,7 @@ 'image': ['scikit-image==0.19.3'], 'generic': [ 'boto3==1.24.80', - 'moto==4.0.5' + 'moto==4.0.6' ], }, cmdclass=versioneer.get_cmdclass(), From 99be5a2a481310e41f4b26683124190c6757b8a6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Oct 2022 11:08:28 +0000 Subject: [PATCH 390/434] Bump pyiron-base from 0.5.23 to 0.5.24 Bumps [pyiron-base](https://github.com/pyiron/pyiron_base) from 0.5.23 to 0.5.24. - [Release notes](https://github.com/pyiron/pyiron_base/releases) - [Changelog](https://github.com/pyiron/pyiron_base/blob/master/CHANGELOG.md) - [Commits](https://github.com/pyiron/pyiron_base/compare/pyiron_base-0.5.23...pyiron_base-0.5.24) --- updated-dependencies: - dependency-name: pyiron-base dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 1a7a9f4e5..9a844bc65 100644 --- a/setup.py +++ b/setup.py @@ -33,7 +33,7 @@ install_requires=[ 'matplotlib==3.6.0', 'numpy==1.23.3', - 'pyiron_base==0.5.23', + 'pyiron_base==0.5.24', 'scipy==1.9.1', 'seaborn==0.12.0', 'pyparsing==3.0.9' From 7066aff3c8a6c8653a8a23627ecb70e7da01aeeb Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 3 Oct 2022 11:22:03 +0000 Subject: [PATCH 391/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 4f8c4bbbd..cf46ea53c 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -15,4 +15,4 @@ dependencies: - scikit-image =0.19.3 - randspg =0.0.1 - boto3 =1.24.80 -- moto =4.0.5 +- moto =4.0.6 From de9d36285ec43880cd045b67537f16406fe03853 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 3 Oct 2022 11:23:24 +0000 Subject: [PATCH 392/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 4f8c4bbbd..07bb4fb74 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -7,7 +7,7 @@ dependencies: - codacy-coverage - matplotlib =3.6.0 - numpy =1.23.3 -- pyiron_base =0.5.23 +- pyiron_base =0.5.24 - pyiron_atomistics =0.2.56 - pyparsing =3.0.9 - scipy =1.9.1 From 3bf0a13b655bb9a975eb968341bfde62f448d3ab Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Oct 2022 12:57:05 +0000 Subject: [PATCH 393/434] Bump pyiron-atomistics from 0.2.56 to 0.2.57 Bumps [pyiron-atomistics](https://github.com/pyiron/pyiron_atomistics) from 0.2.56 to 0.2.57. - [Release notes](https://github.com/pyiron/pyiron_atomistics/releases) - [Changelog](https://github.com/pyiron/pyiron_atomistics/blob/master/CHANGELOG.md) - [Commits](https://github.com/pyiron/pyiron_atomistics/compare/pyiron_atomistics-0.2.56...pyiron_atomistics-0.2.57) --- updated-dependencies: - dependency-name: pyiron-atomistics dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 9a844bc65..383870511 100644 --- a/setup.py +++ b/setup.py @@ -41,7 +41,7 @@ extras_require={ 'atomistic': [ 'ase==3.22.1', - 'pyiron_atomistics==0.2.56', + 'pyiron_atomistics==0.2.57', ], 'fenics': [ 'fenics==2019.1.0', From f6538a4abd1bda1df5c39d283ccb2f573a75fe75 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 3 Oct 2022 13:03:48 +0000 Subject: [PATCH 394/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 07bb4fb74..c8655ace4 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -8,7 +8,7 @@ dependencies: - matplotlib =3.6.0 - numpy =1.23.3 - pyiron_base =0.5.24 -- pyiron_atomistics =0.2.56 +- pyiron_atomistics =0.2.57 - pyparsing =3.0.9 - scipy =1.9.1 - seaborn =0.12.0 From 17a692d0f0d9e1dc452d61591fda16fa370285ba Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Oct 2022 21:00:31 +0000 Subject: [PATCH 395/434] Bump boto3 from 1.24.80 to 1.24.84 Bumps [boto3](https://github.com/boto/boto3) from 1.24.80 to 1.24.84. - [Release notes](https://github.com/boto/boto3/releases) - [Changelog](https://github.com/boto/boto3/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/boto/boto3/compare/1.24.80...1.24.84) --- updated-dependencies: - dependency-name: boto3 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 6a5bce164..bcab41abd 100644 --- a/setup.py +++ b/setup.py @@ -49,7 +49,7 @@ ], 'image': ['scikit-image==0.19.3'], 'generic': [ - 'boto3==1.24.80', + 'boto3==1.24.85', 'moto==4.0.6' ], }, From 39c2a1125b40929851a5c44d780c18a42c9df07f Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 3 Oct 2022 21:01:29 +0000 Subject: [PATCH 396/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 93d6a5ce4..cece2aa5d 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -14,5 +14,5 @@ dependencies: - seaborn =0.12.0 - scikit-image =0.19.3 - randspg =0.0.1 -- boto3 =1.24.80 +- boto3 =1.24.84 - moto =4.0.6 From 34db09c0b32930475703d6fe2003718e61bf400e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Oct 2022 11:06:37 +0000 Subject: [PATCH 397/434] Bump moto from 4.0.6 to 4.0.7 Bumps [moto](https://github.com/spulec/moto) from 4.0.6 to 4.0.7. - [Release notes](https://github.com/spulec/moto/releases) - [Changelog](https://github.com/spulec/moto/blob/master/CHANGELOG.md) - [Commits](https://github.com/spulec/moto/compare/4.0.6...4.0.7) --- updated-dependencies: - dependency-name: moto dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index bcab41abd..9c78ed4c9 100644 --- a/setup.py +++ b/setup.py @@ -50,7 +50,7 @@ 'image': ['scikit-image==0.19.3'], 'generic': [ 'boto3==1.24.85', - 'moto==4.0.6' + 'moto==4.0.7' ], }, cmdclass=versioneer.get_cmdclass(), From c612c25613da33cc74f5045b8c7c67aed7989c4d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Oct 2022 11:06:53 +0000 Subject: [PATCH 398/434] Bump pyiron-base from 0.5.24 to 0.5.25 Bumps [pyiron-base](https://github.com/pyiron/pyiron_base) from 0.5.24 to 0.5.25. - [Release notes](https://github.com/pyiron/pyiron_base/releases) - [Changelog](https://github.com/pyiron/pyiron_base/blob/master/CHANGELOG.md) - [Commits](https://github.com/pyiron/pyiron_base/compare/pyiron_base-0.5.24...pyiron_base-0.5.25) --- updated-dependencies: - dependency-name: pyiron-base dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index bcab41abd..dcc95043d 100644 --- a/setup.py +++ b/setup.py @@ -33,7 +33,7 @@ install_requires=[ 'matplotlib==3.6.0', 'numpy==1.23.3', - 'pyiron_base==0.5.24', + 'pyiron_base==0.5.25', 'scipy==1.9.1', 'seaborn==0.12.0', 'pyparsing==3.0.9' From 5ad3f72310bd640c78c5e09fe6f7b24c20c4d72c Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 10 Oct 2022 11:06:59 +0000 Subject: [PATCH 399/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index cece2aa5d..3fc6ac0d0 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -15,4 +15,4 @@ dependencies: - scikit-image =0.19.3 - randspg =0.0.1 - boto3 =1.24.84 -- moto =4.0.6 +- moto =4.0.7 From cf7931334b6c0bcc87d645af6601da64ea310b0d Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 10 Oct 2022 11:14:05 +0000 Subject: [PATCH 400/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index cece2aa5d..8aabc17a7 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -7,7 +7,7 @@ dependencies: - codacy-coverage - matplotlib =3.6.0 - numpy =1.23.3 -- pyiron_base =0.5.24 +- pyiron_base =0.5.25 - pyiron_atomistics =0.2.57 - pyparsing =3.0.9 - scipy =1.9.1 From 893f18aac80fe4a2743712f13536b473988fd6f8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Oct 2022 13:10:33 +0000 Subject: [PATCH 401/434] Bump boto3 from 1.24.85 to 1.24.89 Bumps [boto3](https://github.com/boto/boto3) from 1.24.85 to 1.24.89. - [Release notes](https://github.com/boto/boto3/releases) - [Changelog](https://github.com/boto/boto3/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/boto/boto3/compare/1.24.85...1.24.89) --- updated-dependencies: - dependency-name: boto3 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 4f80f46e0..7df69fccc 100644 --- a/setup.py +++ b/setup.py @@ -49,7 +49,7 @@ ], 'image': ['scikit-image==0.19.3'], 'generic': [ - 'boto3==1.24.85', + 'boto3==1.24.89', 'moto==4.0.7' ], }, From fa019f73be0a585c291ddf72b07cb339e1f9b979 Mon Sep 17 00:00:00 2001 From: Jan Janssen Date: Mon, 10 Oct 2022 07:17:43 -0600 Subject: [PATCH 402/434] Update environment.yml --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index c4ca1f373..3d08a5701 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -14,5 +14,5 @@ dependencies: - seaborn =0.12.0 - scikit-image =0.19.3 - randspg =0.0.1 -- boto3 =1.24.84 +- boto3 =1.24.89 - moto =4.0.7 From 0e8f779520f070f2a8ebc885a139f6949c7c0490 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 11 Oct 2022 14:51:05 +0000 Subject: [PATCH 403/434] Bump matplotlib from 3.6.0 to 3.6.1 Bumps [matplotlib](https://github.com/matplotlib/matplotlib) from 3.6.0 to 3.6.1. - [Release notes](https://github.com/matplotlib/matplotlib/releases) - [Commits](https://github.com/matplotlib/matplotlib/compare/v3.6.0...v3.6.1) --- updated-dependencies: - dependency-name: matplotlib dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 7df69fccc..03a7f2ea0 100644 --- a/setup.py +++ b/setup.py @@ -31,7 +31,7 @@ keywords='pyiron', packages=find_packages(exclude=["*tests*"]), install_requires=[ - 'matplotlib==3.6.0', + 'matplotlib==3.6.1', 'numpy==1.23.3', 'pyiron_base==0.5.25', 'scipy==1.9.1', From d4cc8b497537630569bcfd1839566bb8c4bc3b3e Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Tue, 11 Oct 2022 14:51:52 +0000 Subject: [PATCH 404/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 3d08a5701..a08a9e26a 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -5,7 +5,7 @@ dependencies: - coveralls - coverage - codacy-coverage -- matplotlib =3.6.0 +- matplotlib =3.6.1 - numpy =1.23.3 - pyiron_base =0.5.25 - pyiron_atomistics =0.2.57 From f6edb6a5f7edae418d77cf868b6695be5a46add0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Oct 2022 11:15:27 +0000 Subject: [PATCH 405/434] Bump boto3 from 1.24.89 to 1.24.91 Bumps [boto3](https://github.com/boto/boto3) from 1.24.89 to 1.24.91. - [Release notes](https://github.com/boto/boto3/releases) - [Changelog](https://github.com/boto/boto3/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/boto/boto3/compare/1.24.89...1.24.91) --- updated-dependencies: - dependency-name: boto3 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 03a7f2ea0..0810d940b 100644 --- a/setup.py +++ b/setup.py @@ -49,7 +49,7 @@ ], 'image': ['scikit-image==0.19.3'], 'generic': [ - 'boto3==1.24.89', + 'boto3==1.24.91', 'moto==4.0.7' ], }, From a383139082d332b7b6c8ee142fbec1c0c6a36ebe Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 17 Oct 2022 11:15:44 +0000 Subject: [PATCH 406/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index a08a9e26a..cbdc2f355 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -14,5 +14,5 @@ dependencies: - seaborn =0.12.0 - scikit-image =0.19.3 - randspg =0.0.1 -- boto3 =1.24.89 +- boto3 =1.24.91 - moto =4.0.7 From e5ac413b6f2c0afc959e7e393f2c7666a4409efc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Oct 2022 11:15:45 +0000 Subject: [PATCH 407/434] Bump pyiron-base from 0.5.25 to 0.5.26 Bumps [pyiron-base](https://github.com/pyiron/pyiron_base) from 0.5.25 to 0.5.26. - [Release notes](https://github.com/pyiron/pyiron_base/releases) - [Changelog](https://github.com/pyiron/pyiron_base/blob/master/CHANGELOG.md) - [Commits](https://github.com/pyiron/pyiron_base/compare/pyiron_base-0.5.25...pyiron_base-0.5.26) --- updated-dependencies: - dependency-name: pyiron-base dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 03a7f2ea0..64d5a0698 100644 --- a/setup.py +++ b/setup.py @@ -33,7 +33,7 @@ install_requires=[ 'matplotlib==3.6.1', 'numpy==1.23.3', - 'pyiron_base==0.5.25', + 'pyiron_base==0.5.26', 'scipy==1.9.1', 'seaborn==0.12.0', 'pyparsing==3.0.9' From 37c1a09c3a6fb8f0d064097c30878c0ea5c90659 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 17 Oct 2022 11:23:27 +0000 Subject: [PATCH 408/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index a08a9e26a..fad8e9d36 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -7,7 +7,7 @@ dependencies: - codacy-coverage - matplotlib =3.6.1 - numpy =1.23.3 -- pyiron_base =0.5.25 +- pyiron_base =0.5.26 - pyiron_atomistics =0.2.57 - pyparsing =3.0.9 - scipy =1.9.1 From 5004af65b345d6dcec2fee9014bbcc8f27cc2804 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Oct 2022 12:39:08 +0000 Subject: [PATCH 409/434] Bump pyiron-atomistics from 0.2.57 to 0.2.58 Bumps [pyiron-atomistics](https://github.com/pyiron/pyiron_atomistics) from 0.2.57 to 0.2.58. - [Release notes](https://github.com/pyiron/pyiron_atomistics/releases) - [Changelog](https://github.com/pyiron/pyiron_atomistics/blob/master/CHANGELOG.md) - [Commits](https://github.com/pyiron/pyiron_atomistics/compare/pyiron_atomistics-0.2.57...pyiron_atomistics-0.2.58) --- updated-dependencies: - dependency-name: pyiron-atomistics dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index d14cb8fac..782b638ff 100644 --- a/setup.py +++ b/setup.py @@ -41,7 +41,7 @@ extras_require={ 'atomistic': [ 'ase==3.22.1', - 'pyiron_atomistics==0.2.57', + 'pyiron_atomistics==0.2.58', ], 'fenics': [ 'fenics==2019.1.0', From f52168f30e5641376c9e09b19079817089c65f7d Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 17 Oct 2022 12:53:48 +0000 Subject: [PATCH 410/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 0a1859856..9fb78690b 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -8,7 +8,7 @@ dependencies: - matplotlib =3.6.1 - numpy =1.23.3 - pyiron_base =0.5.26 -- pyiron_atomistics =0.2.57 +- pyiron_atomistics =0.2.58 - pyparsing =3.0.9 - scipy =1.9.1 - seaborn =0.12.0 From a98594684603405a0a2d37d15841dd6b2d4aa7c0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Oct 2022 13:20:09 +0000 Subject: [PATCH 411/434] Bump numpy from 1.23.3 to 1.23.4 Bumps [numpy](https://github.com/numpy/numpy) from 1.23.3 to 1.23.4. - [Release notes](https://github.com/numpy/numpy/releases) - [Changelog](https://github.com/numpy/numpy/blob/main/doc/RELEASE_WALKTHROUGH.rst) - [Commits](https://github.com/numpy/numpy/compare/v1.23.3...v1.23.4) --- updated-dependencies: - dependency-name: numpy dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 782b638ff..e43284017 100644 --- a/setup.py +++ b/setup.py @@ -32,7 +32,7 @@ packages=find_packages(exclude=["*tests*"]), install_requires=[ 'matplotlib==3.6.1', - 'numpy==1.23.3', + 'numpy==1.23.4', 'pyiron_base==0.5.26', 'scipy==1.9.1', 'seaborn==0.12.0', From d5f7969d87dc9f58b24d56d32d59818fd35539ce Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 17 Oct 2022 13:20:24 +0000 Subject: [PATCH 412/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 9fb78690b..3473683aa 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -6,7 +6,7 @@ dependencies: - coverage - codacy-coverage - matplotlib =3.6.1 -- numpy =1.23.3 +- numpy =1.23.4 - pyiron_base =0.5.26 - pyiron_atomistics =0.2.58 - pyparsing =3.0.9 From 30ced5a50a0b48e45194bd2854f41c64d97f52ae Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 18 Oct 2022 14:38:14 +0000 Subject: [PATCH 413/434] Bump scipy from 1.9.1 to 1.9.2 Bumps [scipy](https://github.com/scipy/scipy) from 1.9.1 to 1.9.2. - [Release notes](https://github.com/scipy/scipy/releases) - [Commits](https://github.com/scipy/scipy/compare/v1.9.1...v1.9.2) --- updated-dependencies: - dependency-name: scipy dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index e43284017..72bd2afb5 100644 --- a/setup.py +++ b/setup.py @@ -34,7 +34,7 @@ 'matplotlib==3.6.1', 'numpy==1.23.4', 'pyiron_base==0.5.26', - 'scipy==1.9.1', + 'scipy==1.9.2', 'seaborn==0.12.0', 'pyparsing==3.0.9' ], From 721b68ab9d076238791871ec58175e3c876f5b1c Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Tue, 18 Oct 2022 14:59:42 +0000 Subject: [PATCH 414/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 3473683aa..4ab2b2085 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -10,7 +10,7 @@ dependencies: - pyiron_base =0.5.26 - pyiron_atomistics =0.2.58 - pyparsing =3.0.9 -- scipy =1.9.1 +- scipy =1.9.2 - seaborn =0.12.0 - scikit-image =0.19.3 - randspg =0.0.1 From 8ef995ced3fe410c0bd4c0da52b150be1e56b117 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Oct 2022 11:06:00 +0000 Subject: [PATCH 415/434] Bump moto from 4.0.7 to 4.0.8 Bumps [moto](https://github.com/spulec/moto) from 4.0.7 to 4.0.8. - [Release notes](https://github.com/spulec/moto/releases) - [Changelog](https://github.com/spulec/moto/blob/master/CHANGELOG.md) - [Commits](https://github.com/spulec/moto/compare/4.0.7...4.0.8) --- updated-dependencies: - dependency-name: moto dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 72bd2afb5..931303487 100644 --- a/setup.py +++ b/setup.py @@ -50,7 +50,7 @@ 'image': ['scikit-image==0.19.3'], 'generic': [ 'boto3==1.24.91', - 'moto==4.0.7' + 'moto==4.0.8' ], }, cmdclass=versioneer.get_cmdclass(), From 53f8d6e7241ae95190ea225235932ddc2c1ceb0b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Oct 2022 11:06:14 +0000 Subject: [PATCH 416/434] Bump scipy from 1.9.2 to 1.9.3 Bumps [scipy](https://github.com/scipy/scipy) from 1.9.2 to 1.9.3. - [Release notes](https://github.com/scipy/scipy/releases) - [Commits](https://github.com/scipy/scipy/compare/v1.9.2...v1.9.3) --- updated-dependencies: - dependency-name: scipy dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 72bd2afb5..5e3bf6d89 100644 --- a/setup.py +++ b/setup.py @@ -34,7 +34,7 @@ 'matplotlib==3.6.1', 'numpy==1.23.4', 'pyiron_base==0.5.26', - 'scipy==1.9.2', + 'scipy==1.9.3', 'seaborn==0.12.0', 'pyparsing==3.0.9' ], From 0279e1da226380fe780b177e1ddbd2fc4d61fd97 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 24 Oct 2022 11:06:59 +0000 Subject: [PATCH 417/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 4ab2b2085..e4bb49eec 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -15,4 +15,4 @@ dependencies: - scikit-image =0.19.3 - randspg =0.0.1 - boto3 =1.24.91 -- moto =4.0.7 +- moto =4.0.8 From c4e161626ae3c973a3d098f20a15f360c05a5a94 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 24 Oct 2022 11:17:15 +0000 Subject: [PATCH 418/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 4ab2b2085..a1058c38c 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -10,7 +10,7 @@ dependencies: - pyiron_base =0.5.26 - pyiron_atomistics =0.2.58 - pyparsing =3.0.9 -- scipy =1.9.2 +- scipy =1.9.3 - seaborn =0.12.0 - scikit-image =0.19.3 - randspg =0.0.1 From d96021f7a5ed661a010a71af1e7c02202c713387 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Oct 2022 12:39:10 +0000 Subject: [PATCH 419/434] Bump boto3 from 1.24.91 to 1.24.96 Bumps [boto3](https://github.com/boto/boto3) from 1.24.91 to 1.24.96. - [Release notes](https://github.com/boto/boto3/releases) - [Changelog](https://github.com/boto/boto3/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/boto/boto3/compare/1.24.91...1.24.96) --- updated-dependencies: - dependency-name: boto3 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index faca39782..70a336f06 100644 --- a/setup.py +++ b/setup.py @@ -49,7 +49,7 @@ ], 'image': ['scikit-image==0.19.3'], 'generic': [ - 'boto3==1.24.91', + 'boto3==1.24.96', 'moto==4.0.8' ], }, From 595ea0d07a5e3f38dce5d7e33d2e54b2f7da5456 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Mon, 24 Oct 2022 13:04:06 +0000 Subject: [PATCH 420/434] [dependabot skip] Update environment --- .ci_support/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 37b8c2b64..1b67b20fc 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -14,5 +14,5 @@ dependencies: - seaborn =0.12.0 - scikit-image =0.19.3 - randspg =0.0.1 -- boto3 =1.24.91 +- boto3 =1.24.96 - moto =4.0.8 From 2d4ae43b51ec7caa1318058e3cb13d109d17225d Mon Sep 17 00:00:00 2001 From: Sam Waseda Date: Tue, 29 Nov 2022 18:21:07 +0100 Subject: [PATCH 421/434] create folder --- pyiron_contrib/atomistics/fitsnap/__init__.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 pyiron_contrib/atomistics/fitsnap/__init__.py diff --git a/pyiron_contrib/atomistics/fitsnap/__init__.py b/pyiron_contrib/atomistics/fitsnap/__init__.py new file mode 100644 index 000000000..e69de29bb From 5565bc8e671dbfa0f51826e0231fb00307adbf9b Mon Sep 17 00:00:00 2001 From: Raynol Dsouza Date: Wed, 30 Nov 2022 07:49:44 +0100 Subject: [PATCH 422/434] modify gle_mlip --- pyiron_contrib/atomistics/pimd/gle_mlip.py | 254 +++++++++++++++++++++ 1 file changed, 254 insertions(+) create mode 100644 pyiron_contrib/atomistics/pimd/gle_mlip.py diff --git a/pyiron_contrib/atomistics/pimd/gle_mlip.py b/pyiron_contrib/atomistics/pimd/gle_mlip.py new file mode 100644 index 000000000..46f4270db --- /dev/null +++ b/pyiron_contrib/atomistics/pimd/gle_mlip.py @@ -0,0 +1,254 @@ +# 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.storage.datacontainer import DataContainer +from pyiron_atomistics.lammps.potential import LammpsPotentialFile +from pyiron_contrib.atomistics.mlip.lammps import LammpsMlip, MlipInput + +import numpy as np +import pandas as pd +import xml.etree.ElementTree as ET +import subprocess +import os +import shutil + +__author__ = "Raynol Dsouza" +__copyright__ = "Copyright 2022, Max-Planck-Institut für Eisenforschung GmbH " \ + "- Computational Materials Design (CM) Department" +__version__ = "0.0" +__maintainer__ = "Raynol Dsouza" +__email__ = "dsouza@mpie.de" +__status__ = "development" +__date__ = "Aug 19, 2022" + + +class GleMlip(LammpsMlip): + + def __init__(self, project, job_name): + super(GleMlip, self).__init__(project, job_name) + self.input = MlipInput() + self.custom_input = DataContainer(table_name='custom_inp') + self.custom_output = DataContainer(table_name='custom_out') + self._templates_directory = None + + @property + def templates_directory(self): + return self._templates_directory + + @templates_directory.setter + def templates_directory(self, templates_directory): + self._templates_directory = templates_directory + + @property + def potential(self): + return self.input.potential.df + + @potential.setter + def potential(self, potential_filename): + stringtypes = str + if isinstance(potential_filename, stringtypes): + if ".lmp" in potential_filename: + potential_filename = potential_filename.split(".lmp")[0] + potential_db = LammpsPotentialFile() + potential = potential_db.find_by_name(potential_filename) + elif isinstance(potential_filename, pd.DataFrame): + potential = potential_filename + else: + raise TypeError("Potentials have to be strings or pandas dataframes.") + self.input.potential.df = potential + + def calc_npt_md(self, temperature=300., stress_tensor=None, n_beads=4, timestep=1., damping_timescale=100., + n_ionic_steps=100, n_print=1, seed=32345, port=31415, A=None, C=None): + if np.array(stress_tensor).shape != np.eye(3).shape: + raise ValueError("stress_tensor must be an array of shape (3,3)") + self.custom_input.temperature = temperature + self.custom_input.stress_tensor = stress_tensor.flatten().tolist() + self.custom_input.n_beads = n_beads + self.custom_input.timestep = timestep + self.custom_input.damping_timescale = damping_timescale + self.custom_input.n_ionic_steps = n_ionic_steps + self.custom_input.n_print = n_print + self.custom_input.seed = seed + self.custom_input.port = port + self.custom_input.A = A + self.custom_input.C = C + + def write_potential(self): + self.input.potential.write_file(file_name="potential.inp", cwd=self.working_directory) + self.input.potential.copy_pot_files(self.working_directory) + + def write_init_xyz(self): + filepath = self.working_directory + '/init.xyz' + self.structure.write(filename=filepath, format='xyz') + cell = self.structure.cell.array.diagonal() + angle = self.structure.cell.angles() + with open(filepath, 'r') as file: + data = file.readlines() + data[1] = "# CELL(abcABC): " \ + + str(cell[0]) + " " + str(cell[1]) + " " + str(cell[2]) + " " \ + + str(angle[0]) + " " + str(angle[1]) + " "+str(angle[2]) + \ + " positions{angstrom} cell{angstrom}\n" + with open(filepath, 'w') as file: + file.writelines(data) + + def write_data_lmp(self): + filepath = self.working_directory + '/data.lmp' + self.structure.write(filename=filepath, format='lammps-data') + + def write_input_lmp(self): + filepath = self.working_directory + '/input.lmp' + mass = self.structure.get_masses()[0] + data = "# LAMMPS input file\n\n" + \ + "atom_style \t atomic\n" + \ + "units \t metal\n" + \ + "dimension \t 3\n" + \ + "boundary \t p p p\n" + \ + "\n" + \ + "read_data \t data.lmp\n" + \ + "mass \t 1 " + str(mass) + "\n\n" + \ + "include potential.inp\n\n" + \ + "fix \t 1 all ipi " + self.job_name + " " + str(self.custom_input.port) + " unix\n" + \ + "run \t 5000000" + with open(filepath, 'w') as file: + file.writelines(data) + + def write_ipi_xml(self): + tree = ET.parse(self._templates_directory+ '/gle_template_aniso.xml') + root = tree.getroot() + filepath = self.working_directory + '/ipi_input.xml' + for i in range(4): + root[0][i].attrib['stride'] = str(self.custom_input.n_print) + root[1].text = str(self.custom_input.n_ionic_steps) + root[2][0].text = str(self.custom_input.seed) + root[3][0].text = self.job_name + root[4][0].attrib['nbeads'] = str(self.custom_input.n_beads) + root[4][0][0].text = 'init.xyz' + root[4][0][1].text = str(self.custom_input.temperature) + root[4][2][0][0][0].text = str(self.custom_input.damping_timescale) + root[4][2][0][0][2].text = str((self.structure.cell.array.flatten()).tolist()) + root[4][2][0][1][0].text = str(self.custom_input.A) + root[4][2][0][1][1].text = str(self.custom_input.C) + root[4][2][0][2].text = str(self.custom_input.timestep) + root[4][3][0].text = str(self.custom_input.temperature) + root[4][3][1].text = str(self.custom_input.stress_tensor) + tree.write(filepath) + + @staticmethod + def copy_file(src, dst): + shutil.copy(src, dst) + + def write_shell_scripts(self): + self.copy_file(self._templates_directory + '/run_ipi.sh', self.working_directory + '/run_ipi.sh') + self.copy_file(self._templates_directory + '/run_rdf.sh', self.working_directory + '/run_rdf.sh') + + def write_input(self): + if not os.path.isdir(self.working_directory): + self.project_hdf5.create_working_directory() + super(GleMlip, self).write_input() + self.write_potential() + self.write_init_xyz() + self.write_data_lmp() + self.write_input_lmp() + self.write_ipi_xml() + self.write_shell_scripts() + + def collect_rdf(self): + f=open(self.working_directory + '/ipi_out.' + self.structure.get_chemical_symbols()[0] + self.structure.get_chemical_symbols()[0] + '.rdf.dat', "r") + lines=f.readlines() + rdf_r = [] + rdf_g_r = [] + for x in lines: + rdf_r.append(x.split()[0]) + rdf_g_r.append(x.split()[1]) + f.close() + return np.array([float(i) for i in rdf_r]), np.array([float(i) for i in rdf_g_r]) + + def collect_props(self): + f = open(self.working_directory + '/ipi_out.out', "r") + lines=f.readlines() + time=[] + temperature=[] + en_kin=[] + en_pot=[] + volume=[] + pressure=[] + for x in lines: + if not x.startswith('#'): + time.append(x.split()[1]) + temperature.append(x.split()[2]) + en_kin.append(x.split()[3]) + en_pot.append(x.split()[4]) + volume.append(x.split()[5]) + pressure.append(x.split()[6]) + f.close() + self.custom_output.time = np.array([float(i) for i in time]) + self.custom_output.temperature = np.array([float(i) for i in temperature]) + self.custom_output.en_kin = np.array([float(i) for i in en_kin]) + self.custom_output.en_pot = np.array([float(i) for i in en_pot]) + self.custom_output.volume = np.array([float(i) for i in volume]) + self.custom_output.pressure = np.array([float(i) for i in pressure]) + self.custom_output.en_tot = self.custom_output.en_pot + self.custom_output.en_kin + + def collect_cells(self): + f = open(self.working_directory + '/ipi_out.pos_0.xyz') + lines=f.readlines() + abc = [] + ABC = [] + for x in lines: + if x.startswith("#"): + split_line = x.split() + abc.append([float(i) for i in split_line[2:5]]) + ABC.append([float(i) for i in split_line[5:8]]) + f.close() + self.custom_output.cell_abc = np.array(abc) + self.custom_output.cell_ABC = np.array(ABC) + + def collect_output(self): + self.collect_props() + self.collect_cells() + self.compress() + + def get_rdf(self, r_min=2., r_max=5., bins=100, thermalize=50): + self.decompress() + rdf_list = [self.working_directory + '/./run_rdf.sh', + self.working_directory, + str(self.custom_input.temperature), + self.structure.get_chemical_symbols()[0], self.structure.get_chemical_symbols()[0], + str(bins), + str(r_min), str(r_max), + str(thermalize)] + subprocess.check_call(rdf_list) + rdf_r, rdf_g_r = self.collect_rdf() + self.compress() + return rdf_r, rdf_g_r + + def run_static(self): + try: + self.status.running = True + subprocess.check_call([self.working_directory + '/./run_ipi.sh', self.working_directory, str(self.server.cores)]) + except Exception: + self.status.aborted = True + if self.status.running: + self.status.collect = True + self.collect_output() + self.to_hdf() + if self.job_id is not None: + self.project.db.item_update(self._runtime(), self.job_id) + self.send_to_database() + self.update_master() + self.status.finished = True + + def to_hdf(self, hdf=None, group_name=None): + super(GleMlip, self).to_hdf(hdf=hdf, group_name=group_name) + self._structure_to_hdf() + self.custom_input.templates_directory = self._templates_directory + self.custom_input.to_hdf(self._hdf5) + self.custom_output.to_hdf(self._hdf5) + + def from_hdf(self, hdf=None, group_name=None): + super(GleMlip, self).from_hdf(hdf=hdf, group_name=group_name) + self._structure_from_hdf() + self.custom_input.from_hdf(self._hdf5) + self._templates_directory = self.custom_input.templates_directory + self.custom_output.from_hdf(self._hdf5) \ No newline at end of file From 894e9ef9d8f1dbc35c3728965d64def4ba4ab814 Mon Sep 17 00:00:00 2001 From: Raynol Dsouza Date: Wed, 30 Nov 2022 07:53:48 +0100 Subject: [PATCH 423/434] add bond analysis --- .../mean_field/core/bond_analysis.py | 702 ++++++++++++++++++ 1 file changed, 702 insertions(+) create mode 100644 pyiron_contrib/atomistics/mean_field/core/bond_analysis.py diff --git a/pyiron_contrib/atomistics/mean_field/core/bond_analysis.py b/pyiron_contrib/atomistics/mean_field/core/bond_analysis.py new file mode 100644 index 000000000..e635dbb42 --- /dev/null +++ b/pyiron_contrib/atomistics/mean_field/core/bond_analysis.py @@ -0,0 +1,702 @@ +# 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. + +import numpy as np +from scipy import stats +from scipy.constants import physical_constants + +from pyiron_base.jobs.job.generic import GenericJob +from pyiron_base.storage.datacontainer import DataContainer +from pyiron_atomistics.atomistics.structure.atoms import Atoms + +from matplotlib.colors import LinearSegmentedColormap +import matplotlib.pyplot as plt + +KB = physical_constants['Boltzmann constant in eV/K'][0] +myc = {'r': (1.0, 0.0, 44. / 255.), 'b': (71. / 255., 0.0, 167. / 255.), 'o': (1.0, 180. / 255., 7. / 255.), + 'g': (0.0 / 255.0, 180. / 255., 7. / 255.)} + + +class _BAInput(DataContainer): + """ + Class to store input parameters for the Bond Analysis classes. + """ + + def __init__(self, **kwargs): + super().__init__(**kwargs) + self._structure = None + self._n_shells = None + self._cutoff_radius = None + + @property + def structure(self) -> Atoms: + return self._structure + + @structure.setter + def structure(self, atoms: Atoms): + if not isinstance(atoms, Atoms): + raise TypeError(f'structure must be of type Atoms but got {type(atoms)}') + self._structure = atoms + + @property + def n_shells(self): + return self._n_shells + + @n_shells.setter + def n_shells(self, n): + if not isinstance(n, int): + raise TypeError(f"n_shells must be an integer but got {type(n)}") + self._n_shells = n + + @property + def cutoff_radius(self): + return self._cutoff_radius + + @cutoff_radius.setter + def cutoff_radius(self, r): + if not isinstance(r, (int, float)): + raise TypeError(f"n_shells must be an integer/float but got {type(r)}") + self._cutoff_radius = r + + +class _BondAnalysisParent(GenericJob): + def __init__(self, project, job_name): + super(_BondAnalysisParent, self).__init__(project, job_name) + self._python_only_job = True + self.input = _BAInput(table_name="job_input") + self.output = DataContainer(table_name="job_output") + self._nn = None + self._n_bonds_per_shell = None + self._all_nn_bond_vectors = None + self.histogram = _Histograms() + + def validate_ready_to_run(self): + """ + Check if necessary inputs are provided, and everything is in order for the computation to run. + """ + if self.input.structure is None: + raise AttributeError('.input.structure must be set') + if (self.input.n_shells is None) and (self.input.cutoff_radius is None): + raise AttributeError('either .input.n_shells or .input.cutoff_radius must be set') + + def to_hdf(self, hdf=None, group_name=None): + """ + Store the StructureToBonds object in the HDF5 File. + + Args: + hdf (ProjectHDFio): HDF5 group object - optional + group_name (str): HDF5 subgroup name - optional + """ + super(_BondAnalysisParent, self).to_hdf() + self.input.to_hdf(self.project_hdf5) + self.output.to_hdf(self.project_hdf5) + + def from_hdf(self, hdf=None, group_name=None): + """ + Restore the StructureToBonds object from the HDF5 File. + + Args: + hdf (ProjectHDFio): HDF5 group object - optional + group_name (str): HDF5 subgroup name - optional + """ + super(_BondAnalysisParent, self).from_hdf() + self.input.from_hdf(self.project_hdf5) + self.output.from_hdf(self.project_hdf5) + + +class StaticBondAnalysis(_BondAnalysisParent): + """ + A job that analyzes the bond relations in a minimized structure. + """ + + def __init__(self, project, job_name): + super(StaticBondAnalysis, self).__init__(project, job_name) + + @staticmethod + def _set_cutoff_radius(structure, n_shells, cutoff_radius=None, eps=1e-5): + """ + If cutoff radius is not specified as an input, set it based off of the n_shells. + Args: + structure: + n_shells: + cutoff_radius: + eps: + + Returns: + cutoff_radius + """ + if cutoff_radius is None: + nn = structure.get_neighbors(num_neighbors=1000) + all_shells = nn.shells[0] + needed_dists = len(all_shells[all_shells < n_shells + 1]) + cutoff_radius = nn.distances[0][:needed_dists][-1] + eps + return cutoff_radius + + @staticmethod + def _get_nn(structure, cutoff_radius): + """ + Return the neighbors object. + Args: + structure: + cutoff_radius: + + Returns: + neighbors + n_bonds_per_shell + """ + neighbors = structure.get_neighbors(num_neighbors=None, cutoff_radius=cutoff_radius) + nn_distances = np.around(neighbors.distances, decimals=5) + _, _, n_bonds_per_shell = np.unique(np.around(nn_distances[0], decimals=5), return_inverse=True, + return_counts=True) + return neighbors, n_bonds_per_shell + + @staticmethod + def _set_n_shells(nn_distances, n_shells=None): + """ + If n_shells is not specified as an input, set it based off of the cutoff radius. + Args: + nn_distances: + n_shells: + + Returns: + n_shells + """ + if n_shells is None: + nn_dists = np.around(nn_distances[0], decimals=5) + n_shells = int(np.unique(nn_dists, return_index=True)[1][-1] + 1) + return n_shells + + @staticmethod + def _populate_shells(n_bonds_per_shell, vectors, indices): + """ + Arrange data according to shells. + Args: + n_bonds_per_shell: + vectors: + indices: + + Returns: + vectors_per_shell + """ + vectors_per_shell = [] + sums = 0 + for n in n_bonds_per_shell: + sorted_indices = np.argsort(indices[sums:sums + n]) + vectors_per_shell.append(vectors[sums:sums + n][sorted_indices]) + sums += n + return vectors_per_shell + + @staticmethod + def _rotation_matrix_from_vectors(vec_1, vec_2): + """ + Find the rotation matrix that aligns vec_1 to vec_2. + Args: + vec_1: A 3d "source" vector + vec_2: A 3d "destination" vector + + Returns: + A transformation matrix (3x3) which when applied to vec1, aligns it with vec2. + """ + a, b = (vec_1 / np.linalg.norm(vec_1)).reshape(3), (vec_2 / np.linalg.norm(vec_2)).reshape(3) + v = np.cross(a, b) + c = np.dot(a, b) + if np.any(v): # if not all zeros then + s = np.linalg.norm(v) + kmat = np.array([[0, -v[2], v[1]], [v[2], 0, -v[0]], [-v[1], v[0], 0]]) + return np.eye(3) + kmat + kmat.dot(kmat) * ((1 - c) / (s ** 2)) + elif not np.any(v) and c < 0.: + return np.eye(3) * -1 # for opposite directions + else: + return np.eye(3) # for identical directions + + def _get_irreducible_bond_vector_per_shell(self, nn, n_bonds_per_shell): + """ + Get one irreducible bond vector per nearest neighbor shell. If symmetries are known, this irreducible bond can + be used to generate all other bonds for the corresponding shell. + """ + # arrange bond vectors according to their shells + bond_vectors_per_shell = self._populate_shells(vectors=np.around(nn.vecs[0], decimals=5), + indices=nn.indices[0], + n_bonds_per_shell=n_bonds_per_shell) + # save 1 irreducible bond vector per shell + per_shell_irreducible_bond_vectors = np.array([b[0] for b in bond_vectors_per_shell]) + # get all the rotations from spglib + data = self.input.structure.get_symmetry() + # account for only 0 translation rotations + all_rotations = data['rotations'][np.argwhere(data['translations'][:48].sum(-1) < 1e-10).flatten()] + # and sort them doing the following: + per_shell_0K_rotations = [] + all_nn_bond_vectors_list = [] + for b in enumerate(per_shell_irreducible_bond_vectors): + # get 'unique bonds' from the spglib data + unique_bonds = np.unique(np.dot(b[1], all_rotations), axis=0) + args_list = [] + for bond in unique_bonds: + # collect the arguments of the rotations that that give the unique bonds + args = [] + for i, bd in enumerate(np.dot(b[1], all_rotations)): + if np.array_equal(np.round(bd, decimals=5), np.round(bond, decimals=5)): + args.append(i) + args_list.append(args[0]) + # sort the arguments and append the rotations to a list... + per_shell_0K_rotations.append(all_rotations[np.sort(args_list)]) + # and the unique bonds also, to another list... + all_nn_bond_vectors_list.append(np.dot(b[1], per_shell_0K_rotations[-1])) + # and clump the unique bonds into a single array + all_nn_bond_vectors_list = np.array([bonds for per_shell_bonds in all_nn_bond_vectors_list + for bonds in per_shell_bonds]) + return per_shell_irreducible_bond_vectors, per_shell_0K_rotations, all_nn_bond_vectors_list + + def _get_transformations(self, n_bonds_per_shell, all_nn_bond_vectors): + """ + Get the transformation matrices that take the bond vectors of each shell from cartesian [x, y, z] axes to + [longitudinal, transverse1 and transverse2] axes. + Args: + n_bonds_per_shell: + all_nn_bond_vectors: + + Returns: + per_shell_transformations + """ + sums = 0 + per_shell_transformation_matrices = [] + for i in n_bonds_per_shell: + bonds = all_nn_bond_vectors[sums:sums + i].copy() + sums += i + # normalize the bonds + bonds /= np.linalg.norm(bonds, axis=1)[:, np.newaxis] + transformation_matrices = [] + for b in bonds: + b1 = b.copy() # first bond is the longitudinal bond + # second bond is normal to the first (transverse1). If multiple normal bonds, select 1 + b2 = bonds[np.argwhere(np.round(bonds@b1, decimals=5) == 0.).flatten()[0]] + # third bond is then normal to both the first and second bonds (transverse2) + b3 = np.cross(b1, b2) + if b1.dot(np.cross(b2, b3)) < 0.: # if this condition is not met + b2, b3 = b3, b2 # reverse b2 and b3 + transformation_matrices.append(np.array([b1, b2, b3])) + per_shell_transformation_matrices.append(transformation_matrices) + return per_shell_transformation_matrices + + @staticmethod + def _get_bond_indexed_neighbor_list(nn, n_bonds_per_shell, all_nn_bond_vectors, structure): + """ + For each atom with index i, obtain the index of another atom M[i][j], + the difference between which gives bond vector index j. + + If M_ij is the matrix, i belongs to [1,N], j belongs to [1,m], where, + i = index of atom 1 + M_ij = index of atom 2 + j = index of the unique bond vector between atoms 1 and 2 + N = number of atoms + m = number of unique bonds + Args: + nn: + n_bonds_per_shell: + all_nn_bond_vectors: + structure: + + Returns: + per_shell_bond_indexed_neighbor_list + """ + nn_vecs = np.around(nn.vecs, decimals=5) + nn_indices = nn.indices + sums = 0 + per_shell_bond_indexed_neighbor_list = [] + for n in n_bonds_per_shell: + nn_vecs_per_shell = nn_vecs[:, sums:sums + n].copy() + nn_indices_per_shell = nn_indices[:, sums:sums + n].copy() + bond_vectors_list = all_nn_bond_vectors[sums:sums + n].copy() + sums += n + # initialize the M_ij matrix with shape [atoms x unique_bonds] + x_0 = np.around(structure.positions, decimals=5) # zero Kelvin positions + M_ij = np.zeros([len(x_0), len(nn_vecs_per_shell[0])]).astype(int) + # populate the M_ij matrix + for i, per_atom_nn in enumerate(nn_vecs_per_shell): + for vec, ind in zip(per_atom_nn, nn_indices_per_shell[i]): + try: + j = np.argwhere(np.all(np.isclose(vec, bond_vectors_list), axis=1))[0, 0] + except IndexError: # this is an exception for HCP! + j = np.argwhere(np.all(np.isclose(-vec, bond_vectors_list), axis=1))[0, 0] + M_ij[i][j] = ind + per_shell_bond_indexed_neighbor_list.append(M_ij) + return per_shell_bond_indexed_neighbor_list + + @staticmethod + def _get_bond_relations_list(per_shell_bond_indexed_neighbor_list): + """ + Use the per_shell_bond_indexed_neighbor_list for each shell to generate a 'bond relations' list of the form [[i, m_ij, j], ...] + connecting every atom (with index i) in the structure to its nearest neighbor atom/s (with index m_ij), + giving a bond vector/s, which can be transformed to the direction of the irreducible bond vector of that + shell using a symmetry operation (with index j). + Args: + per_shell_bond_indexed_neighbor_list: + + Returns: + per_shell_bond_relations + """ + per_shell_bond_relations = [] + for M_ij in per_shell_bond_indexed_neighbor_list: # enumerate over shells + per_shell = [] + for j, row in enumerate(M_ij.T): # enumerate over bonds + per_bond = [] + for i, m_ij in enumerate(row): # enumerate over atoms + per_bond.append([i+1, m_ij+1, j+1]) # atom_1_index, atom_2_index, symmetry_op_index + per_shell.append(per_bond) + per_shell_bond_relations.append(np.array(per_shell)) + return per_shell_bond_relations + + def analyze_bonds(self): + # set cutoff radius, if not already set + self.input.cutoff_radius = self._set_cutoff_radius(structure=self.input.structure, + n_shells=self.input.n_shells, + cutoff_radius=self.input.cutoff_radius, + eps=1e-5) + # run get_neighbors + self._nn, self._n_bonds_per_shell = self._get_nn(structure=self.input.structure, + cutoff_radius=self.input.cutoff_radius) + # if n_shells is not set in the input, make sure it is now + self.input.n_shells = self._set_n_shells(nn_distances=self._nn.distances, + n_shells=self.input.n_shells) + + # get irreducible bond vectors and 0K rotations + irr_bvs = self._get_irreducible_bond_vector_per_shell(nn=self._nn, + n_bonds_per_shell=self._n_bonds_per_shell) + self.output.per_shell_irreducible_bond_vectors, self.output.per_shell_0K_rotations, \ + self._all_nn_bond_vectors = irr_bvs + # get transformations + self.output.per_shell_transformation_matrices = self._get_transformations( + n_bonds_per_shell=self._n_bonds_per_shell, + all_nn_bond_vectors=self._all_nn_bond_vectors) + # get per_shell_bond_indexed_neighbor_list + self.output.per_shell_bond_indexed_neighbor_list = \ + self._get_bond_indexed_neighbor_list(nn=self._nn, n_bonds_per_shell=self._n_bonds_per_shell, + all_nn_bond_vectors=self._all_nn_bond_vectors, + structure=self.input.structure) + # get bond relations + self.output.per_shell_bond_relations = \ + self._get_bond_relations_list(per_shell_bond_indexed_neighbor_list= + self.output.per_shell_bond_indexed_neighbor_list) + + def run_static(self): + self.analyze_bonds() + self.to_hdf() + + +class MDBondAnalysis(_BondAnalysisParent): + """ + A job which, given an MD trajectory, gives 'bond data' based off of the bond relations of the minimized structure. + """ + + def __init__(self, project, job_name): + super(MDBondAnalysis, self).__init__(project, job_name) + self.input.md_job = None + self.input.thermalize_snapshots = 20 + self.input.md_trajectory = None + self.input.md_cells = None + self._structure = None + self._md_trajectory = None + self._md_cells = None + + @staticmethod + def _find_mic(cell, vectors, pbc=[True, True, True]): + """ + Find vectors following minimum image convention (mic). + cell: The cell in reference to which the vectors are expressed. + vectors (list/numpy.ndarray): 3d vector or a list/array of 3d vectors. + pbc: Periodic bondary condition along each coordinate axis. + Returns: numpy.ndarray of the same shape as input with mic + """ + vecs = np.asarray(vectors).reshape(-1, 3) + if any(pbc): + vecs = np.einsum('ji,nj->ni', np.linalg.inv(cell), vecs) + vecs[:, pbc] -= np.rint(vecs)[:, pbc] + vecs = np.einsum('ji,nj->ni', cell, vecs) + return vecs.reshape(np.asarray(vectors).shape) + + def validate_ready_to_run(self): + """ + Check if necessary inputs are provided, and everything is in order for the computation to run. + """ + if self.input.md_job is not None: + self._md_trajectory = self.input.md_job.output.unwrapped_positions[self.input.thermalize_snapshots:] + self._md_cells = self.input.md_job.output.cells[self.input.thermalize_snapshots:] + elif self.input.md_trajectory is not None: + self._md_trajectory = self.input.md_trajectory + if self.input.md_cells is None: + self._md_cells = np.array([self.input.structure.cell.array]*len(self._md_trajectory)) + else: + raise AttributeError('Either .input.md_job or .input.md_trajectory must be set') + + static = StaticBondAnalysis(project=self.project_hdf5, job_name=self.job_name + '_static') + static.input = self.input + static.analyze_bonds() + self.output = static.output + + def _get_xyz_bond_vectors(self, per_atom=False, return_out=False): + """ + Use the 'bond relations' list to obtain the MD bond vectors for each shell. + """ + self.output.per_shell_xyz_bond_vectors = [] + for i, br_per_s in enumerate(self.output.per_shell_bond_relations): + per_shell = [] + for bond in br_per_s: + bond_vectors = self._md_trajectory[:, bond[:, 1] - 1] - self._md_trajectory[:, bond[:, 0] - 1] + bond_vectors_mic = [] + for j, snapshot in enumerate(bond_vectors): + bond_vectors_mic.append(self._find_mic(self._md_cells[j], snapshot)) + if per_atom: + per_shell.append(np.array(bond_vectors_mic)) + else: + per_shell.append(np.array(bond_vectors_mic).reshape(-1, 3)) + self.output.per_shell_xyz_bond_vectors.append(np.array(per_shell)) + if return_out: + return self.output.per_shell_xyz_bond_vectors + + def _get_long_t1_t2_bond_vectors(self): + """ + Convert the MD bond vectors from cartesian [x, y, z] axes to [longitudinal, transverse1 and transverse2] axes, + using the transformation matrices for each bond in each shell. + """ + self.output.per_shell_long_t1_t2_bond_vectors = [] + for shell in np.arange(self.input.n_shells): + per_shell = [] + for i, transform in enumerate(self.output.per_shell_transformation_matrices[shell]): + bond_vectors = self.output.per_shell_xyz_bond_vectors[shell][i] + transformed_vectors = np.dot(bond_vectors, transform.T) + transformed_vectors[:, 0] = np.linalg.norm(bond_vectors, axis=-1) + # the next 4 lines are an exception for HCP! + if np.any(transformed_vectors[:, 0] < 0.): + for j, vec in enumerate(transformed_vectors): + if vec[0] < 0.: + transformed_vectors[j] = -vec + per_shell.append(transformed_vectors) + self.output.per_shell_long_t1_t2_bond_vectors.append(np.array(per_shell)) + + @staticmethod + def _cartesian_to_cylindrical(vector): + """ + Helper method for get_md_cylindrical_long_t1_t2. + """ + if len(vector.shape) == 1: + vector = np.array([vector]) + r = np.linalg.norm(vector[:, -2:], axis=1) + phi = np.arctan2(vector[:, 2], vector[:, 1]) + return np.array([vector[:, 0], r, phi]).T + + def _get_long_r_phi_bond_vectors(self): + """ + Convert the [longitudinal, transverse1 and transverse2] which are cartesian axes to cylindrical axes + [longitudinal, r and phi]. + """ + self.output.per_shell_long_r_phi_bond_vectors = [] + for shell in self.output.per_shell_long_t1_t2_bond_vectors: + per_bond = [] + for bond in shell: + per_bond.append(self._cartesian_to_cylindrical(bond)) + self.output.per_shell_long_r_phi_bond_vectors.append(np.array(per_bond)) + + def run_static(self): + self._get_xyz_bond_vectors() + self._get_long_t1_t2_bond_vectors() + #self._get_long_r_phi_bond_vectors() + self.to_hdf() + + def get_1d_histogram_xyz(self, shell=0, bond=None, n_bins=20, d_range=None, density=True, axis=0, + moment=True): + return self.histogram.get_per_shell_1d_histogram(self.output.per_shell_xyz_bond_vectors, shell=shell, bond=bond, + n_bins=n_bins, d_range=d_range, density=density, axis=axis, + moment=moment) + + def get_1d_histogram_long_t1_t2(self, shell=0, bond=None, n_bins=20, d_range=None, density=True, axis=0, + moment=True): + return self.histogram.get_per_shell_1d_histogram(self.output.per_shell_long_t1_t2_bond_vectors, shell=shell, + bond=bond, n_bins=n_bins, d_range=d_range, density=density, + axis=axis, moment=moment) + + def get_1d_histogram_long_r_phi(self, shell=0, bond=None, n_bins=20, d_range=None, density=True, axis=0, + moment=True): + return self.histogram.get_per_shell_1d_histogram(self.output.per_shell_long_r_phi_bond_vectors, shell=shell, + bond=bond, n_bins=n_bins, d_range=d_range, density=density, + axis=axis, moment=moment) + + def get_3d_histogram_xyz(self, shell=0, bond=None, n_bins=20, d_range=None, density=True): + return self.histogram.get_per_shell_3d_histogram(self.output.per_shell_xyz_bond_vectors, supp_data=None, shell=shell, bond=bond, + n_bins=n_bins, d_range=d_range, density=density) + + def get_3d_histogram_long_t1_t2(self, shell=0, bond=None, n_bins=20, d_range=None, density=True): + return self.histogram.get_per_shell_3d_histogram(self.output.per_shell_long_t1_t2_bond_vectors, + supp_data=self.output.per_shell_xyz_bond_vectors, shell=shell, + bond=bond, n_bins=n_bins, d_range=d_range, density=density) + + def get_3d_histogram_long_r_phi(self, shell=0, bond=None, n_bins=20, d_range=None, density=True): + return self.histogram.get_per_shell_3d_histogram(self.output.per_shell_long_r_phi_bond_vectors, shell=shell, supp_data=None, + bond=bond, n_bins=n_bins, d_range=d_range, density=density) + + def get_potential_long_r_phi(self, temperature=300., shell=0, bond=None, n_bins=20, d_range=None, density=True): + pd, bins = self.get_3d_histogram_long_r_phi(shell=shell, bond=bond, n_bins=n_bins, d_range=d_range, + density=density) + r_bins = bins[1][0, :, 0] + delta_r = (r_bins[1] - r_bins[0]) / 2 + mean_over_phi_pd = pd.mean(axis=-1) + # since in cylindrical coordinates, the pd of r needs to be divided by the bins, + mean_over_phi_pd /= np.outer(np.ones(n_bins), r_bins + delta_r) + mean_over_phi_pd /= mean_over_phi_pd.sum() + potential = -KB * temperature * np.log(mean_over_phi_pd + 1e-10) + potential = potential.T + return potential - potential.min(), np.meshgrid(bins[0][:, 0, 0], bins[1][0, :, 0]) + + def get_potential_long_t1_t2(self, temperature=300., shell=0, bond=None, n_bins=20, d_range=None, density=True, + mean_over_final_axis=False): + pd, bins = self.get_3d_histogram_long_t1_t2(shell=shell, bond=bond, n_bins=n_bins, d_range=d_range, + density=density) + if mean_over_final_axis: + pd = pd.mean(axis=-1) + pd /= pd.sum() + potential = -KB * temperature * np.log(pd + 1e-10) + if mean_over_final_axis: + return (potential - potential.min()).T, np.meshgrid(bins[0][:, 0, 0], bins[1][0, :, 0]) + else: + return potential - potential.min(), bins + + + @staticmethod + def _get_rho_corr_and_uncorr(x_data, y_data, n_bins=101): + rho_corr, x_edges, y_edges = np.histogram2d(x_data, y_data, (n_bins, n_bins), density=True) + rho_uncorr = np.outer(rho_corr.sum(axis=1), rho_corr.sum(axis=0)) + return rho_corr / rho_corr.sum(), rho_uncorr / rho_uncorr.sum(), x_edges, y_edges + + @staticmethod + def _get_corr_column_value(axis): + if axis == 'long': + return 0 + elif axis == 't1': + return 1 + elif axis == 't2': + return 2 + else: + raise ValueError("choose between long, t1, and t2") + + def _get_correlations(self, shell, bond_x, bond_y, axis_x, axis_y, n_bins): + all_bonds = self.output.per_shell_long_t1_t2_bond_vectors[shell] + n_bonds = len(all_bonds) + if (bond_x >= n_bonds) or (bond_y >= n_bonds): + raise ValueError("there are only {} bonds in shell {}".format(n_bonds, shell)) + axis_0 = self._get_corr_column_value(axis_x) + axis_1 = self._get_corr_column_value(axis_y) + return self._get_rho_corr_and_uncorr(x_data=all_bonds[bond_y, :, axis_0], y_data=all_bonds[bond_x, :, axis_1], + n_bins=n_bins) + + def get_mutual_information(self, shell=0, bond_x=0, bond_y=0, axis_x='long', axis_y='long', n_bins=101): + rho_corr, rho_uncorr, _, _ = self._get_correlations(shell=shell, bond_x=bond_x, bond_y=bond_y, axis_x=axis_x, + axis_y=axis_y, n_bins=n_bins) + sel = (rho_uncorr > 0.0) * (rho_corr > 0.0) + return -(np.log((rho_corr[sel]) / rho_uncorr[sel]) * rho_uncorr[sel]).sum() + + def plot_correlations(self, shell=0, bond_x=0, bond_y=0, axis_x='long', axis_y='long', n_bins=101): + rho_corr, rho_uncorr, x_edges, y_edges = self._get_correlations(shell=shell, bond_x=bond_x, + bond_y=bond_y, axis_x=axis_x, + axis_y=axis_y, n_bins=n_bins) + rho_diff = rho_corr - rho_uncorr + cm = LinearSegmentedColormap.from_list('my_spec', [myc['b'], (1, 1, 1), myc['o']], N=n_bins) + plims = x_edges.min(), x_edges.max(), y_edges.min(), y_edges.max() # plot limits + plt.imshow(rho_diff[::-1, :], cmap=cm, extent=plims) + plt.xticks(np.around(np.linspace(plims[0], plims[1], 5), decimals=2)) + plt.yticks(np.around(np.linspace(plims[2], plims[3], 5), decimals=2)) + plt.xlabel(axis_x + '_' + str(bond_x)) + plt.ylabel(axis_y + '_' + str(bond_y)) + plt.show() + + +class _Histograms(object): + """ + A helper class which gives histograms of the input 'bond_representation', which is bond data of a single bond in a + shell or all the bonds in the shell, represented in either [x, y, z] coordinates, [longitudinal, transverse1, + transverse2] coordinates or [longitudinal, r, phi] coordinates. + """ + + @staticmethod + def _get_bin_centers(bins): + if len(bins) == 3: + x_bins, y_bins, z_bins = bins + return [(x_bins[1:] + x_bins[:-1]) / 2, (y_bins[1:] + y_bins[:-1]) / 2, (z_bins[1:] + z_bins[:-1]) / 2] + else: + return (bins[1:] + bins[:-1]) / 2 + + @staticmethod + def _check_histogram_bonds(required_data, bond, shell): + """ + Helper method to get_per_shell_3d_histogram and get_per_shell_1d_histogram + Args: + required_data: + bond: + shell: + + Returns: + required_data + """ + if bond is None: + required_data = required_data.reshape(-1, 3) # flatten over all bonds in the shell + else: + n_bonds = len(required_data) + if bond >= n_bonds: + raise ValueError("there are only {} bonds in shell {}".format(n_bonds, shell)) + required_data = required_data[bond] + return required_data + + def get_per_shell_1d_histogram(self, bond_representation, shell=0, bond=None, n_bins=20, d_range=None, + density=True, axis=0, moment=True): + """ + Get the 1d-histograms of data: + Args: + bond_representation: Histogram of which data to be obtained. 'bond_vectors' or 'long_t1_t2' or 'cyl_long_t1_t2' + (Default is 'bond_vectors') + shell: The shell (Default is 0, the 0th shell) + bond: The bond whose 3D histogram is to be obtained (Default is None, flatten over all the bonds) + n_bins: Number of bins along each axis (Default is 20 bins) + d_range: The range of the bins along each axis (Default is None, set range to the min/max of the bins) + density: If True, returns the probability densities, else returns counts (Default is True) + axis: Along which axis to get the histogram (Default is 0, the 0th axis) + moment: If True, returns the moments 1-4 of the distribution (Default is True) + + Returns: + rho (bins): The counts/probability densities + centered_bins (list[x-bins, y-bins, z-bins]): The center values of the bins + """ + if axis not in [0, 1, 2, -1, -2, -3]: + raise ValueError("axis can only take values 0, 1, 2, -1, -2, -3") + required_data = bond_representation[shell] + required_data = self._check_histogram_bonds(required_data=required_data, bond=bond, shell=shell) + rho, bins = np.histogram(required_data[:, axis], bins=n_bins, range=d_range, density=density) + if moment: + moments = [np.mean(required_data[:, axis])] + moments += [stats.moment(a=required_data[:, axis], moment=i) for i in np.arange(2, 5)] + return rho/rho.sum(), self._get_bin_centers(bins=bins), moments + else: + return rho/rho.sum(), self._get_bin_centers(bins=bins) + + def get_per_shell_3d_histogram(self, bond_representation, supp_data=None, shell=0, bond=None, n_bins=20, d_range=True, + density=True): + """ + Get the 3d-histograms of data: + Args: + bond_representation: Histogram of which data to be obtained. 'bond_vectors' or 'long_t1_t2' or 'cyl_long_t1_t2' + (Default is 'bond_vectors') + shell: The shell (Default is 0, the 0th shell) + bond: The bond whose 3D histogram is to be obtained (Default is None, flatten over all the bonds) + n_bins: Number of bins along each axis (Default is 20 bins) + d_range: The range of the bins along each axis (Default is None, set range to the min/max of the bins) + density: If True, returns the probability densities, else returns counts (Default is True) + + Returns: + rho (bins x bins x bins): The counts/probability densities + centered_bins (list[x-bins, y-bins, z-bins]): The center values of the bins + """ + required_data = bond_representation[shell] + required_data = self._check_histogram_bonds(required_data=required_data, bond=bond, shell=shell) + rho, bins = np.histogramdd(required_data, bins=n_bins, density=density) + rho /= rho.sum() + bins = self._get_bin_centers(bins=bins) + bins_3d = np.meshgrid(bins[0], bins[1], bins[2], indexing='ij') + return rho, bins_3d From c5bc54217b350a42212aa77e614b592e695f708d Mon Sep 17 00:00:00 2001 From: Raynol Dsouza Date: Wed, 30 Nov 2022 08:04:03 +0100 Subject: [PATCH 424/434] add md data generation notebook --- .../atomistics/mean_field/morse_al_md.ipynb | 289 ++++++++++++++++++ 1 file changed, 289 insertions(+) create mode 100644 pyiron_contrib/atomistics/mean_field/morse_al_md.ipynb diff --git a/pyiron_contrib/atomistics/mean_field/morse_al_md.ipynb b/pyiron_contrib/atomistics/mean_field/morse_al_md.ipynb new file mode 100644 index 000000000..39f96abc1 --- /dev/null +++ b/pyiron_contrib/atomistics/mean_field/morse_al_md.ipynb @@ -0,0 +1,289 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "id": "a73bce6e", + "metadata": { + "ExecuteTime": { + "end_time": "2022-09-26T13:20:48.229238Z", + "start_time": "2022-09-26T13:20:44.058044Z" + } + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import pandas as pd\n", + "\n", + "from os.path import abspath, join, isfile\n", + "from os import remove\n", + "from shutil import rmtree\n", + "from glob import glob\n", + "\n", + "from pyiron_atomistics import Project\n", + "from pyiron_contrib.atomistics.mean_field.core.bond_analysis import StaticBondAnalysis\n", + "\n", + "def cleanup_job(job):\n", + " \"\"\"\n", + " Removes all the child jobs (files AND folders) to save disk space and reduce file count, and only keeps\n", + " the hdf file.\n", + " \"\"\"\n", + " for f in glob(abspath(join(job.working_directory, '../..')) + '/' + job.job_name + '_*'):\n", + " if isfile(f):\n", + " remove(f)\n", + " else:\n", + " rmtree(f)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7bd29db7", + "metadata": { + "ExecuteTime": { + "end_time": "2022-09-26T13:20:52.734516Z", + "start_time": "2022-09-26T13:20:48.233296Z" + } + }, + "outputs": [], + "source": [ + "alpha=1.5\n", + "pr = Project('morse_al/md_runs_nvt/alpha_' + str(alpha).replace('.', '_'))\n", + "# pr.remove_jobs(recursive=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0d0bea2d", + "metadata": { + "ExecuteTime": { + "end_time": "2022-09-26T13:20:53.479854Z", + "start_time": "2022-09-26T13:20:53.475012Z" + } + }, + "outputs": [], + "source": [ + "# potential functions\n", + "D = 0.1\n", + "a_0 = 2.856\n", + "kappa = 0.\n", + "\n", + "# for lammps\n", + "def md_morse(D=D, alpha=alpha, r_0=a_0, b=1):\n", + " config = 'atom_style bond\\nbond_style morse\\n'\n", + " for i in range(b):\n", + " vals = (i+1, D, alpha, a_0)\n", + " config += 'bond_coeff %d %.7f %.7f %.7f\\n'%(vals)\n", + " return pd.DataFrame({'Name': ['Morse'],\n", + " 'Filename': [[]], \n", + " 'Model' : ['Morse'], \n", + " 'Species' : [['Al']], \n", + " 'Config' : [[config]]})" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "587e4da6", + "metadata": { + "ExecuteTime": { + "end_time": "2022-09-26T13:20:54.061220Z", + "start_time": "2022-09-26T13:20:54.057138Z" + } + }, + "outputs": [], + "source": [ + "# standard stuff\n", + "\n", + "element = 'Al'\n", + "supercell_size = 4\n", + "n_atoms = 4*supercell_size**3\n", + "samples = 5\n", + "md_steps = 1e4\n", + "md_samples = md_steps / 2000\n", + "temperatures = np.linspace(100, 900, 9)\n", + "base_structure = pr.create.structure.bulk(name=element, cubic=True).repeat(supercell_size)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9300f452", + "metadata": { + "ExecuteTime": { + "end_time": "2022-09-26T13:21:01.120643Z", + "start_time": "2022-09-26T13:20:59.785630Z" + } + }, + "outputs": [], + "source": [ + "# relax the structure to atm pressure\n", + "\n", + "minim_job = pr.create.job.Lammps('minim_job', delete_existing_job=True)\n", + "minim_job.structure = base_structure\n", + "minim_job.potential = md_morse()\n", + "minim_job.calc_minimize(pressure=0.0001)\n", + "minim_job.run()\n", + "structure = minim_job.get_structure()\n", + "a_0 = (structure.cell/supercell_size/np.sqrt(2))[0][0]\n", + "U_0 = minim_job.output.energy_pot[-1]/n_atoms" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "52748d3b", + "metadata": { + "ExecuteTime": { + "end_time": "2022-09-26T13:21:02.060511Z", + "start_time": "2022-09-26T13:21:01.508450Z" + } + }, + "outputs": [], + "source": [ + "# analyze bonds and get rotations and displacement matrix\n", + "\n", + "stat_ba = pr.create_job(StaticBondAnalysis, 'stat_ba', delete_existing_job=True)\n", + "stat_ba.input.structure = structure.copy()\n", + "stat_ba.input.n_shells = 1\n", + "stat_ba.run()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6f6ff28b-77f4-4dbd-bb65-11ac339758e9", + "metadata": { + "ExecuteTime": { + "end_time": "2022-09-26T13:21:02.332021Z", + "start_time": "2022-09-26T13:21:02.328904Z" + } + }, + "outputs": [], + "source": [ + "# from the static bond analysis, create a bonds list that can be passed to a pyiron lammps job\n", + "\n", + "def get_bonds_list(bond_relations):\n", + " # for FCC, only include 6 bonds out of 12, as other 6 are anti-parallel\n", + " bonds_list = bond_relations[::2]\n", + " for (per_bond_relations, i) in zip(bonds_list, np.arange(len(bonds_list))+1):\n", + " # change bond type index\n", + " per_bond_relations[:, 2] = i\n", + " return bonds_list.reshape(-1, 3)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a73a0ec1", + "metadata": {}, + "outputs": [], + "source": [ + "## Run NVT job first and then run NVE" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e59068ed", + "metadata": { + "ExecuteTime": { + "end_time": "2022-09-26T13:21:21.131093Z", + "start_time": "2022-09-26T13:21:10.725370Z" + }, + "scrolled": true + }, + "outputs": [], + "source": [ + "## NVT\n", + "\n", + "# for i, temp in enumerate(temperatures):\n", + "# temp_group = pr.create_group('temp_' + str(i))\n", + "# for j in range(samples):\n", + "# job = temp_group.create.job.Lammps('npt_temp_' + str(i) + '_sample_' + str(j), delete_existing_job=True)\n", + "# job.structure = structure.copy()\n", + "# job.structure.bonds = get_bonds_list(stat_ba.output.per_shell_bond_relations[0].copy())\n", + "# job.potential = md_morse(b=6)\n", + "# job.calc_md(temperature=temp, pressure=None, n_ionic_steps=md_steps, n_print=md_samples,\n", + "# langevin=True, pressure_damping_timescale=100., time_step=1.)\n", + "# job.input.control.energy_pot_per_atom()\n", + "# job.write_restart_file()\n", + "# job.server.queue = 'cmti'\n", + "# job.server.cores = 4\n", + "# job.server.runtime = 3600\n", + "# job.run()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5047f781", + "metadata": { + "ExecuteTime": { + "end_time": "2022-09-26T13:24:54.986620Z", + "start_time": "2022-09-26T13:23:52.441768Z" + }, + "scrolled": true + }, + "outputs": [], + "source": [ + "## NVE\n", + "\n", + "for i, temp in enumerate(temperatures):\n", + " temp_group = pr.create_group('temp_' + str(i))\n", + " for j in range(samples):\n", + " job = pr.load('npt_temp_' + str(i) + '_sample_' + str(j))\n", + " job_nve = job.restart(job_type=pr.job_type.Lammps, job_name='nve_temp_' + str(i) + '_sample_' + str(j))\n", + " job_nve.calc_md(temperature=None, n_print=md_samples, n_ionic_steps=md_steps)\n", + " del job_nve.input.control[\"fix___langevin\"]\n", + " job.server.queue = 'cmti'\n", + " job.server.cores = 4\n", + " job.server.runtime = 3600\n", + " job_nve.run()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3c255818", + "metadata": { + "ExecuteTime": { + "end_time": "2022-09-26T13:27:10.391451Z", + "start_time": "2022-09-26T13:26:52.268307Z" + } + }, + "outputs": [], + "source": [ + "## to delete all LAMMPS files, and only keep the pyiron job\n", + "\n", + "for i in range(len(temperatures)):\n", + " for j in range(samples):\n", + " cleanup_job(job_npt)\n", + " cleanup_job(job_nve)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.15" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 8049ed0d7e5882adec74b35120e23f226a8a56bf Mon Sep 17 00:00:00 2001 From: Raynol Dsouza Date: Thu, 1 Dec 2022 13:44:50 +0100 Subject: [PATCH 425/434] add nvt notebook --- .../mean_field/morse_mf_al_nvt.ipynb | 810 ++++++++++++++++++ 1 file changed, 810 insertions(+) create mode 100644 pyiron_contrib/atomistics/mean_field/morse_mf_al_nvt.ipynb diff --git a/pyiron_contrib/atomistics/mean_field/morse_mf_al_nvt.ipynb b/pyiron_contrib/atomistics/mean_field/morse_mf_al_nvt.ipynb new file mode 100644 index 000000000..0a47c5ba5 --- /dev/null +++ b/pyiron_contrib/atomistics/mean_field/morse_mf_al_nvt.ipynb @@ -0,0 +1,810 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "04ace7b5", + "metadata": {}, + "source": [ + "# Bond lattice mean-field model for a Morse potential - NVT" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "08515601", + "metadata": { + "ExecuteTime": { + "end_time": "2022-12-01T12:39:29.787937Z", + "start_time": "2022-12-01T12:39:18.101470Z" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/cmmc/u/system/SLES12/soft/pyiron/dev/anaconda3/lib/python3.8/site-packages/pkg_resources/__init__.py:123: PkgResourcesDeprecationWarning: NOT-A-GIT-REPOSITORY is an invalid version and will not be supported in a future release\n", + " warnings.warn(\n" + ] + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "7aef85872b764f33b9afa27055579fa6", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from pyiron_atomistics import Project\n", + "\n", + "from scipy.interpolate import UnivariateSpline, CubicSpline\n", + "from scipy.optimize import root_scalar, root\n", + "from scipy.integrate import cumtrapz\n", + "\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import pandas as pd\n", + "from matplotlib import gridspec\n", + "\n", + "from scipy.constants import physical_constants\n", + "KB = physical_constants['Boltzmann constant in eV/K'][0]\n", + "\n", + "from pyiron_contrib.atomistics.mean_field.core.bond_analysis import StaticBondAnalysis, MDBondAnalysis\n", + "\n", + "import seaborn as sns\n", + "sns.set_context('paper', font_scale=1.5, rc={\"lines.linewidth\": 2})" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "c9c25b36", + "metadata": { + "ExecuteTime": { + "end_time": "2022-12-01T12:39:29.793519Z", + "start_time": "2022-12-01T12:39:29.788229Z" + } + }, + "outputs": [], + "source": [ + "alpha = 1.5\n", + "pr = Project('morse_al/mfm')\n", + "pr_md_nvt = Project('morse_al/md_runs_nvt/alpha_' + str(alpha).replace('.', '_'))" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "d1e84e27", + "metadata": { + "ExecuteTime": { + "end_time": "2022-12-01T12:39:29.800805Z", + "start_time": "2022-12-01T12:39:29.793725Z" + } + }, + "outputs": [], + "source": [ + "# potential functions\n", + "D = 0.1\n", + "a_0 = 2.856\n", + "kappa = 0.\n", + "\n", + "# for lammps\n", + "def md_morse(D=D, alpha=alpha, r_0=a_0, b=1):\n", + " config = 'atom_style bond\\nbond_style morse\\n'\n", + " for i in range(b):\n", + " vals = (i+1, D, alpha, a_0)\n", + " config += 'bond_coeff %d %.7f %.7f %.7f\\n'%(vals)\n", + " return pd.DataFrame({'Name': ['Morse'],\n", + " 'Filename': [[]], \n", + " 'Model' : ['Morse'], \n", + " 'Species' : [['Al']], \n", + " 'Config' : [[config]]})\n", + "\n", + "# longitudinal_potential\n", + "def morse(r, D=D, alpha=alpha, a_0=a_0):\n", + " return D*(1.0+np.exp(-2.0*alpha*(r-a_0)) - 2.0*np.exp(-alpha*(r-a_0)))\n", + "\n", + "def dmorse(r, D=D, alpha=alpha, a_0=a_0):\n", + " return -2.0*alpha*D*(np.exp(-2.0*alpha*(r-a_0)) - np.exp(-alpha*(r-a_0)))\n", + "\n", + "# harmonic potential\n", + "def harm(r, kappa=kappa):\n", + " return D*alpha*alpha*kappa*(r**2)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "f1997bca", + "metadata": { + "ExecuteTime": { + "end_time": "2022-12-01T12:39:29.807240Z", + "start_time": "2022-12-01T12:39:29.800985Z" + } + }, + "outputs": [], + "source": [ + "# structure\n", + "element = 'Al'\n", + "potential = md_morse()\n", + "supercell = 4\n", + "n_atoms = 4*supercell**3\n", + "temperatures = np.linspace(100, 900, 9)\n", + "samples = 5" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "ddf9c025", + "metadata": { + "ExecuteTime": { + "end_time": "2022-12-01T12:39:31.207687Z", + "start_time": "2022-12-01T12:39:29.807441Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The job zero was saved and received the ID: 18414706\n" + ] + } + ], + "source": [ + "# minimize structure\n", + "zero = pr.create.job.Lammps('zero', delete_existing_job=True)\n", + "zero.structure = pr.create.structure.bulk(element, cubic=True).repeat(supercell)\n", + "zero.potential = potential\n", + "zero.calc_minimize(pressure=0.0001)\n", + "zero.run()\n", + "structure = zero.get_structure()\n", + "a_0 = (structure.cell/supercell/np.sqrt(2))[0][0]\n", + "U_0 = zero.output.energy_pot[-1]/n_atoms" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "8d6b917f", + "metadata": { + "ExecuteTime": { + "end_time": "2022-12-01T12:39:31.841612Z", + "start_time": "2022-12-01T12:39:31.209275Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The job stat_ba was saved and received the ID: 18414707\n" + ] + } + ], + "source": [ + "# analyze bonds and get rotations and displacement matrix\n", + "stat_ba = pr.create_job(StaticBondAnalysis, 'stat_ba', delete_existing_job=True)\n", + "stat_ba.input.structure = structure.copy()\n", + "stat_ba.input.n_shells = 1\n", + "stat_ba.run()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "6749c0f7", + "metadata": { + "ExecuteTime": { + "end_time": "2022-12-01T12:39:31.842974Z", + "start_time": "2022-12-01T12:39:31.841807Z" + } + }, + "outputs": [], + "source": [ + "# normalized displacement vectors along which to displace our atom\n", + "disp_matrix = np.array(stat_ba.output.per_shell_transformation_matrices[0][0])\n", + "# these are also the normalized long, t1 and t2 vectors\n", + "long_hat, t1_hat, t2_hat = disp_matrix\n", + "# rotations\n", + "rotations = stat_ba.output.per_shell_0K_rotations[0]\n", + "# a_xyz\n", + "a_xyz = long_hat*a_0" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "e3de985e", + "metadata": { + "ExecuteTime": { + "end_time": "2022-12-01T12:39:39.408764Z", + "start_time": "2022-12-01T12:39:31.843144Z" + } + }, + "outputs": [], + "source": [ + "# load the nvt jobs from the md runs\n", + "md_jobs_nvt = []\n", + "for i in range(len(temperatures)):\n", + " temp_jobs = []\n", + " for j in range(samples):\n", + " temp_jobs.append(pr_md_nvt.load('nve_temp_' + str(i) + '_sample_' + str(j)))\n", + " md_jobs_nvt.append(temp_jobs)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "32ad89bd", + "metadata": { + "ExecuteTime": { + "end_time": "2022-12-01T12:39:41.585289Z", + "start_time": "2022-12-01T12:39:39.409009Z" + } + }, + "outputs": [], + "source": [ + "# extract mean anharmonic internal energy from the md run\n", + "def get_md_ah_U(temp_jobs, temperature, snapshots=200):\n", + " ah_U_pa = []\n", + " for job in temp_jobs:\n", + " if job.status == 'finished':\n", + " U_pa = np.mean(job['output/generic/energy_pot'][snapshots:])/n_atoms - U_0\n", + " T_virial = np.mean(job['output/generic/temperature'][snapshots:])\n", + " ah_U_pa.append(U_pa - 1.5*KB*T_virial)\n", + " return np.mean(ah_U_pa)*1000, np.std(ah_U_pa)/np.sqrt(len(temp_jobs))*1000 # in meV\n", + "\n", + "U_md_nvt = []\n", + "U_md_nvt_err = []\n", + "for (temp_jobs, temp) in zip(md_jobs_nvt, temperatures):\n", + " ah_U_pa, ah_U_pa_err = get_md_ah_U(temp_jobs, temp)\n", + " U_md_nvt.append(ah_U_pa)\n", + " U_md_nvt_err.append(ah_U_pa_err)\n", + "U_md_nvt = np.array(U_md_nvt)\n", + "U_md_nvt_err = np.array(U_md_nvt_err)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "d2509a66", + "metadata": { + "ExecuteTime": { + "end_time": "2022-12-01T12:40:13.530109Z", + "start_time": "2022-12-01T12:39:41.585524Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The job md_ba_100_0 was saved and received the ID: 18414708\n", + "The job md_ba_200_0 was saved and received the ID: 18414709\n", + "The job md_ba_300_0 was saved and received the ID: 18414710\n", + "The job md_ba_400_0 was saved and received the ID: 18414711\n", + "The job md_ba_500_0 was saved and received the ID: 18414712\n", + "The job md_ba_600_0 was saved and received the ID: 18414713\n", + "The job md_ba_700_0 was saved and received the ID: 18414714\n", + "The job md_ba_800_0 was saved and received the ID: 18414715\n", + "The job md_ba_900_0 was saved and received the ID: 18414716\n" + ] + } + ], + "source": [ + "# analyze MD bonds for the highest temperature\n", + "md_ba_jobs = []\n", + "for (temp, temp_jobs) in zip(temperatures, md_jobs_nvt):\n", + " md_job = temp_jobs[0]\n", + " md_ba = pr.create_job(MDBondAnalysis, 'md_ba_' + str(temp).replace('.','_'), delete_existing_job=True)\n", + " md_ba.input.structure = structure.copy()\n", + " md_ba.input.n_shells = 1\n", + " md_ba.input.md_job = md_job.copy()\n", + " md_ba.input.thermalize_snapshots = 200\n", + " md_ba.run()\n", + " md_ba_jobs.append(md_ba)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "7526d922", + "metadata": { + "ExecuteTime": { + "end_time": "2022-12-01T12:40:13.532353Z", + "start_time": "2022-12-01T12:40:13.530326Z" + } + }, + "outputs": [], + "source": [ + "# bond arrangement functions\n", + "\n", + "# for 1d\n", + "def get_b_array(long_samples, t1_samples, t2_samples):\n", + " b_array = np.outer(long_samples, long_hat) + np.outer(t1_samples, t1_hat) + np.outer(t2_samples, t2_hat)\n", + " return b_array\n", + "\n", + "# for 3d\n", + "def get_sample_mesh(long_samples, t1_samples, t2_samples):\n", + " long_mesh, t1_mesh, t2_mesh = np.meshgrid(long_samples, t1_samples, t2_samples, indexing='ij')\n", + " return long_mesh, t1_mesh, t2_mesh\n", + "\n", + "def get_b_grid(long_mesh, t1_mesh, t2_mesh):\n", + " b_grid = np.tensordot(long_mesh, long_hat, axes=0) + np.tensordot(t1_mesh, t1_hat, axes=0) + \\\n", + " np.tensordot(t2_mesh, t2_hat, axes=0)\n", + " return b_grid" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "bf701729", + "metadata": { + "ExecuteTime": { + "end_time": "2022-12-01T12:40:21.236963Z", + "start_time": "2022-12-01T12:40:13.532511Z" + } + }, + "outputs": [], + "source": [ + "# create bond vectors from the MD bond distribution (so a seperate one for each temperature)\n", + "n_bins = 51\n", + "long_meshs, t1_meshs, t2_meshs = [], [], []\n", + "for c in range(len(temperatures)):\n", + " md_rho, md_bins = md_ba_jobs[c].get_3d_histogram_long_t1_t2(n_bins=n_bins, shell=0)\n", + " long_meshs.append(md_bins[0])\n", + " t1_meshs.append(md_bins[1])\n", + " t2_meshs.append(md_bins[2])\n", + " \n", + "# since our rotations are done in the xyz coordinate system, we convert them to xyz\n", + "b_grids = []\n", + "for c in range(len(temperatures)):\n", + " b_grids.append(get_b_grid(long_meshs[c], t1_meshs[c], t2_meshs[c]))" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "07c0556b", + "metadata": { + "ExecuteTime": { + "end_time": "2022-12-01T12:40:21.237941Z", + "start_time": "2022-12-01T12:40:21.237206Z" + } + }, + "outputs": [], + "source": [ + "# # create custom meshs\n", + "# n_bins = 51\n", + "# long_samples = np.linspace(1.5, 4.5, n_bins)\n", + "# t1_samples = np.linspace(-1.5, 1.5, n_bins)\n", + "# t2_samples = t1_samples.copy()\n", + "# long_mesh, t1_mesh, t2_mesh = get_sample_mesh(long_samples, t1_samples, t2_samples)\n", + "# b_grids = [get_b_grid(long_mesh, t1_mesh, t2_mesh)]*len(temperatures)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "005004e3", + "metadata": { + "ExecuteTime": { + "end_time": "2022-12-01T12:40:21.254880Z", + "start_time": "2022-12-01T12:40:21.238194Z" + } + }, + "outputs": [], + "source": [ + "# single bonding potential\n", + "def V_1(b_xyz):\n", + " r = np.linalg.norm(b_xyz, axis=-1)\n", + " return morse(r)\n", + "\n", + "# single bonding potential gradient\n", + "def dV_1(b_xyz):\n", + " V = V_1(b_xyz=b_xyz)\n", + " long_samples = np.dot(b_xyz, long_hat)[:, 0, 0]\n", + " t1_samples = np.dot(b_xyz, t1_hat)[0, :, 0]\n", + " t2_samples = np.dot(b_xyz, t2_hat)[0, 0, :]\n", + " return np.gradient(V, long_samples, t1_samples, t2_samples, edge_order=2)\n", + "\n", + "# each mean field component\n", + "def V_mf_component(b_xyz, rotation, a_s=1., a_ex=1.):\n", + " \"\"\"\n", + " here, a_s=the 'global' strain and a_ex=the 'pseudo' strain, which is equal to the 'global' strain at P=0 for \n", + " a given temperature. Once a_ex is established for a temperature, it remains the same for that temperature for \n", + " all new 'global' strains that we would like our model to predict free energies for.\n", + " \"\"\"\n", + " return V_1((b_xyz-a_xyz*a_s*a_ex)@rotation.T+a_xyz*a_s*a_ex)\n", + "\n", + "# mean field potential\n", + "def V_mf(b_xyz, a_s=1., a_ex=1.):\n", + " vmf = V_1(b_xyz)/2\n", + " for rot in rotations[1:]:\n", + " vmf += V_mf_component(b_xyz=b_xyz, rotation=rot, a_s=a_s, a_ex=a_ex)/2\n", + " return vmf\n", + "\n", + "# mean field correlated potential\n", + "def V_mfc(b_xyz, a_s=1., a_ex=1.):\n", + " vmfc = V_mf_component(b_xyz=b_xyz, rotation=rotations[0], a_s=a_s, a_ex=a_ex)\n", + " for i, rot in enumerate(rotations):\n", + " if i not in [0, 1]:\n", + " vmfc += V_mf_component(b_xyz=b_xyz, rotation=rot, a_s=a_s, a_ex=a_ex)/2\n", + " return vmfc\n", + "\n", + "# # linear correction function 1-d\n", + "# def find_linear_correction(temperature=100., a_s=1., a_ex=1., nstep=10000, minr=0.1, maxr=5.):\n", + "# r = np.linspace(minr, maxr, nstep, endpoint=True)\n", + "# r_array = get_b_array(r, np.zeros(nstep), np.zeros(nstep))\n", + "# V = V_mfc(b_xyz=r_array, a_s=a_s, a_ex=a_ex)\n", + "# V -= V.min()\n", + "# sel = V/temperature/KB<200.0 \n", + "# r, V = r[sel], V[sel]\n", + "# aa = a_s*a_0\n", + "# def f(m):\n", + "# rho = brho * np.exp(-m*(r-aa)/temperature/KB)\n", + "# res = np.abs(np.log((rho*r).sum()/rho.sum()/aa)).sum()\n", + "# return res\n", + "# brho = np.exp(-(V-V.min())/temperature/KB)\n", + "# solver = root_scalar(f, x0=0.0, x1=0.01, rtol=1e-8)\n", + "# return solver.root\n", + "\n", + "# linear correction function\n", + "def find_linear_correction(b_xyz, temperature=100., a_s=1., a_ex=1.):\n", + " \"\"\"\n", + " since the 1-d linear correction was not correctly setting =a (bug in the code?) I use the 3d bond vectors\n", + " to find the linear correction. This works.\n", + " \"\"\"\n", + " V = V_mfc(b_xyz=b_xyz, a_s=a_s, a_ex=a_ex)\n", + " V -= V.min()\n", + " long_mesh = np.dot(b_xyz, long_hat)\n", + " sel = V/temperature/KB<200.0 \n", + " long_mesh, V = long_mesh[sel], V[sel]\n", + " aa = a_s*a_0\n", + " def f(m):\n", + " rho = brho*np.exp(-m*(long_mesh-aa)/temperature/KB)\n", + " res = np.abs(np.log((rho*long_mesh).sum()/rho.sum()/aa)).sum()\n", + " return res\n", + " brho = np.exp(-(V-V.min())/temperature/KB)\n", + " solver = root_scalar(f, x0=0.0, x1=0.01, rtol=1e-8)\n", + " return solver.root\n", + "\n", + "# mean field correlated potential with linear correction term\n", + "def V_mfc_lc(b_xyz, temperature=100., a_s=1., a_ex=1.):\n", + " lm = find_linear_correction(b_xyz=b_xyz, temperature=temperature, a_s=a_s, a_ex=a_ex)\n", + " # NOTE here that the additional local strain is NOT considered here, as this will make the model predict\n", + " # the correction term at that strain, thus violating =a.\n", + " lc = lm*(np.dot(b_xyz, long_hat)-a_0*a_s)\n", + " vmfclc = V_mfc(b_xyz=b_xyz, a_s=a_s, a_ex=a_ex)+lc\n", + " return vmfclc\n", + "\n", + "# helper method to find virial quantities\n", + "def virial_helper(b_xyz, a_s=1., a_ex=1., pressure=False):\n", + " dV = np.array(dV_1(b_xyz))\n", + " if not pressure:\n", + " db_dV = (np.dot(b_xyz, long_hat)-a_0*a_s)*dV[0] + np.dot(b_xyz, t1_hat)*dV[1] + np.dot(b_xyz, t2_hat)*dV[2]\n", + " else:\n", + " db_dV = a_0*a_s*dV[0] # + np.dot(b_xyz, t1_hat)*dV[1] + np.dot(b_xyz, t2_hat)*dV[2]\n", + " return db_dV\n", + "\n", + "# bonding density function\n", + "def get_rho(v, temperature=100.):\n", + " rho = np.exp(-(v-v.min())/KB/ temperature)\n", + " return rho/rho.sum()\n", + "\n", + "# virial temperature\n", + "def find_virial_T(b_xyz, temperature=100., a_s=1., a_ex=1.):\n", + " db_dV = virial_helper(b_xyz, a_s=a_s, a_ex=a_ex)\n", + " vmfclc = V_mfc_lc(b_xyz=b_xyz, temperature=temperature, a_s=a_s, a_ex=a_ex)\n", + " rho = get_rho(v=vmfclc, temperature=temperature)\n", + " return 2./KB*(rho*db_dV).sum()\n", + "\n", + "# virial pressure\n", + "def find_virial_P(b_xyz, temperature=100., a_s=1., a_ex=1.):\n", + " db_dV = virial_helper(b_xyz, a_s=a_s, a_ex=a_ex, pressure=True)\n", + " vmfclc = V_mfc_lc(b_xyz=b_xyz, temperature=temperature, a_s=a_s, a_ex=a_ex)\n", + " rho = get_rho(v=vmfclc, temperature=temperature)\n", + " N_by_V = n_atoms/((a_0*a_s*np.sqrt(2))**3*supercell)\n", + " return N_by_V*(KB*temperature+4.*((db_dV).sum()))\n", + "\n", + "# 2 virials, 1 method\n", + "def find_virial(b_xyz, temperature=100., a_s=1., a_ex=1.):\n", + " \"\"\"\n", + " Find both the virial temperature and pressure in the same method.\n", + " \"\"\"\n", + " vmfclc = V_mfc_lc(b_xyz=b_xyz, temperature=temperature, a_s=a_s, a_ex=a_ex)\n", + " rho = get_rho(v=vmfclc, temperature=temperature)\n", + " db_dV_T = virial_helper(b_xyz=b_xyz, a_s=a_s, a_ex=a_ex)\n", + " virial_T = 2./KB*(rho*db_dV_T).sum()\n", + " db_dV_P = virial_helper(b_xyz, a_s=a_s, pressure=True)\n", + " N_by_V = n_atoms/((a_0*a_s*np.sqrt(2)*supercell)**3)\n", + " virial_P = N_by_V*(KB*temperature+4.*((rho*db_dV_P).sum()))\n", + " return virial_T, virial_P\n", + "\n", + "# effective temperature\n", + "def find_eff_T(b_xyz, temperature=100., a_s=1., a_ex=1., rotations=rotations):\n", + " print(\"Initial temperature: {}\".format(temperature))\n", + " def dvirialE(eff_temperature):\n", + " res = find_virial_T(b_xyz=b_xyz, temperature=eff_temperature, a_s=a_s, a_ex=a_ex)\n", + " return res/(temperature+1e-20)-1.\n", + " solver = root_scalar(dvirialE, x0=temperature, x1=temperature+10, rtol=1e-8)\n", + " print(\"Effective temperature: {}\".format(solver.root))\n", + " return solver.root\n", + " \n", + "# effective temperature + strain\n", + "def find_eff_strain_and_T(b_xyz, temperature=100., pressure=1e-10, a_s=1., a_ex=1., rotations=rotations):\n", + " \"\"\"\n", + " Optimize both the effective temperature and strain corresponding to a given pressure. Presently, I use this\n", + " method to set my pressure to 0 to obtain a_ex.\n", + " \"\"\"\n", + " def dvirialPT(arg):\n", + " res_T, res_P = find_virial(b_xyz=b_xyz, temperature=arg[0], a_s=arg[1], a_ex=arg[1])\n", + " return [res_T/(temperature+1e-20)-1., abs(res_P/(pressure+1e-20))-1.]\n", + " solver = root(dvirialPT, x0=(temperature, a_s), tol=1e-8)\n", + " print('Effective temperature: {}\\nGlobal strain: {}'.format(solver.x[0], solver.x[1]))\n", + " return solver.x\n", + "\n", + "# strain_at_pressure\n", + "def find_strain_at_pressure(b_xyz, temperature=100., pressure=1e-20, a_ex=1., a_s=1., rotations=rotations):\n", + " \"\"\"\n", + " seperate method to find the strain at an input pressure.\n", + " \"\"\"\n", + " def f(a_s):\n", + " res = find_virial_P(b_xyz=b_xyz, temperature=temperature, a_s=a_s, a_ex=a_ex)\n", + " return res/(pressure+1e-20)-1.\n", + " solver = root_scalar(f, x0=a_s*0.99, x1=a_s*1.01, rtol=1e-8)\n", + " return solver.root\n", + "\n", + "# get ah U's using this function...\n", + "def get_ah_U(rhos, temperatures=temperatures):\n", + " return np.array([(6*(((V_1(b_grids[i]) - V_1(a_xyz))*rho).sum()) - 1.5*KB*t)*1000 \n", + " for i, (rho, t) in enumerate(zip(rhos, temperatures))])\n", + "\n", + "# get ah F's using this function...\n", + "def get_ah_F(ah_Us, temperatures=temperatures, n_fine=10000):\n", + " fine_temperatures = np.linspace(temperatures[0], temperatures[-1], n_fine, endpoint=True)\n", + " ah_U_eqn = UnivariateSpline(x=temperatures, y=ah_Us, k=3, s=0)\n", + " return -cumtrapz(ah_U_eqn(fine_temperatures), 1/fine_temperatures)*fine_temperatures[1:], fine_temperatures[1:]" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "358fc4a9", + "metadata": { + "ExecuteTime": { + "end_time": "2022-12-01T12:40:32.681284Z", + "start_time": "2022-12-01T12:40:21.255102Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Initial temperature: 100.0\n", + "Effective temperature: 102.27073193969343\n", + "Initial temperature: 200.0\n", + "Effective temperature: 208.30874684550085\n", + "Initial temperature: 300.0\n", + "Effective temperature: 317.3666072552088\n", + "Initial temperature: 400.0\n", + "Effective temperature: 428.1827095112276\n", + "Initial temperature: 500.0\n", + "Effective temperature: 540.7044354412858\n", + "Initial temperature: 600.0\n", + "Effective temperature: 654.4027427164102\n", + "Initial temperature: 700.0\n", + "Effective temperature: 766.6114678679114\n", + "Initial temperature: 800.0\n", + "Effective temperature: 879.6841310785211\n", + "Initial temperature: 900.0\n", + "Effective temperature: 992.2656375806246\n" + ] + } + ], + "source": [ + "# collect effective temperatures using the old approach\n", + "eff_temperatures_old = np.array([find_eff_T(b_grid, temp) for temp, b_grid in zip(temperatures, b_grids)])" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "73c19a10", + "metadata": { + "ExecuteTime": { + "end_time": "2022-12-01T12:41:06.146230Z", + "start_time": "2022-12-01T12:40:32.681498Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Effective temperature: 99.84299423194422\n", + "Global strain: 1.0060857914733892\n", + "Effective temperature: 199.1268613415269\n", + "Global strain: 1.0126535077823045\n", + "Effective temperature: 297.72108879440196\n", + "Global strain: 1.0197490143622303\n", + "Effective temperature: 394.3199506973771\n", + "Global strain: 1.0276349109964757\n", + "Effective temperature: 489.90350390534894\n", + "Global strain: 1.0361942420182997\n", + "Effective temperature: 584.6048844327706\n", + "Global strain: 1.0455876039896872\n", + "Effective temperature: 671.5812667636701\n", + "Global strain: 1.0571505314103442\n", + "Effective temperature: 761.2374212571572\n", + "Global strain: 1.0701544460546282\n", + "Effective temperature: 856.5602020395352\n", + "Global strain: 1.08696032519274\n" + ] + } + ], + "source": [ + "# collect effective temperatures and pseudo-strains for each temperature using the new approach\n", + "eff_parameters = np.array([find_eff_strain_and_T(b_xyz, t) for b_xyz, t in zip(b_grids, temperatures)]).T\n", + "eff_temperatures_new, pseudo_strains = eff_parameters" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "682ce597-dbc6-427d-8a5f-8f45bc31532e", + "metadata": { + "ExecuteTime": { + "end_time": "2022-12-01T12:41:10.13936Z", + "start_time": "2022-12-01T12:41:06.146462Z" + } + }, + "outputs": [], + "source": [ + "# ah_Us and ah_Fs for different methods\n", + "\n", + "# vmf = []\n", + "# mf_rhos = []\n", + "# for i, temp in enumerate(temperatures):\n", + "# v = V_mfc(b_grids[i])\n", + "# vmf.append(v)\n", + "# mf_rhos.append(get_rho(v, temp))\n", + "# U_mf = get_ah_U(mf_rhos, temperatures=temperatures)\n", + "# F_mf, fine_temperatures = get_ah_F(U_mf, temperatures=temperatures)\n", + "\n", + "# vmfc = []\n", + "# mfc_rhos = []\n", + "# for i, temp in enumerate(temperatures):\n", + "# v = V_mfc_lc(b_grids[i], temperature=temp)\n", + "# vmfc.append(v)\n", + "# mfc_rhos.append(get_rho(v, temp))\n", + "# U_mfc = get_ah_U(mfc_rhos, temperatures=temperatures)\n", + "# F_mfc, fine_temperatures = get_ah_F(U_mfc, temperatures=temperatures)\n", + "\n", + "vmfcv = []\n", + "mfcv_rhos = []\n", + "for i, (eff_temp) in enumerate(eff_temperatures_old):\n", + " v = V_mfc_lc(b_grids[i], temperature=eff_temp)\n", + " vmfcv.append(v)\n", + " mfcv_rhos.append(get_rho(v, eff_temp))\n", + "U_mfcv = get_ah_U(mfcv_rhos, temperatures=temperatures)\n", + "F_mfcv, fine_temperatures = get_ah_F(U_mfcv, temperatures=temperatures)\n", + "\n", + "# fixed volume = no global strain, only pseudo strain\n", + "vmfcv_ps = []\n", + "mfcv_ps_rhos = []\n", + "for i, (eff_temp, ex) in enumerate(zip(eff_temperatures_new, pseudo_strains)):\n", + " v = V_mfc_lc(b_grids[i], a_s=1., a_ex=ex, temperature=eff_temp)\n", + " vmfcv_ps.append(v)\n", + " mfcv_ps_rhos.append(get_rho(v, eff_temp))\n", + "U_mfcv_ps = get_ah_U(mfcv_ps_rhos, temperatures=temperatures)\n", + "F_mfcv_ps, fine_temperatures = get_ah_F(U_mfcv_ps, temperatures=temperatures)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "4736e364-ec0a-4750-bef4-fab3fcd555f3", + "metadata": { + "ExecuteTime": { + "end_time": "2022-12-01T12:41:10.317932Z", + "start_time": "2022-12-01T12:41:10.14210Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkYAAAHTCAYAAADCntcBAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAACP0klEQVR4nOzdd3gUVdvA4d/sZtN7DxASeu9SpAgoyGtBFBEUQVCaBUVRFN9PBUTR1wZ2EVCqgtiwC0pRUbpgoZeEFkghve5mz/fHJJssKSQhyaY893XNRfbMmZnnJEv2yTlnzmhKKYUQQgghhMDg6ACEEEIIIWoKSYyEEEIIIfJIYiSEEEIIkUcSIyGEEEKIPJIYCSGEEELkkcRICCGEECKPJEZCCCGEEHkkMRJCCCGEyCOJkRBCCCFEHkmMhKglxo8fj6ZpREVFOTqUWiUyMpLIyMgqObemaQwYMKBKzl3bLV26FE3TWLp0qaNDEaJcJDESNYamaWiaRkREBFlZWcXWiYyMRNM0LBYLAKNHj0bTNN59991Lnn/gwIFomsZbb71lu1ZZNyGq0oABA+R9JkQN4eToAIS42MmTJ1mwYAEzZ868ZN3Jkyfz8ccfs2jRIu67774S6x07dowtW7bQsGFDrrzySmbNmmW3PyoqimXLlhEREcH48eMvtwmiBvn555+r7NwHDhzA3d29ys4vhKh+khiJGsXPzw9N03jhhReYOHEigYGBpdYfMGAALVu25M8//2TPnj107dq12HqLFy9GKcU999xDt27d6Natm93+zZs3s2zZMiIjI5k9e3ZlNUfUAM2aNauyc7du3brKzi2EcAwZShM1iru7O08//TQpKSnMmTOnTMdMmjQJ0JOf4lgsFpYuXYrBYGDChAmVFmthu3fvZtq0aXTq1Al/f39cXV1p0aIF06dP58KFC0XqF55/sWnTJgYMGICXlxfe3t5cf/31/Pvvv6Veb+HChXTo0AFXV1dCQkKYNGkSSUlJRept2rSJyZMn07ZtW7y9vXFzc6Ndu3bMmjWLzMzMIvVnz56Npmls3ryZ5cuX0717dzw8PGxzdArv//jjj+nWrRvu7u40aNCA6dOnk52dDcCGDRvo378/Xl5e+Pn5cddddxX7fQDYtWsXw4cPJzg4GBcXFyIiIrjvvvs4e/ZskbqF51mV9XtQ2hyjNWvWcM0119h+ZpGRkdxxxx3s2rWr+G/8RYqbY1T4e/Tpp5/So0cP3N3d8ff3Z9SoUZw+fdpWNyoqCk3T2LJli+18+dvF5z19+jRTp06ladOmuLi4EBAQwE033cTOnTuLxFWen+OlYsxX3vd4RVgsFt555x169eqFt7c37u7udOnShbfeegur1WpXN/97N378eKKiorj99tsJDAzE1dWVbt268dVXX5V4nY8//piBAwfi5+eHq6srbdq04bnnnrO9fwvL/1mcPXuWu+++m7CwMIxGo93cqVWrVtG1a1fc3NwIDg5m7NixnD17tsgQ6Q8//ICmadxzzz3FxpWdnU1gYCCBgYHFxiKqiRKihgBUw4YNVU5OjmrWrJkymUzq0KFDdnUiIiIUoMxms60sNjZWOTs7Kx8fH5WRkVHkvF988YUC1H/+858Sr71p0yYFqP79+1co9ilTpqjg4GB12223qenTp6tp06apPn36KEC1atVKpaSk2NX/8MMPFaBuvfVW5eTkpIYOHaoee+wxdf311ytABQYGqtjYWLtjxo0bpwB12223KW9vb3XnnXeq6dOnqy5duihAXXXVVUXiGjJkiIqIiFB33HGHeuyxx9QDDzygOnfurADVr18/u++jUkrNmjVLAeqGG25QLi4uasSIEerxxx9XkydPtts/fPhw5ebmpu644w41ffp01b59ewWo8ePHqzVr1ihnZ2d1yy23qMcee0z17t27xO//l19+qUwmk3J2dlajR49WM2fOVIMGDVKACgsLU8eOHbvs70FERISKiIiwK7NarbZzBQYGqgkTJqiZM2eqO++8UzVo0EDNmjWrxJ91YcW9Z/K/R7fddptycXFRt912m3rsscdUv379FKBatmypsrKylFJKJSYmqlmzZtne17NmzbJtH374oe2cu3fvVgEBAUrTNPWf//xHPfroo2rcuHHKx8dHOTs7q2+//bZCP8eyxJivou/xwu0oTU5OjhoyZIgCVOvWrdWUKVPUtGnTVMeOHRWg7rzzTrv6J06cUIAaMGCACgoKUj179lQPP/ywuuuuu5SLi4vSNE399NNPRa5zzz33KECFh4erCRMmqOnTp9veowMGDFA5OTl29QHVvn171bhxY9WuXTs1depU9cADD9i+5y+99JIClJ+fn5oyZYp6/PHHVZcuXVRkZKTq1KmTKvwxa7VaVbNmzZS7u7tKSkoqEtvKlSsVoB599NEyfc9E1ZDESNQY+YmRUkqtXbtWAeqWW26xq1NcYqSUUiNHjlSAWrZsWZHz5icbn3/+eYnXvtzEKCoqSlksliLl7733ngLUCy+8YFee/6FhNBqL/PKeOXOmAtSLL75oV57/Qd64cWMVHR1tKzebzbYPtG3bttkdc+zYMWW1WovE9eSTTypAffzxx3bl+R+Y7u7uas+ePUWOy9/v7e2t9u/fbyvPyspSbdu2VQaDQfn6+qrNmzfb9lmtVnXttdcqQP3555+28tTUVOXv76+MRqPaunWr3XXmzZunADVo0KDL/h4UlxgtXLhQAapHjx5FPqAsFos6e/ZskbYXp7TEyMvLS/311192++644w4FqNWrV9uV9+/f3+4DtDCz2ayaNWumXF1d1a+//mq378yZM6pBgwYqJCREZWZmFonhUj/H8sRY0fd4WROj/JimTZtmdx2LxWJLZr744gtbeX5iBKjZs2fbneuHH34oNhnPj2nEiBF236/C158/f75def41xo4dW+T3zrFjx5STk5MKDAxUJ0+etJVbrVZ1++23244t7OWXX1aAevPNN4t8D/r166c0TSvyB6GoXpIYiRqjcGKklFJXXnmlAuw+DEpKjH766SdbL0hhp06dUkajUYWGhhY5prDLTYxKYrValbe3txo4cKBdef4v6DFjxhQ55vjx47bepMLyk4LFixcXOeaDDz4o8ZdtceLj4xWg7r77brvywh9Oxcnf//TTTxfZN2fOHNsHyMWWLVumALV06VJb2YoVK4rtCVBK7z3I/1lHRUXZyivyPSguMcrv4SouaSiP0hKjp556qkj9jRs3FtsjUFpi9OWXXypAzZgxo9j9CxYsUID65ptvisRwqZ9jeWIsyaXe42VJjHJzc1VAQIAKCwsrNvlKTExUmqapESNG2MryE6PIyMhij2ncuLEKCAiwK+vcubMymUwqMTGxSH2LxaICAgLUFVdcYVcOKGdnZ3X+/Pkix8ydO1cBas6cOUX2RUVFKaPRWOTnmpCQoFxdXVWHDh3syvfv368AdfXVVxc5l6heMvla1FivvvoqvXv35tFHH2Xbtm2l3s589dVX06xZM3799VcOHTpEq1atAPjggw/Izc3l7rvvxsmp6t7uZrOZhQsXsnr1avbv309ycrLdnIgzZ84Ue9wVV1xRpCw8PByAxMTEyz4mPT2d119/nS+++ILDhw+TmpqKUuqScfXs2bPY8nwXT14HaNCgwSX3FZ678ueffwL6MgoXM5lM9O/fn+XLl/Pnn38SERFht78i37d86enp/PPPP4SEhNClS5dS616Oy4mxsD/++APQ59QUd2PAkSNHADh48CA33HCD3b5L/RzLE2NF3+NlcfjwYRISEmjRogVz584tto6bmxsHDx4sUt65c2eMRmOx7cj/3gFkZGSwb98+AgMDWbBgQbHXcHFxKfYakZGRBAcHFynPfw/37du3yL6IiAjCw8OLrDuWP49r2bJl/PHHH1x55ZWAPm8QYMqUKcXGJqqPJEaixrryyisZMWIEn376KZ988gmjRo0qsa6maUycOJEnn3ySxYsX8/LLL2O1Wvnggw/QNK3KJl3nGzVqFF988QVNmzZl2LBhhIaG4uLiAsCCBQtKnEjp4+NTpCw/gcvNzb2sY8xmM1dffTU7duygffv2jBo1iqCgIEwmEwBz5swpMa7Q0NCSmnrJGErbZzabbWXJycmlXissLMyuXlmvX9L3LV/+BO2GDRuWWu9yXU6MhSUkJACwdu3aUuulpaUVKbucn+PFMVb0PV4W+W08cuRIqTddFNfG4toAejsKJ26JiYkopYiLiyvzjR35Svo+5r83Q0JCit0fEhJS7IKs9913H8uWLeP999/nyiuvJCsri+XLlxMcHMwtt9xSrthE5ZPESNRoL774IuvWrePJJ5+85C+Mu+++m2eeeYbly5czb948Nm7cSHR0NNdcc02V3rK9a9cuvvjiC6655hq+//57W+IBYLVaeemll6rs2qVZt24dO3bsYNy4cUVWH46JiSn1w6E6FhvM/0A7d+5csftjYmLs6lUWX19f4PJ6OKpTfvvXrVvHTTfdVK5jK+vnWNXv8fw23nLLLXz++eeXda5LXaNLly7s2bOnXMeW9H309vYG4Pz587Rr167I/vPnzxd7XM+ePenWrRtr1qxh/vz5fPXVVyQmJjJz5ky7761wDLldX9RozZo14/777+fEiRO8+eabpdYNCQnhpptuIjY2lq+++sp2+/7kyZOrNMajR48CMGzYsCK/1Hbs2FHsbfHVIT+uW2+9tci+/NvDHSl/GGvz5s1F9lksFn777TeAEtemqigPDw/at2/P+fPn2bt3b6Weu6Lyh4KK60nq1asXAL/++mu1xlRYVb/HW7duja+vL9u2bbPrVaxMnp6etGvXjn///bfSlhfIfw/nv1cLi46O5tSpUyUee99995GZmcmKFStYuHAhmqbZlh4RjiWJkajxnnnmGXx9fXn++eeL7UovLP8Xy8svv8y6desICgri5ptvrtL48teGufgDPjY2lgceeKBKr12a/Lg2bdpkV378+HGeeOIJB0Rk7+abb8bf35+PP/6Ybdu22e1bsGABx48fZ9CgQTRu3LjSr/3QQw8B+odTSkqK3b7c3Fxbb1V1CQgIACj2g3TYsGE0a9aMt99+m++++67Y4//44w8yMjKqLL6qfo87OTnx4IMPEhMTw0MPPVRsohUTE8P+/fsv6zrTp08nJyeHe+65p9g1rxITE8vVmzR69GicnJx488037X52SimefPLJUodM77jjDnx9fXnhhRf4/fffufbaa2natGm52iOqhgyliRrP39+f//73vzz++OOXrHvttdfSpEkTtm/fDsC4ceNwdnau0vi6d+9Onz59+Pzzz+nduzd9+/bl/PnzfP/997Rq1co28bi6DR06lObNmzN//nz++ecfunTpwsmTJ/nmm2+44YYbOHnypEPiyufp6ckHH3zAbbfdRv/+/bntttto3Lgxu3fvZv369YSGhtompFa2iRMn8ttvv7F8+XKaN2/OsGHDCAoK4syZM2zatIl77rmnWldAv+aaa1i7di3Dhw/nuuuuw83NjYiICMaOHYvJZOLzzz9nyJAh3HDDDfTu3ZvOnTvj7u7OqVOn2LlzJ8ePHycmJqbKHk9SHe/xp59+mn379vHee+/x9ddfc/XVV9OwYUNiY2M5cuQIW7du5fnnn6dt27YVvsY999zD7t27eeedd2jWrBlDhgyhcePGXLhwgRMnTvDLL79w9913895775XpfM2aNePZZ5/lv//9L506dWLUqFH4+PiwYcMGLly4QKdOnfjrr7+KPdbd3Z1x48bx+uuvAzLpuiaRHiNRKzz00ENlekL6xROtJ06cWIVR6YxGI1999ZVtteY33niD3377jYkTJ/Ljjz86bM6Ah4cHGzduZPTo0fz777+88cYb/PXXXzz99NOsXLnSITFdbNiwYWzdupXrr7+eH3/8kVdeeYUDBw5w7733snv37ir7C1rTNJYtW8bKlStp06YNn3zyCa+99hq//PIL/fr1K/dcnsuVf+NAUlISL730Ek8//TRL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2geQlpbGvHnz6NixI15eXgQEBNC9e3fefvttzGazXd3a2D6AuLg4HnjgASIiInB2dqZBgwZMmjSJc+fOFalb49qoRKUBlK+vrxo4cKAKDQ1VRqOxxLoWi0X1799fAWrs2LFq0aJF6qGHHlJGo1ENGDBAWSwWu/p79+5Vnp6eKiAgQM2dO1e99957qm/fvgpQixcvruqmKaWUeuKJJ5SHh4e6/fbb1euvv67effddNXLkSAWoxo0bq3PnztXq9iml1JEjR9SVV16ppk+frl5//XW1ePFi9dRTT6lGjRopk8mk1q9fX+vbWNjDDz+sPD09FaAmTJhgt6+2tg9Q/fr1UytWrCiymc3mWt8+pZQ6ffq0atGihfL19VWPPPKIWrx4sXr99dfVAw88oJ577rla3cZ9+/YV+7N77rnnFKC6du1aq9tnNptVz549lcFgUOPHj1fvvfeeev3119WAAQMUoEaPHl2r26eUUrGxsapJkyZK0zQ1btw49d5776knnnhCeXp6qsjISHX+/Pka3UZJjCrR0aNHbV/379+/1MRoyZIlClAPPvigXfmCBQsUoD744AO78n79+ilN09TOnTttZWazWXXv3l35+PioxMTEymlEKXbu3Fnsdf7v//5PAeqxxx6zldXG9pXm9OnTymg0qoEDB9rKansbd+zYoYxGo3rttdeKTYxqa/sANW7cuEvWq63tU0qpq6++WoWEhKioqKhS69XmNl7sqaeeUoB67733bGW1sX0bNmxQgHr00UftynNzc9UVV1yhNE2zxVEb26eUUo888ogC1Lx58+zKt27dqjRNU5MnT7aV1cQ2SmJURS6VGOVnyBf/YsvMzFQeHh5qwIABtrITJ04owK4s34oVKxSgli5dWnnBl9O+ffsUoIYMGWIrq0vtU0r/q8bT01N17tzZVlab25iTk6M6duyobrrpJltsFydGtbV9+YlRdna2SklJKbFebW3fb7/9pgD12muvKaX092ZqamqxdWtrGy9msVhUw4YNlYeHh0pOTraV18b2rV27VgHq1VdfLbJv6NChymg0qoyMDKVU7WyfUkp16tRJASomJqbIvpYtWypPT0+VmZmplKqZbZQ5Rg6glGLXrl00aNCAiIgIu32urq507dqVnTt3ovKWmNq+fTsAvXv3LnKu/LL8Oo6QP94fHBwM1I32mc1m4uPjOXfuHDt2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WrduXWKd2ti+6OhoFRgYqAA1dOhQ9dZbb6mXXnpJdezYUQHqoYceqtXty9eqVSv1+OOPq/fff18tWLDAtl7R/fffb1evJrZREqNKlP+DL2m7WGpqqpoxY4Zq3LixMplMqnHjxmrGjBklLta2d+9edcMNNygfHx/l5uamevToodauXVvVzbIZN25cqe2LiIiwq1/b2qeUvirtiBEjVGRkpHJ3d1fOzs4qIiJCjR49Wm3fvr1I/drYxouVlBgpVfvat27dOjVkyBDVsGFD5eLiotzc3FT79u3VU089Vexij7WtfYV999136qqrrlIeHh62WD7++OMi9WprG1999dUSF0IsrDa278SJE+qee+5R4eHhysnJSbm7u6vu3bur999/X1mtVru6tbF9Sil11113qaZNmypXV1fl7e2t+vfvrz755JNi69a0NmpK5a2cJIQQQghRz8nkayGEEEKIPJIYCSGEEELkkcRICCGEECKPJEZCCCGEEHkkMRJCCCGEyCOJkRBCCCFEHkmMhBBCCCHySGIkhBBCCJFHEiMhhBBCiDySGAkhRD01YMAANE2zbatXr77sc954441251y6dOnlBypENZLESIhaqPAHT1k2+XAqn82bN6NpGrNnz3Z0KNVi1qxZzJo1i/bt29uV5ydOmzdvLnJMeno6Q4YMQdM0hgwZQlpaGgCjR49m1qxZDBs2rDpCF6LSOTk6ACFE+c2aNatI2YIFC0hOTmbatGn4+vra7evcuXP1BCZqpfImgPHx8Vx//fXs3LmTO++8kw8//BCTyQToiRHA0qVLWbduXWWHKkSVk8RIiFqouA+ypUuXkpyczMMPP0xkZGS1xyTqh6ioKIYMGcLhw4eZPn06r7zyCpqmOTosISqNDKUJUQ9s376dESNGEBoairOzM+Hh4UyZMoWzZ88WqZs/fGI2m3n22Wdp1qwZrq6utGrVikWLFtnqvf3227Rv3x43NzcaNWrE7NmzsVqtdueKiopC0/6/vfuPqar84wD+vsD9JeGF5Cry25wVQQZIokRyLxY/BW1SORlewIFbc1qsFtZIaPWHZRP8o6CMH20gsrLN61JkjECWYmhBNk0WoFxREbn3IhqK8fn+IffG6VwI5zX50uf1D+PznOfHOWeDz87znOdIkJ6ejrNnz2LNmjV49NFH4ezsjMjISBw5cmTCMe/duxdarRZu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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.title('NVT anharmonic internal energy')\n", + "plt.xlabel('Temperatures [K]')\n", + "plt.ylabel('$U_{\\mathrm{ah}}$ [meV]')\n", + "plt.plot(temperatures, U_md_nvt, label='MD')\n", + "plt.fill_between(temperatures, U_md_nvt-U_md_nvt_err, U_md_nvt+U_md_nvt_err, alpha=0.5)\n", + "# plt.plot(temperatures, U_mf, label='mf')\n", + "# plt.plot(temperatures, U_mfc, label='mfc')\n", + "plt.plot(temperatures, U_mfcv, label='mfc-lc-v')\n", + "plt.plot(temperatures, U_mfcv_ps, label='mfc-lc-v-ps')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "ebcb8647-fabb-4ee4-953b-ef4ae24ab553", + "metadata": { + "ExecuteTime": { + "end_time": "2022-12-01T12:41:10.549882Z", + "start_time": "2022-12-01T12:41:10.318112Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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ftDl5JJ1GWvXrl251mVkZLB3716AfOemKi5bW1uaNGnC9evXOX78eIluu7DatWsHwJ9//lmo/m3atEGv1xe6f0nuuyzsw8HBgdq1a3PlypU8H4mT9buSFz8/Pzp16sT69evZt28fu3btIiAggAYNGpRIbaJskGAkKpV33nkHJycnZs2adc9LBVlzGn388cds3LgRNzc3BgwYUKr1ZY15+PcHfGRkJM8++2yp7rsgWXXt3LkzR3tQUBD/+c9/TFBRTgMGDMDFxYVVq1Zx4MCBHOvmzp1LUFAQPXr0oGbNmiW+76yzGFOmTMm+TJMlMzMz+2xVaRk3bhxOTk7MnDmTgwcP5lpvNBpz/D65u7szcuRIDh8+zHvvvZf9SJy7Xbp0icuXL99z3/3796dOnTp89dVX/P7773n22b9/P0lJSYU/oH9p1aoVnTt3Zv369Xz33Xd59jl16hSRkZGF3uaTTz6J0WjkjTfeyDFOLiwsjLlz5xb43meeeYbU1FSGDBmCUoqnn3660PsV5YNcShOViouLC//973957bXX7tm3V69e1KpVi7///huAMWPGYGFhUar1tW7dmo4dO7J+/Xo6dOhAp06duH79Ops2baJ+/fommxW5b9++1K1blzlz5nD69GmaN29OaGgov/76K4899hihoaEmqSuLnZ0d3333HUOHDiUgIIChQ4dSs2ZNjhw5wpYtW/D09My+7FHSJkyYwN69e1m2bBl169alf//+uLm5ceXKFXbu3MlTTz1VqjOgV6lShXXr1jFw4EDatWtH9+7dady4MXq9ntDQUPbv38/NmzdzPDPwyy+/5MKFC7zzzjssX76cTp064eHhwdWrVwkMDOTQoUOsWrWKWrVqFbhvc3Nz1q9fT+/evXnsscfo0KEDzZo1w8bGhrCwMA4dOkRQUBARERHY2NgU+xi///57HnroIcaPH8/nn39O27ZtcXJyIjw8nJMnT3L69Gn279+Pu7t7obb32muvsWHDBlavXs25c+fo1asXsbGxrFmzhi5durBhwwb0+rzPGwwePBh3d3ciIiJwc3Nj0KBBxT4uUTbJGSNR6bzwwguFekL6vwdaT5gwoRSr0hgMBn7++efs2Zo///xz9u7dy4QJE9i8eXOuy2sPiq2tLTt27GDEiBH8888/fP7555w8eZK3336bFStWmKSmf+vfvz9//fUXjz76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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "F_md_nvt, fine_temperatures = get_ah_F(U_md_nvt, temperatures=temperatures)\n", + "plt.title('NVT anharmonic free energy')\n", + "plt.xlabel('Temperatures [K]')\n", + "plt.ylabel('$F_{\\mathrm{ah}}$ [meV]')\n", + "plt.plot(fine_temperatures, F_md_nvt, label='MD')\n", + "# plt.plot(fine_temperatures, F_mf, label='mf')\n", + "# plt.plot(fine_temperatures, F_mfc, label='mfc')\n", + "plt.plot(fine_temperatures, F_mfcv, label='mfc-lc-v')\n", + "plt.plot(fine_temperatures, F_mfcv_ps, label='mfc-lc-v-ps')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "98439c5b", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3.8 (XPython)", + "language": "python", + "name": "xpython" + }, + "language_info": { + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "version": "3.8.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 7b6a52418e8b9721d6f2f07d1f0c992dab232083 Mon Sep 17 00:00:00 2001 From: Raynol Dsouza Date: Thu, 1 Dec 2022 13:46:56 +0100 Subject: [PATCH 426/434] rename --- .../mean_field/{morse_mf_al_nvt.ipynb => morse_al_mf_nvt.ipynb} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename pyiron_contrib/atomistics/mean_field/{morse_mf_al_nvt.ipynb => morse_al_mf_nvt.ipynb} (100%) diff --git a/pyiron_contrib/atomistics/mean_field/morse_mf_al_nvt.ipynb b/pyiron_contrib/atomistics/mean_field/morse_al_mf_nvt.ipynb similarity index 100% rename from pyiron_contrib/atomistics/mean_field/morse_mf_al_nvt.ipynb rename to pyiron_contrib/atomistics/mean_field/morse_al_mf_nvt.ipynb From 5cddc36650b9dc4065f6ebaf0d83f51de30eebc7 Mon Sep 17 00:00:00 2001 From: Raynol Dsouza Date: Thu, 1 Dec 2022 14:46:23 +0100 Subject: [PATCH 427/434] fix incorrect formula --- pyiron_contrib/atomistics/mean_field/morse_al_mf_nvt.ipynb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyiron_contrib/atomistics/mean_field/morse_al_mf_nvt.ipynb b/pyiron_contrib/atomistics/mean_field/morse_al_mf_nvt.ipynb index 0a47c5ba5..a2a7d8474 100644 --- a/pyiron_contrib/atomistics/mean_field/morse_al_mf_nvt.ipynb +++ b/pyiron_contrib/atomistics/mean_field/morse_al_mf_nvt.ipynb @@ -305,7 +305,7 @@ "md_ba_jobs = []\n", "for (temp, temp_jobs) in zip(temperatures, md_jobs_nvt):\n", " md_job = temp_jobs[0]\n", - " md_ba = pr.create_job(MDBondAnalysis, 'md_ba_' + str(temp).replace('.','_'), delete_existing_job=True)\n", + " md_ba = pr.create_job(MDBondAnalysis, 'md_ba_nvt' + str(temp).replace('.','_'), delete_existing_job=True)\n", " md_ba.input.structure = structure.copy()\n", " md_ba.input.n_shells = 1\n", " md_ba.input.md_job = md_job.copy()\n", @@ -654,7 +654,7 @@ } ], "source": [ - "# collect effective temperatures and pseudo-strains for each temperature using the new approach\n", + "# collect effective temperatures and pseudo strains for each temperature using the new approach\n", "eff_parameters = np.array([find_eff_strain_and_T(b_xyz, t) for b_xyz, t in zip(b_grids, temperatures)]).T\n", "eff_temperatures_new, pseudo_strains = eff_parameters" ] From 124d35ffa2ce19914b156ff1477db4d5ed9ace1f Mon Sep 17 00:00:00 2001 From: Raynol Dsouza Date: Thu, 1 Dec 2022 15:14:34 +0100 Subject: [PATCH 428/434] add npt notebook --- .../mean_field/morse_al_mf_npt.ipynb | 810 ++++++++++++++++++ .../mean_field/morse_al_mf_nvt.ipynb | 16 +- 2 files changed, 818 insertions(+), 8 deletions(-) create mode 100644 pyiron_contrib/atomistics/mean_field/morse_al_mf_npt.ipynb diff --git a/pyiron_contrib/atomistics/mean_field/morse_al_mf_npt.ipynb b/pyiron_contrib/atomistics/mean_field/morse_al_mf_npt.ipynb new file mode 100644 index 000000000..42a7b2a66 --- /dev/null +++ b/pyiron_contrib/atomistics/mean_field/morse_al_mf_npt.ipynb @@ -0,0 +1,810 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "04ace7b5", + "metadata": {}, + "source": [ + "# Bond lattice mean-field model for a Morse potential - NPT" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "08515601", + "metadata": { + "ExecuteTime": { + "end_time": "2022-12-01T14:00:56.592869Z", + "start_time": "2022-12-01T14:00:45.158875Z" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/cmmc/u/system/SLES12/soft/pyiron/dev/anaconda3/lib/python3.8/site-packages/pkg_resources/__init__.py:123: PkgResourcesDeprecationWarning: NOT-A-GIT-REPOSITORY is an invalid version and will not be supported in a future release\n", + " warnings.warn(\n" + ] + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "02121f83981e414f9383b12ac4b67452", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from pyiron_atomistics import Project\n", + "\n", + "from scipy.interpolate import UnivariateSpline, CubicSpline\n", + "from scipy.optimize import root_scalar, root\n", + "from scipy.integrate import cumtrapz\n", + "\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import pandas as pd\n", + "from matplotlib import gridspec\n", + "\n", + "from scipy.constants import physical_constants\n", + "KB = physical_constants['Boltzmann constant in eV/K'][0]\n", + "\n", + "from pyiron_contrib.atomistics.mean_field.core.bond_analysis import StaticBondAnalysis, MDBondAnalysis\n", + "\n", + "import seaborn as sns\n", + "sns.set_context('paper', font_scale=1.5, rc={\"lines.linewidth\": 2})" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "c9c25b36", + "metadata": { + "ExecuteTime": { + "end_time": "2022-12-01T14:00:56.599018Z", + "start_time": "2022-12-01T14:00:56.593240Z" + } + }, + "outputs": [], + "source": [ + "alpha = 1.5\n", + "pr = Project('morse_al/mfm')\n", + "pr_md_npt = Project('morse_al/md_runs_npt/alpha_' + str(alpha).replace('.', '_'))" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "d1e84e27", + "metadata": { + "ExecuteTime": { + "end_time": "2022-12-01T14:00:56.604967Z", + "start_time": "2022-12-01T14:00:56.599265Z" + } + }, + "outputs": [], + "source": [ + "# potential functions\n", + "D = 0.1\n", + "a_0 = 2.856\n", + "kappa = 0.\n", + "\n", + "# for lammps\n", + "def md_morse(D=D, alpha=alpha, r_0=a_0, b=1):\n", + " config = 'atom_style bond\\nbond_style morse\\n'\n", + " for i in range(b):\n", + " vals = (i+1, D, alpha, a_0)\n", + " config += 'bond_coeff %d %.7f %.7f %.7f\\n'%(vals)\n", + " return pd.DataFrame({'Name': ['Morse'],\n", + " 'Filename': [[]], \n", + " 'Model' : ['Morse'], \n", + " 'Species' : [['Al']], \n", + " 'Config' : [[config]]})\n", + "\n", + "# longitudinal_potential\n", + "def morse(r, D=D, alpha=alpha, a_0=a_0):\n", + " return D*(1.0+np.exp(-2.0*alpha*(r-a_0)) - 2.0*np.exp(-alpha*(r-a_0)))\n", + "\n", + "def dmorse(r, D=D, alpha=alpha, a_0=a_0):\n", + " return -2.0*alpha*D*(np.exp(-2.0*alpha*(r-a_0)) - np.exp(-alpha*(r-a_0)))\n", + "\n", + "# harmonic potential\n", + "def harm(r, kappa=kappa):\n", + " return D*alpha*alpha*kappa*(r**2)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "f1997bca", + "metadata": { + "ExecuteTime": { + "end_time": "2022-12-01T14:00:56.611207Z", + "start_time": "2022-12-01T14:00:56.605188Z" + } + }, + "outputs": [], + "source": [ + "# structure\n", + "element = 'Al'\n", + "potential = md_morse()\n", + "supercell = 4\n", + "n_atoms = 4*supercell**3\n", + "temperatures = np.linspace(100, 700, 7)\n", + "pressure = 0.0001 # in GPa\n", + "samples = 5" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "ddf9c025", + "metadata": { + "ExecuteTime": { + "end_time": "2022-12-01T14:00:58.340952Z", + "start_time": "2022-12-01T14:00:56.611440Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The job zero was saved and received the ID: 18414826\n" + ] + } + ], + "source": [ + "# minimize structure\n", + "zero = pr.create.job.Lammps('zero', delete_existing_job=True)\n", + "zero.structure = pr.create.structure.bulk(element, cubic=True).repeat(supercell)\n", + "zero.potential = potential\n", + "zero.calc_minimize(pressure=pressure)\n", + "zero.run()\n", + "structure = zero.get_structure()\n", + "a_0 = (structure.cell/supercell/np.sqrt(2))[0][0]\n", + "U_0 = zero.output.energy_pot[-1]/n_atoms" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "8d6b917f", + "metadata": { + "ExecuteTime": { + "end_time": "2022-12-01T14:00:58.940776Z", + "start_time": "2022-12-01T14:00:58.344052Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The job stat_ba was saved and received the ID: 18414827\n" + ] + } + ], + "source": [ + "# analyze bonds and get rotations and displacement matrix\n", + "stat_ba = pr.create_job(StaticBondAnalysis, 'stat_ba', delete_existing_job=True)\n", + "stat_ba.input.structure = structure.copy()\n", + "stat_ba.input.n_shells = 1\n", + "stat_ba.run()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "6749c0f7", + "metadata": { + "ExecuteTime": { + "end_time": "2022-12-01T14:00:58.943521Z", + "start_time": "2022-12-01T14:00:58.941040Z" + } + }, + "outputs": [], + "source": [ + "# normalized displacement vectors along which to displace our atom\n", + "disp_matrix = np.array(stat_ba.output.per_shell_transformation_matrices[0][0])\n", + "# these are also the normalized long, t1 and t2 vectors\n", + "long_hat, t1_hat, t2_hat = disp_matrix\n", + "# rotations\n", + "rotations = stat_ba.output.per_shell_0K_rotations[0]\n", + "# a_xyz\n", + "a_xyz = long_hat*a_0" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "e3de985e", + "metadata": { + "ExecuteTime": { + "end_time": "2022-12-01T14:01:05.230492Z", + "start_time": "2022-12-01T14:00:58.943784Z" + } + }, + "outputs": [], + "source": [ + "# load the nvt jobs from the md runs\n", + "md_jobs_npt = []\n", + "for i in range(len(temperatures)):\n", + " temp_jobs = []\n", + " for j in range(samples):\n", + " temp_jobs.append(pr_md_npt.load('nve_temp_' + str(i) + '_sample_' + str(j)))\n", + " md_jobs_npt.append(temp_jobs)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "32ad89bd", + "metadata": { + "ExecuteTime": { + "end_time": "2022-12-01T14:01:06.654001Z", + "start_time": "2022-12-01T14:01:05.230854Z" + } + }, + "outputs": [], + "source": [ + "# extract mean anharmonic internal energy from the md run\n", + "def get_md_ah_U(temp_jobs, temperature, snapshots=200):\n", + " ah_U_pa = []\n", + " for job in temp_jobs:\n", + " if job.status == 'finished':\n", + " U_pa = np.mean(job['output/generic/energy_pot'][snapshots:])/n_atoms - U_0\n", + " T_virial = np.mean(job['output/generic/temperature'][snapshots:])\n", + " ah_U_pa.append(U_pa - 1.5*KB*T_virial)\n", + " return np.mean(ah_U_pa)*1000, np.std(ah_U_pa)/np.sqrt(len(temp_jobs))*1000 # in meV\n", + "\n", + "U_md_npt = []\n", + "U_md_npt_err = []\n", + "for (temp_jobs, temp) in zip(md_jobs_npt, temperatures):\n", + " ah_U_pa, ah_U_pa_err = get_md_ah_U(temp_jobs, temp)\n", + " U_md_npt.append(ah_U_pa)\n", + " U_md_npt_err.append(ah_U_pa_err)\n", + "U_md_npt = np.array(U_md_npt)\n", + "U_md_npt_err = np.array(U_md_npt_err)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "d2509a66", + "metadata": { + "ExecuteTime": { + "end_time": "2022-12-01T14:01:32.652213Z", + "start_time": "2022-12-01T14:01:06.654383Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The job md_ba_npt_100_0 was saved and received the ID: 18414828\n", + "The job md_ba_npt_200_0 was saved and received the ID: 18414829\n", + "The job md_ba_npt_300_0 was saved and received the ID: 18414830\n", + "The job md_ba_npt_400_0 was saved and received the ID: 18414831\n", + "The job md_ba_npt_500_0 was saved and received the ID: 18414832\n", + "The job md_ba_npt_600_0 was saved and received the ID: 18414833\n", + "The job md_ba_npt_700_0 was saved and received the ID: 18414834\n" + ] + } + ], + "source": [ + "# analyze MD bonds for the highest temperature\n", + "md_ba_jobs = []\n", + "for (temp, temp_jobs) in zip(temperatures, md_jobs_npt):\n", + " md_job = temp_jobs[0]\n", + " md_ba = pr.create_job(MDBondAnalysis, 'md_ba_npt_' + str(temp).replace('.','_'), delete_existing_job=True)\n", + " md_ba.input.structure = structure.copy()\n", + " md_ba.input.n_shells = 1\n", + " md_ba.input.md_job = md_job.copy()\n", + " md_ba.input.thermalize_snapshots = 200\n", + " md_ba.run()\n", + " md_ba_jobs.append(md_ba)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "7526d922", + "metadata": { + "ExecuteTime": { + "end_time": "2022-12-01T14:01:32.655085Z", + "start_time": "2022-12-01T14:01:32.652526Z" + } + }, + "outputs": [], + "source": [ + "# bond arrangement functions\n", + "\n", + "# for 1d\n", + "def get_b_array(long_samples, t1_samples, t2_samples):\n", + " b_array = np.outer(long_samples, long_hat) + np.outer(t1_samples, t1_hat) + np.outer(t2_samples, t2_hat)\n", + " return b_array\n", + "\n", + "# for 3d\n", + "def get_sample_mesh(long_samples, t1_samples, t2_samples):\n", + " long_mesh, t1_mesh, t2_mesh = np.meshgrid(long_samples, t1_samples, t2_samples, indexing='ij')\n", + " return long_mesh, t1_mesh, t2_mesh\n", + "\n", + "def get_b_grid(long_mesh, t1_mesh, t2_mesh):\n", + " b_grid = np.tensordot(long_mesh, long_hat, axes=0) + np.tensordot(t1_mesh, t1_hat, axes=0) + \\\n", + " np.tensordot(t2_mesh, t2_hat, axes=0)\n", + " return b_grid" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "bf701729", + "metadata": { + "ExecuteTime": { + "end_time": "2022-12-01T14:01:38.369951Z", + "start_time": "2022-12-01T14:01:32.655290Z" + } + }, + "outputs": [], + "source": [ + "# create bond vectors from the MD bond distribution (so a seperate one for each temperature)\n", + "n_bins = 51\n", + "long_meshs, t1_meshs, t2_meshs = [], [], []\n", + "for c in range(len(temperatures)):\n", + " md_rho, md_bins = md_ba_jobs[c].get_3d_histogram_long_t1_t2(n_bins=n_bins, shell=0)\n", + " long_meshs.append(md_bins[0])\n", + " t1_meshs.append(md_bins[1])\n", + " t2_meshs.append(md_bins[2])\n", + " \n", + "# since our rotations are done in the xyz coordinate system, we convert them to xyz\n", + "b_grids = []\n", + "for c in range(len(temperatures)):\n", + " b_grids.append(get_b_grid(long_meshs[c], t1_meshs[c], t2_meshs[c]))" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "07c0556b", + "metadata": { + "ExecuteTime": { + "end_time": "2022-12-01T14:01:38.371231Z", + "start_time": "2022-12-01T14:01:38.370259Z" + } + }, + "outputs": [], + "source": [ + "# # create custom meshs\n", + "# n_bins = 51\n", + "# long_samples = np.linspace(1.8, 4.5, n_bins)\n", + "# t1_samples = np.linspace(-1.5, 1.5, n_bins)\n", + "# t2_samples = t1_samples.copy()\n", + "# long_mesh, t1_mesh, t2_mesh = get_sample_mesh(long_samples, t1_samples, t2_samples)\n", + "# b_grids = [get_b_grid(long_mesh, t1_mesh, t2_mesh)]*len(temperatures)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "005004e3", + "metadata": { + "ExecuteTime": { + "end_time": "2022-12-01T14:01:38.400058Z", + "start_time": "2022-12-01T14:01:38.371583Z" + } + }, + "outputs": [], + "source": [ + "# single bonding potential\n", + "def V_1(b_xyz):\n", + " r = np.linalg.norm(b_xyz, axis=-1)\n", + " return morse(r)\n", + "\n", + "# single bonding potential gradient\n", + "def dV_1(b_xyz):\n", + " V = V_1(b_xyz=b_xyz)\n", + " long_samples = np.dot(b_xyz, long_hat)[:, 0, 0]\n", + " t1_samples = np.dot(b_xyz, t1_hat)[0, :, 0]\n", + " t2_samples = np.dot(b_xyz, t2_hat)[0, 0, :]\n", + " return np.gradient(V, long_samples, t1_samples, t2_samples, edge_order=2)\n", + "\n", + "# each mean field component\n", + "def V_mf_component(b_xyz, rotation, a_s=1., a_ex=1.):\n", + " \"\"\"\n", + " here, a_s=the 'global' strain and a_ex=the 'pseudo' strain, which is equal to the 'global' strain at P=0 for \n", + " a given temperature. Once a_ex is established for a temperature, it remains the same for that temperature for \n", + " all new 'global' strains that we would like our model to predict free energies for.\n", + " \"\"\"\n", + " return V_1((b_xyz-a_xyz*a_s*a_ex)@rotation.T+a_xyz*a_s*a_ex)\n", + "\n", + "# mean field potential\n", + "def V_mf(b_xyz, a_s=1., a_ex=1.):\n", + " vmf = V_1(b_xyz)/2\n", + " for rot in rotations[1:]:\n", + " vmf += V_mf_component(b_xyz=b_xyz, rotation=rot, a_s=a_s, a_ex=a_ex)/2\n", + " return vmf\n", + "\n", + "# mean field correlated potential\n", + "def V_mfc(b_xyz, a_s=1., a_ex=1.):\n", + " vmfc = V_mf_component(b_xyz=b_xyz, rotation=rotations[0], a_s=a_s, a_ex=a_ex)\n", + " for i, rot in enumerate(rotations):\n", + " if i not in [0, 1]:\n", + " vmfc += V_mf_component(b_xyz=b_xyz, rotation=rot, a_s=a_s, a_ex=a_ex)/2\n", + " return vmfc\n", + "\n", + "# # linear correction function 1-d\n", + "# def find_linear_correction(temperature=100., a_s=1., a_ex=1., nstep=10000, minr=0.1, maxr=5.):\n", + "# r = np.linspace(minr, maxr, nstep, endpoint=True)\n", + "# r_array = get_b_array(r, np.zeros(nstep), np.zeros(nstep))\n", + "# V = V_mfc(b_xyz=r_array, a_s=a_s, a_ex=a_ex)\n", + "# V -= V.min()\n", + "# sel = V/temperature/KB<200.0 \n", + "# r, V = r[sel], V[sel]\n", + "# aa = a_s*a_0\n", + "# def f(m):\n", + "# rho = brho * np.exp(-m*(r-aa)/temperature/KB)\n", + "# res = np.abs(np.log((rho*r).sum()/rho.sum()/aa)).sum()\n", + "# return res\n", + "# brho = np.exp(-(V-V.min())/temperature/KB)\n", + "# solver = root_scalar(f, x0=0.0, x1=0.01, rtol=1e-8)\n", + "# return solver.root\n", + "\n", + "# linear correction function\n", + "def find_linear_correction(b_xyz, temperature=100., a_s=1., a_ex=1.):\n", + " \"\"\"\n", + " since the 1-d linear correction was not correctly setting =a (bug in the code?) I use the 3d bond vectors\n", + " to find the linear correction. This works.\n", + " \"\"\"\n", + " V = V_mfc(b_xyz=b_xyz, a_s=a_s, a_ex=a_ex)\n", + " V -= V.min()\n", + " long_mesh = np.dot(b_xyz, long_hat)\n", + " sel = V/temperature/KB<200.0 \n", + " long_mesh, V = long_mesh[sel], V[sel]\n", + " aa = a_s*a_0\n", + " def f(m):\n", + " rho = brho*np.exp(-m*(long_mesh-aa)/temperature/KB)\n", + " res = np.abs(np.log((rho*long_mesh).sum()/rho.sum()/aa)).sum()\n", + " return res\n", + " brho = np.exp(-(V-V.min())/temperature/KB)\n", + " solver = root_scalar(f, x0=0.0, x1=0.01, rtol=1e-8)\n", + " return solver.root\n", + "\n", + "# mean field correlated potential with linear correction term\n", + "def V_mfc_lc(b_xyz, temperature=100., a_s=1., a_ex=1.):\n", + " lm = find_linear_correction(b_xyz=b_xyz, temperature=temperature, a_s=a_s, a_ex=a_ex)\n", + " # NOTE here that the additional local strain is NOT considered here, as this will make the model predict\n", + " # the correction term at that strain, thus violating =a.\n", + " lc = lm*(np.dot(b_xyz, long_hat)-a_0*a_s)\n", + " vmfclc = V_mfc(b_xyz=b_xyz, a_s=a_s, a_ex=a_ex)+lc\n", + " return vmfclc\n", + "\n", + "# helper method to find virial quantities\n", + "def virial_helper(b_xyz, a_s=1., a_ex=1., pressure=False):\n", + " dV = np.array(dV_1(b_xyz))\n", + " if not pressure:\n", + " db_dV = (np.dot(b_xyz, long_hat)-a_0*a_s)*dV[0] + np.dot(b_xyz, t1_hat)*dV[1] + np.dot(b_xyz, t2_hat)*dV[2]\n", + " else:\n", + " db_dV = a_0*a_s*dV[0] # + np.dot(b_xyz, t1_hat)*dV[1] + np.dot(b_xyz, t2_hat)*dV[2]\n", + " return db_dV\n", + "\n", + "# bonding density function\n", + "def get_rho(v, temperature=100.):\n", + " rho = np.exp(-(v-v.min())/KB/ temperature)\n", + " return rho/rho.sum()\n", + "\n", + "# virial temperature\n", + "def find_virial_T(b_xyz, temperature=100., a_s=1., a_ex=1.):\n", + " db_dV = virial_helper(b_xyz, a_s=a_s, a_ex=a_ex)\n", + " vmfclc = V_mfc_lc(b_xyz=b_xyz, temperature=temperature, a_s=a_s, a_ex=a_ex)\n", + " rho = get_rho(v=vmfclc, temperature=temperature)\n", + " return 2./KB*(rho*db_dV).sum()\n", + "\n", + "# virial pressure\n", + "def find_virial_P(b_xyz, temperature=100., a_s=1., a_ex=1.):\n", + " db_dV = virial_helper(b_xyz, a_s=a_s, a_ex=a_ex, pressure=True)\n", + " vmfclc = V_mfc_lc(b_xyz=b_xyz, temperature=temperature, a_s=a_s, a_ex=a_ex)\n", + " rho = get_rho(v=vmfclc, temperature=temperature)\n", + " N_by_V = n_atoms/((a_0*a_s*np.sqrt(2)*supercell)**3)\n", + " return N_by_V*(KB*temperature+4.*((rho*db_dV).sum()))\n", + "\n", + "# 2 virials, 1 method\n", + "def find_virial(b_xyz, temperature=100., a_s=1., a_ex=1.):\n", + " \"\"\"\n", + " Find both the virial temperature and pressure in the same method.\n", + " \"\"\"\n", + " vmfclc = V_mfc_lc(b_xyz=b_xyz, temperature=temperature, a_s=a_s, a_ex=a_ex)\n", + " rho = get_rho(v=vmfclc, temperature=temperature)\n", + " db_dV_T = virial_helper(b_xyz=b_xyz, a_s=a_s, a_ex=a_ex)\n", + " virial_T = 2./KB*(rho*db_dV_T).sum()\n", + " db_dV_P = virial_helper(b_xyz, a_s=a_s, a_ex=a_ex, pressure=True)\n", + " N_by_V = n_atoms/((a_0*a_s*np.sqrt(2)*supercell)**3)\n", + " virial_P = N_by_V*(KB*temperature+4.*((rho*db_dV_P).sum()))\n", + " return virial_T, virial_P\n", + "\n", + "# effective temperature\n", + "def find_eff_T(b_xyz, temperature=100., a_s=1., a_ex=1.):\n", + " print(\"Initial temperature: {}\".format(temperature))\n", + " def dvirialE(eff_temperature):\n", + " res = find_virial_T(b_xyz=b_xyz, temperature=eff_temperature, a_s=a_s, a_ex=a_ex)\n", + " return res/(temperature+1e-20)-1.\n", + " solver = root_scalar(dvirialE, x0=temperature, x1=temperature+10, rtol=1e-8)\n", + " print(\"Effective temperature: {}\".format(solver.root))\n", + " return solver.root\n", + " \n", + "# effective temperature + strain\n", + "def find_eff_strain_and_T(b_xyz, temperature=100., pressure=1e-10, a_s=1., a_ex=1.):\n", + " \"\"\"\n", + " Optimize both the effective temperature and strain corresponding to a given pressure. Presently, I use this\n", + " method to set my pressure to 0 to obtain a_ex.\n", + " \"\"\"\n", + " def dvirialPT(arg):\n", + " res_T, res_P = find_virial(b_xyz=b_xyz, temperature=arg[0], a_s=arg[1], a_ex=arg[1])\n", + " return [res_T/(temperature+1e-20)-1., res_P/(pressure+1e-20)-1.]\n", + " solver = root(dvirialPT, x0=(temperature, a_s), tol=1e-8)\n", + " print('Effective temperature: {}\\nGlobal strain: {}'.format(solver.x[0], solver.x[1]))\n", + " return solver.x\n", + "\n", + "# strain_at_pressure\n", + "def find_strain_at_pressure(b_xyz, temperature=100., pressure=1e-20, a_ex=1., a_s=1.):\n", + " \"\"\"\n", + " seperate method to find the strain at an input pressure.\n", + " \"\"\"\n", + " def f(a_s):\n", + " res = find_virial_P(b_xyz=b_xyz, temperature=temperature, a_s=a_s, a_ex=a_ex)\n", + " return res/(pressure+1e-20)-1.\n", + " solver = root_scalar(f, x0=a_ex*0.99, x1=a_ex*1.01, rtol=1e-8)\n", + " return solver.root\n", + "\n", + "# get ah U's using this function...\n", + "def get_ah_U(rhos, temperatures=temperatures):\n", + " return np.array([(6*(((V_1(b_grids[i]) - V_1(a_xyz))*rho).sum()) - 1.5*KB*t)*1000 \n", + " for i, (rho, t) in enumerate(zip(rhos, temperatures))])\n", + "\n", + "# get ah F's using this function...\n", + "def get_ah_F(ah_Us, temperatures=temperatures, n_fine=10000):\n", + " fine_temperatures = np.linspace(temperatures[0], temperatures[-1], n_fine, endpoint=True)\n", + " ah_U_eqn = UnivariateSpline(x=temperatures, y=ah_Us, k=3, s=0)\n", + " return -cumtrapz(ah_U_eqn(fine_temperatures), 1/fine_temperatures)*fine_temperatures[1:], fine_temperatures[1:]" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "73c19a10", + "metadata": { + "ExecuteTime": { + "end_time": "2022-12-01T14:02:00.779305Z", + "start_time": "2022-12-01T14:01:38.400351Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Effective temperature: 99.79150421106391\n", + "Global strain: 1.0062102234640375\n", + "Effective temperature: 198.94728796409652\n", + "Global strain: 1.0128133122669747\n", + "Effective temperature: 297.1438676690236\n", + "Global strain: 1.019980475171334\n", + "Effective temperature: 393.255183143703\n", + "Global strain: 1.0279369695867742\n", + "Effective temperature: 486.51875395186016\n", + "Global strain: 1.0368166845435047\n", + "Effective temperature: 574.8254791620155\n", + "Global strain: 1.0472475401673842\n", + "Effective temperature: 654.1924151591791\n", + "Global strain: 1.060014706701452\n" + ] + } + ], + "source": [ + "# collect effective temperatures and pseudo strains for each temperature using the new approach\n", + "eff_parameters = np.array([find_eff_strain_and_T(b_xyz, t, pressure) for b_xyz, t in zip(b_grids, temperatures)]).T\n", + "eff_temperatures_new, pseudo_strains = eff_parameters" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "907a0496", + "metadata": { + "ExecuteTime": { + "end_time": "2022-12-01T14:02:10.696215Z", + "start_time": "2022-12-01T14:02:00.779673Z" + } + }, + "outputs": [], + "source": [ + "# collect global strains for the given pressure using the pseudo strains and effective temperatures\n", + "global_strains = np.array([find_strain_at_pressure(b_grid, temp, pressure, a_ex) \n", + " for temp, b_grid, a_ex in zip(eff_temperatures_new, b_grids, pseudo_strains)])" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "682ce597-dbc6-427d-8a5f-8f45bc31532e", + "metadata": { + "ExecuteTime": { + "end_time": "2022-12-01T14:02:12.233623Z", + "start_time": "2022-12-01T14:02:10.696580Z" + } + }, + "outputs": [], + "source": [ + "# ah_Us and ah_Fs\n", + "\n", + "# fixed pressure = global strain and pseudo strain\n", + "vmfcv_ps = []\n", + "mfcv_ps_rhos = []\n", + "for i, (eff_temp, s, ex) in enumerate(zip(eff_temperatures_new, global_strains, pseudo_strains)):\n", + " v = V_mfc_lc(b_grids[i], a_s=s, a_ex=ex, temperature=eff_temp)\n", + " vmfcv_ps.append(v)\n", + " mfcv_ps_rhos.append(get_rho(v, eff_temp))\n", + "U_mfcv_ps = get_ah_U(mfcv_ps_rhos, temperatures=temperatures)\n", + "F_mfcv_ps, fine_temperatures = get_ah_F(U_mfcv_ps, temperatures=temperatures)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "4736e364-ec0a-4750-bef4-fab3fcd555f3", + "metadata": { + "ExecuteTime": { + "end_time": "2022-12-01T14:02:12.568072Z", + "start_time": "2022-12-01T14:02:12.233929Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkIAAAHTCAYAAADLdXd7AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAACfnElEQVR4nOzdd3ib1fn/8bcky5aHbHnv2Nl7T7IIEKCQHVJKS6CkUEJTIBS+8AsUCKGssksJJS1QEkah7FkgUBJo9p4OWd52vC1bHrIlPb8/ZMtWLDmWLceyfb+uK1fRM49kNf7kPOecW6UoioIQQgghRC+k7uoGCCGEEEJ0FQlCQgghhOi1JAgJIYQQoteSICSEEEKIXkuCkBBCCCF6LQlCQgghhOi1JAgJIYQQoteSICSEEEKIXkuCkBBCCCF6LQlCQvigTZs2oVKpeOihh7q6Kd3KQw89hEqlYtOmTV6/9g033IBKpSIjI8Pr1+4JVCoVs2bN6upmCOExCUKiS6lUKlQqFSkpKdTW1ro8JjU1FZVKhcVicXlu4x+NRkNUVBSXXHIJ77zzjtvjzvXn9ddf78y3LHq5119/Xb5nQvgQv65ugBAAWVlZPP/886xatcrjc1evXg1AfX09P/30Ex9//DH//e9/2bNnD0899ZRjf3PPP/88RqORlStXYjAYnPaNGTOmPW9B+IBbb72Va665hj59+nj92o8//jirVq0iMTHR69cWQnQdCUKiy4WHh6NSqXj88ce56aabiIqK8uj8sx8ffffdd1x66aU8++yz3HrrrS4fL73++usYjUbuuOMOUlNT29944VOioqI8/v60VXx8PPHx8Z1ybSFE15FHY6LLBQUF8cADD1BRUcGaNWs6fL1LLrmEIUOGYLPZ2LVrlxda6MxoNPLUU09x8cUXk5SUhL+/P9HR0cyfP5+tW7e6PKdx/ERxcTE333wz8fHxBAQEMHz4cF599dVW77d//37mzJmDwWAgKCiImTNnsmXLlhbH5eXl8fDDDzNt2jTi4uLw9/cnISGBX/7ylxw5cqTF8RkZGahUKm644QaOHTvGkiVLiI6ORq1Ws2nTJqf9p06dYsmSJURGRqLX67nssss4fPgwAAUFBdx4443Ex8ej0+mYOHGi2zE65eXlrFq1ikGDBqHT6QgPD+eyyy5j48aNLY5tPk6qrZ9Ba2OEjh07xm9+8xtSU1MJCAggJiaGGTNm8Le//a3Vz7+RqzFCzT+jjIwMrrnmGqKiotDpdIwfP55PP/3U6RqzZs1i2bJlACxbtszpkWzz61osFl566SWmTJlCaGgoQUFBjB07lhdffBGbzeZ0TU9+jm1pI7TvO94eO3bsYMmSJY7va3JyMsuXLycvL6/FsbNmzXI8In/ssccYOHAgAQEBJCcnc/fdd2M2m13e49ixY9xwww0kJycTEBBAbGwsv/rVr/jpp59aHNv4Mz59+jTPP/88I0eOJDAw0Gns0/Hjx7nqqqsIDw8nODiYqVOn8sUXX7R45Gm1WklOTiY0NBSTyeSybbfeeisqlYoPPvjA8w9PeI8iRBcClMTERKWurk7p37+/otVqlZ9++snpmJSUFAVQ6uvrW5zr7is8ZMgQBVDee+89l/sbr5menu5xm7dt26ZotVrlkksuUW6++Wbl//2//6dcc801SmBgoKLRaJQvvvjC5fscPXq0MmjQIGXEiBHKrbfeqtx0002KwWBQAOW1115zOv77779XAGXOnDlKYGCgcvHFFyt33XWX8vOf/1xRq9VKQECAcvToUadz/vWvfymBgYHKlVdeqaxYsUK5++67lYULFyp+fn5KUFCQsm/fPqfj09PTFUCZNm2aEhYWpkyaNEm54447lJtuuknZvXu3Y/+FF16oREZGKtOnT1fuvPNOZfHixYpKpVIiIyOVY8eOKampqcqYMWOUlStXKtdff72i1WqVgIAAJTMz0+l+paWljp/LpEmTlP/3//6fcuONNyp6vV5RqVTK2rVrO/wZrF69WgGU77//3mn7559/rgQGBipqtVq58sorlVWrVinLly9XpkyZoqSmprblx678+te/bvGdafyMZs2apURHRyuTJ09W7rjjDuX6669XAgICFJVKpXz77beO4//5z38qCxYsUABlwYIFyurVqx1/ysrKFEVRlLq6OuXyyy9XAGXIkCHK8uXLlZUrVyqjRo1SAOXaa69t18+xrW1UlPZ/xy+88MI2fZaKoiivvfaaotFolODgYOWXv/yl4/uqVquV+Pj4Ft+fCy+8UAGUn//850pcXJyybNkyZeXKlcrAgQMVQLn++utb3OM///mPEhgYqGi1WmXRokXK3Xffrfzyl79UAgIClNDQUGXPnj1Oxzf+jOfMmaOEhYUpv/rVr5R77rlHuffeexVF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OnSI2bNnEx4ejkql4qGHHvLKdV9//XVUKhWbNm3yyvWEEEK4Z6yu52h+hdv9WaXVZJVWAxCq82NEYtj5ato5+fT0edGzWSwWFi9ejNls5k9/+hMGg4FRo0Z1dbOEEEJ4aNvpErc1wxRFYeupYsfrC/pHolGrzlfTzkmCkOgyp0+f5uTJkzz77LPceuutXd0cIYQQ7VBiMnPsjPveoFNFVRRUmAGICvFncKz+fDWtTeTRmOgyZ87Yi+yFh3f99EkhhBDts+10CYqboUE2m3Nv0NT+UahUvtMbBBKERDs1jsH57rvveOyxx+jXrx86nY7Ro0fzn//8B4CjR48yd+5cwsLCCAsL4/rrr6eyshKA1NRULrzwQgCWLVuGSqVCpVKRkZHhdI9p06YRGhpKUFAQQ4YM4fbbb6eurq7d7a6vr+e5555j/PjxBAcHo9frGTVqFKtXr271vIqKCoKCgrj00ktd7n/llVdQqVS89dZbrV4nIyPDMRbq3XffZezYseh0OhISErjzzjupqqpyOr6srIy7776bgQMHEhgYSFhYGMOGDePOO+/07I0LIUQnKKyo5WTDTDBX0s5UUFZdD0B8mI7UyKDz1bQ2k0djokNWrVpFXV0dv/vd79BoNLzwwgssWLCA999/nxtvvJGrr76aefPmsW3bNtavX09AQAD/+Mc/eP7559m1axePPfYYN998MzNmzAAgOjoagF//+tds2LCBcePGcc899xAdHc2pU6f48MMPefjhh/H39/e4rfX19VxxxRV89913zJo1i9WrVxMSEsKxY8d47733WLNmjdtzQ0NDWbRoEe+88w45OTkkJSU57V+/fj2hoaEsXry4TW357LPPePbZZ1mxYgU33XQT3377Lc899xwHDhxg48aNqNX2f6NcffXVbNq0id/+9reMHTsWs9nMyZMn+e9//+vx+xdCCG/besp9b5DFamP76VLH62kDfK83CCQIiQ6qq6tj586dBAQEAPb6cKNHj2bhwoW88847XH311QAsX76c8vJy1q9fz3PPPcfChQsxGAw89thjXHDBBSxdutRxzffff58NGzawZMkS/vWvf+Hn1/Q1/fOf/9zutv7lL3/hu+++4w9/+APPPvus0z6bzf0CYI1uuOEG3n77bTZs2MB9993n2H7q1Cn+97//8dvf/pbAwMA2tWXfvn1s377dUTj497//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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.title('NPT anharmonic internal energy')\n", + "plt.xlabel('Temperatures [K]')\n", + "plt.ylabel('$U_{\\mathrm{ah}}$ [meV]')\n", + "plt.plot(temperatures, U_md_npt, label='MD')\n", + "plt.fill_between(temperatures, U_md_npt-U_md_npt_err, U_md_npt+U_md_npt_err, alpha=0.5)\n", + "plt.plot(temperatures, U_mfcv_ps, label='mfc-lc-v-ps')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "ebcb8647-fabb-4ee4-953b-ef4ae24ab553", + "metadata": { + "ExecuteTime": { + "end_time": "2022-12-01T14:02:12.753524Z", + "start_time": "2022-12-01T14:02:12.568250Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "F_md_nvt, fine_temperatures = get_ah_F(U_md_npt, temperatures=temperatures)\n", + "plt.title('NPT anharmonic free energy')\n", + "plt.xlabel('Temperatures [K]')\n", + "plt.ylabel('$F_{\\mathrm{ah}}$ [meV]')\n", + "plt.plot(fine_temperatures, F_md_nvt, label='MD')\n", + "plt.plot(fine_temperatures, F_mfcv_ps, label='mfc-lc-v-ps')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "98439c5b", + "metadata": { + "ExecuteTime": { + "end_time": "2022-12-01T14:02:12.900513Z", + "start_time": "2022-12-01T14:02:12.753701Z" + } + }, + "outputs": [], + "source": [ + "# load npt runs to get npt volume\n", + "md_jobs = []\n", + "for i in range(len(temperatures)):\n", + " temp_jobs = []\n", + " for j in range(samples):\n", + " temp_jobs.append(pr_md_npt.inspect('npt_temp_' + str(i) + '_sample_' + str(j)))\n", + " md_jobs.append(temp_jobs)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "80e028c4", + "metadata": { + "ExecuteTime": { + "end_time": "2022-12-01T14:02:12.944675Z", + "start_time": "2022-12-01T14:02:12.900684Z" + } + }, + "outputs": [], + "source": [ + "volumes = np.array([np.mean([md_jobs[i][j]['output/generic/volume'][200:] for j in range(samples)])\n", + " for i, _ in enumerate(temperatures)])\n", + "lattice_a = np.cbrt(volumes)/4" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "a586d484", + "metadata": { + "ExecuteTime": { + "end_time": "2022-12-01T14:02:13.112232Z", + "start_time": "2022-12-01T14:02:12.944979Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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ZXjcfocKOyIqPYP3Y2Pw9CyVs4mKiIjkUyqs8om9x0M5vmwSj95cQmNTdModKuy4Xr47vu3/h7eXX84mKSIiks+psMoHdm1ewUPrhlDjtoIqAVsulX2SEo+/gW8h/5xNUEREpIBQYZUPVKvdhFvrbQBzQXU2oBulO71JycIBOZuYiIhIAaPCKh+wdy1EaLXnuHL9FKW7vEWAT2BOpyQiIlIgqbDKJ8o9MTanUxARESnwbHI6AREREZH8QoWViIiIiJWosBIRERGxEhVWIiIiIlaiwkpERETESlRYiYiIiFiJCisRERERK1FhJSIiImIlKqxERERErESFlYiIiIiVqLASERERsRIVViIiIiJWosJKRERExErscjqBgubWrVsAHD58OIczERERkYxK/t5O/h6/ExVW2Sw0NBSA3r1752wiIiIict9CQ0Np0qTJHfebDMMwsjGfAu/q1ausWbOGgIAAnJ2drdbv4cOH6d27N9999x2VKlWyWr/5la5XxulaZZyuVcbpWmWcrlXGZeW1unXrFqGhobRt2xYfH587ttMdq2zm4+NDr169sqz/SpUqUbt27SzrP7/R9co4XauM07XKOF2rjNO1yrisulZ3u1OVTA+vi4iIiFiJCisRERERK1FhJSIiImIlKqxERERErESFVT5RvHhxgoKCKF68eE6nkifoemWcrlXG6VplnK5VxulaZVxuuFaabkFERETESnTHSkRERMRKVFiJiIiIWIkKKxERERErUWGVy7z//vv06NGDcuXKYWNjg53d3SfHj46OZsyYMQQEBODo6EhAQABjxowhOjo63fb79u2jY8eOFCpUCFdXVxo2bMjPP/+cFR8lSx07doygoCAaN26Mr68vbm5uVKtWjddff53r16+naV9Qr1Oyq1evMnDgQGrUqIG3tzdOTk6UKVOGZ555hr1796ZpX9Cv1+2ioqIIDAzEZDIxePDgNPsL+rUymUx3/ImMjEzVtqBfK4AbN27w5ptvUqlSJZydnSlcuDANGjTgu+++S9WuIF+rcePG3fXPlclk4ty5c5b2ue5aGZKrAIaXl5fRqlUro1ixYoatre0d2yYkJBgtWrQwAKNPnz7G119/bbzwwguGra2t0bJlSyMhISFV+z179hhubm6Gt7e3MWHCBGP69OlG06ZNDcCYOXNmVn80q3rttdcMV1dX4+mnnzY++eQT48svvzS6d+9uAEbp0qWNixcvWtoW5OuU7Pjx40ajRo2M0aNHG5988okxc+ZM48033zRKlSpl2NvbG7/99pulra5Xai+++KLh5uZmAMagQYNS7dO1Mv+d1axZM2PevHlpfuLj4y3tdK0M4+zZs0a5cuUMLy8v46WXXjJmzpxpfPLJJ8bw4cONiRMnWtoV9Gu1d+/edP88TZw40QCM2rVrW9rmxmulwiqXOXHihOX/t2jR4q6F1TfffGMAxsiRI1PFp06dagDGt99+myrerFkzw2QyGdu3b7fE4uPjjXr16hmenp7G9evXrfMhssH27dvTzfeNN94wAOPll1+2xArydbqXs2fPGra2tkarVq0sMV2vFNu2bTNsbW2Njz76KN3CStfKXFj169fvnu10rQyjdevWRtGiRY3Q0NC7ttO1St+bb75pAMb06dMtsdx4rVRY5WL3KqySq/T//kd669Ytw9XV1WjZsqUlFhISYgCpYsnmzZtnAMbs2bOtl3wO2bt3rwEYbdu2tcR0ne4sISHBcHNzM2rWrGmJ6XqZxcXFGdWrVzc6depk+Zz/Lax0rVIKq9jYWOPGjRt3bFfQr9Wff/5pAMZHH31kGIb5v72bN2+m27agX6v0JCQkGCVLljRcXV2NiIgISzw3Xis9Y5VHGYbBjh07KFGiBP7+/qn2OTk5Ubt2bbZv347x7zRlwcHBADRu3DhNX8mx5DZ5WfK4u6+vL6Dr9F/x8fFcvXqVixcvsm3bNnr16kVkZCQdOnQAdL1uN2nSJE6dOsVnn32W7n5dqxQ//vgjLi4ueHh44O3tzeDBg7l06ZJlv64VrFy5EoBy5crRvXt3nJ2dcXd3p0SJEkycOJHExERA1+pOVq9ezblz5+jRowceHh5A7r1WKqzyqGvXrhEVFUWpUqXS3V+qVCmioqIsD3KfPXvWEk+v7e1t8qrExEQmTpwIQP/+/QFdp//666+/KFKkCMWLF6dBgwasXr2aV155haCgIEDXK9nRo0eZMGECEyZMwM/PL902ulZm9erV46233uLHH39k3rx5PP7443z77bc0aNDAUlzpWsHhw4cBGDRoEKdPn2bmzJnMnTsXf39/xo4dy7BhwwBdqzv5+uuvAXj22Wctsdx6re7+ypnkWslvOzg6Oqa738nJydKucOHCd23v4OCAyWS64xsUecWoUaPYsmULQ4cOpXXr1oCu03/VqFGDtWvXEhsby7Fjx5g/fz7R0dHExcVhb2+v64X5X8FDhgyhSpUqjBw58o7tdK3Mtm3blmq7d+/eNGzYkOeff57x48fzxRdf6FoBN2/eBMDFxYVNmzZZPluPHj2oXLkyM2fO5P/+7/9wcXEBCva1+q8LFy6watUqqlWrRoMGDSzx3PrnSnes8qjk//hiY2PT3X/r1q1U7e7WPjY2FsMwLG3yojfffJPPP/+cbt26pRq60XVKrVChQrRp04YOHTrw0ksvsXbtWpYvX84TTzwB6HoBzJgxgy1btvDVV19ha2t7x3a6Vnc2bNgwihQpYhn+0rUCZ2dnAHr27Jnqi93BwYFevXphGAYbNmzQtUrHrFmzSEhIYMiQIaniufVaqbDKowoXLoyLi8sdb1ueO3cOV1dXChUqBNz9Nmfyc0l3up2a240bN4533nmHrl278v3336ea+0vX6e4KFSpEp06dWLNmDaGhoQX+ekVERDBmzBi6d++Ot7c3oaGhhIaGWj5fZGQkoaGhhIeHF/hrdS/+/v5cuXIF0H+HgGVIOb3FgZNj165d07X6D8Mw+Oabb3BycqJPnz6p9uXWa6XCKo8ymUzUrVuX8+fPc/r06VT7YmJi2LVrF3Xr1sVkMgFQv359ALZs2ZKmr+RYcpu8ZPz48YwfP54nnniCH374AXt7+1T7dZ3uLflfddevXy/w1+v69etERESwcOFCAgMDLT/NmjUDYNGiRQQGBjJlypQCf63uJikpiVOnTlGsWDFA/x0CNGzYEIB//vknzb4zZ84AULRoUV2r/1i/fj2nTp3iqaeewsvLK9W+XHutMv1eoWSZe0238PXXX6c7f8cnn3yS7mRnTZo0MUwmk7Fjxw5LLHn+Dnd3d+PatWvW/QBZbPz48QZgdO/ePdVEhP9V0K+TYRipJky9XUhIiFG4cGHD09PTuHXrlmEYBft6RUVFGUuWLEnzM2PGDAMw2rRpYyxZssQ4dOiQYRgF+1oZxp3/XL3zzjsGYIwaNcoSK+jXKjw83PDy8jKKFStmhIeHW+I3btwwSpQoYdjb2xtnzpwxDEPX6nY9evQwAGPTpk3p7s+N10qFVS4zd+5cY8KECcaECROMgIAAw8bGxrI9YcKEVG0TEhKMZs2aGYDRt29fY+bMmZYZZ5s1a5ZmxtmdO3carq6uhre3tzFx4kRj+vTpluNnzJiRnR8z0z777DMDMPz8/IzZs2enmaF3yZIllrYF+TolGzVqlFG5cmXj5ZdfNj777DPj888/N0aMGGF4eHgYNjY2xrx58yxtdb3SutM8VgX9Wo0aNcqoWrWqMWbMGOPLL780PvzwQ+Oxxx4zAKNixYpGWFiYpW1Bv1aGYRhz5swxAKN8+fLGpEmTjMmTJxsVK1Y0AOOdd96xtNO1Mrty5Yrh4OBgVKxY8Y5tcuO1UmGVyyRPdnann/+6efOm8corrxilS5c27O3tjdKlSxuvvPLKHSee27Nnj9GhQwfD09PTcHZ2NurXr28sXrw4qz+W1fXr1++u18nf3z9V+4J6nZKtXbvWePLJJ42AgADDxcXFcHBwMPz9/Y2ePXsawcHBadoX9Ov1X3cqrAyjYF+rZcuWGW3btjVKlixpODo6Gs7OzkbVqlWNN998M93JQgvytUq2atUqo3nz5oarq6vlMy1cuDBNO10rw/jwww8NwPjwww/v2i63XSuTYfw7c5aIiIiIZIoeXhcRERGxEhVWIiIiIlaiwkpERETESlRYiYiIiFiJCisRERERK1FhJSIiImIlKqxERERErESFlYiIiIiVqLASERERsRIVViIi8kBatmyJyWSy/Hz//feZ7vPxxx9P1efs2bMzn6hINlJhJVIA3f7FlZEffbndn40bN2IymRg3blxOp5ItgoKCCAoKomrVqqniyYXXxo0b0xwTFRVF27ZtMZlMtG3blsjISAB69uxJUFAQnTt3zo7URazOLqcTEJHsFxQUlCY2depUIiIiGDVqFF5eXqn21axZM3sSkzzpfgvIq1ev0r59e7Zv306vXr2YNWsW9vb2gLmwApg9ezbLli2zdqoiWU6FlUgBlN4X4ezZs4mIiODFF18kICAg23OSgiE0NJS2bdty7NgxRo8ezZQpUzCZTDmdlojVaChQRO4pODiYJ598kmLFiuHg4ICfnx9Dhw7l/PnzadomD//Ex8fz9ttvU7ZsWZycnKhQoQJff/21pd3nn39O1apVcXZ2plSpUowbN46kpKRUfYWGhmIymejfvz9HjhyhS5cuFC5cGFdXV5o2bcpvv/12x5wXLlxIq1atKFSoEE5OTlSqVImJEycSGxubpq3JZKJly5acP3+eAQMGULx4cWxtbS1DoMeOHWPMmDHUrVuXIkWK4OjoiL+/P0OGDOHMmTOp+urfvz+tWrUCYPz48amGVJOHxMaNG3fHIbLbP/N/+zWZTJw6dYqpU6dSrVo1nJ2dadmypaXNtWvXeP3116lUqRLOzs54enry8MMPp3udYmNj+fjjj6lVqxaFChXCxcUFPz8/OnbsyNq1a+94XTNj3759NG7cmOPHjzNp0iQ+/PBDFVWS7+iOlYjc1axZsxgyZAhOTk506tSJUqVKcfz4cWbOnMkvv/zC33//TenSpdMc9/TTTxMcHEz79u2xt7fnxx9/5Nlnn8XBwYEdO3awYMECHn/8cdq0acMvv/zC+PHjcXZ25rXXXkvTV0hICI0aNaJq1aoMHTqUCxcusGjRItq1a8eCBQvo0aNHqvaDBg3i22+/xc/PjyeeeAJPT0/+/vtvxo4dy/r16/ntt98sQ0/JwsLCaNSoEe7u7jz55JMYhoGvry8AP//8M9OnT6dVq1Y0btwYBwcHDhw4wDfffMPy5cvZuXMnpUqVAqBLly4AzJkzhxYtWqQqfKxxJ/CFF17gzz//pEOHDrRv3x5bW1sATp8+TcuWLQkNDaV58+a0a9eOyMhIVqxYwWOPPcb06dN59tlnLf307duXH374gapVq9K3b1+cnZ05f/48f/75J2vWrOGRRx7JdK6327RpE506dSI6Opo5c+bQp08fq/YvkmsYIiKGYfj7+xuAERISYokdPXrUsLe3N8qVK2ecP38+Vfv169cbNjY2RufOnVPFW7RoYQBG3bp1jevXr1viJ0+eNOzt7Q1PT08jICDAOHv2rGVfeHi44ePjY/j4+Bjx8fGWeEhIiAEYgPHyyy+nOs/27dsNOzs7w8vLy4iIiLDEZ82aZQDGk08+ady6dSvVMUFBQQZgfPzxx6niyefo06dPqvMnO3v2rBETE5MmvmrVKsPGxsYYOnRoqviGDRsMwAgKCkpzzO15bNiwIc2+5M/cr1+/VPF+/foZgFGiRAnj1KlTaY5r0aKFYTKZjB9++CFV/Pr160aNGjUMJycn48KFC4ZhmK+3yWQy6tSpYyQkJKTp6+rVq+nmnd457/Y1krx/1KhRhpOTk+Hq6mqsXr06Q30n/x5nzZqVofYiuYWGAkXkjr788kvi4+OZOnUqxYsXT7WvdevWdOrUiV9++YUbN26kOfaDDz5I9RB8mTJlaNq0KREREYwdO5aSJUta9nl6etKxY0euXr3KuXPn0vTl6enJW2+9lSpWt25devXqRXh4OEuWLLHEP/nkE+zt7fn6669xcnJKdczYsWPx9vZm/vz5ac7h4ODAlClTsLNLeyO/ZMmSODo6pom3a9eOypUr33VI0tpeeeUVAgMDU8X27t3LH3/8wZNPPslTTz2Vap+Xlxfjx48nJiaGn376CQAbGxsMw8DR0REbm7RfA97e3lbN+ZNPPiEmJobp06fz2GOPWbVvkdxGQ4Eickdbt24FzNMHbNu2Lc3+y5cvk5SUxPHjx6lTp06qff/dBihRosQ99509exZ/f/9U+2rXro27u3uaY1q2bMmcOXPYvXs3/fr1Izo6mr179+Lj48PUqVPT/UyOjo4cOXIkTTwgIMAy9PdfhmEwf/58Zs+ezd69e7l+/TqJiYmW/Q4ODukelxUaNGiQJpb8ewoPD0/3xYQrV64AWD63u7s7HTt25JdffqFWrVo88cQTNG3alAYNGuDi4mL1nNu2bcuaNWsYPXo01atXp3r16lY/h0huocJKRO4oLCwMgMmTJ9+1XfIcRLfz9PRME0u+G3S3ffHx8Wn2FS1aNN3zFitWDICIiAgArl+/jmEYXLlyhfHjx9815zv1lZ7Ro0db7tq1bduWkiVL4uzsDJjfpjx9+vR9nSsz0ssz+fe0du3auz54fvvvadGiRXzwwQcsWLDAcjfQycmJ7t27M2XKFIoUKWK1nMeMGUPLli15/fXXadWqFWvWrKFu3bpW618kN1FhJSJ3lFwARURE4OHhkWN5XLp0Kd34xYsXgZQ8k/+3Vq1a7Nq1677Ocae30y5fvsynn35K1apV2bJlS5o7ZwsXLryv8wCW4beEhIQ0+8LDw+87z+TP/cknn/DCCy9kKAdnZ2fGjRvHuHHj+Oeff9i0aROzZ89m7ty5hIaG8scff2Son4waM2YMzs7OvPjiizz88MOsXr2axo0bW/UcIrmBnrESkTtq2LAhAJs3b87RPHbt2sXNmzfTxJOnK6hVqxYAbm5uVKlShYMHD3Lt2jWrnPvUqVMkJSXx6KOPpimqzp49y6lTp9Ick/ym3u3DhbcrVKgQAP/880+afTt27LjvHDP7e/Lz86NXr16sWbOGcuXKsWnTJqtdv9uNGjWKr776isjISB599FE2bNhg9XOI5DQVViJyRyNGjMDe3p6XXnqJY8eOpdkfFxeXLUVXREQEb7/9dqrYjh07mD9/Pp6ennTt2tUSHz16NHFxcQwcODDduz/Xr1+/r7tZyVMk/Pnnn6kKpcjISIYMGZLuXafkh7/TK5wg5TmpWbNmpTr+n3/+SfM5M6Ju3bo0a9aMn3/+mW+//TbdNvv37+fy5cuA+Zmr4ODgNG2ioqK4efMmtra26T7Ebw1Dhgxh9uzZxMTE0KFDB3799dcsOY9ITtFQoIjcUcWKFfn2228ZOHAgVapU4bHHHqN8+fLEx8dz5swZNm/eTJEiRdJ9GNyamjdvzsyZMwkODqZJkyaWeaySkpKYMWNGqmHKgQMHsnPnTr744gvKli1L27ZtKV26NNeuXSMkJIRNmzYxYMAApk+fnqFzFytWjKeffprvv/+emjVr8uijjxIREcHatWtxcnKiZs2a7NmzJ9UxFSpUoGTJknz//ffY29tTunRpTCYTffr0wd/fn/r169OyZUs2btxI/fr1ad26NZcuXeKXX36hbdu2dyzI7mbBggW0bt2aQYMG8emnn9KgQQO8vLw4e/Ys+/bt48CBA2zduhVfX1/OnTtHw4YNqVSpErVr18bPz48bN26wYsUKLl68yIgRI7J06LdPnz44OTnRq9f/t3fHPomDcRjH3ybYQkyMDI2EGANxhIGYsLhUGMHo3hugSwf/BJgc/COYcDINIy4uDqyMLF39AxwM0ZXnhgsXiXBepCp3+X7WNm/7duFJePP8fpjz83MzGAyYDYj/xzfXPQDYEMt6rOYmk4larZYODg5k27ay2axKpZLCMNT9/f3CvX/qNpp3MS17xrJup9edTnEc6+zsTLu7u8pkMjo+Ptbd3d3K/dze3qrZbMp1XW1tbWlvb0/ValXdbldxHC/ca4yR53kr13p5eVGn09Hh4aEcx9H+/r4uLi70+Pi4cr/j8Vj1el07OzuyLOvN3p6enhSGoVzXlW3bKpVK6vV67/ZYLft2c9PpVFdXVzo6OtL29rbS6bQKhYIajYZ6vZ6en58l/eq2ury8VK1WUz6fl23byuVy8jxPNzc3ms1mK5/x2t/2WC3r65Kk4XAox3GUSqUURdHCNXqs8K+yJOlbEh0AvOPh4cEUi0XTarV+j5fB5jg5OTGj0ch8xs/I9fW1CYLA9Pv9N+N9gE3GGSsAwFrmsxCjKFp7rdPTU2NZlgmCIIE3A74eZ6wAAB/SbrcXZiGWy+W11/R9f6HjqlKprL0m8JUIVgCAD/mMv+h83098TeArccYKAAAgIZyxAgAASAjBCgAAICEEKwAAgIQQrAAAABJCsAIAAEgIwQoAACAhBCsAAICEEKwAAAASQrACAABIyE+3sYPb/P7+/wAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.title('Lattice expansion')\n", + "plt.xlabel('Temperatures [K]')\n", + "plt.ylabel('$a [\\mathrm{\\AA}]$')\n", + "plt.plot(temperatures, lattice_a, label='MD')\n", + "plt.plot(temperatures, global_strains*a_0*np.sqrt(2), label='mfc-lc-v-ps')\n", + "plt.legend()\n", + "plt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3.8 (XPython)", + "language": "python", + "name": "xpython" + }, + "language_info": { + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "version": "3.8.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/pyiron_contrib/atomistics/mean_field/morse_al_mf_nvt.ipynb b/pyiron_contrib/atomistics/mean_field/morse_al_mf_nvt.ipynb index a2a7d8474..a35849cd3 100644 --- a/pyiron_contrib/atomistics/mean_field/morse_al_mf_nvt.ipynb +++ b/pyiron_contrib/atomistics/mean_field/morse_al_mf_nvt.ipynb @@ -513,8 +513,8 @@ " db_dV = virial_helper(b_xyz, a_s=a_s, a_ex=a_ex, pressure=True)\n", " vmfclc = V_mfc_lc(b_xyz=b_xyz, temperature=temperature, a_s=a_s, a_ex=a_ex)\n", " rho = get_rho(v=vmfclc, temperature=temperature)\n", - " N_by_V = n_atoms/((a_0*a_s*np.sqrt(2))**3*supercell)\n", - " return N_by_V*(KB*temperature+4.*((db_dV).sum()))\n", + " N_by_V = n_atoms/((a_0*a_s*np.sqrt(2)*supercell)**3)\n", + " return N_by_V*(KB*temperature+4.*((rho*db_dV).sum()))\n", "\n", "# 2 virials, 1 method\n", "def find_virial(b_xyz, temperature=100., a_s=1., a_ex=1.):\n", @@ -525,13 +525,13 @@ " rho = get_rho(v=vmfclc, temperature=temperature)\n", " db_dV_T = virial_helper(b_xyz=b_xyz, a_s=a_s, a_ex=a_ex)\n", " virial_T = 2./KB*(rho*db_dV_T).sum()\n", - " db_dV_P = virial_helper(b_xyz, a_s=a_s, pressure=True)\n", + " db_dV_P = virial_helper(b_xyz, a_s=a_s, a_ex=a_ex, pressure=True)\n", " N_by_V = n_atoms/((a_0*a_s*np.sqrt(2)*supercell)**3)\n", " virial_P = N_by_V*(KB*temperature+4.*((rho*db_dV_P).sum()))\n", " return virial_T, virial_P\n", "\n", "# effective temperature\n", - "def find_eff_T(b_xyz, temperature=100., a_s=1., a_ex=1., rotations=rotations):\n", + "def find_eff_T(b_xyz, temperature=100., a_s=1., a_ex=1.):\n", " print(\"Initial temperature: {}\".format(temperature))\n", " def dvirialE(eff_temperature):\n", " res = find_virial_T(b_xyz=b_xyz, temperature=eff_temperature, a_s=a_s, a_ex=a_ex)\n", @@ -541,27 +541,27 @@ " return solver.root\n", " \n", "# effective temperature + strain\n", - "def find_eff_strain_and_T(b_xyz, temperature=100., pressure=1e-10, a_s=1., a_ex=1., rotations=rotations):\n", + "def find_eff_strain_and_T(b_xyz, temperature=100., pressure=1e-10, a_s=1., a_ex=1.):\n", " \"\"\"\n", " Optimize both the effective temperature and strain corresponding to a given pressure. Presently, I use this\n", " method to set my pressure to 0 to obtain a_ex.\n", " \"\"\"\n", " def dvirialPT(arg):\n", " res_T, res_P = find_virial(b_xyz=b_xyz, temperature=arg[0], a_s=arg[1], a_ex=arg[1])\n", - " return [res_T/(temperature+1e-20)-1., abs(res_P/(pressure+1e-20))-1.]\n", + " return [res_T/(temperature+1e-20)-1., res_P/(pressure+1e-20)-1.]\n", " solver = root(dvirialPT, x0=(temperature, a_s), tol=1e-8)\n", " print('Effective temperature: {}\\nGlobal strain: {}'.format(solver.x[0], solver.x[1]))\n", " return solver.x\n", "\n", "# strain_at_pressure\n", - "def find_strain_at_pressure(b_xyz, temperature=100., pressure=1e-20, a_ex=1., a_s=1., rotations=rotations):\n", + "def find_strain_at_pressure(b_xyz, temperature=100., pressure=1e-20, a_ex=1., a_s=1.):\n", " \"\"\"\n", " seperate method to find the strain at an input pressure.\n", " \"\"\"\n", " def f(a_s):\n", " res = find_virial_P(b_xyz=b_xyz, temperature=temperature, a_s=a_s, a_ex=a_ex)\n", " return res/(pressure+1e-20)-1.\n", - " solver = root_scalar(f, x0=a_s*0.99, x1=a_s*1.01, rtol=1e-8)\n", + " solver = root_scalar(f, x0=a_ex*0.99, x1=a_ex*1.01, rtol=1e-8)\n", " return solver.root\n", "\n", "# get ah U's using this function...\n", From c333454844c483cd16992c964f8e5efc6087a9b6 Mon Sep 17 00:00:00 2001 From: Raynol Dsouza Date: Thu, 1 Dec 2022 15:16:42 +0100 Subject: [PATCH 429/434] add retreat presentation --- .../mean_field/cm_retreat_presentation.pdf | Bin 0 -> 2298504 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 pyiron_contrib/atomistics/mean_field/cm_retreat_presentation.pdf diff --git a/pyiron_contrib/atomistics/mean_field/cm_retreat_presentation.pdf b/pyiron_contrib/atomistics/mean_field/cm_retreat_presentation.pdf new file mode 100644 index 0000000000000000000000000000000000000000..09a66b679c6abfc1e7e0df2147fc74af99a673c8 GIT binary patch literal 2298504 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 `RSI?B9b&^q?US7Yul^N@tUg1D{QZ2o! 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

qAdDp2Wxj5Wx?i8{eU66#WP8 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�qSmT+p=(Nb6wl-A3E4tSa#{WAE8i1nQxsTH*d; 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%0AT^ck@mG*m|%&f1|Nx(Sn$K!z+$zRGt)gUE> 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

ntY6n1Do*%ZN{Pk2We?SoH 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

fanE&4C?{tYlVP|Zdx~4RxREo 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

OS8Mx&VMP#L1dp+lR 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

=%yO@xj+0=!KQK2;>&d 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

ck))gK-#zWYFW0Eh!j>#a3C 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%0DVxzHN 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 z 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

?dmKY!8 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�^$dr2CpbGtG72$Omdso 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

{V1T(VC2psiemVM@ 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

X_1*5qiz7^Zu{K$6?HUzpiH1GJ+!HzWR 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

2^A-3N#Uv!B+!>S* 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

{Zg$$zGE7lk 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 Date: Thu, 1 Dec 2022 15:35:02 +0100 Subject: [PATCH 430/434] remove pimd stuff --- pyiron_contrib/atomistics/pimd/gle_mlip.py | 254 ------------------ pyiron_contrib/atomistics/pimd/piglet.py | 243 ----------------- pyiron_contrib/atomistics/pimd/piglet_mlip.py | 243 ----------------- 3 files changed, 740 deletions(-) delete mode 100644 pyiron_contrib/atomistics/pimd/gle_mlip.py delete mode 100644 pyiron_contrib/atomistics/pimd/piglet.py delete mode 100644 pyiron_contrib/atomistics/pimd/piglet_mlip.py diff --git a/pyiron_contrib/atomistics/pimd/gle_mlip.py b/pyiron_contrib/atomistics/pimd/gle_mlip.py deleted file mode 100644 index 46f4270db..000000000 --- a/pyiron_contrib/atomistics/pimd/gle_mlip.py +++ /dev/null @@ -1,254 +0,0 @@ -# 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.storage.datacontainer import DataContainer -from pyiron_atomistics.lammps.potential import LammpsPotentialFile -from pyiron_contrib.atomistics.mlip.lammps import LammpsMlip, MlipInput - -import numpy as np -import pandas as pd -import xml.etree.ElementTree as ET -import subprocess -import os -import shutil - -__author__ = "Raynol Dsouza" -__copyright__ = "Copyright 2022, Max-Planck-Institut für Eisenforschung GmbH " \ - "- Computational Materials Design (CM) Department" -__version__ = "0.0" -__maintainer__ = "Raynol Dsouza" -__email__ = "dsouza@mpie.de" -__status__ = "development" -__date__ = "Aug 19, 2022" - - -class GleMlip(LammpsMlip): - - def __init__(self, project, job_name): - super(GleMlip, self).__init__(project, job_name) - self.input = MlipInput() - self.custom_input = DataContainer(table_name='custom_inp') - self.custom_output = DataContainer(table_name='custom_out') - self._templates_directory = None - - @property - def templates_directory(self): - return self._templates_directory - - @templates_directory.setter - def templates_directory(self, templates_directory): - self._templates_directory = templates_directory - - @property - def potential(self): - return self.input.potential.df - - @potential.setter - def potential(self, potential_filename): - stringtypes = str - if isinstance(potential_filename, stringtypes): - if ".lmp" in potential_filename: - potential_filename = potential_filename.split(".lmp")[0] - potential_db = LammpsPotentialFile() - potential = potential_db.find_by_name(potential_filename) - elif isinstance(potential_filename, pd.DataFrame): - potential = potential_filename - else: - raise TypeError("Potentials have to be strings or pandas dataframes.") - self.input.potential.df = potential - - def calc_npt_md(self, temperature=300., stress_tensor=None, n_beads=4, timestep=1., damping_timescale=100., - n_ionic_steps=100, n_print=1, seed=32345, port=31415, A=None, C=None): - if np.array(stress_tensor).shape != np.eye(3).shape: - raise ValueError("stress_tensor must be an array of shape (3,3)") - self.custom_input.temperature = temperature - self.custom_input.stress_tensor = stress_tensor.flatten().tolist() - self.custom_input.n_beads = n_beads - self.custom_input.timestep = timestep - self.custom_input.damping_timescale = damping_timescale - self.custom_input.n_ionic_steps = n_ionic_steps - self.custom_input.n_print = n_print - self.custom_input.seed = seed - self.custom_input.port = port - self.custom_input.A = A - self.custom_input.C = C - - def write_potential(self): - self.input.potential.write_file(file_name="potential.inp", cwd=self.working_directory) - self.input.potential.copy_pot_files(self.working_directory) - - def write_init_xyz(self): - filepath = self.working_directory + '/init.xyz' - self.structure.write(filename=filepath, format='xyz') - cell = self.structure.cell.array.diagonal() - angle = self.structure.cell.angles() - with open(filepath, 'r') as file: - data = file.readlines() - data[1] = "# CELL(abcABC): " \ - + str(cell[0]) + " " + str(cell[1]) + " " + str(cell[2]) + " " \ - + str(angle[0]) + " " + str(angle[1]) + " "+str(angle[2]) + \ - " positions{angstrom} cell{angstrom}\n" - with open(filepath, 'w') as file: - file.writelines(data) - - def write_data_lmp(self): - filepath = self.working_directory + '/data.lmp' - self.structure.write(filename=filepath, format='lammps-data') - - def write_input_lmp(self): - filepath = self.working_directory + '/input.lmp' - mass = self.structure.get_masses()[0] - data = "# LAMMPS input file\n\n" + \ - "atom_style \t atomic\n" + \ - "units \t metal\n" + \ - "dimension \t 3\n" + \ - "boundary \t p p p\n" + \ - "\n" + \ - "read_data \t data.lmp\n" + \ - "mass \t 1 " + str(mass) + "\n\n" + \ - "include potential.inp\n\n" + \ - "fix \t 1 all ipi " + self.job_name + " " + str(self.custom_input.port) + " unix\n" + \ - "run \t 5000000" - with open(filepath, 'w') as file: - file.writelines(data) - - def write_ipi_xml(self): - tree = ET.parse(self._templates_directory+ '/gle_template_aniso.xml') - root = tree.getroot() - filepath = self.working_directory + '/ipi_input.xml' - for i in range(4): - root[0][i].attrib['stride'] = str(self.custom_input.n_print) - root[1].text = str(self.custom_input.n_ionic_steps) - root[2][0].text = str(self.custom_input.seed) - root[3][0].text = self.job_name - root[4][0].attrib['nbeads'] = str(self.custom_input.n_beads) - root[4][0][0].text = 'init.xyz' - root[4][0][1].text = str(self.custom_input.temperature) - root[4][2][0][0][0].text = str(self.custom_input.damping_timescale) - root[4][2][0][0][2].text = str((self.structure.cell.array.flatten()).tolist()) - root[4][2][0][1][0].text = str(self.custom_input.A) - root[4][2][0][1][1].text = str(self.custom_input.C) - root[4][2][0][2].text = str(self.custom_input.timestep) - root[4][3][0].text = str(self.custom_input.temperature) - root[4][3][1].text = str(self.custom_input.stress_tensor) - tree.write(filepath) - - @staticmethod - def copy_file(src, dst): - shutil.copy(src, dst) - - def write_shell_scripts(self): - self.copy_file(self._templates_directory + '/run_ipi.sh', self.working_directory + '/run_ipi.sh') - self.copy_file(self._templates_directory + '/run_rdf.sh', self.working_directory + '/run_rdf.sh') - - def write_input(self): - if not os.path.isdir(self.working_directory): - self.project_hdf5.create_working_directory() - super(GleMlip, self).write_input() - self.write_potential() - self.write_init_xyz() - self.write_data_lmp() - self.write_input_lmp() - self.write_ipi_xml() - self.write_shell_scripts() - - def collect_rdf(self): - f=open(self.working_directory + '/ipi_out.' + self.structure.get_chemical_symbols()[0] + self.structure.get_chemical_symbols()[0] + '.rdf.dat', "r") - lines=f.readlines() - rdf_r = [] - rdf_g_r = [] - for x in lines: - rdf_r.append(x.split()[0]) - rdf_g_r.append(x.split()[1]) - f.close() - return np.array([float(i) for i in rdf_r]), np.array([float(i) for i in rdf_g_r]) - - def collect_props(self): - f = open(self.working_directory + '/ipi_out.out', "r") - lines=f.readlines() - time=[] - temperature=[] - en_kin=[] - en_pot=[] - volume=[] - pressure=[] - for x in lines: - if not x.startswith('#'): - time.append(x.split()[1]) - temperature.append(x.split()[2]) - en_kin.append(x.split()[3]) - en_pot.append(x.split()[4]) - volume.append(x.split()[5]) - pressure.append(x.split()[6]) - f.close() - self.custom_output.time = np.array([float(i) for i in time]) - self.custom_output.temperature = np.array([float(i) for i in temperature]) - self.custom_output.en_kin = np.array([float(i) for i in en_kin]) - self.custom_output.en_pot = np.array([float(i) for i in en_pot]) - self.custom_output.volume = np.array([float(i) for i in volume]) - self.custom_output.pressure = np.array([float(i) for i in pressure]) - self.custom_output.en_tot = self.custom_output.en_pot + self.custom_output.en_kin - - def collect_cells(self): - f = open(self.working_directory + '/ipi_out.pos_0.xyz') - lines=f.readlines() - abc = [] - ABC = [] - for x in lines: - if x.startswith("#"): - split_line = x.split() - abc.append([float(i) for i in split_line[2:5]]) - ABC.append([float(i) for i in split_line[5:8]]) - f.close() - self.custom_output.cell_abc = np.array(abc) - self.custom_output.cell_ABC = np.array(ABC) - - def collect_output(self): - self.collect_props() - self.collect_cells() - self.compress() - - def get_rdf(self, r_min=2., r_max=5., bins=100, thermalize=50): - self.decompress() - rdf_list = [self.working_directory + '/./run_rdf.sh', - self.working_directory, - str(self.custom_input.temperature), - self.structure.get_chemical_symbols()[0], self.structure.get_chemical_symbols()[0], - str(bins), - str(r_min), str(r_max), - str(thermalize)] - subprocess.check_call(rdf_list) - rdf_r, rdf_g_r = self.collect_rdf() - self.compress() - return rdf_r, rdf_g_r - - def run_static(self): - try: - self.status.running = True - subprocess.check_call([self.working_directory + '/./run_ipi.sh', self.working_directory, str(self.server.cores)]) - except Exception: - self.status.aborted = True - if self.status.running: - self.status.collect = True - self.collect_output() - self.to_hdf() - if self.job_id is not None: - self.project.db.item_update(self._runtime(), self.job_id) - self.send_to_database() - self.update_master() - self.status.finished = True - - def to_hdf(self, hdf=None, group_name=None): - super(GleMlip, self).to_hdf(hdf=hdf, group_name=group_name) - self._structure_to_hdf() - self.custom_input.templates_directory = self._templates_directory - self.custom_input.to_hdf(self._hdf5) - self.custom_output.to_hdf(self._hdf5) - - def from_hdf(self, hdf=None, group_name=None): - super(GleMlip, self).from_hdf(hdf=hdf, group_name=group_name) - self._structure_from_hdf() - self.custom_input.from_hdf(self._hdf5) - self._templates_directory = self.custom_input.templates_directory - self.custom_output.from_hdf(self._hdf5) \ No newline at end of file diff --git a/pyiron_contrib/atomistics/pimd/piglet.py b/pyiron_contrib/atomistics/pimd/piglet.py deleted file mode 100644 index b28a554eb..000000000 --- a/pyiron_contrib/atomistics/pimd/piglet.py +++ /dev/null @@ -1,243 +0,0 @@ -# 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_atomistics.atomistics.job.atomistic import AtomisticGenericJob -from pyiron_base.storage.datacontainer import DataContainer -from pyiron_atomistics.lammps.potential import LammpsPotentialFile -from pyiron_atomistics.lammps.base import Input - -import numpy as np -import pandas as pd -import xml.etree.ElementTree as ET -import subprocess -import os -import shutil - -__author__ = "Raynol Dsouza" -__copyright__ = "Copyright 2022, Max-Planck-Institut für Eisenforschung GmbH " \ - "- Computational Materials Design (CM) Department" -__version__ = "0.0" -__maintainer__ = "Raynol Dsouza" -__email__ = "dsouza@mpie.de" -__status__ = "development" -__date__ = "Aug 16, 2022" - - -class Piglet(AtomisticGenericJob): - - def __init__(self, project, job_name): - super(Piglet, self).__init__(project, job_name) - self.input = Input() - self.custom_input = DataContainer(table_name='custom_inp') - self.custom_output = DataContainer(table_name='custom_out') - self._templates_directory = None - - @property - def templates_directory(self): - return self._templates_directory - - @templates_directory.setter - def templates_directory(self, templates_directory): - self._templates_directory = templates_directory - - @property - def potential(self): - return self.input.potential.df - - @potential.setter - def potential(self, potential_filename): - stringtypes = str - if isinstance(potential_filename, stringtypes): - if ".lmp" in potential_filename: - potential_filename = potential_filename.split(".lmp")[0] - potential_db = LammpsPotentialFile() - potential = potential_db.find_by_name(potential_filename) - elif isinstance(potential_filename, pd.DataFrame): - potential = potential_filename - else: - raise TypeError("Potentials have to be strings or pandas dataframes.") - self.input.potential.df = potential - - def calc_npt_md(self, temperature=300., pressure=101325e-9, n_beads=4, timestep=1., damping_timescale=100., - n_ionic_steps=100, n_print=1, seed=32345, port=31415, A=None, C=None): - self.custom_input.temperature = temperature - self.custom_input.pressure = pressure - self.custom_input.n_beads = n_beads - self.custom_input.timestep = timestep - self.custom_input.damping_timescale = damping_timescale - self.custom_input.n_ionic_steps = n_ionic_steps - self.custom_input.n_print = n_print - self.custom_input.seed = seed - self.custom_input.port = port - self.custom_input.A = A - self.custom_input.C = C - - def write_potential(self): - self.input.potential.write_file(file_name="potential.inp", cwd=self.working_directory) - self.input.potential.copy_pot_files(self.working_directory) - - def write_init_xyz(self): - filepath = self.working_directory + '/init.xyz' - self.structure.write(filename=filepath, format='xyz') - cell = self.structure.cell.array.diagonal() - angle = self.structure.cell.angles() - with open(filepath, 'r') as file: - data = file.readlines() - data[1] = "# CELL(abcABC): " \ - + str(cell[0]) + " " + str(cell[1]) + " " + str(cell[2]) + " " \ - + str(angle[0]) + " " + str(angle[1]) + " "+str(angle[2]) + \ - " positions{angstrom} cell{angstrom}\n" - with open(filepath, 'w') as file: - file.writelines(data) - - def write_data_lmp(self): - filepath = self.working_directory + '/data.lmp' - self.structure.write(filename=filepath, format='lammps-data') - - def write_input_lmp(self): - filepath = self.working_directory + '/input.lmp' - mass = self.structure.get_masses()[0] - data = "# LAMMPS input file\n\n" + \ - "atom_style \t atomic\n" + \ - "units \t metal\n" + \ - "dimension \t 3\n" + \ - "boundary \t p p p\n" + \ - "\n" + \ - "read_data \t data.lmp\n" + \ - "mass \t 1 " + str(mass) + "\n\n" + \ - "include potential.inp\n\n" + \ - "fix \t 1 all ipi " + self.job_name + " " + str(self.custom_input.port) + " unix\n" + \ - "run \t 5000000" - with open(filepath, 'w') as file: - file.writelines(data) - - def write_ipi_xml(self): - tree = ET.parse(self._templates_directory+ '/piglet_template.xml') - root = tree.getroot() - filepath = self.working_directory + '/ipi_input.xml' - for i in range(4): - root[0][i].attrib['stride'] = str(self.custom_input.n_print) - root[1].text = str(self.custom_input.n_ionic_steps) - root[2][0].text = str(self.custom_input.seed) - root[3][0].text = self.job_name - root[4][0].attrib['nbeads'] = str(self.custom_input.n_beads) - root[4][0][0].text = 'init.xyz' - root[4][0][1].text = str(self.custom_input.temperature) - root[4][2][0][0][0].text = str(self.custom_input.damping_timescale) - for i in range(2): - root[4][2][0][1][i].attrib['shape'] = str((self.custom_input.n_beads,9,9)) - root[4][2][0][1][0].text = str(self.custom_input.A) - root[4][2][0][1][1].text = str(self.custom_input.C) - root[4][2][0][2].text = str(self.custom_input.timestep) - root[4][3][0].text = str(self.custom_input.temperature) - root[4][3][1].text = str(self.custom_input.pressure) - tree.write(filepath) - - @staticmethod - def copy_file(src, dst): - shutil.copy(src, dst) - - def write_shell_scripts(self): - self.copy_file(self._templates_directory + '/run_ipi.sh', self.working_directory + '/run_ipi.sh') - self.copy_file(self._templates_directory + '/run_rdf.sh', self.working_directory + '/run_rdf.sh') - - def write_input(self): - if not os.path.isdir(self.working_directory): - self.project_hdf5.create_working_directory() - super(Piglet, self).write_input() - self.write_potential() - self.write_init_xyz() - self.write_data_lmp() - self.write_input_lmp() - self.write_ipi_xml() - self.write_shell_scripts() - - def collect_rdf(self): - f=open(self.working_directory + '/ipi_out.AlAl.rdf.dat', "r") - lines=f.readlines() - rdf_r = [] - rdf_g_r = [] - for x in lines: - rdf_r.append(x.split()[0]) - rdf_g_r.append(x.split()[1]) - f.close() - return np.array([float(i) for i in rdf_r]), np.array([float(i) for i in rdf_g_r]) - - def collect_props(self): - f = open(self.working_directory + '/ipi_out.out', "r") - lines=f.readlines() - time=[] - temperature=[] - en_kin=[] - en_pot=[] - volume=[] - pressure=[] - for x in lines: - if not x.startswith('#'): - time.append(x.split()[1]) - temperature.append(x.split()[2]) - en_kin.append(x.split()[3]) - en_pot.append(x.split()[4]) - volume.append(x.split()[5]) - pressure.append(x.split()[6]) - f.close() - self.custom_output.time = np.array([float(i) for i in time]) - self.custom_output.temperature = np.array([float(i) for i in temperature]) - self.custom_output.en_kin = np.array([float(i) for i in en_kin]) - self.custom_output.en_pot = np.array([float(i) for i in en_pot]) - self.custom_output.volume = np.array([float(i) for i in volume]) - self.custom_output.pressure = np.array([float(i) for i in pressure]) - self.custom_output.en_tot = self.custom_output.en_pot + self.custom_output.en_kin - - def collect_cells(self): - f = open(self.working_directory + '/ipi_out.pos_0.xyz') - lines=f.readlines() - abc = [] - ABC = [] - for x in lines: - if x.startswith("#"): - split_line = x.split() - abc.append([float(i) for i in split_line[2:5]]) - ABC.append([float(i) for i in split_line[5:8]]) - f.close() - self.custom_output.cell_abc = np.array(abc) - self.custom_output.cell_ABC = np.array(ABC) - - def collect_output(self): - self.collect_props() - self.collect_cells() - self.compress() - - def get_rdf(self, r_min=2., r_max=5., bins=100, thermalize=50): - self.decompress() - rdf_list = [self.working_directory + '/./run_rdf.sh', - self.working_directory, - str(self.custom_input.temperature), - self.structure.get_chemical_symbols()[0], self.structure.get_chemical_symbols()[0], - str(rdf_bins), - str(rdf_r_min), str(rdf_r_max), - str(rdf_thermalize)] - subprocess.check_call(rdf_list) - rdf_r, rdf_g_r = self.collect_rdf() - self.compress() - return rdf_r, rdf_g_r - - def run_static(self): - subprocess.check_call([self.working_directory + '/./run_ipi.sh', self.working_directory, str(self.server.cores)]) - self.collect_output() - self.to_hdf() - - def to_hdf(self, hdf=None, group_name=None): - super(Piglet, self).to_hdf(hdf=hdf, group_name=group_name) - self._structure_to_hdf() - self.custom_input.templates_directory = self._templates_directory - self.custom_input.to_hdf(self._hdf5) - self.custom_output.to_hdf(self._hdf5) - - def from_hdf(self, hdf=None, group_name=None): - super(Piglet, self).from_hdf(hdf=hdf, group_name=group_name) - self._structure_from_hdf() - self.custom_input.from_hdf(self._hdf5) - self._templates_directory = self.custom_input.templates_directory - self.custom_output.from_hdf(self._hdf5) \ No newline at end of file diff --git a/pyiron_contrib/atomistics/pimd/piglet_mlip.py b/pyiron_contrib/atomistics/pimd/piglet_mlip.py deleted file mode 100644 index 37e8956d7..000000000 --- a/pyiron_contrib/atomistics/pimd/piglet_mlip.py +++ /dev/null @@ -1,243 +0,0 @@ -# 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_atomistics.atomistics.job.atomistic import AtomisticGenericJob -from pyiron_base.storage.datacontainer import DataContainer -from pyiron_atomistics.lammps.potential import LammpsPotentialFile -from pyiron_contrib.atomistics.mlip.lammps import LammpsMlip, MlipInput - -import numpy as np -import pandas as pd -import xml.etree.ElementTree as ET -import subprocess -import os -import shutil - -__author__ = "Raynol Dsouza" -__copyright__ = "Copyright 2022, Max-Planck-Institut für Eisenforschung GmbH " \ - "- Computational Materials Design (CM) Department" -__version__ = "0.0" -__maintainer__ = "Raynol Dsouza" -__email__ = "dsouza@mpie.de" -__status__ = "development" -__date__ = "Aug 19, 2022" - - -class PigletMlip(LammpsMlip): - - def __init__(self, project, job_name): - super(PigletMlip, self).__init__(project, job_name) - self.input = MlipInput() - self.custom_input = DataContainer(table_name='custom_inp') - self.custom_output = DataContainer(table_name='custom_out') - self._templates_directory = None - - @property - def templates_directory(self): - return self._templates_directory - - @templates_directory.setter - def templates_directory(self, templates_directory): - self._templates_directory = templates_directory - - @property - def potential(self): - return self.input.potential.df - - @potential.setter - def potential(self, potential_filename): - stringtypes = str - if isinstance(potential_filename, stringtypes): - if ".lmp" in potential_filename: - potential_filename = potential_filename.split(".lmp")[0] - potential_db = LammpsPotentialFile() - potential = potential_db.find_by_name(potential_filename) - elif isinstance(potential_filename, pd.DataFrame): - potential = potential_filename - else: - raise TypeError("Potentials have to be strings or pandas dataframes.") - self.input.potential.df = potential - - def calc_npt_md(self, temperature=300., pressure=101325e-9, n_beads=4, timestep=1., damping_timescale=100., - n_ionic_steps=100, n_print=1, seed=32345, port=31415, A=None, C=None): - self.custom_input.temperature = temperature - self.custom_input.pressure = pressure - self.custom_input.n_beads = n_beads - self.custom_input.timestep = timestep - self.custom_input.damping_timescale = damping_timescale - self.custom_input.n_ionic_steps = n_ionic_steps - self.custom_input.n_print = n_print - self.custom_input.seed = seed - self.custom_input.port = port - self.custom_input.A = A - self.custom_input.C = C - - def write_potential(self): - self.input.potential.write_file(file_name="potential.inp", cwd=self.working_directory) - self.input.potential.copy_pot_files(self.working_directory) - - def write_init_xyz(self): - filepath = self.working_directory + '/init.xyz' - self.structure.write(filename=filepath, format='xyz') - cell = self.structure.cell.array.diagonal() - angle = self.structure.cell.angles() - with open(filepath, 'r') as file: - data = file.readlines() - data[1] = "# CELL(abcABC): " \ - + str(cell[0]) + " " + str(cell[1]) + " " + str(cell[2]) + " " \ - + str(angle[0]) + " " + str(angle[1]) + " "+str(angle[2]) + \ - " positions{angstrom} cell{angstrom}\n" - with open(filepath, 'w') as file: - file.writelines(data) - - def write_data_lmp(self): - filepath = self.working_directory + '/data.lmp' - self.structure.write(filename=filepath, format='lammps-data') - - def write_input_lmp(self): - filepath = self.working_directory + '/input.lmp' - mass = self.structure.get_masses()[0] - data = "# LAMMPS input file\n\n" + \ - "atom_style \t atomic\n" + \ - "units \t metal\n" + \ - "dimension \t 3\n" + \ - "boundary \t p p p\n" + \ - "\n" + \ - "read_data \t data.lmp\n" + \ - "mass \t 1 " + str(mass) + "\n\n" + \ - "include potential.inp\n\n" + \ - "fix \t 1 all ipi " + self.job_name + " " + str(self.custom_input.port) + " unix\n" + \ - "run \t 5000000" - with open(filepath, 'w') as file: - file.writelines(data) - - def write_ipi_xml(self): - tree = ET.parse(self._templates_directory+ '/piglet_template.xml') - root = tree.getroot() - filepath = self.working_directory + '/ipi_input.xml' - for i in range(4): - root[0][i].attrib['stride'] = str(self.custom_input.n_print) - root[1].text = str(self.custom_input.n_ionic_steps) - root[2][0].text = str(self.custom_input.seed) - root[3][0].text = self.job_name - root[4][0].attrib['nbeads'] = str(self.custom_input.n_beads) - root[4][0][0].text = 'init.xyz' - root[4][0][1].text = str(self.custom_input.temperature) - root[4][2][0][0][0].text = str(self.custom_input.damping_timescale) - for i in range(2): - root[4][2][0][1][i].attrib['shape'] = str((self.custom_input.n_beads,9,9)) - root[4][2][0][1][0].text = str(self.custom_input.A) - root[4][2][0][1][1].text = str(self.custom_input.C) - root[4][2][0][2].text = str(self.custom_input.timestep) - root[4][3][0].text = str(self.custom_input.temperature) - root[4][3][1].text = str(self.custom_input.pressure) - tree.write(filepath) - - @staticmethod - def copy_file(src, dst): - shutil.copy(src, dst) - - def write_shell_scripts(self): - self.copy_file(self._templates_directory + '/run_ipi.sh', self.working_directory + '/run_ipi.sh') - self.copy_file(self._templates_directory + '/run_rdf.sh', self.working_directory + '/run_rdf.sh') - - def write_input(self): - if not os.path.isdir(self.working_directory): - self.project_hdf5.create_working_directory() - super(PigletMlip, self).write_input() - self.write_potential() - self.write_init_xyz() - self.write_data_lmp() - self.write_input_lmp() - self.write_ipi_xml() - self.write_shell_scripts() - - def collect_rdf(self): - f=open(self.working_directory + '/ipi_out.AlAl.rdf.dat', "r") - lines=f.readlines() - rdf_r = [] - rdf_g_r = [] - for x in lines: - rdf_r.append(x.split()[0]) - rdf_g_r.append(x.split()[1]) - f.close() - return np.array([float(i) for i in rdf_r]), np.array([float(i) for i in rdf_g_r]) - - def collect_props(self): - f = open(self.working_directory + '/ipi_out.out', "r") - lines=f.readlines() - time=[] - temperature=[] - en_kin=[] - en_pot=[] - volume=[] - pressure=[] - for x in lines: - if not x.startswith('#'): - time.append(x.split()[1]) - temperature.append(x.split()[2]) - en_kin.append(x.split()[3]) - en_pot.append(x.split()[4]) - volume.append(x.split()[5]) - pressure.append(x.split()[6]) - f.close() - self.custom_output.time = np.array([float(i) for i in time]) - self.custom_output.temperature = np.array([float(i) for i in temperature]) - self.custom_output.en_kin = np.array([float(i) for i in en_kin]) - self.custom_output.en_pot = np.array([float(i) for i in en_pot]) - self.custom_output.volume = np.array([float(i) for i in volume]) - self.custom_output.pressure = np.array([float(i) for i in pressure]) - self.custom_output.en_tot = self.custom_output.en_pot + self.custom_output.en_kin - - def collect_cells(self): - f = open(self.working_directory + '/ipi_out.pos_0.xyz') - lines=f.readlines() - abc = [] - ABC = [] - for x in lines: - if x.startswith("#"): - split_line = x.split() - abc.append([float(i) for i in split_line[2:5]]) - ABC.append([float(i) for i in split_line[5:8]]) - f.close() - self.custom_output.cell_abc = np.array(abc) - self.custom_output.cell_ABC = np.array(ABC) - - def collect_output(self): - self.collect_props() - self.collect_cells() - self.compress() - - def get_rdf(self, r_min=2., r_max=5., bins=100, thermalize=50): - self.decompress() - rdf_list = [self.working_directory + '/./run_rdf.sh', - self.working_directory, - str(self.custom_input.temperature), - self.structure.get_chemical_symbols()[0], self.structure.get_chemical_symbols()[0], - str(rdf_bins), - str(rdf_r_min), str(rdf_r_max), - str(rdf_thermalize)] - subprocess.check_call(rdf_list) - rdf_r, rdf_g_r = self.collect_rdf() - self.compress() - return rdf_r, rdf_g_r - - def run_static(self): - subprocess.check_call([self.working_directory + '/./run_ipi.sh', self.working_directory, str(self.server.cores)]) - self.collect_output() - self.to_hdf() - - def to_hdf(self, hdf=None, group_name=None): - super(PigletMlip, self).to_hdf(hdf=hdf, group_name=group_name) - self._structure_to_hdf() - self.custom_input.templates_directory = self._templates_directory - self.custom_input.to_hdf(self._hdf5) - self.custom_output.to_hdf(self._hdf5) - - def from_hdf(self, hdf=None, group_name=None): - super(PigletMlip, self).from_hdf(hdf=hdf, group_name=group_name) - self._structure_from_hdf() - self.custom_input.from_hdf(self._hdf5) - self._templates_directory = self.custom_input.templates_directory - self.custom_output.from_hdf(self._hdf5) \ No newline at end of file From 4f7681cd72135048fcb2300b5eda04975864d6eb Mon Sep 17 00:00:00 2001 From: Raynol Dsouza Date: Thu, 1 Dec 2022 15:41:04 +0100 Subject: [PATCH 431/434] also remove added pimd jobs from init file --- pyiron_contrib/__init__.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/pyiron_contrib/__init__.py b/pyiron_contrib/__init__.py index f48d29cde..e4842e156 100644 --- a/pyiron_contrib/__init__.py +++ b/pyiron_contrib/__init__.py @@ -45,8 +45,6 @@ JOB_CLASS_DICT['StructureMasterInt'] = 'pyiron_contrib.atomistics.atomistics.job.structurelistmasterinteractive' JOB_CLASS_DICT['StorageJob'] = 'pyiron_contrib.RDM.storagejob' JOB_CLASS_DICT['PacemakerJob'] = 'pyiron_contrib.atomistics.pacemaker.job' -JOB_CLASS_DICT['Piglet'] = 'pyiron_contrib.atomistics.pimd.piglet' -JOB_CLASS_DICT['PigletMlip'] = 'pyiron_contrib.atomistics.pimd.piglet_mlip' from ._version import get_versions From fcd0e199fb200f9627982d66a5cbf43ace376dfa Mon Sep 17 00:00:00 2001 From: liamhuber Date: Mon, 5 Dec 2022 10:31:41 -0800 Subject: [PATCH 432/434] Update branch referenced --- .github/delete-merged-branch-config.yml | 2 +- .github/workflows/UpdateDependabotPR.yml | 2 +- .github/workflows/coverage.yml | 4 ++-- .github/workflows/docs.yml | 4 ++-- .github/workflows/notebooks.yml | 4 ++-- .github/workflows/pypicheck.yml | 4 ++-- .github/workflows/unittests.yml | 4 ++-- 7 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/delete-merged-branch-config.yml b/.github/delete-merged-branch-config.yml index 8a1c49b7e..76898c70c 100644 --- a/.github/delete-merged-branch-config.yml +++ b/.github/delete-merged-branch-config.yml @@ -1,3 +1,3 @@ exclude: - - master + - main delete_closed_pr: false diff --git a/.github/workflows/UpdateDependabotPR.yml b/.github/workflows/UpdateDependabotPR.yml index 606ab2bed..b3971e999 100644 --- a/.github/workflows/UpdateDependabotPR.yml +++ b/.github/workflows/UpdateDependabotPR.yml @@ -2,7 +2,7 @@ name: UpdateDependabotPR on: pull_request_target: - branches: [ master ] + branches: [ main ] jobs: build: diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index 5c7f471b0..3dbc0395c 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -5,9 +5,9 @@ name: Coverage on: push: - branches: [ master ] + branches: [ main ] pull_request: - branches: [ master ] + branches: [ main ] jobs: build: diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 97cfc21cf..534ee33ec 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -4,9 +4,9 @@ name: Docs on: push: - branches: [ master ] + branches: [ main ] pull_request: - branches: [ master ] + branches: [ main ] jobs: build: diff --git a/.github/workflows/notebooks.yml b/.github/workflows/notebooks.yml index 124fb5653..5231b3efb 100644 --- a/.github/workflows/notebooks.yml +++ b/.github/workflows/notebooks.yml @@ -2,9 +2,9 @@ name: Notebooks on: push: - branches: [ master ] + branches: [ main ] pull_request: - branches: [ master ] + branches: [ main ] jobs: build: diff --git a/.github/workflows/pypicheck.yml b/.github/workflows/pypicheck.yml index 85a74694f..01ff4ee6c 100644 --- a/.github/workflows/pypicheck.yml +++ b/.github/workflows/pypicheck.yml @@ -2,9 +2,9 @@ name: Pip check on: push: - branches: [ master ] + branches: [ main ] pull_request: - branches: [ master ] + branches: [ main ] jobs: build: diff --git a/.github/workflows/unittests.yml b/.github/workflows/unittests.yml index 241cd3b11..35b9ac317 100644 --- a/.github/workflows/unittests.yml +++ b/.github/workflows/unittests.yml @@ -4,9 +4,9 @@ name: Unit Tests on: push: - branches: [ master ] + branches: [ main ] pull_request: - branches: [ master ] + branches: [ main ] jobs: build: From f0f69f8ed5dda33853588fa33240b64e5835d0dd Mon Sep 17 00:00:00 2001 From: liamhuber Date: Mon, 5 Dec 2022 11:35:25 -0800 Subject: [PATCH 433/434] Use cached mamba for the environment Previously miniconda threw an error `Error: The process '/usr/share/miniconda/condabin/conda' failed with exit code 1` --- .github/workflows/unittests.yml | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/.github/workflows/unittests.yml b/.github/workflows/unittests.yml index 35b9ac317..25cb8c5c1 100644 --- a/.github/workflows/unittests.yml +++ b/.github/workflows/unittests.yml @@ -10,25 +10,34 @@ on: jobs: build: - env: - CONDA_PREFIX: /usr/share/miniconda/ runs-on: ${{ matrix.operating-system }} strategy: matrix: - operating-system: [ubuntu-latest] - python-version: ["3.8", "3.9", "3.10"] + include: + - operating-system: ubuntu-latest + python-version: '3.10' + label: linux-64-py-3-10 + prefix: /usr/share/miniconda3/envs/my-env + + - operating-system: ubuntu-latest + python-version: 3.9 + label: linux-64-py-3-9 + prefix: /usr/share/miniconda3/envs/my-env + + - operating-system: ubuntu-latest + python-version: 3.8 + label: linux-64-py-3-8 + prefix: /usr/share/miniconda3/envs/my-env steps: - uses: actions/checkout@v2 - - uses: conda-incubator/setup-miniconda@v2 + - uses: pyiron/actions/cached-mamba@main with: python-version: ${{ matrix.python-version }} - mamba-version: "*" - channels: conda-forge - channel-priority: strict - auto-update-conda: true - environment-file: .ci_support/environment.yml + env-prefix: ${{ matrix.prefix }} + env-label: ${{ matrix.label }} + env-files: .ci_support/environment.yml - name: Setup shell: bash -l {0} run: | From d9c18d721eef6f8fefe8471e933bac71c046bbf0 Mon Sep 17 00:00:00 2001 From: liamhuber Date: Mon, 5 Dec 2022 11:43:46 -0800 Subject: [PATCH 434/434] Use notebook action Old CI was failing with the error `jupyter_client.kernelspec.NoSuchKernel: No such kernel named python3`, which if I recall means ipykernel or somesuch wasn't installed. The action by default ensures that jupyter is added to the env, so I expect this will resolve the issue. --- .github/workflows/notebooks.yml | 30 ++++++++++-------------------- 1 file changed, 10 insertions(+), 20 deletions(-) diff --git a/.github/workflows/notebooks.yml b/.github/workflows/notebooks.yml index 5231b3efb..45ea78586 100644 --- a/.github/workflows/notebooks.yml +++ b/.github/workflows/notebooks.yml @@ -7,25 +7,15 @@ on: branches: [ main ] jobs: - build: - + build-notebooks: + needs: commit-updated-env runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: conda-incubator/setup-miniconda@v2 - with: - python-version: "3.10" - mamba-version: "*" - channels: conda-forge - channel-priority: strict - auto-update-conda: true - environment-file: .ci_support/environment.yml - - name: Setup - shell: bash -l {0} - run: | - pip install --no-deps . - conda install papermill - - name: Tests - shell: bash -l {0} - run: ./.ci_support/build_notebooks.sh + - uses: actions/checkout@v3 + - uses: pyiron/actions/build-notebooks@main + with: + python-version: '3.10' + env-prefix: /usr/share/miniconda3/envs/my-env + env-label: linux-64-py-3-10 + env-files: .ci_support/environment.yml + exclusion-file: .ci_support/exclude \ No newline at end of file

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

4I=w-KU*1IsG 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�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 l^vrBQk_vf%-^NDJ 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%0A(E80uD+wl>dquoS2VngW#kygW4*o0&;f z_nI@{0&>O?d^wwqunNz{v#ZT)pWw=O&jv`;zEXj=`WO|2Z(>6ln3ouufLKOL0#BT1 zg_&bxsuO61l={Jg^tQAi@I?Ljmf7*tRBM`t|Es5wIQm@KXHPl>J!|eLsjd~)J+hyu zBp>{GQB6J1q~sd8?%t|scujXhS$?!rsx~vld=6Wpbe9_&+`k292;++&ZItENX)l9A z_|ZpNo<8;ORTrk*6(xDK&II$CRqYj(w5F#%sj z%vQOVl>Yj9KlXCQ*x8^!z^}SLiQ4%UelMhv3P2ZN<}jHw4oAubFkCNAp^)|xlHPXB zo7}my!U7D*Nwwo_X#+|bX*Z8Q-u%u^@a21dGg{X!kUMF_iq~o?Pru#sZhb+-B;<0n ziroA*-2y{SH1J!cmdmG9QXc z$^)tb9gD^~l#@vy;7B@}E{80sjj~-$OtRPU1)rjE#fQ+I|DFpd~Tph-x|v-A;_`CStX;#zFGF7lJzbPc|^G-#F~I9588w;o44Lx%;9roP z1}Oa8T#guf7z3Qn$UsiEkmwlbBWCM9Cj#?}ypdvSs_~5IMe4%9{C?Z{F)9#+&Op%| zb9tA%uXYUzl_KP7{ zP?*dAkE_E?zE*p079&e2&Q|AYEWs)@-}YK<%@Ceg{6VC0^%tw(E$z@!LHfH*F)3y9 zYs0bHA98s#mQ?GC7~32AF?vzN&Q>ZRrx&cbW2p48eoziR>cRv*sjJxX#b8hTFDJo= zTN`6t*B)5V^q(A`&O1{6=R{R1Lk4lv2NVR@ZZ^a=UM~qyu#Hq|W+nlL#R3Fio_}+R zMLvm%=Uce*qx?V2S@6je3p&*lkpAHhyL&Dx;qG6ntz3-5e3PQ|5BGr&|0w4U=787j z5T!j(Jl%_2ijoIt5S<1dT`E-qG{8Vn!r`O=ncla|CAvTG;3+;?VNB#K$w(`?ju&2H zfivshgG`BsvguA-czm5Jcg0iGMd~y~3*mpaR9%y{#*~6B+EZD=d;vxJ~kZja|3wqT9 z0kK>r!wJPIH_amy=BaGGnVBlJT2;gnX!5iSIQ6v5&6y!e5JmqifiZzAK1tJ^_fr^T zdT)N3mYLFatUZalNtiKY$H+V_Jim`!L#0=+=_|ip+Pi4;2l028XgHCNkJL6O8csaW zOKkXc2$AY;hgqso33c{DS0IwNWM6swCGwI!jfp0ZK>w#Wyx#csf~T&pTDU6yyU!1h z-uj@v($F&g;1Td$O!fO!h6XtD2#plvNC^Xr)PQ}y#{>DP)Ce?~>{~-3h42yPdpp{XEKp!h3c7PSxmuaR`DJ~7*FarF>y5&mR|e6y7;guR5N!fEO)lf} zWfU@rN+pwVYWiU@iv}2tdbH*MyIcfOgsw(Ju|~-TA5uEOs=;&^k;MX0iH^_^k{k3P zU$trc?&)xQTfjv4G6oK1Y-r5Pj?(u~l))A1c1_Wp$7+q925J1YP=v)ZtZf0!Yqt4^ zmzMl}FXlU-66_^n3z!aE-(W?(bLVNC$l!|jGCzp_JRno_btc~uD)wu@0ptf*4u?vm zgtu!da|$?Y5|K#gr6x(4GtWOMuwTO5(zr>hj-^M@7!2}l3EyP5<69Jsz8s`JcI@>9 zP0d>RY`QwCSm0KFmDFFWFY|7=nZSIEvBD6Q?-c=`E` z`WW~~2NGnz{1abKF#h-WhyA%>=>2ewm%MqsKb^7yh_W1sSj=Y>$mKw`nvFb=&_f9r zk`pTE{-0#9bPE9LKUBYL(5smGwL>d>)}?zXx753|=RV)DY-5hii1{Y@+n$VfOcoda z^0`~fTMx!RKd@zmb^UXP6A@Db^xKyK-hdEf>Wh6|uQO;2@}W;LTcu($8QD}SiGfQw z3s^9TUEgSCFo(<&{CBC?e-yFUi}aNr58g&nIZTn#5i7{ox?XFp?e>_)?zoi)nzJ8m zSUL?3J$3yD#{j+4S!ePiQD3VYN!dkpg!caTA12`%@hs`1xCOV^gepg=-RS{?{ z%Nt`Raa9f`GdiDgi&b3-e&SMc!D2y<0xJZP-WXfcyDgige+zDpUQq?+S6C~QV zR^L{q5(+)4!+nz;}xzg?Ce`TUyeC3 zU$)6j)M3Cq;KR>#H2FaDnUqp(i&K4K>0hr6R(jj%gCF1c)6Ml5cdB$Vn5@IVc%H?$ z+%%*lRAaig?oKy`AkZYi)s<`@aKTB=Ga42BXnxa!IW& zF&NG3RWElpzBENqsuUU~M_W^J^1k(l%|r${OAsnn>^kJc6SHaLdc#)er#Fx?NGzd* zlkG0dL#FgS-@T1Lh~EbE0@nhx7LQh2C?i&Jc|1lPt*#JOFjk?ZrHR(mOu=FyIoCCJ z600p;Fw4%fSY5I!;O>At9PZlRN$V7enhaHzGAiW5=4FSW)7G#9*V~ZL3BN`GJEU2m)&?6N9q@-|X(1H}wAzg*y=Q%ibgp0Cs z4ub>kb09y6uE0)BViRDAz$Fp*4^|)6I)5mNle`FxUfM3e%+HmuSx5~520h#9NM8(9 zeHQeCxQE;}hLxW?IH)DbvZX>E9rMhofg^II44Rd}e2xv~9Nc-s|k{Y%khXS@qtnYRQ&+@4aA*ZHmDK z7i_=@AUTlSB(}kYG}4P5LK@ugrROF%AI?oBxiMP*&zaek1xfCg|09sJMSk|Y=Pkdt zhg+Slw8eqjGg+r=!Js}TNN80~hsNcts`K?fyI|#KwvH@$c*D;Au|=kpF2>nq2Qs<5 zT9*-Y@IG@B;dPCpwad_K?@$|S)YHD7w!gstm(}p0O^^;cXnoLeV-q($FUPB+sOI(SZ=)#&c z{E9oST>aqS=6bp|7I<^}>fv?LlXrnCzD*{H+r%y6wh|V|%;7&VOdqmC^8QX3~o?5 z0|CEPzH&?zii&;2VB?}Inf4L@eA zRs_vPPrzEUyM17KeEd28nSPsIDiSJA?ez6Td_`>Y$5tt#T9?bNY&$x(_;e@q&Z>Z9 z&$3n{Ib&oQ9lTd?y)?`R|HG2NTjlLbb7qO($^lme9lAUiAe|PE& z#cyAfnu8&WHJ<&7Jm~>u`$xM6PVQSfRLiek7xVN)Ld#N~rkVyV)U~_sy~*;h&LMrs z#j8@2$wBfECltCCr$epL=oJobp{}k`f#q^o^munS#_Q|D*x+ioCovw`*T)K(fN>XU zaLom^!|AkK@CrjLHoM>rwbtQv>Ox^4v9}f62(a}qjFP18=oYPDZ_o3`NGN|~Y0fdV zkr>`6Nv~xHQ!19A0TmFv(sE+jsKMqr<@_Q&&OdB_kC%%O%01UmT5XI{J%SQj*s(28 zsHuMZIdU@Q)`^`#S=3*xMEk$8vcb%U9Rt6eQUt=6XI@#giJdYfsqs$s*rc$LZG z(gh}l7aj_3e{$P@|Mv7BMq8Ie44J+z|L0%*5;}GJ*iTMQI1-c{tSLUv(y(?QJCWD& zYSNm~>z6Oru5UWt+`K>$a5_CFz21z10nHt6+cxCbPJHLi1q$so^pSi8jw>?97bvjx z@R73;Y4UnJ%k_FCvSd?JJ(~JyPe7%aqwpFPQ=*L{EpAl$<4*a0p^w0xUrt#XeG?^RrPgA2 zJM=93xl&6d9d{`=($SI{Ej3ZjYqz^^G~<++yL-)f2Q|G&I zC(w=6x|&9PT$hPwtL>|H*y;oBIvqCXPHt=;d}f&R)#&-AxDV?&*dT~+P7GdHTfOy= zMRy*T_BPv0#Ko4-&b?FByKhaVx2Kz$430S3l3G!lTa##Lakd_58F*qqmu;!*AK$t- zF!a?$TrF?=h3&+h^?TS!yWJOS<@4Jsr1{<2F2BG1PB0jg`fwkD z^k^%tqlb|gaT}Iu+)6;vqvZ7G#5_6uIYPl4`kpBiT2j4ts5t3dc%`(MfnA!~QYwru z%N^wj#i%MNIxA2ziSg2)OI$*RCG@a+N}M^Y74;X|QscRJIFT{!835*Frud&PeY^Pi zPr0jl7jKBykJ`8S8n?s-t7qHVs)!H~uCCJM-R+ywfBD1zd8@x8HOjLce~{JHGi(cZ z`$OrYlidr}d}-%&@qdng1|9mzgI_+evdxvPTbs(&cHbQgbY&9z#}_>LlioD-??- z!9VorNe`qbls_e9*ofQr(F%oEVCa(8kfo3=ypr;R1f0bEL7^*cA)fCc(0%S`Y5(v) zEpDExd@kYCxp743i%wg^=7#o1hdLi!TGbhLnPUBTv--lWNXKADT}z{@ZG2&~!BpI2 zKQLrZM}wj4>XzC~b-G|Q9@IAMs7mzLxdZj?Kr-8Asd7L1-sz3cH+tf_ItSLtj&AH7 zJ~t3=^pVPnMGJHfpA-9%A+KUZfAb*seQeosl`q>k($aRY(?7L*WNh)6yJ<^}Ayn-! z=c0+-Yr?Cx$a|-!OKA?%1t=32cP1n}N)rrK!xOhS= zN?&Mhp6v1Zdzrdsa7woD-=Y~OAz+N;}a8_gjzhF7|-)42V($5kb!{_mkS7w zS3RjxD5kvL+WIL;JuboPCH0b#0+nVgOxHE!^F&=uO`bprqOOj49eo5DK`2l{jF#L5 z%9Vo|N0@TFMfKv6BuOn}6_<8P(_@n)Nf_-zDao9RE&ySr0nY9Fvy~*}$`DCu;bb|2 zOBH>ibbEuGWne0m^H_re+!S!T97Q>Q>Et-$$`5%aG^3yjr5$hz^Eg2qZ47of-L8Mx6YPyBaY07g?XZUH_wL-a+!<-{2RgeKG-|bbW8qI6(sc*5nYOA0gDY2)k9>QL zP9!wXexjxCByah0Xl3zxZ!tf^I)DrykGu?Sv@O^BD!3pFF~W)n}8Zic}~`8T!h!WxHgUZ zz1o0j#}Bve`OX%n$*SR*T)w_Bp;GFWN;;18^*>lAcM~R)9xpWO!imP@#$5LU#?I`! zkEfO_aCI#w$Ru>iY7;axxaQNi;ESEcjSK7fYC$OgRU+ zJX2Vm@-(+*z5Xb8>g)tZZVuQzQ+@iQA2s?lkx;6E^7p^Nc@=nu52LKSv8%NUaVV8W zA+lyYzP_~+@9gM6nK;vE7_B*;UkqgLN|JT>@H)6%a^2ds3~a+{s_c37YDO~8T+j3) zr5U0IA%h`|1$RPe)sdv|xPMK}T67u1*wNWp!@w}E(c*5}I~ZFA9LQI;u3fh-xc33* zOUk)gOLp(XgoV3xkU8oet*Lobvd>LnSRhwQ;PX@dV>k&t|B|~=j>!--Ktd=z91hdQ z5m-`Xk{TXBYi9WS9fI;PsfYoP@x-l?jRl}86l9f!P8=xoL^d5#p#FW}pO)6i$Q5FlkO?3ax?}&C_x-)OxQ1L%8|n)Plop3S z>s~cVdy@o5B+dJY<)aPD1?Ok4AxE_CIA{Otkn?r7k z&XVaO7M`1PFB_LuEqG;h_h@rV|B{h~>z1{WnO31YTvc29n`PVNlBz4wyf53?HnRWR zra`kH($k)6dG53KKJn@!kFDNcU47{xb8NxI!|2B!K9X4yT~mB&#es$GO#z20LC2ZC z!TJT@yVb~zycOr+ae@ewgH26c`7jT5X$#319_#AVp~qLpR*#2aZ1ZZgGarfMC#{gH z)KgRW!^i%oO48@EjFLE9`PdG$g(Sl*PC=hRW4>Qs#P5)rBYS( z33Jm)71MVOee7i%$CJ-9s3anT5oZws9ZP@|3cawt_S0Ud$LSyvbYX#Wnz)Tn^ZAK8 zWej$Q&Zw7i$(xe0Z=X)M1}0pjD*T9?|Kd*4=@DL{(eo!o&k#UAg_8XR<@~ zf=lH~2bTRp=wDzp#9O20mVwyjuTAMx!V2X_i(h;5Lh-$CtWh`;VTbc5^Gm+oK(M3E zU~1|k&puh^9$Ts9NSL>qDtWV|CLgHDq zTKQ7A0qca#rjjqkmo8n=lFekKzL5pT5yZDbDs7*H@+0l)@*Qucls$H&K zdJR2v*_q6n;J>3VnaB5z^!E?*FPQVrEzE{BYjy_RcP#3_VWReao z(1BV?gs7a`o#Y%iPQVCyITln_xpUne&~^%`;s=mEVUsCj)MIOVeQoY!{-sfYPm3nj_5Hu)i2d>U+=7d+7aNhTZOQ2G=MhDEgkNS{SToapGVIP7-!2}=sREw2MIh%W{LX&fE3 z4|Mr_j{g3E0eeBWuz{9L34>8!WdY7wh#__yAkei*D4od?$^zdgcZm{D`r7AB8bzST zl(<98_nYnuZn-$-gM|YByD)P;u&b@K)aGA`c6@$-cn-V$zvO&;%$?HeJo0dGbtKgn zSn&1H|5fOxdg~G0@786$^k)46|71Dq<(E(tlU7JpL*8BeDFS6$%i^QI!T=~QR? z>#OGJ1h~WSE!In{L*S`P9!~*g%sr9s&11YB@99$3Gho7S&QYCNq1N*kh%QWYe?dnf zX^ba~nLd9!|HJJzKwCal@+@{ko0nZaov zy0GNf?;eOnCzqdj@WKr=^^!=fRSBfLM8UOgtJPtU36H+_z~y_$1J9n!kB78ghc&S{ z?P<{g+BN{%KF(SRyx1Fg9I%+q>KBXU9#%4m<*bmJYL7?W)702=o;;VQLyA#7f{;&3`^ zJ4*3&l8)_AVTC!wGM72YmE@@$5u$#EKM(+<`xDAxq4@!G&Octu2jrt17n-{<%59w& z*O+s5ScgZxw8fM6hDMwB1M3jdfSk$elDsOT1>B7mA%a0CaBz~Dw3b<6WTd&&Rv?ql$E^|{hw6~W z#kmz)olacA*JE+p-^NYge7>~x{S-+j9MN3>cY+le+podyj*B>jP4!EWU5;)ID|Vf z|K`nm{jmGwWdubP`}|NYN|~tp$OOU?8j{Q<8N=n|#+^A}UqU4J4NiG`EzDpz=TgQ0 zF7zm6uc-Il&q}hQuk z$H%rU%p?~Dt^Ld;b=4Fm*|phKXRMVavT;Mh;Z7nL2yGdOjjh6%SfpcFK_dIX@4x@= zK#(o~K~S_h;b;tN^R2;+-+RDVm5c%23-HG$C|pwf+9N+1!h@OwZr4=SE{i4x$?)Rp zi6b!U9KH7|&OXY=djOe1-pTX1Yu0RHx-}ZB^w*kgOQ zge&(!Zc*@!j?Sl_KJd_92Y<^8%mco<1G(JC%Iu=t=PR)b2`daB!$`_`F&HBHFwam} z_I`3j{6SP(UZ5KOr#uv+ScuAsu*)d7%tCV<^iN_4oO$SF{vKLtL2K!Oy;LA7Da9!u zW6iM{e8A?+WqamBs3(%`$A`syfn+TzGLelTcT3P43c2+7@(EQk5F;9EMm{?Fvwqj1 zp+yhaP5Z|VJ=GRrH@0*LT~Te&wD$8`(^KJmwOLJQvbG=@iWoxO1w(BCXkrv_YTVr5 zJpQ!UmL>Zatz&jJchu!N7wBsTQdx35oGqAbO%bzSsSX&H#A1s(0XHuGyIT8$!$*b_ zI%gZ19QPAMBxxN!V5(M=R&T2#wXJdS3&Wr5>}~02>RP|Fi^v0Z%%xeTT6}G}hAG_wd%@Pp6(e zw_D@3`z+?ps$g?g08c=$zpbz7ifq^gEQILZ_n3cW9YAW4|H_+iT(96d{1FM4tLMj^ zc|OkP@pMMqh#`(+PJam2yM%%!=yJWH)#{DTG+Z=r)ey|<_4y1;lIKIYT)qmg%4Q?^ zG@fQS7*)(nR>$M>tMm?=LC4ewLm`_XTUDiq+w=wl;$lMo%VsOomFx(Glauq)=cSG3 zrJt}S<`!Av<;1O0(1MCWLk|lU#sDl(id~fdmbhOcW0srC$vUbV9CCC*OG@%3FNtT5ADhO|8sv|ALBQp%Qnvp27)=IZdbid5vw20SabEQ{U;Og zPn}M#*faL%sD0+ug<(&faZfNlvn1O$G`NRMfBb>O=@k&~hKq+;9@ar*Epk22Z) zZ*nUXX3?_J@`EWRi?teGy~+#$mD$vNvL0%H`g+79YJ!N3w<^@x8H$V?kHeZRnwl@FZ?o4Jq&tx|1_StOfrO?($=+qnx68&6~EcM@m->K`F z^MB{;3@mJ?P;`Pa_f#Nq4wA6|#iLcs`87!f=0C4UDj6CHELovjzBrEiezLL(D@QKM zl}pr;d$``VC%a+G*wOC#&_yF#0VvL3zHe^irf594Xy*u>h0k9=j%*>J1V zk+Rurp>S09&nlG$Iy?GXo-Mw6@ASG=FSpcH5$%t*l0-1FxOYXUW#y}A@~_{!z5A)@ z^V<)t+%cfGc2(llcv78hSKuW&!NvKFGJ@I3blP zXB1{LVlc1>oFKR?mhWu__Zs6ok|Xa>RgVcOxkJ#Ae=&(t*GU3Dhn`gmWBV`>Ll1$Z zd43)W0}8f0#XJ_rzOb#ck@(bl+3=tvxpCM{%KF~yvpF0A+^#6TCSTnd%NT|m4V(OR z*;KIJ)1AQ+TRyVu*-x*Jsa&eeh%mxxP8GKl3b>HbqR8lt<7c;?|7g$vPU^e&HS7?p z6LBMPWO=@_qQav*7z!mt9&p~PHj~NbcH7|Em#gu(%rs-x1#U3yh=FlFFLq~ck- zh**YKGyv#I1Y}NAAk;uw>VB!3qYnfSN;`mn2YRFBG`VAcMjI|P)fWvD1F zECjvdg3d$I74DS9pwWkva@eSaWXckBRnT8lCk>mrOrYK8im0ec=TGlHXK*iEUuUjw zcB-_})Yjz(a|xeYt`zG%k-Vw8;TNx)?UHkiixL`Jwa47nxP25$YV%^;nak==cp8>1eVl!!jf3s-1dj)EsBsyjOQ*b6HhaTAp1HTPb}gxF6J z1)@Xh^E{mhK}5JnWWXu0mQ`qRT&jFYh@4X33WX3CO5bMCcS|IoJB8mV5do^&1f&Bc zz|H`Zx?7Z0DnkMCYG?f6Kl?Yk8cByDIP%y-C|blS4^26DHWt5J)o4R=8<$k&RjIn+ z1EUX~o@|R2AN;}I<4yGlTQHta~2p(m0ssA(a(pqERKwg2LGcd6Qlr zcu9%GE8V1zDs5^WYj#5%XKuT5FA139N_WGg68H{DFblzrFgs!GPhBhN`>!I@^WsTprJHJdanmPW7FG`x*p!+r;^kW$9?JK9St63}vl1E^%Er6`Pj8&1t& zl`6_93@RUUA=0A8Ww0VP2<4YS_ZPm)! zKWuTBg%x6{OjNn}8;=h?+HT>C7>J~&+N`N77#4JDH+Sr`;?dfXUOizfjAnXmg}2Yv zZX9n($%2ZAt$L+6Ua9fxEmjx!s#Xvb&2#B=j>E}?i616`1W+x9u?QZS zA=PRLNv1PiZ-B#Nb9vxPtT+>(@J}EhNzY_5k_IuA<}O$Hmm1AVxLx zJsqTW<>*&J+}jkGXBw)l^5^rm9rc2;^F^ zNyuoBuH62nal{rYw6Az}OYvTD<1_i%htIxx_zyofnr6QxR6ETE3#RUl(KeF zb)jAq&u|;6^-V#QMO{hktcD#82&=dj{XT0qB0z!wH^_rQkFBCYAONm7CbQW* zI-N|Wf()hgc!0_Y3IhQfTc_?AF-eOpk(^_p z51yONLFZ#8rJRoKTAcvnQVDMks)%HBzF47Brz!sS$;RktFcG%8j4t_}s6K@{Q)cFj(7cFS^=234wB;;fo@avcM!D;R-HdBJUO zWo<>OkmJ zktdhB8KyL^;nq4{iZ14w1jS3M1t-d?)2ramg=}m%0`hQ88^8 zfDAU;C-s`DnoTRDV=F@DF^{*B}scUjP)zq^&W%o#48)&kNfY}YPYQ$Q( zE?DgxXiw?*|x0NtQXDVu;!?Q$vk2;WS9)P)jB6z0TmV zRs+1~)KVE0BL^#wqE0 zx-)|gBi{#=K&zCM3eeT)LW@^o@f?UQJ`{ANTN|Rz&H&l&$kppmLAapT)c1I|VL^85 zB;(l)dkxh}jY^|tG_t$SK1_E7zQHzOZz7Gz3s*E6hXcs@(MyCl0iiSCTO!%at%fI% z)-)nWO(Y^d6VGP3XYwfU3?ZaO8X6mc+{bU+`#q8eic}iUtJV29#;TDg<&FkBZnsH&_}S}M*g{laOtr+l(xRpo))Se-sesL)m9!rr)QYK6xu zv-(v)$EiZbm@=2Qc!Yw{=bm-@6-!S(Yq9v!m@lk$*(8SX@w_ogs6FwzIH4p6hitnw z!cY_O;xpsj;)({o0O(*`yLTOW(-6_QI%gL#npRH*;Lqa?H3Wj*yL;~qrUy_xglu`) zY_TX{CG^oNPA7>6DGL??rwI9c_$h)zStoEL#f)4ckrPzHpO6!Ben<|tq8hH)fcpJ3 zACk4SpSraF15%Ni)L*7$k_HE1+B%hdVaP>*jy6bB<$W?LKSaXU%@%o;S#L76wd(9a zJr@-`7+N1=xcxGVOGU^uy^mH^8{AUW;lE4~s#6kSsDkn0 z$+2z;FKh4B?pcriNI__0q1o;d?q7lZ22mn*r1m;efj)lOXmnDlw^9jwROyUNhG=h~ zl?cu_f7N2KHvkQdAVip&>p}Iz-+^busaOMq^pu&UC$>=v0mzL~K?kX+15H2l&9SzY zv_~E2t?f#S$NxU=^PJa@uPUVVE4G@KX|W+;A?2&;TJ!wcfd_^>WJsMF=0!P9hg}tR zd)lTN|NDm)Da9!tPY*CDrv`wjrf?CW%|r zfGtUqGO(114VS{Kx9OTZaoMI)T?gga08o(tqiS_9oEF#|GKWMQ_P)H|>k4ll3R?7n zwwJ07>=x^Nx$0im!uw->xa>8`2q%BO0(S z4dvc?sd2+VV_l@yQ%Lk4*}Z!NmG1MMwshHQN7v_{{fIq4VdeeUlh}`dC*wxCU%{A6 zw^~gpN-f*%_F4}Lq(-Bheaa19z};?@T&|u`IiLZeH6~FCPCzDy2KRng0_OdIUn7Hc z5m?!C#h~ZPq>QZ7F_)Q(#j&JO8L{v;UGXd!@rjLrTyD%>KxJzQ|EbTWO?5<1uV<={ z-2A8J7tl7}fHAf6Qx8@z>nUXYwc*qf9?6Tu+lO1vF8bspy%T6sHL$3E#C{IE*Hw8O z$K^VmP44x0+-@%50C+Zo+~#(BJYJVxt<$O1VwcI}!d>``SX}WWm&=036VL{M3W>qv z(ILoE12ep7Xc|bm&8uV|?6PuJl5^kq(H9z}Wt&>q>14~%of0Cz<+ph)O7qF!iqq*( zOpyxmJ+@3uBp$ZP+w`afNJAL)LO%7yTm^elwv5FW)M2Ndws@2S;c#Dwt2E03>@%CH zRxR$+YNPe8Alcd3Zyrpvk0qPgo%`#Oql0}$JDKijOVJ?LwX$#)ODKm)i--`1Bkt&y3@SQNTGdJS1>AzQFI2!rLU{|Y z-4zGtEO)BLVU-g+5jZEk{*JO&(K&@*76MKw5-&$L1ucc|Vsf`J*{kby7)}0)Lv68u zXV;!FiG5w(;gNa*YO6xpu+5aJMk|Q=?da)%UydeqdGD+&8PgPMBF+W%0!1pFmIpgz z1mBrTqkWydGC{SaS*vMJc^;~hy+?N;5_iH7K6c30oferc?+EH z@^Uc9F&dl@8UcpSSNi!voQ-ifaEU3k$PDf>qZ$IK*yFbo^xmYBft$153fP)Ljey7I z*}6D%?dMqiyIvFSlk+!s=7X&B$0qwM3MW}xm2}F6e>@rq9M?QjovCXbQmn}^J{E7q z1=)NdQt!*GNUfSV-LbVVpYgek(waVITta#*0dJ>L`Gr%@pL3XC#xi{G4c2+U7Xq^hbIjv2c$8f|;q ztk*X;Ybfr)2?Fu^8R;}ojWsnD6%2$ZaX9@A;75|AR|XK&bVOJ#0RI25OMV-8}^aL&q|VBwuaLk-vL{d!%&ZIE%NzH42z ze0WV~wJi2uA^GOT!c~`ZT%W`3ba=38ZPhMoT|;w+YW38!*_3r_KZl$3k}^eiP>fBs zSu_LfGUf89$6$77?Ng@Mk3aM5>kVW~AJ~*@QT6o1_*FINK-;LgC~|6u>=(au=5d$5 zzNI-HEsh%XOq*6oL~>bb+Ws3@Blc4yhP;qBSb=w{*J|~087`Ab6R}tXIIjekOAsQj zS`WjgXe1PHxdM>X5{JoTYw%jF1Wr5?)WuGzMO4?i2tg#lpoBXEaEVMNXYu(GT!IjA zQS2?s2GNxP1eqY=gwF)rnw*3aUI3S(&=e<=^lgbrdbbb2D)WLPB<=4zOYtZ;<%PfUA{Q21$RbGGehq#63PI#FamdOl9*4t|N_iw1li>ib;YyQ9 zsnnc`y$U>_7|;N}&*L69aC#fE*%W7n%T2w_q=R^2ie`5bRQvshVBH+&Ch5pDT?<1+ zXy>H5jK-rh&7kW8Gvo|*DVkIcCs85!9#i75**DS?^GMAqku~6Yz*^(4?65cIy^^7> zux9j&GsKcT%@#*Toql->Co1Ihs*cHx?XGx69;{6Dpv&rNbd}0ld6(ATl5xSbmo)qQX@b zesD7^D)r>|$7GR+PNr5>xZQS@%Wik6un2z2XhcE`2685H9ndg>P}HG9Dztk@Mc_!Z zG_Qb4ztEXmdR0tG!YONif2;((mW+Kr4q6%sUnW%cTkDQ&w)D2{Jvjb!Tl<~{c{H3h zImbI%yN>P^6AKw9F4Wi?iNN+zEHhc~uWqX!ZnuYjeQwv+H*_5xjP{SEOr9s2m+suR z>x~}^Jbj6=e$raw3B{pSWFrXc5Nia{BWA>g?1cL`-^>dw7K4yC&7D?G%cd2EYv}j$ zvPy{!x0!{Q&1|WtK!G2~l8dgPuU|2l3<~oN^mRlCyG4WwVWr%N;|^9O-Q-GDM8S$t z*y~ESI#R{>xm)2x?p^ZTckj@46y~f;6*h7+a05^?3g968m5K{1Nz{s(G0ar#GvjzB zR$MsMik?A7&=!R)=$u^~Nr^^RCW332< z*fGDgJ9dZp!mN=&A}nM(IQs;v4>2McYU)Za^73^AL%)5=P$|Qb=8a+i}Xga7= z+S715oB&_oKODx=@!Ql7s&Shd>~1bW2_S;zFy&NoShN8t)%=x+$)W3=P*Q9~%X??U zVr7Z-tjwKjwiS-tI6fN=1!XdSgz=Z9hnH6ewaeEO|1h~GUClZAu2`)J>g;%pL&OGuyGUef!2De|8Oe=-8nn2*O0R zfxCJg+?5vGmLK5v^_KxPb%3&0#M7n#Fye2%f=jg1Iiuqm`h%AdOsmB`pGCioBoRNj zB`3HxzccVExK2I70augM%dOUGTz4HjBQK9AN!|uNOE{4LoJy5nhQri&Z;C^K-~yUr zFhfsGWG&G;z;H?-8DVb$!^xor8UUh0wN}N9;tVS=9NQQNUi`_&R>!K7>sFmy|LW}L za~?sZ(n0*{;zh=ht6#YJDr?o6MazmOHR^C$=WDADslRkhB5<(!$aT-$+WXxn5BBxw zl_A{K)QC;g=PYu;-3arAyW9L|@Gn0{jn>MJ;x9gTt@zGjF2=1C#ux0HS%gYaJp*Dq zz~Rh~0jhbB0CF(Tcj+}Em)>g8h-4N(rmJ$fm5)w)trW>5yy<`p{PqeTBp9*v_sF>Ov^udEe7%acfRZ+-R%;zQ*Zht29 zr}MtBSu{2#vJipus$kvhwknE+0)T~BeZ?=;_4*{U_w;oQ#pb$#zPPQs!6piYaA#vP zHc`k~<$};%43GdrHc}g`rvN|1ku>sDUgDKctEQ936bil@VKB@rs?_O{L2867k-}4{ zIPme_ylj?+fmM7n&v!HBa#4lK=*7J$K#EJEP{pf2$^r-jy?Gf$Re)=5z9I_P)9Gv! zlEz-DHm6EAX$B$bUMq?`^z{5Yxl#)sMW{P>NQy-BTGj!cqG)2Kf~OofcL}z;!wPiN z!JubZfp@Y{t60f=XRZFohQ+4`_U-AeuT+?QjJ~iaEL^It9g>exlJ`8T(U+OC!* zw zh2tpx)i0vfu1a6=hyPWytw669w~{nxF@6g;ONHo=mMffT=Cm4c(JO3;7#L8frSg0U z#uBq+Vz!Je1ODgDD;kY~t%fAx(dq|~hMp4%33G?y8yGP85LZwXfQp;3S>#X7K3?Jj z#`>sVT72i?#lLqIK792dfvI-E-C1z|45XsCk?|JwIju;0zS5v)9b>|eXoVlKLV}6K zJeG|5e6N_zb{=>gvIC1X_d$uo&2TAkTe`zLcVI^*6~}^@h53OG3ZJ7IF0G738}EKk zU0vtY^5=bETyNrR-+b}wSKd8t9hEqUrkxwHJM%vF`=W`BZ9%^G^_Q3}5Ul_@vkl<$ z*C6#s2Xfpqf8lw$a7}>j-7u3~dqZlvJ6bN*&Ys+V+;f#_xJkhF?a0CL`)SGS-1R~Jibgi?nxd=4fTQQ!&A;UHM9Z>0=3 zN}^P~0AmwmgeS_3uny4G5-il(x>ia>aT5JYVyvNvE;kVli(z)H$)X7CbT~~)Rq-~k z+TTU%uNAKlI0Hlf72_1oX)>SL1G z9{{uc(b?;a`c5U2S<66Q5nhhjOyS zx9eze@duB~mzruCDM108wi$5Rx4`F*0X>;RF65<_M8e8Rr!yvrd|D<6O$VkkP{e~0 z4EQo~`&&CevoQa8!uyLaBbQ=$Q-GfTa8aD*oZvtkaXRU!We zV`4^8^IRPTd;yEH;s8;zppp3wCh}VU=R3csRtqWsFBMOesfD8wRK?H%j-psB;85_2 ztNg{Uy@+mP)L*=ad7d3QI5At#*nV~NJ0CAD`9}_V|6NQ*%ki`Hivqd1x`F=?cIfV( z&Okadk*)Xs#F_>cNknZRNg!*l_>?NI8R9uaDh`vl3mRbwmx%+x35RV4mC~#9`C>8% z&~1nTd?ye-&{sBssnw=pkZqWAMyEX8gDj6(pqT*NI_*C)kGENPe{?5H$?kYPbB#35V zBa8+#A_#cFKBcV=Z5*-A81js;&T=6OtZz| z6r=MRE#ma3DXi4B^mF;%y^B|bmX2>a*}d+)&wcS*i zGe&ppt9kI~V;fd;b{~{EtCuZ3wS|nKU3)i=jAn;BiPVN;<2$adj27S7wqmp^-rG@| z+jV^6OW)ROP)~7I{M6o_9m|`W9-rLbTA?|)I?!5MT@&j(F_m2w2DGgKeuf9gy$LYa zk~|MHVJ5RiGA)`mQ@)0z(x!n7$wM$)j5By*m5B!tvIQ{%$*xpcR3_|s2E$>zj^08{ zR9E`#(wwKc%5DgHO0X~q;h+=(Vdgvt2y7@d$COg^HOzM=#U76*Xj-QX=4V$L0(vQL zZ74%}rHdFw3jaM_7>la7?@K$I?7~opgDY)S8SIWUIobUF5*qmq0o>O@A>RlxcqvGz zDKN*B3a0UC3(#LyFF4&*A%^1?K~N5r6hC6OSda)ur;7=EkS920FA4TF5p?~LQbFmwr|j^YO4v!y{Negv{YUW+f2)+*LX1@jAD&#=ad1Bmct+^X zm|rq0ym;sshalAGTc7&g)Gyy-9B+@Clt51lt@YirnXQKtH@?8wUtevO!RO3%{U3e* zotrmgeE;yiQFvwrxXDG}%zAJ+OY;)F#lkWj6Hvy7HO-x7Qx*u9VJsG=Rx6BB3m@m} zO~C8P3k3p$g0C=gG0Y}43Zc~}iJR~mZ&JpeZgKt~0qEg(6la$VH)=)$82vkpYDj^) zCF4x7RK5;qA;rD8%*<=BfB>3VZeLL>gKsa6WDZoX-kwHGq6RZ!!e}KC{*BcCtkdhutT19urFx z)9PvVbj7rnW46Qdij|mEU=cZRlR2Q%sl5s}IPg^gE^t0C6at^{)+L+64E2E-381fE z#&O&SDIyb#J!(vi3ovhm%`9QFg9@*NrVC)=9|KTylcEib^d#u%3-DKpO6A@L2#5d_ zg46<#Xnq6Z9OWEyq{ATf81t!T1_a~)3Q}Zb7bVh26n!9)Hx|zpul%C;=i=vz-&L8t z2F6-4D&@a|YEj~E#gFcip`xSs-BTY&a|dNuF}p|~CYhm7W#8o8r?KbXA7Ks;6zp6; zT))@2!arNfWW3MBo^QVUl9##Z?gT{ka==9+6b?usFXm-dg3w1fa=8ZePP?Y{)0$~r z9MaYAk)%>lRE&v)(=p8LCLBT`PcG+h6l}t3wFIL~CYsV(;yN8Wi6$UP#R>%vb!f#r zUdEFO2BQuSK{b3(iZxtvsBe-^lAU-;5+CFy~iw@?f3Z#4?R~uTAcKbkN&;*Opxf;!{#F&t&92Oalxr^* zU%0}+83Eabq!F+euU?z&C~ij2Ix==iBcKD{5^Lz3{bTVL9nB61v>h$&sJ9qIzry$# zz(k$Ez8}GU4=hj+a9u0%MBak7w%XEurY{|86$s)gxlG0sTW0Jv4K{gwoT>0Nh_9jl z3G7eSTEGh_0cL*{eFOY`1byRDQxlwJcf~K2Sq<0FH(s&HxDH2q)phU&?tSkZkSIZ! zDJ7YpKz8nCGWTwH-UPI8xpfYp?z#P&Rg5^D9f4UX*fd;*m~oQQ`7p>mH!?apm-CLr zqos!MmxP@M2Ko;+RvrGYk9YJOHJ(54&Z>=1j9Em!L{YQmoFuSlK}96CV%O^0K&tA! zy<6SG_4=H!Fc=A~VYMXk>l?Z^bcK22TQGmND|upcga%q51lQLBw;B`0v6+nNh$$ISxP%8rke(FhSlQaI8lyR8As`` zZ8=%W!RBQP*z!+Ts@+j^`JvXQdM{o1<9lb0EV+QP&bcjg;fzP%DaXJ+qHOU}rfs+TR=zP_-uIQzh^x)#=nv)}yApSuQ! zcm3?tJyayu{$i~En_s!{`S51@n^!*edVuSA^AkV)Dc}ZhGUlHEHyD9cjQ}jT`4WeN z!jn{5BRpQ9#)Er+k$mIj3cX%gk)~d7S}UB+3M*C@pdO0NPZ|)t*Q-oGW~h*5!@Me? zq5`f(x&^(CFu3R39ascJ?;X4?rYerf1T};erwZbM)`5zeWi9WKgkA`o<4LiGk|U1W z=N})|6wq1r(q#51a~ntQjuoFj$`R+E?tJC)?0<&_d^CUP&z&oZhT1X>tYeSYZ)!7} z-_6%`_ck=!>Iv4FyZieZ?Mi;6ayu(uclYlohH^#xM@xLt$G$6OqUvvc>G^MlxSH?3 ze)iRNHe=`V(O0j3^)=sM3Q%tupx!9p3pwS>g^+_+Jq80TsTDy%QXqPueY_g0)f>Vo zTA37HlgX>VNGEuBiERr&l4&ZzUpy%f;ivS79G9Eqm|QQ{t1Gh}$u+d{)70ioAWRTC z!)hC9V_tF|J;Ssl!PE#$08>ptRtqvW)W9q;!*VK^1_8PWvx)Dsk(AE1F&hT|=lFZY zzwi9r3y;0JDvZwVXP{WiLyf#cyI7IC7Aii!cqPjC+q1vjUAz00 z$BL(_o6+d0S7lu1@xk<2anT48*83@u6Ic43sqr^N+AcN=y#Mozfi%zm$!m$Xml>t9V+Y z+DC|Adrjz$&0a>g@C`anwkIk-7ZRDOS{aAp9IZF?i7!Ymy93h9(w-G-XLsi6-GUI4 zKQ`5<{`Do1)r_xju+~(RdrRZ;L(-p#e&I3_;ibt+|^w@>2yw3 zckd$E2XsqcFq=0Y)FCJuXTE`<-{nR+SC5Fu5Ir>J9tO7*?zpZ^iLS zZmX@M!<*gSs@749*oY(`<8DHA2Ye${R9BWnNez^QMleU4O*+*}_qEU|I>>?eEm*)x zy+}g&rj&aLo8gq>RPvgsuohg&K&OJs13bw4vsS1f%cTLX!ErGFXzjeX7z({EtzdWC86y!Y#sbtc8cs`n<&4L?x)^A~^p>!&hRt)s(> zH^23G;J5`{UTj#sVcTX_z+-n7f9JHjNY;iu8&+GQsdyxkNJY@cItPzF{@$jItV-Y3 zb^mA6Zmqe9hOOk@2#twph-yu1;ROER>lfHhKPm(KRnlZd|t^uNq0!Y^Ze~ z8(Mpzr;-GzH&P@|Nn_TV(l3%flH);}5JHc!2;r!koX{!tF_kre3i7}e!;@{&ZthiWK;qyfJORZ^GK zrLquI^!sjG`#FLSkD8fL|LJdo=XQh)+LKPTD3(sNwH?Fn0^}Qh8`I#Umv}Pj&tpfZ)k!Xg)VdZho+?9L0mG zpEQ&7Q~-_~{27DbPdw4mvaHr6V9Q*@?6)jdToNL*F|R^owatDrONt*U)Vj4i;BcC%n$cZd3xb+J)K#ocXKmm~fwyiF>n_^> z)?E!lH8|AbRabJo)l=<2>-PYa_HovB1a7W_RRqhgBT8ud&1SYvhrYmOy})3DFRMVW zmr5x}B|uD2&uM44GkW=Vu%BTJ?7x{Plf_^dpOntXG7vJ6#E*Zt{?>Y^#^xw_pL8&+ z0?B6VpS!KdGJ3Wh~a0V8zm>ML@?SVD_tgOzMcGvbp=`{Jc<6x#k^r*W|Hn3tQuoaXi_( zV>#oirDMO}`^4D@-@W(xQ;gTxNJ)BpKzb5XZNzlmkkx3a6jeF4ueG8g%~rsBip+#& z%rl0WoGA^Z!bZwjGpQ$Gca>49$!676VNwmqQ5AOiNtQEbs&bW3bSC36VfjSfXsltS zp)E_$fqrUc$6R{l!^str4!FQ*6CFmlbAK38sXw;N1aNEceZQ9@r3I;!LV-1O^JELM z3d)g^Unl`+hdI~ZV)l8^FT}PIyWYz-J7#|%*Q(5|+PFa=bOmNVlX3F_v_6NfocPnr0-;o8Eixz4sZ7+Nk$lEX%T7WXm>g*v7^f8-uYirkWCpF<_dhAt50U z*bo*akWI2l*fdf$WbuY1n+DeKyZ5~r70PD+pU*!pGBacO&AaEGe$G8#Zg(jMya7OI z%DsTn0z`tOpJkkV5!@Yabyd!9r?GX+u9nT;7%eFz=fl> z^V)gT8u&pc(gC%kWJ4-7ITVR>hR<#1oA@S)7H%_t`y{nfvVFUxlR8Pe!f7`9{oCN@ za_5Hr{slCEwttm2g&Lhee{Yg}qQr>|DDpZaK7-WZi>E`HcsQ&!l< zmD(6x^#;(L7B;I{_N2O~z;)`y55XHpLegM{Z@#}mD>18k&kT+pGCzNRWFTghvI$lG zc4@StuM=7pW$8^)!}|D_XU}@8O^G&i>lM@9T>Noz?(eBR|?ZVNT^rT5DYxsf zp62$h`{d4eZendk?GG#|bVq)oqr_T%TQ|{;MhQKLL7t##08fOG2H?G&cp63hkO87d z1X@!@&T5TX&J`(QikQJ8tZ6aIC>9w}tW_nE7!1vjeO2k4wff5_l3_WLO}7}%8xxUc zxZ!N+dC__7JOw!~5h4{^3VHeiUo`q@JGx?Hm-h0D4CkjeuWV?IpV=qPr!D7qS8dOR z6Ri~+TY7PY6)jo7Mtp(YTuu4o*hqGTu~n=xqG*(H`A6mG^9Z1EHP8e`5I+q*t(I6p zO!O=wGVEK{GonHvm1NNB$SQ)hiHfsCf zY?5+7q@fB0h|xsEKvbBQ=Zm<@?PBN(XOgmMvGmdLKiq{5T{Q@7o4OX;^QZLLkM#m)v0IsD_P-)}DcA0e^k0$`iJ}**^E)b@_KP?whz0f%x2xPe|_bFZ~I}^28QP#VE-9o@$T8t z7r(j`qXRnsj>z3OLG+nMZh2lWm1=0DeQ|r;X(EkLRqe!`)pUAwgbdW()f!E;8_U8# z{TaTr#RvPYYkWRD1g}higvBU%`hPj|0my46JKwpL?8h#yIl6exV;5I-+}?HZxlcYy zp3ctPyLc|wpjsv^+IQBneM2IDfyjnE*PGMgUN1{xOy^K%6Cg55L+NUHRB(BZWcIN= z_r4io%76G4BxH3AQD`Wcl9Cv$^U=d4yEw-Lwf zEDQXAZB(miG$V`4HG}s*dR}v0d0s6Pz*!SjoSLK=CJYJh7m%x*ppFs;B8m8cC?&ez zFHdw?rPwOTu~mi(YPN;44rA05ZYU;W`y^qbyUPLs!No^SS_$FCP~I;y&sA7cQ|%vO zp2D`a(*45)O;uTmQBDyyfP##D@*%bztkMo_z?B(!gM-D&X6=5hR%Eve99WB46phJR zgxsWoNdCFq!e||x9u=JvD$j+(v1n8%Y-)h#Ng9xIHd_*Esu}_k#}^@i_x!M_wUTgt zA4xA<^20(sw{jT&vz6xMu(+JpAWF@m$~=uAZN+@F3e%KJ&95rQfK=%^XZNljd*hbW z{oT{*P|BBRFf>ozxb+u5>Uh2%{cw1~w{fDg%TlBbPPk{Lt{5^~Q0iD;CTWQTT)~?+ z_Z@BLasMNimnD6cpwkk+ZQE@RN=3hUl{?>?8*Q=ZBF(|k0Gq#~Bhg*3c{g@C^EyCB zBcS69^<6{_bo}H+o`{Gvff;ciK)vAz;>XWvSuBExQl?&eD-JVaYPB54c|tbp9$vyK z$A~0q`f|Ah=Z0A@AECScIUp=Ug#1 z+Yf_+=c|lWb~_xR1N2SCRh7w9xv-oc{*F*46MB4vXXvn>mz|dQdWj>M zTeB9O>q#4N@8Sb%J4~j|7InO(fYvBhXb%IJowM>HqC~~wK)$%wTlU7Bv6aADMeT$ei zOU{k`Ou4#JUF9#831QKTEWOfTp_MY^cHp&V&T>T_2Rg6Ts%(bR8>PRO{w!8ljOg_J zsA#7G`-Qj4U=X(%OTFkWYmdzqW_W!piKU}^F^w_uaUIh;aQW>9$OTFSq5l%B$$;1p zH*$Z5E40}xa-Q4m_YEL0C-M<7UiSlqwsTcw}>Rird)D8+z_SAF&SzkK7=&ZG&7*CDk>sL+GAtmNooE9L=I#7jl$b%2V{3%Vx5Qu%!F{1U^%2FCbls@y|} z8ZH!`mw-sra^B=7J`g2*DwWP7mrL9nsHubqBJtq3OQMswEkFgE9#_H=Q*lwGtY0!6l>2GqK zRYfVf9g17e@6cP_u(1m_$8as3$3hY$E|>IE83!`UKuH2lZUGKE4un<#E^6RbudE=0t{ zDLgUl9D~6Z3z!0-h|iaDa9ku}y2)lSXruh(3`L?rBto>3`QQ(iY=SB`a&omnlsM?9 z=W2zp0gA%;jyDyQja(i?KX@&e_Na!idyhR|l03UXH_%ghBZmdF#SYYz6J36rM7X85 z(~cq&$U_+}V>s?~28~>$N+s^XyIKegWjq)#<{4}jt1CajZ4V$a_@P54Lxv&n?Eo@? zPlyKw`un?(MqMBn^hOXCn@!b4(p_C^(k)7*B~46qE_cSkF1neXbeT;2T0t?GG}&$~9J{KzkhtaFFTC?seMITD z>dmfH-a2@DsF@p-t7GbH?|^&VeM4(sJv=!5&>j8a!v=w|lX9|Sq{-YM*GZHyP8q@W z9|VH!AhH2@Fk|EP_0@{HyIX5LZg*nICV!#a9THiZ-iZ*M z-3w$F4)MF?$!?Wdt>sC4tM`H&N>Z7;P8M&LP)$jA=w*Zn#N0+C|=IGWJQ*$@=b9o9) zjUW|^cGX%ePTw7;DNj6jcC^VbY-3bW{L|a&x90;BnXYwRk5fE~h*94ZRpeVeYaX0v zYo7_Rr3~%9(d{>9@rgr)8$P~;qjo3shLG1cG@C$GeTVj=j=?R3VpQx%yMr4-8_v2= zmwMNx;-o^Vo(q*OB{xjB3iA=CZTIx#mnKQff`6yoO}ie%@_RF`NR16a(L9F5Z7i0~ zi+g=CTqc+Md<}eEP0;1@dTlP3*b;%$Ml2`+JcS~Nier(>WMUOk#wz7555y&BSHWQu zD4}2A*5brD%jiORgJGfrHLr*h!sUS)yz-gd6=kcDc=TZF01W+1X_Ej(G0ZBNEF1Fdol`sV`H5R0y*33Vl-ME(#d2NYwN((tATJG z8F>^zWExrw0a`VLDS%;*VVEJ~ZWM?N2+;-wiAdlg5di{uR<%4tn3xP#u}JvB3gh%S zpuUyqBrD*2i4(pnMx!&(WjJ4oVI?|2y7%qF-XLFM)T_<7Ay$-FEk~a2we%>hXHe0L zUqaDupBi&MQ+nm4rYolG{j>gHhnZq@H-!@|-nI7)-BJ3lr?fJ?R%IMod;QfMK}4d= z`<&~e)_i@TkwS~DPc`OD*2B&n-`N?RK6>wy{jZmve@W?(2VLPLS}h8iHTKL z3vz{9VQcrf*2X%{t>oDb!@!(-R9EoT(G&;QssjJIUs;aU$ZqeWx zt+q>Q5xQI{FCEffN3TN=8qJXMHW!O+4g7c@5)OL;4d4Py53zd;WoC|$^ZH00CT6A( z6o*qnNF7D;HNn!vrjRgZq&6ZDLCY`U`OnXcumAtb>MJoRv3Kn!u5;@2fa&wv&dL8X z(~Fg%RPKgE`x^20d39Qjjq-6zuJ_L7I=({%C17kkUO3wKPbEO?l=;?l1>-F(djfel zA+}ih60L!@7nwtD%+${zNKLGvt-amWRV>;JW)p5Q*$jr*WKB$(O^3rOuQZ#DYlm>W zw;?Y!&&`P&u<7=;wpcvAmAY{wYg+4cvZe`3z%6?wgsuP~<6C6aX~_ye0}w4+f+dhS z@(fVvlddK+V-T*K8Quai(1&DE+OvX0S66$#sNcyQaIM zrY+yz)4V6xoY6X*DAZhQf#zZYS%S#A*Jpg0S_DZja0ZhpZ}kTPA*VpV^@Kv)L@T(u z>kS>^44cYiFc7L3TxgRf0Og4j5ICKFf2}5Gx5FN?vUgRUQwUW)ceNa$<$-@ zv$UIbFYQ*O7kMP36ysuvL}STzHFh`Zbed*L7F_+T?w%eN0*6dL2b7wI)kCA`1 zg+imjpi}4?8&ybKTUW0{Eas^=9EG44?-le4c%A%sD(vG?k+j>t;7eC#ypj_m{ltr< z{^ar?jk0y|l~ot9Gv!1cX<>l=GLoW$k%OB<;j%kimJ#4u5kq6Bl`$xv#d#7{=BL3{ zN%Z}s*OtvV#C%J(aV(*`a=_jqNe8xVsb4$jc?4w?_kVx8)Z4IT;;P8Fy79JXS1vX5 zx#m+I^LTeP2{?Ht<4f)!-dwQLrfv(QNP|C92q;*bgG-qO= zBj=wUG@gI&U}pQ=`kCI1?tW{_V0ZA){&1}L-sXMpY}4{KPo(G8CbIpui}`w#4y8i% z$zkf>X*VMlWDGf;(bnbjh{hE40?k({t^2wM}ew0liM7x`Q1_P zx?38%BTaqIfg9T3<~R+;(d)yz4>w->tE<-TQ@Rx{Hz_aA(Gl87WB?gQ-p@phCKKwF z`D7zX*N6)ZrhIAN@E|^n*8~fNRxWoOqD)JrC_0(WWNKPv(qXR;AH;pA4~~1a)p8qs zgE3Youuq+xebNz$SSU1(gUazv~mNBKdyychV z?u%Do!@wOZPgV^JY49W+m6#&-8BpofsM1RyG^LcMM_ ztGe`b$EcVp(HK>@!D*=b_i#Mow2CBs9eIOL66zma-=KRm6#D2vnWa`^Omru%{_XLt zqba}C?p=IS?MC-|3N^Ho*40tt|xE90Q zH8pe{hGeqY_Ey+^)mnixBoGY=#L9&VaP$KByY#Z=BqM(R3h3xhr(i1nUpWj4hnA|m ztrs zZTHr%)ea?oeoOvL|C*g{XF=1l_joloCG~G=Gxtt}cYb&8=z|k=o4vV=$sFJp6E{wJ z`y9?@>%g>UBJJCftDCWX=`^O-$hCDv^;f^{wz+KX1f*=;CvP&nv{T4Y9k^W0-u;rsAV!G4g%2lkzG4?#@E}pI37RZt*VM2 z8R2XBaXuYs!Lap565Qly%@~M3xs$1}@$socViP?dY)qz7NY_-2%Qe+#!fc0ZT<&!{ zckSA~ckjkS?xnE3g5wJl&#?Pz=~$G1DFTAW$w&{~mrkdb&ZsObqc=fx2!91TCsM9| z5aLRRt(!P;wgTe|XjlRpqcWin3Re(r=n}#+mz>ZDM9f%;gvoXxqT^%<4H*38syxr< z=k73v{M7L937PTunx11FjcvI`k2IDvIsJO)zXY2ayt3=>p4#SiyW)|={)RdCZ5tve z_cV)7rL+7IwOz%kQH8r&2P~(-faa^3?AnpvqV$o!bqeeD+x~sdpy|1rvbT#Wl%dE4+ zGsK5wb}2K!Wm!86J$4bnJK2r6ke`|d) zYUzqAGfnnSZQO$sy%mh-JZ&Cv!*2a&G{qF5Q8^eEr~5fYI)_6qVuQq#XN?Y6`-Ur zIXf1T@eAOd%OGqjYz6+wGX7}j$yt%2R;3HMgPKEUgbKS#ZtJy9Xa5}y+&}(m>1R(z z$Hyj8u6E;G42`I?c1t>95=UB%$%rEoDfR{Ty)ZTZ=3#fM#nj_3Zrga^wpw{yEO9!G zL1$BcaOTZjd=86N%c#D)^uur5Q2OuxJj&HXoLa+9>P1JOjNl*|b`1pVn^*_;|tKcs`t;-jvU8 zn#Q)W5ftr8B&pykvZL87_`4+B1Z6Uj@P$#NSE&gj8VwT08rQgkK{sz$C~V}E1%U8C zD#V5%n4ip?`p6)G+?j<+E3TWE=L=%(XxVRtmJp^sKF!yk2bH+e?<8g%uSkY}CKJ8_ z-)?nu@koW`$G^IN?~4}e*}083*N1(yLVIVe-7a$|55K#^-xF3vPWhPo3%(9xBs8|O z$zYZive{-b5stl+ET&U!9TSIaiN-)k?$PW*-(SJ+Q}<7<8|dt*+g8u>gnCdk77$uu zc6qAVHUI4$T=Cyt_#aeLbUIUYot`T6uV)?}ZAdPq!O@qQO`$^D?p=$vriNmDXdsh-AU|vmg*het-%Hqe_1ff8UCJXg0}i9rVll4Kvvax4Eh9wTV`O-EV0^PkZyXnmixkEL z6uI@wB1Z(>Fxn;~5MTM|N!dqTLO9_1E26lB_Dn=3q&RX{!9D+9#FMcq$?^rF3Uln# zGJNwgKJAj+{xh*1?JL+6Het5qRL0Tcee#{pm*7p~QH2xu&f3mIEG?HP1vfU!>l}gUFOX_(uTQF%^O>T8hbv6CwPx$D_{x3%xsz2T zfYP1)|NGK;*EVbi9jD9E~XBSS`_CaDbu0!m8Q?e@!sLMbklNcvHMVIv7>dKW~b%#Z{`~lf?~d8`R?`cZQ2b zu7ua7Z|e|Q;yt$>*n16^d*zh3|5K|WcSCdbSG&H!{vuKu1k7w8@n;kS7 zFpE~}l4C(W5s|=L0xYGE!dIg_Vvc+z(MjeNeC5&Nm4Wf0T3(7uRMJ-%6+2kWTv;%n3{5>`d_~;y1B7wOKjak z185v={qy2vuXAH#{@V2Qw>$0F0iK1YvdMIbnP;|~`TgM+(ScvSfQB#XWO`{j?!W&I z1&AWXzkKM!-(NA?+@sg1jMwZAPa7e<>H)ppA`rRn&1e7x(*yXx;2^J1@TQq|JH_iQ zvdv~Kh}L<$2@R3F)M&NoA_APtk>0_9f!^LkyP3_dRT>Koxw@PYT-tU_tKspu+*%=7 ze@Xk(Wwl47jY+K*buVc}bTve`zfy&%3}#BIXZmFIbt3um9o=`15| zuihT)PMgxKF^r7uc`8;I_qWdc{8Vb&th;k2t#og2wd9UHyUQD7GBqNv#)2CYtzOH_ z+DYH|e1AukN+Rvro!S1QV>8bUY}*!Tn{?IB{NT7ci2YXY)5q+FHed6tZRt$1+5OOI zl|yE;*LK!NHy$i-m{l6B*zVW%L`>;?zCpyWH4I2AlCCXLbxVxCLRZ2rAuIu%Ry|8c@dw_ z!N3^|KIQ_V;7Yr;xbAgP32ZB_%O$9-W#jDXY5_l==i_{YY-S`C5VS_4<=#f9l>9^z zt>V2CQc-C*DJwguv!HPJ$g~PMTlU4|Wr&acE-z9HtP}eB)=vCX*DrFs) zL%DhUK&~O9lq6~fKhs|!(&!y&>%arMcGnhUuGrXp*M0RFLmO@j<;0n_JMMXE&B-|e zkNd}T5%3!Ok*kpVGX~!J_33oXwqu8W|L}lJrdI3sugwE*v6s3(Po?JfV~5y8l~@>! z#ah_0XmoujolFY1dKjIZO+?k5iy{L`4FWC?Z%o+4;RxY4bHa5fS5P zdzmoGK}Upi)5SRY{0ddSWVGBN2iV#%Ia(ulOauThZUL z>v5ay{1qF|G?D(JI|$sz+@3q`>Dcq*ozZCna2|6bFOM4)az#}&x2HMSTxpWQUP!eT z@}8uzCbVuy>WnsP8(JL=8$&e`rPXPY?n3{ty5D7LxU0K@rzYHPsTE!KQV~d=a}dv1PNsHNO#6KXX_6s{XD2 z5y||X#EmHZ^^4!=h)=YYE>E95O34G(9BfUmX)Ikn{q9~=; zO9E?~HcLB<6p%MEX0zGo^ZEU0jf$#PYc#2}F`c1M*g(B!G7$+vwHl2L^{FgmGif%f z%w_OQI-N@rkZQqTQi4k`bA-q`L=cNbm&B7QEw0t-2(w?MQLA;zDh@{p)4EDNl8z9X zXQ@l53<(^8&Ti#|0bc2LAxioLhMNzjj7YR+BEVU3^ps0XnIz$~iFR-?fluP1mBF-$ zR3HhaUAFinmNo{lv}v%ojEzAoZE2u0)^cUY`D~j~*Prp&tr`yQX&M=SvCfWC?ki*< znzp>qZn5+oIq(DM?GIlXo0;Y^@(`Nnt(;%U!rOnGMN4Nvq7IToGH7K#CN)m)!_ zC=!0}ocGD2bEC%X*ACfD(YDN+*88vb7n+9RC;i#)o;01BfVMhOI!3#Vb_7|2Jov&u zb8}aY>kScbT_Io#0(ijh?1FDyU7exM99IJ3vf5gKe?l&wKui=$Zo(f3Xq|{P)!Eh6 z*2_xuj%c-OM~KGHDzQW|;*3TMBcvs+kQcT`mRlo9T9%atiDeGN9`;T`RRP-~2?Xu( zU^OxYN1U=G5CiC|U~zyB0B#&1u;u^$#$Bf9roGl+9^H;w(eaz_%l^mLcD-`CL2kDjb;GR}=TEI;7lKFr z?Oz^zto48En`{L;Cn%k!#c6kf=;2hxj(9yDoeK$uLeVTy=g?W`HGWq#O1EeQ@+^4m zPkM}Ev0X*%t`IP%#|xs10tL6*Szd}dnQVe(lZz@f;lvWVM8<>Vq-kV1%!iQ&(V|R_ zuCA0t%E*xfJmktc$kNb?iu1d=SWG%nl_u5DlFk)~QMKaWuWq{VmxFiR@ytVqOCP=P z#CK9^twARB2|C>OZW`XFSC8d)UcGVdO5c=utiwNU$^}9rv4*QUhfj5iu>(Vyb!$X^Jz|I3v+uy}-81XI{_L-Rb;7#dXC8~!$FoPq=k9E++u!N! zAaTd3KI|hzhj@{mj6v(o1W#DW9)(1Aoe_YK$kR(mU_Ea^%Pm2!kCqX>L~f2e$VVteT%1BN<7PdAu#8NWnq?6&U9O;7kC@FI3sdjD31tbzBF@SK$HvQpPcvB)e7m;?4o4?jOG!#=QBg32T zh#oBc*=9=Cp(hPFK?#RN+lwJv_|(-Y)25IR3>v8nQWPqL$O#895LFJRU)p) z4lbG+L?Ac~PH&1-(qs_NI6_2_C;^fJtG{LR6R^$H3WnQqC}*zJ5JF*$?{OWRc1^Wr z>{5ZzQ`kIjb|jR1Lrp@zB{%Qmb6K?Mas8n4>l%4WPVe#7^&S{lbKPJxkj&^~ZlOXk zvt<`g>+K%uK6$fA2luoKtmZ#xb6_ru)mVyA%-cG&nUQoDJA!}(gF&B3gP@|DohXfE1BD6>~V&H zfR~_^htqH`rryqZe52mBkd|Z9^z!8K#y1ucS+$;HOcvsMXG%Xg?RTIbNTu=AZCIkZ zRW0Faxq6G+r*XAN1ww&ZDb3F}v~EB2t8`04!J|qwz9bA)g$qA0?H&EW2j0fTcL|*F zx3L-Q?}!9ZA;pY|!DOnKz-N$X5G9kVVk!|tN~N-y28L8GVt|V+#@TQ)%fN&LFg2OS zLg9crKY`5z%}+UlMF0?%5#_^tBjDdKdUbVOw>7rC-n3z%;PK4tPU$m)-9IapMkHeP zchOsNYuuqgTm3b4LcVqG<PVvXmQ}7_u$*?SfQsuOptGI=Vkx~jk(1CFYx|Qyjl5beY3}b78I59fjflk&HQl(T z?Wv~Ftk`f5_M|RimxaTM(P_1St8+{5CrYKo!w;e~O7m@RlySxX z8|c#v(u#~`+=h5OBax_>t(iC z=phIQ0KGDxP!|Zip-biQgKmf?SB6boC2nP)aEt&ZUWKazEzrsaO;Zpvm7D$u?4grZ zSI;(CKJU@;m7aM2griN>_2;!3J%_^P*4AwO-kI$W4|L_c4IC!5nC=|naMTq2j5h2} zw#qt`_emtKyu=XB4esmixn?Aj4oN-o>`YCPskS;CrMomSzoY0JKhtV$ce_*kYQCVx z8tiFP__f&tWt}v{azA?2EeADHz!j0w1oj)Co8!o_3?J;j#=>G*giMVl8AjsqupElA zM6OWOT9{$KKkPEvolZQU@fr-ZS~K{|XUt~YOB`_Via`8|1N|K*wKu7op=$Q0BW10O ze*ohw5{UGYuk0`Txn*_EB{kX##ZBOWlZqQ7fQc%A;N{ZjO2FUVSS&Rg3T(-Ww$1E( zthX(u_75DoZFg$_@w#FYw_wuf#42^`y_y}@1nrTgvI=jc?!NgM&;D3()5{mG{MU0Q zcQz*0zVhcsw%q%$N?HnAT(ynPjq+{EJfpRbvTfHsH9QCR$vc#*Xb&K4#Da8YtU!^| zc|4I(C^U*ibe&PFrK_rqxDl_e!h|9b_*16U={QUo0e%g)+@LUo}u)s-Zs6a#$KaoxI5-Nk)v*& znN;XJKAm)=WKiraoi}+!c=1*LTsQi3BE@4jTeiodvr>5Cv$Tbh1}mz8vmY`J#Gp5s z90EkbWD1P}fx_YBDu8ms4Qv|tzrraH3cXGRxYSH9;fc5_Aq!Yqd0|AsmBgeZPfWm- znOCe0TeTQ*0h3)(tkiy-h>iT*GY{E3b9& z?iGuRDfTXYciXt5rkkaaDplxkZFpuq;Cc(#!)Iu_kSKCPrUfEQmFT$hIk=MZDE)iZmiP{D+2$$g6(9e-wm=s-d z)zI&(7FA^|wrwufY!oHyRVaV8OkN9QG9`71MU7ZwehNG->yvlruL4VuK(5J{fc&vo z9Hs&@FpUaurCfnvFy>^s!gw%XwZS{=?3|=+T2hp`kKNgNGwiK?k)d!Ppatb2!2U5H?CNZkhG(|1!(6)dNWGc zL&X&_^?Enk!E}N>cS@y7qe8)S3fXqTeYdMc+#0+FXX11k+@Qgvj~7&;-!pm*r(8bF>FOTuA~?>5l{n7}~)4(w~;rux+aG!lza(I6>=Fc>Bl&cZQ0m8wxHr4WbuA_AG&=YwJj zv4V)hF=agEOI{C+z#I&6;r@zMv@*UZ#$Aakihk1Z%bjiee&43m*B25Yy+CA(bq;o9 zXC+&sPTj^C24Ccg&+200J?KxwYf=JSV|3Q_?(a`;8m^B!ZD!1}_^~R(*Y4i+;x}kj zMAz_1ssj5f;sP9gIwRpQLo&LXY1WuS;7TESg8>0MMgZXt~e<{UgBb--#?2JIcX{ z4=_D}G6;dR!z-dKvx#iOpb#jP707LPNNWYyxZ@`s(X6pbt-s6MyD_P-=P^_p&FEL6+YJgSyP-?cj$;Gejbdv!Boa*+jGfchZ$5BtO)Q#I zNW~ibhi?p{ytSA~;R%hY(Ys9e;^tV$8=;YfN~n4 zP|CDxG$1l#!LZD(RKl}?RIX4U&}%tdoQqS5u#9jN$q0r_?!mC^Gp-`(DN@2K!f!|m zV9ZVCC13CcljSaVrWkgJ)#>T38{O-Fw#H=9>(9t!o8#-#&B89tP659qtPNzwj`mEP znd@|SI_jo)Nk%xb_|fBkof`YwG0N2`Y1_}AIH!d^o#2yqu$@4Tt;kG9DwE6kMuS1a z2SJJn;n&vkO?q69YY1i#8;nL^4#4jyYdK5?2V89B%1{Mn)yXvrm&7^ z(ADYn%&-IO|)%+$I}Qh`k1k zP&rbv@}J7UI6BJ9`uLxx1G zXrA6F@Hjc04r50=US~Ky?rQI9jRZ^rr$Wuq$_Za-fpQyd1ENIgGg@v<4bI^JhmFP; zVF<=l(ikF%gdPu2eF+of&SEq;w>S6KV3{mEpLB*HW|Hllwd zIok;cX3_SMjrwUiw$8`R|mNwrAlRFipnl| zIiW_Dg`fkwkp4ahaMOUx2|-4ez;%n! z`un}ktNj$KQ=qXy6PEZ^F_ra6)aRYvXpiEXXhW(f=hYu5s5Xx8-s&I30~Dz{jCK$9 zL({#^CO?h534uDxRZk##9= z!50}3!@SvV%htSYaXMwnoZoWxW|aiaZvm^N*Akvd6lnx@ue!Dn;u?VXf_1?oG0!(P z7D93@EHb|kjbeO{#YOliEW3zqWH1s)jOch%VIn06WcWB8k-L~#9W%@F`(a-=Dw$U`|ZYT8`o!B{7ZO7uN1IcCixnBpFbyC zO-5yZTlSExE!abndfE+x{(Z6AnN;tD0SRlLQ-g|w$KDI5WJ9%rpG3->bMe(MQi;r)08E>cPwCPEox6!=c zmfF(h-7*Y}k#6%9BdOG6kf(0!+v%0M{T{iaAzgUnu|tL(8`MNCWr8Zf{s#2Z-ls9G zl$c^C)k_p~1C54h*;+jzw0gahX|@@yR*%L>q)?qA=v}+5!2G}|OMIqM8DzWtz!^6% z{VOH6oJ8@H68r%mlYfN(r!Peayr)%+32}NM9V$tc&*W4-u#jw+&QxuCve@d=ag$g4 z>x=&DPG>rc#&$If(dr&Bzz~hHsjeOJo4U2&JZPe%6NyG1lkoDzv3hIpJNG8k!i96>yC9@An; zda9X$0LP=kRcbZIqm#=y9*BhP0q)mQb6{mGFZqWbNfT+MOXLX-!X}psNc>PacSlz0 zDw#X7p>$>5uF^VOd6^ffx89|!5{8Stj`_nk-M{JOE$!Qi`ugUiR@aklZBNWK))ri* zTd#}j^Hya`7Z$DNgnCr8DxNId;p^DjY%X_n(>WWPxHj!_?a53Y*fW3NjX9}! zB2w%~$P*TY2kQ441fgC@>qQs{8}Vht6e){Er6D{juZo5t7TCp9gGs260#vZgL1WWzx6%6+FR^}(K8T(vZKCylbb)$$@g&f$Z-MX1 zg74xH)+C%!vK&&41_iz(Pc20;mbS)hHq*@#iA$rEAZ{|IBT{xqd6>|psMq7?YRd&V zVHp=1^FhK9kh5?yGD$@JTj(AC^5wQon|5z)x&EO8?9Qn^ugsYrZ~E5DGxIH`=2J%> zru7aToZoy`q{?;gw%J=oO&CoWnrQK6-0GTAa`BidHj(Y$5P)2?^OFy;McOoo=b{-l zr?!@fps3Ko<5;Pr#s*HXxoh_@3ngl83Vf;7JfQ#?yA($uUxCu-;KK7`!QN~!EyqZlzv_M(>s5g zmBYP*^n4M}6V6jrXYd+nHBTZ%FuIw?lhsJd6+D7;B)T&NmYeB%ZMf1w1c?;-?*H7= zxAzz(S7&OdfV^#@VWO&zrQndV$1)$cJ`es{D2DJ`>>b6_puRY zMog1ZC@i|Piib*B7(zv;OeTdcsUi~;B+4tfWw5<~3y1O%KiG4NZ=ioHaVWXP8p`|B zH%j>vCC&+O)AIeF123x(Q-%-k&t!nRGchU^td=fekoP9;%v*V5{qk)u68AKpSOiM| zcii*IhtxQ2EusTHr9q=n34v2tg(4D6r7{RDRT`;QE5UhEP7M{4Na=i(2ZyG@VV(r* zl>@ECh2>5Ot=_CB@HV)WU4)wmkIMrC8`KB2)c6^k<-e)_Z>7?4u$T8fX}R;-g&$pb zJ~bGUvmQf-igph=inhLsW}ir%%#_|M{iXDq((mO4M=JZ^36ciXIfBNnjHC+CfQ>MC zY#tRj!5AO`qlUtgu*;(1C%lHTB=Uh=0PUlPRi?KtQZg4WE`H-8t#|Qjl>A2*C`T5r zEK?ZW5AKd3q6`b;As9u1VKge2WRx^<7x1qyLZJn}`pGX!JBi<~MO2wurWEJ`5Zxh? z>S~wOw)kP*JZ5Jmy=LXwTUg7n|?khJ^|5|b(Tl z#xph5Jd6i67-J(W3xnu`VKA5&n^}cdRn^kL)0N9s{<57REf085R1cO4r@KJigC1pF zyvU*i-(7r)GVng-{Nf;3_%)P$i}Q=IGGAQ)-$+CFnJQFD< zy${nGei+menP?GD2sZ>gBixt(FRTa8if&}kA4A1xfrXBLe33=xmJV(y-9$awQ+oEQ z#oKAUm$zUyfgRg(H>!zWc4Plpq1k!xG$O>B5u!YLEsu@yDHx-+M#5rA_=p77kib(c z`WJ}Aia!lm6;MYc_M70QaP_bfuLlo=?s@z_(C-i0Sv2RqB5n;@koWdId;OEh2+Dh9^b%5-F3)wg`m^j)l5P$IvR;O@nZO zrYVDq!a2ee%8d_PI&wXVK7=yS+G`gVOV2#>@UxFT`t(cqNi^`m&(Pet()rTG-j;%&&Btnb(|n(6-gCl%U#b1?-;_t?Wv zzr?63HpsN5nPAd2I(48LsFgy6kfmRgzC^iViI5sp33 z@>o2jl#PjjY6L6fn+*oLs!GCgSF)-Qya|$))HPAaTNq((0dvDPCTNRQm>4ZvUtn0M z$A0i_Q^*&IZ@P$vwjbZz6GP(PGa0`Bht*7qQ=z78al0iJ_{$(5*7E~7*&W=f2@>S{TH zNgY} zrR~_8)HgnkP~SKK?E~<{s1x8mQc@b}dl~2Mv3xtggCkFCoI~k@uGw=Ba8%iP;A?4 zrDpV{@06Zrm7aPXeWld;T{O)CmThvenWA3&CFKcV={^Kc2PdZHX*~!N$z^a1P=|?9 z%`}`wV^N4%bI+i_Y!R)DbUMlez61&%CrzZ3{piYlgDAJ~A^d;=(QlS|UPFuMh7pTGIG-w%Wp+Mv2r}^!CjL*jx#TpHpEyhu^hDt)Gfn~t5*yyG7vK9t97;0es z(u9%lQp{DsP0;fRwLpyNq}*54act!1=|g}1m3go^d$KFC>$$P)OplNMFnae_2KqYU zTSn1!+2FDLn{Mi4E7olccs=`*K6zqz+wkHM^gDD%SH7v$J=F$v?qgszAJc9_1c)9) zSTY7vp)hiA6ah{L58(%-=hpUvQEWe2h?YM2(-VK(ZL}n5H&%W8 zvx#-7SHAYrYZG(C{E5xr33~v&1;)UQkN>i2je!p!?B zK`*K z$MNat(3-|LO8xuY|9w~i=mnqVB|tA8qJ{JVE`ANl%(68a!b#FC+ax1w?gzdAvCmvBPT=>E+=<;ZyzPqmH@`Rg z`mvW^Til1@O;@)~Qns$0+=m~pk0{V8lyc^St4jYUy z1-zF~Mu7-98XV^5?TbIGB+J%V5%SjsCIK^wX zuvk>PE|Y08B7VC>+th?m?dn*pOI>3$=G9B*)p${&m#Q*$wtR4t%o#xBZm^_L7>n{M z^YtMhUD@PscKEHS0B4TTF zbabxiS9ouX0*)3JFc&2_7r})fih+jkQnbQ&z=PukTvV{D zQ1d|{@mJt&DSu>el^U1E)SYsQ&u@(YS!rvT&C4iF+0m#?Tx*QR`XY-j05!7s+kDJ9 zdiB=DtAS)Z0N8Grwg&7s6H#Pp=|TpFqQ_`jXmKb+76*a-!*C|MKFEjPi4K4Hsq~_IoBm`Q*(~p?ntsTuH5_MnQ%5VQ2*cN=h>T0l{}mfsb#!+Xw|*-Zl6 z`}w~H+})7OoO#aEzt8iW)#gC3w5gb<+BcADa-udQVNl2^l8Oa*@|8d!B!npYrKIIf zLMo;yA)^-}&B&1wx)hO$N-i?(=1e-0oM1F8b*qmogkHuI@35KR?|)|-7{NAi&kktG zv%{a0WSHgF00zM|&?q7YdXgZV00;%W5xEm>4;XZCMiBlo!TpBdGL$D6d52s9ClRl3 zDxv$N%yQYBc2PJ<<%&0ieX3ZcU9XJnJUR&mM1u4dZecsLpFatL>j+$$2xPMq-dvS_}tZ5rw|JV9sn`JRGu3gmdB3+=+9Q|1X@Y|8JZNm$s$(4xEdYQC7q=F0a!+hAW6fxDLW# za)?w?F^X`-)GZNi-^obAeg_Dd-uz_VYpXUsKWf%%?1tqF7vHsF(Zah_K-hEi`x*1T z-GB7jY*P08Yp*@^@@tooSHKRU{)Bhc5-ybK5s9r+ zpGSbHpuNQ*Xkc2_w{s4`+`@xhLAsASu&^qR^9EvEtXHr{9A4eW9f0(JE4v6+ra@;F zg{&GYuuEuzQYkk&q$-6*30!KYM&q%HMVK_{bID=wpCyv%p=KS8SXF z-IYTidGf&8c{P1)@WG!}))(HGM7t)8Dje|S8qNe`ejyRv^oU;=y;P}p5rl$tX;g$> zuaG!V(3*j=QrB`bc!lG;ov+DDg=HyK#mQR4CJn1-Sl0n_^>YsvSx3sj;q_$(4=Es-ZSO z2=;aI68#xrLa{Ug(?tS_(_k_IgG!}RDhYX5YY>|pgn*);QYp?zMKxwzmrM?J=2e)! z7+()$L5kwzRt$!S-v`4@w|&=?5>Uqe)sO>Y`SJm4D^@PsMP2<$^V>?+y|6RAbX0!k zeUFfZa5axY+1pNCC1MC)NT=3oMG}KSp^QDA|N-fmY@R^noPy@O1^4oIAnjXWy4v$SrSCDo zOTw$8W*QQ{RT9HO$ufab!03Sjnng;fRQ3k83{AtJZ8sOyc5{6Sy-{tT zm_I8>8$e%ZDHIAE-~K0a^XYdOpgzhjeDDK?4L{1h1lM(g65_uG@~5zxTOR|Tejj`* zC)z{C-k25#vjmE3xrp`zjA$bPtx~Lq0j-Rt^@ukj0d03ApzY?ZVgGoR;^J9tfPCvY zb}yKDnPu3U&w-ij-pl`HsH?0od=o5ZSArYhI=h1aH$P)*@vi8ghwW0+N|8h?Rx%Pg zMhgk2(Tbr>RzS50-E5sf)t^|XA&-+d%rI&WpyNGkz9l|82r#`!L)q-j6FqhI*t}4n zx;~42_#ECz=_Ai~sAL-~=}VVT-=qD+6B{6{^5B|ok9Qp+z0^TsQTgBTZXNke082o$ zzxY>DAC{4-@Nd-Bp*=U5wL>V9;V?LXn#bU(LpmWN0hCBg3IsI40dUFm1q8qmB$*sy z#9~@1plA)D!JNne6+E+O&?qD5n{;!?oD)E2!b!QQkH)fvi`e%_6$paA_Iw2fY?Xr% z?87L{Px`=h=x?1P2>Lk2=3-UEUOOc#9fqAKW!_ zW_ISZS@#NB2j4Yq%${mV?%pXAc8&5;c3paHc2>DZ#_k9|kutoxv@I3w&y<_j>42aU z%3L5MgAuDpA(!itMG7@s=1IAfCX9I5eXzOPkU2*$q{9Pq2$%akukGa)_5=34eZckl z*>yQZQ|gbO-TPF@!hc_MdciQz@(!pzlJv4c!`@)opRXF=ZbC{5;xN8pgj!7^Ow(x0 za+6GsRv^^5z7T8H7CgEzZg0hM+!eLvLaCzRFH~l|$;#z5aoby3`PZpg9E5iTFE-(49_* zDG^4~xO)V+>g?V-!0Z2mCBYfChW&(c!K=@GHT(+BwV}P-3-{7X3<>GnZl_73Rx^;5 zi4>>PZ%Ss|XOR?mJXVF;tkDSd=w=FPvJ=Ah@z)2RVl+>Ang{bDFdp}-=vQt$0d?wE>^%IFO2QP9ic*CN zN+=Q$2sY`9;BoPj+6g|@B#+oPt0A)~)x-eLgY(yn8q(~3PMeUFQ=KIM+?@py%;R+- z4y=>Pm}CMYcxI7EM#-cqsT2cv1S6y<7(dD23X#>iEpiHQHDCdZ>7j=XV66qdW!O)E zhXHSZ0jvqyh6A_ZdWZ`@!nmH{6fn^O3NhX>8uKr21#mhS@-q&7crUAwhqAYHwx>a6SxXBcOQ4p+#sSdk`^B^wMjRWfZxibPCnu_n{@*JOg|FeW@CjqVpAojS?>dH4Om za{3t{T)&IG%6j+g*|ulf_B{`%wu8*?KLe$Y?q=Wo0;7P>g>Uryz=m%UoJPepDssXA zVDKPrR zO(H_a*Ta<&Dk=xW1*|sn-FZRJu$KL1FdSq@Xv+S?K0=PUg{CZ)0Uz`^3}ypK0uKJu zKrV{2N=%GFj2_KuWh{u!Qi{=F<=WriV{{O^d+0PdCkG2U5iCgY=D!~-$g zNSFjEe_-2#OKbge7Y3^0!cTS%X)ASFi(8sNO6jOnUHF=y)mqdteZcmM0kLyP1Njr% zXv%BO3)bi9kPJ7&$l-mA2{wfEL{gGanP#)4c#Q^wFxl&57z+x|PAYWO1ciKnqNvHf`* zTGC7KdM3gJy&{vrV3C<5MutLO(J=v*+(1-v0XJjDhxA4iE_BkDQdYk8mjj}Z^DOahFVffUE}dWEA%s7!Io@zC`ATfRHXs8!-Z)mtTORo zRWcV>MIwbjAF#0dR}Li9KL3dUSs<0QvLC#~u)ne&vopBG zaSNoT_Uz;=48jXfVvRMlH@0GkJE4W5zGxvSk==q8Vvw*GE{q%!i=!)SCf(difSLsg z*b4AGd!GG~VXw0<0)!q`0U<&RJHi9OyKFLff_#`Q;t|7>*ncZNPEgovn;^qUP-P57 zi%k*<5F`s#LZOrdh-`qLGtGg75%91Z@0kAzaq((z4ZF-NJHYi;Nl}4)-+oUn#goGrgQ_N=? z0$f2Sf)0>Q=-_L^N0&{wDX2d-+o|A;hxczaytqoK^~&buasw}UfOO=GZ7 zV^19rfY0+Fl;E)#JM=-SS)~q}Elx-4#e~-4QX1&ac8RgtXpwT_HpF0$dRUm%*< zk7f(~A}u$*lA9|==^uQ&OVY8i{M_@?U*A|YHAgPcX)-I*$4;3%BEBTYA`)z2SV7Q# zlVBhJVV*Gtx}%GVD+0ztkM7!U4FpPB5VwzlRNn}xj-sy^l%<3Q+$WLCv zq>?jUh1w9+ydC|)!$|*r#2oS(mReWWHG09Ej8Qe2lha0YJ~Hy7tJA+dw41tcA?LA& z7p*ODxgO3>2BP2Y`(Xp56(J*sMbI( z*LVqvqf|$4gvM3E2KdvCd9VYNkVW;R2O%Q8i}H z;Ob<#`ZS|3rPkJ3FZR5H@WMK_gdU9X!Xl!9xGPj&>~h5o^lsPe*F3GEG@6Q3Ssdf; zg$*lQF)^ekU0L8xRZ;1QaWa`O5frt8Ed)y5}yOy+D%`%pKQCT{$n4CAOt^ zKG3ezIJAC;v!b(L@&m0)7Z#06v(;o|kIPEFyJOm+AsWCQXdgLt;E++H!=yeZrYx_r zNar(4;Eq2Cbur{xXidE#Eg{#dg%Z6=L0H8EVN=V*z2$UBSOOg8LULmWowuNcj5R&p zSy`%MuO6Jv4Bu4U)KzXGv+9Oq##&3Oio&O{0?Cd`8M|aUhqu6cgHwW~5u{L{7b?jF z3W!OP77LIw){7KEb&qZbPO(>kj{V`_bivZ!e!H=nx(apu&CAf*ao53Eq1461Xd+iq zqeD%_YQA-$FIEUI84Yy#E9*6h?f3A}?!jsJ7C+BlJEDD%hYxwFOAJr5;XGQ%M9{)G z3>RAZ!i8cC7b+20$RNF(aR;>U+AU}yXUWwMJ~oqq&QB4$1uSPTu!k5(yj$=>j(P|$ zRG!9gp%_Gf!U(A#nYJ(l_p`zZC`m~~e#k+{OnS3YAn~YNF=~lJ<&uhJNn)9aAW~wS zMzJaN+O9YarLKyG1(O#qHu^#povj=$h&dG3r1(NQ$e{`)=24DA zotQ-EaVYEq^S!rB8aQ()Goqcbcs|_ zhfZfzI{r5zsOk-OORxTC?N>YZel%^xzu3oL?VLPr{J2RfAo}y@_cP{x^YGCh=8#hM z*n#^GJ^mPy3U&}Z7UO|lXhm&OM@)=grxnvqXuLEk!}QqYv1BZ=^(Yv}w!Rq6H@OxK zbbHY)Zd#;Yt-jUJkCn9StUv!;aP^thLq;Pj-#KaWSZ_(LNyH8k>=6yiPPzH(vX^&- zOl%$HM^^sf{d*s=W@d&4VXD9tdZH_g(Z&O@mn8i$4o0gqyVMHRj93sWp+p7}Eiix= z7^%z&bIBNWUn`4F$)+-UX9YtuOMBR>lE(FePQNt$tt};EL(myfXIA>Urtx-`x_V<0 z_)j1X&_5sid8sZIc-R$%HQA;khj-o^^+q7)P|X;>gt|?lXOsjXClg`JuF=SyVzC6# zj05B{Qlt1_FV{eZro`>}zOrHy=9i7jT8qi+@tXXWlJI57DO2a+Sgj2DJlXIrUZOb! zwWwDp7n@A}Sgl4Q6vr-)0Wr)B1~7UI5-K$Y7>2sME|pe~HnVR4+My0~{I3ucvlXsU z?N_3TaltS0*5nlw#Z-4}U2y6Ar6P0q` zotJ1d+wLyRtlYi`{CM#?(y@Esif&R@2@BdgCDbVrok3<%Diva>GzN&xQ8+LVsguQS zBZ32+5ho7Afk#bw$+0DY7zHq}zaW`!n^9(@u7+QqGdRhZoKTca*7g`$a*{GfFPug$ z<0B%bFBXWQz<3n6I{F8$-TeaB01jNW0WA((Ll>BDKrB0fW!XdUZez*6M9{z(sEa3K zG_WNUFH;HtgTO!vLxCt_jYkn{JRh+-xQNwpr~1}t$O`WbZ;soFxfKMsRZwmUuB7w` z^Wl$=Gams5yMXOED0>}x@E5ryamym-hd03WU>p!XxtypA#n56s!6>5<>m9*Bv?wtL z`*lZPzwT&U8X*afJfRnDfP4d_vAe-M_R`DDCH74)m)!&M&LZ^B0F7FZy^PU67$x5P z2V09*V<0L+4hqKh&=*aV#R!0s7AR3@VGs!%A{3gM`iG{_aCK)yz`sDGP7&G#bbm+} zR16)N%@_pJ*+U?n+pIBZgQqMRGHG-$uEL*ES>faNO)>ZWN!bY>>r~#37D%NMs8yz5 z1Ta3N6Von{o|L)>rBo=Cpg5KmrE({uaW&lV{2Cwye0A6EDsjCaZEzHFQ zB;IVZ*<;LrvYYz?chCm`I7uoLp{h6q?bb&8REpwUR?6)Tfh2I>rDr#- zC-=HTQ@xyvu;;_@5I-WRlP+qUUUv1G{o6$?hRW*R8Lp+zZ$ zekJOqduXS>DA6V-@O;AS^hQA^l!%053fw`b(U_{0N?K!qR>~kx5-MV&M3_ajn&KpbBKL2xCsilTh625r~tZv=Jeb5 zmlw_2d+^gk?0av``vmBYdW**_UOGY0n!D-Z?5)4QaL@3>Ef0dq&l;Dt<)JAVqu_n! z;=G3i8Z-+%I_ILBfbK^*Mffjp(rw{a$AF(>S>;r+G&U>;N&On-0A6`3&fXY9 zQglTT>XPe)+oG3)oI+=ZU!90AcGoffLecIxv=b-cPWTCTNaHp8d^U~FtX9yJ%`CXJ z7Y<=&P``2s5KRO#Lz^IqnD1cF9duG>b}_5AZ#vu7^*7);H7u^09@n4 z6$Gz!iZQ|^KP8}0>l)%2oOOeoLfYA1$duTy6C_0%*SPx&;b-Wl*+L4DOrw!$R1%87 z`UEF9i&6BBCWcUmL2#1Ot;M}*6!=s*Y~2wk>yqWDcR&bfv#Bg!9e#ZJE_&Spb_niI zn?Y?y{b?ZWRotG&J#iK8PJ{d?BvEskhNJ*@JB&*OP>-;|7|7NH(T)Khf?q|{wWA>E zEsz*8FtT#n_@nH5TiN~DS_LH)qrB?1Lv@W{@(SFMwtst(t~@#XDV~XWoxTdWRz)}= zg{@{Wtuym56mCI_u%})}DtH`4!}-888T0NxI$r^bJ@0&6xZvzp?A=Qj?f!1dg2nY~ z7fr0xtN!(m{a_+6-}Ci{%h-SZ{!Ax$V9n-F!Tx7AZx7Bse+_x*wNUaV!6#J_cJ!6 zaKwOBQ->GXQ6pOF=oQVWCCM%&o*uLoKe2;ICmbPFqS;Ino;x?5-3eFfOA%6d3q{Ua zt*Lo|gqq^~>IbUoJ8P4&F22Z)^Q?+0O!h>v(PHeVV7_<3SEGgPhh8U7B96@It04mzfP4&DmSLaL0EnK=7 z3JoYZe5mcw!=x+DXJ@C(o;iE#WY9ye@F z*??vjKf~h2^p#PhO8|d zy|y^9xw^R{B(X6+(KX90SDArWc6-pma7N1%$^w~X-+5YhmUR6(bR9LfH249MBp zvD9m^efq=}Kq>hJ<9n(zs6|Y}8`a{-(Yq*Hr48WB6do9)4bVABcYnS2!m9@L(PPK- zvd>yq4K1=g^(0BY`q9j%9?V%^OUZja8#N~R)vU>T*HAbL+6~wDZ+?9u3Ijd_*L@23 znlv!5ks&uc-}CA73;Oka?I#G)2Uyp}gp@J?pcG0_9<>{^wZe7=|c>Knx-UDPKji2yXzDIBUJH0;CF%$HAB<0nj|;G z_N-D#Wc{l zu9RELF$Zdh+8}AVXI$6v!yxyPG1O4Idwk;JXIpk|vM)a{_S-*K)hwT^8_o>}4v**s4{b{KA=~{fgtGs3x5O13_*%>NqsKF;#U8jy=+{hY|1Ns@ls!}MV zVWozPd{fc?qHRumn^>gYl}mY3$11DG=FWb2$k1UG(w@ldaM9$-+;STU*7lhRq2eCpw8@1I?kXN44j_oa71is*?1L=n9nniK1na=2Y#e!Dn|a5dGD zdl|JsU4p_UVXv*e?CxoWtc23J@Uw(9rZgf*+*YMiJrl#Pawi1tK z2B^t7`M}(NK0Uw4ZwAT5)iqmvga4r78n$cjN*aA zGtgwu2E6T<Kz>OI5|7dxw@*4A~K$p4*hQA~-gbmdbmZ)N7D~V+cb?it4vj zDni-YwgD}>Hao(oP^BP24n!0Txpu9bDa=i3sShQ}RvZL5GxFv!Pi*d*=~_aLE+}>8 z1f4m>(PpEiGbXg|4R>>11@z{*UL$CCltMk}rXrw$$Q{%|)fFUd31<^V{qx`_v--9e z5hV2TE6LgTx3y>z2TvnsndN;^ViKG@C58ZbO`6reMsNqULOnU^>Il0Tfjg+ z3rO8+06F{j9y4xF^XeVY{J~8}<6^h+4mQ zIpc?@0#}udk!j8fSv5*kj00IA$^WuK0nQ5bnxQ^cXwALFQ#bD)Uo#;9?K1oFp>G(; z=tgXY9`0j>_AU70>A3}VSK5t9v^Fu{QC^FU(7U`1;<#iIUYX~Fg4F2o_%hV-gBpIM zN`@0E`ZFj?zK~X<(!iipDbX9mwmY}+ zpw68jBoN9F@jMmvWuTRI-?u9;tuzSAV%WdVmWty7wNvsN_mz#ADA9KDZ9L&$)3PmT zX*HcWxl=|vtA~Lr+>9)mpsqsO3?Y&!84ufbv|B zm)bEj(TDWRBPQnPwkfk*OQ@^i2cbL%bNtom1M+YK&&nASTK16v^xU(dwiUoT3ZWH% zx>lekmC@*f3qFh;;DZa{^}E+lS9`8f2AqtCu@ONCN8?<)B_vlWfkH1}^dhAU`Vidk zoM-^kH}Y_1GT`vjaSXU{G5nVYG8ndD@2I|=H5A>`!{z!>K6ebxs6#8D6zlnRnf{Rn z3=;y>p4ZtV08XA{*e72H|N75~Cs0aU%qqZYb}1?2tqTvNNm)!-rX^3&EYZKC1^y?X z`)0K7(6kb5QPEUcXTK6$!%`N(3;3;ujBT9D$`kOfOe`L2&a{KYb#YYGK^4r{Zf&c6a z^9pn4R;~DM-=Y;ItA4$hX#4S-(_joB*ZH~)y2I?+msZR-5uAr4;4+ygx2-ZOZ_RDv zp^P+cHi^v316^Rk>Lc^Jnp4X+zR7;~4m%n&PI&Oru7*Jy*De;c>J#f{+}E-5=0^vb zF1I}O%d*wm3JE^D{q+B@?DiU#XaMJu*s7r^3(@4VYg1`oM!G-eMXx5umtu?FUwAD=UjUs_-ee>JFNI2Y^-iBrkA^JGA zO*?OrOy-J=e}4BSSoF`S=SP>X+d1|x8zyDHK5>EGvOfu2jJL#I`|=O)>epu1>xKC% z-@h`R4G$Z+=rZr6-G%972r($1-M{^Vdng3oY0-mq0nbA4&O+c}-(x>n$EK{irTK&N z4Y%Kx(MBL-7x!Dyoc2QUd5m(%PRc2fSs2M_bKWid`NvhBg6T(R4Hz=GC{YKX(H~nq zX870+&+G2w{Gsjidy#DXNu1MGo|b9Ed`dgOrL+;|$d#~=6mt*S2jJPvkmX=Zcm){F zUhI?B9u{uov)Y^gdsh2y_9o~_?D-sLwIe+nD64%5=d)}fh0>vsQHVwc-8fi(<@=|>P(bha>CI*H7kxD1qpqv`(XZ}8jTXM<1$n7C zZljdorsU)2br7jYVi^@9kqA9z3r!@MHCj2xyT}{WaBhs(h+x=p(K$WyVS^*1ee-@sr1_G<^N;LC^%` zdw;t620P_lC z2SHJI*}~iE{!y;`2WEbyjULJe<=XhIWWT5_Cp5NAm-78m5H;rPiJ zj5cCuaDr4zMdzOI)nGyTzApA<_E(Lhb5rSvjWweWytHoGgfUMuHAM}(23v}A{Iz9% zy%Lx0=Ond1I&~e8oNM=hGd*7=$Axm2emAY4CeD(PU0BNJ=v}zG!9~QKQvJi_qGC%V zaIp+rs+llA8bN=C8L zA>y)7<#Nx;hSKNGodhXQ4ca^Qu4$=>O)Z&upxhr#wY<>L&vK#H@B#Y8<(evZf@6HiL~5@#*yX4XjHSBe#!B@2%e zM8PxEuS5!@P6b?wm6mdi0ys$Jj;%uFgNUD^bGUrbM0oU&-P>#Gp{2Yf6CNq5cf+3- zNaGJt`sttT^|rh0o`RAu$Iq+0oBj3F-@j|?bm~S7^~J6H*UGHMBz9pzQSs>P+@hS$ zf_0svM&7k|{QWt})RpsUS#I&1^IeSCm|(UWlSfxiJ3oHWjNCcZo;*+P^gQ2$oF$j0 zi5PZRPG8h8yULqG>RdJ#T)K$p6NE@jjvl#YLF92Z0U?J!qFf4F7xut9_E zTpU6Dh2d$`jq~HS5F>ZcVksqL9K!REZAnhfHOAcDWI10$2-V!dna?xe5E#HZfs%dw z|CpJP%6Lck_deP3?KoR5KZn&RpD=eKB7-(W&BKw(coa>n#51&#kHw45!@Wu(bthdu zhr@tA_(+OEt^Lnd(rPhZ_2TEKk2vNe){4PDnf3v6mDq$PoEqbuVW@` zs;-}+AN}O$nF}L(oRVoyODar5HS&Ewp)&Qngo@JAikaj1UFW$D=h1B^H3qdBKMZ8N zDAQfz8tD47UEg&2?QDnFHTLf6+qsUbl#ehSryEDXyQ`ts0PO}cY6{5odiYBB+6^7a z2{g{F8=^vtWSAbcoxS$#<+l@Sr*3>~$c9rbVRvQK;Ehcihi(~2?l{OEKYH%uz>D`R zZc85aFgv8JW%F;HN4EaTXVRa>lNjR&&oQ0luh@DZi|QoRC&UybJ_{F8j4GC)8bn7i zfIiPma!QA~&7vwn{(*@)$>hytTlY2X{_ElS6+(1Fo1c`lzm4c@~~B%QKJBr1X`VaOu*(F2J9RSbNu!JF1Qw7FmXd-SZ^|1zUF zsbqOleNCugPUnbc?>c`mf7GVpnnpuX&ax?EE-Y)?(@be}y37oJjxV@q*r@x5B>)LQL58F+vT+z&%nBYUqW;#E|FVw+Z-dBu<>2 z$F6HMf!^y51+le-im?c264)OniUeLyLao24{ej_&S6fG{Ojwz91Q)=k$HwX1o*3ia zK>D01m5acGs05zRqc6lWvFyhSL7XENMIrg!cP{F=JB|ShK|**F`^Wq~ zh3;H#{S};Bx1E#$5v7C|I3)mpQJ`y}Gj;-jJBB?w%?z0Qqmcn!AThj;?Xk(&C)jZ3 z9ZJ^u4EtL+!>&F?FlddaaJ^sUISx&<0ctnMV-tXo{b(!0-e6w_Ux$HzbtKK6!@i2s z>>u)3_7`yFxjiIPQ9!K*+C+Jb06H~BTv3kC(&i>B;e{*c=uoL3sGJY%JWbj%YKD!R zQd~MAZ9++D<%~w|5&nFop>t@SU2FWi&;JNso4=iLG$qwjKM1J!o>bw_(1jC_X`-vdn=jrh3-wRsd=j#Nz8~U6L zqc96mb&M9B1>c6E#TV_qoxEZ0o0&E-C6MENv$?UNSp(o6VlWxsIL7A z*PnvtlV3~4k+~Nir0e9*;Pd&joN719|BxzGYF_x8EWc77mrY&Tpo|L?WIzAsz(TL2 zv{dfRuctZ&_eqv0~+MHWZ<=qAOz5JNeyYCViah^fEJSghy)^1GgMa)6bGp&;O9=^BNOPp z#{dY_Zj_dXk%C(tK!=;7BOKpi-(%n30W2?pRFJWc{f3Rb_kkVv?B09tF7VS(g)d2& z>Xi-cka<&;Nj`-V3;}Ilfr10Uzn{t86L9%b!IV^= zE5K8NT!Ja_e^JWpz@Psh_-XKh7{PF;EAvl@4O&VsfSeREh%`1i6{9pLwLmLZXepbG zkO@Vp-MP5|bE+|5O6};*<+?Hg#teK`p)@+E7aJ=}_G<((ihy!(M&VKV ztR^$u{4Y;Q&C^~awBUlMVgeB|a{K@G%EPT+3CKUeUSAZ}n_F6!1n z`;Mnzp_v^iq}z!cF*GR!;ErG+-eo%(z~y!UHK5Q3XGReX9bsyh#+_ToewCf&j!~?q z9$+ua4DPh*6sJkPaG}iPNUKhFnxqTEiN^Jc`06s?O3HN`RYLiCBlTl>nnr9)&ju6N z`&e;?TP}5Hf^C^zsnnCj&SV*|siDLo)mYrdTy`#^*g_bUX9+qX#ljK2A(#v)=7Vye z5z#Q_f;)a(r?Fpzs>2EY%AxYm#8LvG)-G@gwNiy$=hQhN@jgE(mB#55NQsysk)R-4 z$-uMNAu-hGWOAfTu3h7KqOUe_s&7**=$vW+A&<)n|DNYku$7AVtne?{eg#x9^q)y_ zYQdlNxjuPmsnQ;7rM~L1)#ZB?rKJi_{s3wO);6UwYeHsrL>nB%Ji+qPj-MDxJDTd9 zcaAWCD<>2Rkr@dyq1C{b6CzrPu>C{yD7`Rf4$Cb zX0Nc<0Y+%k;L3v-0~sBX7)3^vQY0spNCG7a1=JmchLXe8o}?*K303@;Cxk*XR7qck zq)L^^WR+8tN=2lihJD1c8pyJUVFS2dsTLAZA+@iV*da!>|U@rF5Vey5^jlUC)3Ee?d(Iv&3UnGVHN9RESXh4wiwd939kGq z*0>}QvEQs<0+B@wJL3^0BqbTJO*$piq{Pt{JdVV&!)!L#XrWMM5eSH+#KfRiX0}+c zQIbKzr{Ym4NWSnneNf&|83>d*>_m3sv5yfpqO!6w{m60j_Zizk8v|%-jCwZ*6NrR* z%8pFe-{aFwB9k^fui0lbnKFF&9a|ep8w>ODvdyBg-Kz%q<}=B04K?jbDR0z7hJ=#z zm6N9p+4b}zF>1YiP<4?Zv0=-{+rVs~(%;N&+{^wnqI3}CHE8&SZEy!2P@a;B!{?y% ze16)k*Q-P#=LPUJ{2l|o4yg#jnrtv6({!>Mex)Wr);mquRd&+uL`4}bH$cgSug3(D3S%`sShhojvNEb`c*aD> z75=OQ?hiEiDk!fR8L6r(SYsg}gnFB%^*UM*mCvBZla=WK9&{k70K20`@(ohy50HZL zI1mRi*w@%kl<}G2KLc?}z<$JbgG{mo`1fpQ-?@ADeOu|dg#jm&TTMZY<+0GIbbYFxp?FH+UKlyI$nP<>&F;?V_=R9J%{eT5I;)%U8hEFb2< zEIi&fi&Jt@^+xKc-#VtHf`^ja8i_u6;Hu+Ok&gQl>bMK@JM*# z9(gta3c3KAXsoL->L#YvWAk`bb}oB<{}#})|MQ=gyt(X2_U*^_BTuvR=Ks-u zV&oZlno2RLB`9dr#3DeFl<+M0<|IKdA`0tA?4hA%((V8kS3plQ3jx&hpW)wb5^OVl z?qA`3Kqrvi_(5Q({=8=gy2E5>P4v`t!bzkMQ$t#v%cb%;1p>w{SIKwFWQ;xeEco@f z(E!cKzfY?SR23-jodrLK)b>J|Tu$i(0+%ZRP*hsNIq(Bv!Q{lvwFse$OeW$^GvKP; zddEQpp@32d5#?i1fB$ZK3b)#G5hJxb7f=(Xt1MQpEg>Z@w7!1uI1N*^d-S|NW~KNl`)uL})HIz3|g=2hgcDNk>H=>wIS&80v58i-d{ZymSpP-eVn z$L6lZ9mfuaU;K9OiY-qnU_|&WJDna2_tHxY4oOvBkx1^K$pX0*P42SpwpgHU{r3q+ zp_e=hz7MHr+V7Q%R4Tc}YL&_)au}s#@Ky?2sw+5nf}56F+#MO12Q*r^X#|B30+Bl_ zGw37n;31SV>+L#f^_ePdUV+c;wc64wd2#vWO_`0;D*{TO1O?!p z>LD!6et)2Jl4f}EfkPWX>L(Klt$IysjNh&7QdWHuN?4k&#gsUJQsI)t5j=#WxW==OM|$tIb} zCY7c_efPt0in5^xPT(FCc}v~gA@tlN_inD1l9R$aJvIkt=6$6oUXyGC39=0wKm+}ST*(Prsv;Yv5?eS77ZFWBgbt1u%X#enlf-QD={(e*uyr`&2Vr0MA1p9)udM=DWWJpwAKGU?kQxDFiE7+c)}Fxa2SztF!AmlVmn0s z0AK1KIh~^4=ocQ<<;oPmk3)Ail@6^+)U*GTxzhZ$!hnbUJT_UMV9v`P)tufsK~L2W z9$?9Bnp5-V^VGGDF$Gp@N?B64le|!0t<|+A2Q&>WC`v$Cxdy>fLWc4~L=yDBp|-aE z$Qaa!gCvw)q)<5IMgj(ZT!JE%iwnBb)3hk4H=wDWP#Xg$$sq=~OH(_K{q5nucd<8q zy#^hfwe+xwo}6T-8cJJR)$n!^`8enV({{3N{RX4A9iR=I0QQ@%fh#Utf9J~No4^Y> z;Ly$M^dz+U|M^e=SY4APVxol!yNN+GO=0JKn z!+6ZlPulJGiwM03NtY|pU{)8}g;k;ge_WhC-7b?EvSZWI^w~l~wO*eiWU|q!2)HUP zv(#(Eq5_88_+oXhh2zII2h`Yg@&?q|L9Pa!lQzh%+CHT~@MrwcI~1v36lncvK(cQ6 z*otALMJcvY!&0SHr?#b3WW65ivs&c340~bO%8J7JvP#!-rCzTl&(~BZS($P%TQGQ8 z`{*Q%lKGEEBZ(~zvb%#>Mxot2sGvZbGQ9kTRLV%$5s)fANR=lA4?uh05>gOem7t2& z`&7Q&Uat$1<5ZkM4Q&GC?T|tb2(j2|_0e9Rk5-{$$yMsq?i_xenwmRg5q{vzL@_tJ z9#BFNa*ebR!$2aYH`)c<vdPTq(nh1beEVAW7F$Yy4_l>RfQZHqd}|FS>e-u ze;URmZifdmpcl$-ZZ|d>(aAgL`7(+Fsd$K~mOnxQsvI2r_o_=jsuA~#;6{twr-0L( zo1N602AqyWB*C?-D+f>1F|&6M&J`QuMn6n_08K!$zaD;b-NZn4vxhtwF03ts@>`TS zux(F3cz$_F33?Lg&EKgn;giImIsP(W&}hX~k^-?osnlsScA1y}$Z8`2hJUbkkH?=0 z+&+@TPP>MK(cn8gD}!u&+uqtzkmzxNN$Up>Y0y}KSf=wAj#|ph1Mz^ox6H0AVee%} zZM)W0JT1L6v!!;;{P_=`!W9=#ch7>hIGdOelEz!D?lkQlm5N43w4Zbja9J6oSaf1B zK?8$<6L|+JNBk{ zU5~2e(C9!M()Be|5yT~;{y79bi+cg*S8OS!fKHSe1oL0Iyn1nc=9GQS1yhI2o>cfq zMQihby7s@l`1pMbmake*UvX7er8p)^SI-zcd|~yP_E1YeXPG{-dhY#c<4Q;8Cuga> zryg1QObQdbq-DfX7mVwm&8ADK>oBe}65L*07s%mWd59??xj|*vt=DT9XO%;*ft+^6 zY!J}2+z!ry-$E*;zybAY@;#L~9f`Z&$`@NYSVP$F9Mau#nOGkQKQz86fyleIUqgXlV_N!2h;$T~q<2_tfm zRR$Y+5f?)D>xYvTi(3O9@B0%32}l@)X7J{Zn|$O&rVbl99wDRpO#4D703BsNE8liv z);%vzopAYJ*D!NNu6_K3w)WCt9u-?g&D#0G&a#;w?mO_^W)M?ckf?a$%~vl^eD(=Q z_eqd1_rkTgh?0{ghKbc6hSUsDBcJ`}GqHtgjYe-J&Vp-aTrRm@?-5#Y5(Xtb)zRUp zIqF*r3h%&I2uReE?<-0I!^b60n=rR4Y1RDJw(82J*WXcjF*0Br zt1qy9D&bEr#5s5r+i??g^%3&nLZ)DLFgxHB^tz|?%j~&9L+5?E^V=JNj;X%#p_4Cy zMd8aUwvKNdF@f@li=LUjrhC@S@7f<;P@{3kl`qI%*#F3>L-+l{@h|m0T$zKY4asPV zvJggSaqd4cm5|rKKp<*SKstco+F)U!nP_aNm7I z-8q7|dHocz+vihDQMhU`c#r|pkfiz^O@Tq7(5lsO4j&93ka~A;?isH&F+|E&{zG}9 zxM)osJ)a7xPQIoM`j*&T6WP{mZ5f~8txcacen2tMxVN1*VCR^NXN=LItU5xFg}W-SBvM=1uWz!~M?SG?=5bK-q8ZVCff#<{6m;dhq?b?sb#VE=4wU}miU4@Zpu;x$=JT9t?8Kmi zo*IQwYRo04McUXzur}CH3#`+pgS8nRMQHV_bJ(x{&Hh3@+f?N?C`-a`Oxaka6o_v8 zp?`1}nN^~8l{K+9XFRl`ie_8E6S7}F;OaDg7Rn$8#1WHDLVr~T*Z%VfzX9MdL`xfF zD%k+3G*vSQB_&v_`9!6@4feuNt?+`CX=2?PY4MKkPt{Cgg`!y1HsqWW`-}1?KU;_svWQtl#hZ8xxXAX6D?}+daqpuq6+} z)Ig1#1%<_IwnN4a^AsF|A(6uu2t>$f;4n%?8c)1HXS@ZupqYV~dv-1AcHf(PErYxs z_0Qst8cO_zRI%~WL>8I4Z`!&`ZEyZ&)N_@U;X+_9D%e>wa^$P8jD2P0SBJ+mOnYtD zQ@}Q_t)Kq$6VI++0Y=f!E?);4_Iy9FbuRt)XLetj7t`rk)FYT4OTtE7z{C)6KEMoy z6eYWY!*QUbgp#|D!y!?k_owriR-(nV5)UG@Ohv+fP6|LYQPvVoB7s5YC=fu|>`-)E zvOO4GxhjdxLqXCjk58mztSSC)0XeEYJi)ts>aoV}e~A3_&!6Z0er zDG!ZnC-!o#{4rd;s3b&hr#I41)4P8D=c8ZrsA&7>9aD2JTp6)tdiXU&yKZO^9*49u zqupx&a5!A9My)pE5`3T8OexgEH5&asMIMLR#}&jzF2?r7p(9*Hu1d6Y!wj+=>YEH^ zAK39$o$0h4Y+6<{u|nVW?9@$f&s=`(Xw9}-L-tr-&8m7HUb5twvkGH#f@|hqjy!yG zo!ZsEfF)w-SkDE_1T~`~DJdf{4GBxsSe;FTHZl>dls?VcOA!~r z4UBX5)w5g?BoE5^ol{WoBNZv%Q%+SXqKF>5w*(he9Fnd{uAzl;UcY3JHUmhOkUelm z^=P~|%i##dmgAzSO32m$JnmO~g-k>iV?QeDhK=*kP-jj))%%wlhLV<^^^MbxPV(dH zSyi=}Ma3&YA2b&A$eO&^G|Sq@8|*UM-)L5?97jO+z$7*2 zx$?^96+AB@z(j#s`^tFrmQjS#ZOJLg3okBcY!Fg!FCV_hcdXgztsmbWRA>yN@-yfg zGp4hEDSbr#yo_fnHPe=D2&9k7%2~H*<2V*ZFqZgT$UkyS2Ys@-umRT_4r40aVM4{% z9~KJvio?7-p@FBvpy9m)u0xiSLLS4}P)9ML4BH#Gyinf;{C=j$;=SgL*8e=*2x8~0Mj*tR2$Q!|vQvu5W8JW?d6kK{GO^X?^`y?}42lwwfw8MVkjZnADwz}-9Uly_ z{&hy3tHs<%5O|qFpTy@A__-#eoRgEa`b@6Oi}Zunn~jo^r=(BFqHZnxWcD==KyT6S z&Af_^9Sy{ynUAQ^iQ*wX&lSd=?jdm*JGN8KM%=SO@&5WC@d%l^cWV3oS^oNFUge-i zOy%6j?*Z%D%^UPxy1_lV%$1d55$XLUDdi&_5>OAuf^lFveG+P_ z!}K2f?LX6Z7CT3*etp5|f3C?~`fsSGj$s&C0AbQ$MHevD-G7`@9fHv^3xX2~i#S@D zn&hzA91)CmFa)7UWY9CI0!FhiE={a%&V;})u!xn-6ZGN>` zuWjne!+9%MK%JfARPynrCQ53{FT>yWI8w`}fUNP)K)6u94Z4Brz$#9YBr@H%PqDSo zSGjXqp&<=@;NK7y7Bt!aIZaV67#aO?N}+IE0Jo45h$h|#0!%l}JIt;D*A=KozDe#CH+h8_0k85 zP6GAvV-MBLSo-}BMTsNUj~lV!g`@t*vzac;wUEjN2)PHFbdqPj1n$5%P62L1pUXnP zXyMLTsT@F08h&?%AbBVmcJq|o4vpi@b7qBJpQP}h!(f=|0{8`GU}H9p@v{cJL#ifz z`!;#;={I|7-9y&hj>tnM%sXJqw((u8ahey0{ zW?aMQX$n$sZQ6lNbDpl?>d&m5b9S=Fd3*L`z}mWLHha(3nX?u!b4aowUDi^~m=>OD zbl4~s%h)`YPRCJW$F*8BhtOy>V!4*oad>)2lv`mQNwUOJsZFfpn+ZX1v1f#H9a98FG(%^g0 zz~j-+6p8HF!}d%gCf<2L=t%u+PgR~tT!i!fzT-$F0%`L&n$J${gIra2N}&-!^>SV$ z;_LNHx5MpI5`uzcIR|WLDKa$FH({v6af$Iw7^c}MMod2tt6;%k^(x}4X!-)`qBLJ9 zit@qRVNz?fI4zB{7;5@_{H%7ynCV^XmZ!~19*2(zIwdm{kpsC)o0eRfO#ghR`;+`z z)2FWAy7?iQFcW`Pmq5QpKP;0rzc}yhKP5u!&w=nyg1n`{+*sCGO3UGBY!KowS0cxN zh5!HtE4QG5@sMUD3W`{-5tGY{4e>x-bV?S+R^Q|Nn1}8Nf%r@?#u{G!l>SEwujX)T z?-QeY296*6d|p48@^|`9T0@bVH>rE-ls3wePtmu3CNunq`TM2iOl>2 zHx|G~pTfjxNN1SMswAXnIdUiZM@5oIo28~=P$F-hvDtzG1A0Iv6DJ@AEPyzRCq)Bs zP0XZ0QC?j=6m8JJ#C>S^;C;J0hJHUEpEG~iwIln!STbiZ{@L>HcKrOGS&<8qJKEbj z+d4W0-CdnsJ#CY_@OOnN&&->5vVH8cb7no6Asqktq{o|2JwELyV6EP~df}4Q3nKXT z9otr{+rJq}V+Z7idU#qjj9YWUJT^~*X{10cM@(@}3Q;RWO}V$=@!gDW6h;k8Ahv_$ zDpDe77n2jJ>`;70Pb{>-D0zH}kyHYP&p6myCFND`>3Z(9rQbbz{SLi}e(VirI4e!U z@9z9CsR9qrJ-dwz`aZn8_T3)(Gx`Vk2P1X(6C$HW=TCa$UHWzUGmOMmLWnpb4ayDW3k9H6T}{m!+06IhxxHg_%#{h zgZIw)lS#Qe7ar?9jEwnx$nitpqIyu&364$Fj;(1ySqCbLPm{uA#8qbLX zHw$ON@euP@@_0+FR3gKlI(cLDT0ouz5+Gi87xPjFj)u3)W7|Th>Qeeu^wZ{f?Aq$` zx2lF$)eozzl57Ot8-E8y$LMG2r@x|KJvN!^0%1VD{PQ*=Ut6>1o4ruL$Z=d3eVM-f z(ogWg3=oWb1D#k>J@g-WV$ykx=1^+t8TJ_Kqw`$5Q?EHLgLS+&Dz1QRNRD;CgD^EAw zK0!WIkMmO-4z`cja%lO+GOlgZR)<~v=m+y3dAoVS zY_M?Qylc;{`A6G&+pLD}x!GIi8z-$F5g6&KpKe+YHtpCms-AlEg}pmBEvwkkNz|6E zSw-FsCyw6H*1aptNqchH((|1z``;!vZ(Y>9w7f@JymhF0>DmA)2oCt~IXqAX zuSWYn;x5mSPCsUG5!2QN(S|nFgQ(j>Tok8dMRsQ;OK1sR4w4)N>5^)}xAe7R3u&lT zC?4H^tFF``PD>Lx%IY2-M|9tLAvOOqBJuVi@`(uR$IFeh5OpIUi;>EBKnYj~J9e6K zyM>pa3QfmS;28wQboh~F_ar9TeQ0yI4^u)`k;`3-u3_5~<(~aqwhbznvo@RE!iC=J zC+A!~ZkUU^Q2Qts3Mkjbb!nUkU3>>YI0(7sP@0697~y4Z)yd*5q!N_5$Ye(K1MgMj zUHLO(C3}?X89?gkDkHQ}KPu)%SqE7y?#8>N5Pc!Q9?E7eqSR{@)o3I2tDZdY!Bo@> zJ@d_(>orryX4eJO^QO;es_(^T3Fx=j6WeM>lgE!%9Hr{D9(p1Dp{Mm^?_2L%6TY3; z>8tGut=Vo1;(d+#_C?+hrtIzMI+(>Z9N#^1^+>dq5Y214#Ox1Gz=BvQ)*DuPSc!=~ zki+#!bzE)6A*tMI16nc}VNjHr=}81Os}*>m(;0>joi+g%WVZLtnv{V+xeHk{Wju=^ zMdFtgP2w>300yEhg~<13_$%HEri41`et!;+`g7<8v_yt1JDOzz*hBCGnBV}lzQCZ3 zl+XY39s|d_rF`Ax))jY7K7Di5m*BupG>08bJ@GRC;p;1xf@ADQ3yY|S_B}=ayr*u2 zt)ff7wE*vZcO%DOpLTK1+TYFE0`Mol2Xp?+y7dok?aP~h6wK(BCB8%d?dh}M z*d#&Ny0^}utHc966Gh$Ap+c zvMVga3z6f8z>johPL5rMp9)8c_{1FWMeA)=9?>t>hbnGt;qSvJY$l}gWk_Wc^jPY# z@z`|ig|I_X0g}!2tceF(3j?j3sfRT38rRrE95N?6yP>Ht97vaz=OOjm-aZnk(<8nJ~mngsC< zFx`RCFX)k&@I>97D4)O}k(q`a9L)4a?VR#HAJ!T3WTWY@XlY*^yF?%QZ`~c+Xvb!9 zuF3c-s7j%)I(Oiga(H@&sG(kd*XTtsyEIsm%f`gcKvR6h1xF?Mh@53NT?HQ07F0 z6W()7p#=MxYd!;kc=My58SxwAP)3rSs4?DsUt*qFhRv3ThEj;pbP^=<&^>iVDG(i^ z1afD*u|mU1+Fr5j<;klf&p&l@^&jaKUmanOtbxM2d(TtgC3Z&2;ph3^-JwSyF)pz1 zkr<~J@D{zbilcW-yfACiA9^>@|32|0{qUy(e3B^niN#1}6E1Bz@Em@WJM!fX^grlh z^JOE!48RACGwJ^QN9?}QBjQpFJ$&LC#G(Mre-3kbH{`+_get=B!y8XYB3NJSb~ixT zi)eC-Nm3$5d*~%LJo)4IXa9EnpFa3IoxWtvl0{3FFJB@7qrteJKzJ|xJoKrVj28V7 z{R03%2^_#i{~N`cJE6n$Hhg~;raOn>BthUT_}0-8DX0npkWI1Lr4;mS@!y`I`zyeE zUF6n_i-8(Gdm1#7mzc?K31Oa2AQMN}CS0z%gg0VnRs-uKZecVHQpl($0Bx9I?x2P4 zIh5`Pl1jv-J12dQE?nfUPgBnCF5A8+bH>#f3!Z9BTexx6dgr5$)-3pP`Rc^UqpE$a zGu(M=(=&(f?r2>1=(Y{V!n}C(=PZON3Cjq}I8L#VZ@FAx12!9>)PY_w|tf$?@BU&1>j+CZBJAep&CS$qv`PbjzyQOE;_)?_1W;k(3L$pziKn zQUY~3kJ+Xs<+6Yfa3TUi!eUW83+2L?fk0V-0J9d1xz8w#W_^@)De`$TpwojNh@8jk zAA9Sq$p3&vERsjB17OJ%qUX-(t@Ik4d%5lB?8xf~Lr*~rp{Zk5%nt(}v7RmBM-*nY zS^~%jX1)kn4jPM-5?5@rNoV?qm6zh(yjq@{vssjALlXRzu-*j%}+TTpHAkTd@)G10PYIC7` z0|JL5fi%fAcS#OMf~k>ASR;~{OrU0%ETW7S-uNTg0un4!T-Lh>3`2jKa%UxtJH1X{G4S$>mRDie+R{o6_X*6e8 zLM2CE*t>1xE{Maau`SDN%zU01gG6CuA7GtkxqyWksRfwAk~g|R0=4y$Sme|n@S;c= zv4`T_x=9`pKLv$kGTK(lY-vIsQDIm|>g+zB-5&B71@h~Gy8%3ai7gh6E5aNF#X8VIVZ-CeP-^|V+F$O{Zl4C-gNrttcQP^ zwQ}jy8B69xoJ+P9^j0j{whmFWDW>1l&`KnRg$l~-6msusG*S#6h~%EKMWl=%UW@PG zy$a8R@|wi`n*IJ13!~PZb51X+(eP>yw=H;fOwXUTfAlqdkUsrkO3ko*rC{^AbvstC z;1|z%d?T5jG4;~I;V z2)`1T3M@OtW=ZEYjq?_00fAiSSH|PjmF=6V2jtP?| zbui_HuR!>5`UUzK`cZlpRK_>|^S5hI(0SJ&KS3rU${0Otx&Zk}dlo#Pi_!X0W_+fV z(Zxg={pY*bRPfVb()s8)kci}ZA$+0@zJ?V`IVoZHk=iqQy&aSE;kl<}7OUw}bb?Y` z?Oj70>SZR*KA?foDz%{@|K25k*|+#qi*M$t&N*(}e`ie6o3ong^R3f53U*8(BkAe2 z`bN zZ05Sh9-jQ0HzqchY-uLxoaD+a9Y{GlpIP2}dXmL?)n%X7GO6b^!Mv&EBNF@!4@11p zXSA~vOTU1zNNt!0ghDw%2n2xBho_tqNA+|c&W~y8Ykr1aNG=i0q|rb%rmW>qS3e(l z0Ur-!&pZ=31yTiE`uAYeaboP9D{s-y;|AX|0Hf0(?p}hp8xG&ugcY5XY9Q85v)L9I z!k$>jgKvCBsT2e96$W7jq_^=fCdT>q6gRV`JVxewntO=izE|&jDSzU+(xuDR^!V!> z2MAl_hv73`e{aF3yXW@%-*9N>_Dr5F=GNd(|3JSb{^RT0emBV&)7L1=ri2l4-UW;Y z0kqj%1OilQAXR<16ap;5E|XGB3F&EufQs&^uWKl)7N0fCBH4ojeIPj4uPEfDu?Uq5x7zI_!ey-B~H)>5Y9^-S%VJ&D`~Ub#S~B!B$ImOm{9R>1!jEc~1s z$=0VBQnNPfTDD-$5+o-ZAU#VN-EBo;M?l?8UBpW;7S2C8sJ*3e?Tv1uNv&jQ0f6dZ8pOaNhyk?yFNlqK37P^e=EL-)_PoOfKSJ_EL@t5AgpeY~ z#DP9M>9p0#abJeWP(!4oz<)VIkdhVS^!OAnW?s$zs?~p8t;fE99Us@U{Myk&-z;rz z0%Jz4{Q99YUv<_+7R{M9WyY-T>9hFrdS~=5oHlJC)asd!wXM21zUle-oloWp^A1g% zakReW(4>}~?~L#4Xlj|z78y5X&a}?%xoC6&)(cPF!O-1_ zhGbW%#8I-tlUd*i#rG-sYcauaW@P-IYQE%$uWh`%UGwK2Z&>+{$G-VDy^h}ewIeSl zAm#N;nbzC=ru4*V(w#KzwPou+=w(#=2D;sZUlHh>YODG1lbaUz%tA1qh*cVqj<=)R z=SxqqNvPMChPjwrzLlpFZY8{5NdEH0kV5jW``S(S``U|F{JO9GK0N>kpam}Ar2mQd z?j>e62&%UD&Z?AZ0`B+n*Zu>$9-ZJ{9kx!E4BmFfj4nU^=3Br+p<%juNt&yU*2}d|uC4xp~B&}OzGB&l1#Y#-za5S5>vGR4iLL4m+ zOPPi>G!lnN5D#_eA1o8&ujOQ#71D*WJC_1S=1$8Qn-2`^4>HrM_H;CDdusV3hq4g{pNHPWKOp2OSaX=G z!88gxMhfi^?$ZtjDswMArGWAVkD(z+yHH|ROSYQL+^uf6SDmsM!?c^#_uBWfnA%6Q zv=gmX4PMHZ2Y)pL7*etvVq{*L`@8lL8z;wOfR?MHRwpiQU9gRb0p@hIudba6=o={LBk;plG zHaeSCujgVKot8^zbvh}VyV=4wC^k|QTPu@nlS&7~VqF6|E~AQRRh1!N|wVC8yE;>aub*iEuPs$RB0MBh|o4yRK;0Mk&Av3oH~ zWXi8-m_$s!)2B?#rEfJfgbl34xZ+gnKu+WnNVR?_c_QjD=mCyA2Y^eW)}u=~=OhxL z$t0r~a=GMc-4PjK+sfr?)!Q^04-Uzt+bH#Z5g6K?a4irk%c3H3v}rP4NFExIL`&iK zhb8^1U5lp-n_DtsSye`R<_vJ#rI!j9N+O>p&kil>n>gqFjW368j31e|qNROVNFpu3 zcL?>48}t;BeEhj38-Cjb>2n;Oqc9eo=6CdOvv>_hCd_(fT-OH&KKb@lFz$coTZ5s>N=lGP(Et9H%uGkI z%GF+=2KbL)#TUZJ$XKkhZ}*y=5dRO|{e{eCrm^_K8Uoh}1Q_dxkN{h8oD`54CK2+t z38Lj>roP1>+V3s6das_0hN#G`WOn4l1>8$ld(x~b`FsVjn_}O(kw(rHiw&tIpaj~( zy%0wkgYiu1Su9|&sFRUoa!^`)X;`Hu#R77x&xh%@!Z1f*+$xuQwhHdaWq`Rh5SPlU zzfwZ}{~6QF#M>wKe!OGDJF{B5K}*ZLk5_;6MN?$MwsmXPZC$=@3xD^)mTg~+

dWv z;gS(p(QsGfE=WZlG;(@0dDbmMtEBr35zx4yX;lIO2KNM75H1(=p- zMj3Ltd|*ZfnwA(wX(rO?+Pc&Hh%G0Imv(EBRCFaOkPb6iF;@PN;7Z{Qo>0e?UEzb??H&(TSH zo_zrgf-KdTc9u-vap$z=6X)AVf|=_Y`E$78vFO6&VL>{rzyztMd(3U==fGGg9E|Sm zYZyU|a6S7Y#R=LT*bWN4_veWO9ll-g`qZ-4-8>)Q$W4lzi>}8LzFm3iv3lJ~_DwoW zQNb9VZZqT-py_k2=@QxDvcWE84dz6ShRF+|L(d>@k&-RR6+Zz8UM^BK3X-`%B1efR4jb_5@Xd z$*ajeMol+92$$zUOuiV`q@1w~Ey3EA-PfwEc-d3g%0D@jDqTA|*++HWhq7UtE`}L} zW$YP{UDiZ3V_OAWj~u1nwqjLV)XRaThWbnsacWZm9F8MuSj2^WR=I48Lm7OnFVdIZ z6}Eof4uo1Ef}|?8(r$i>Z$vX33bHlvmrz#>d<|zjQ#w8NBZI#^qyO|?^QezE^!HSiSL zZdo_&(b(zc^J|Q7)a+-n+cbEmS2v24gE@h!`;BiX+PM4Ya$*y&@AVFx?;B@lUl-A`NxCR@1;{Q;qS*{Z5JQM)1raJqv<2@&j)x~wAeLgdFtAPAhqSJNK`3luvA-~6&%y0hO{&x#CTte?p zyJy5gZx?sS7sOvd38ByH-N4V+Gp*0J`^?Yh`&X^M$8(=A2OZn*PY02I175EGBq}v* z_dWk;*($zZvRJ&Skgk@92_;s?5 z;Q>~DP@7o4sO||>!ifC9yb~QXP#QB(*1zW2CUIcwALpu3wF6e!!N0wv z1(r6MK%MW+fDgsX7CIi@U4lOL9O zba>g0hiEkQ0b4O`lTo=3$0v(I;qB~2`jq5FE60LeNZuDb-5RK>A>X(G21n_=*ItAa z8%O>46EacZnK9_36PcHGj4p>{xC?}k?^SayJoLQB%-{JGSHoF0qg%QgUvg9%B@Zs| zB3jC`^KDR7rGL*0it66NO-}OX!KHRX>$0@wB`tTeL9{3H=he*@o=(r^9V_ME|D;d& zthcaC3!7fg-&`yN(`(M=Or*Mxyq}6oAjZieK>26Od8LNBgOybO0`z4#B(W|>Q9`Q%L zKShl>Y{nG8;UI4Xut#vTfXB7Tvx$MvCKY8{JHRq!2DeD1l){}J|8)+V{Y&kKsLMv< znCN80HyG-IAehR8qFQ?h3-GudJ4sVvza?(8DORkJ$#}~q9#fO^?M^&WR?bL__`d+F zTNrM5S6psJS6XfrS3YhxSNVB(R|922SBH5<*Fa@q*Q9wB*J5Q;*Jfom*B_0LuFK5W zt_O|Ot`E$-@X$t?Sj+=%48S0Fy?Icu`AP_kVikDqu=NB}AS~SaDEGF|J2rzVpBa+R zyu3zxQOiY+3fIpNdd4`D0hA&etHow!U7496dST_Rc1G7bi_`~N;nkKC?`HX-RuF1z zQ2Ho5^`C~qO(Zr~ycvB820zIK^gt*H)qL(MbuqY0^exrYr9`QHw4$4$RX*Y zWbK)SDH(;+!5w9&7*v9ETA|sXKxNk3VzEF$w0@tIlHj` zDX@uLA|0*H$YD1_(4ou+jRUL_rLs!q$bg)w$b6%Pyu&kJr4?>&h+_?7i9lPChI1=x zrbbu{Q_|wAteB7upqOBNX%%*tO%%j18Y0<~#p;?Zmxq$Xq(YZfBZ-oNC0&#lI)}i< zUj>3N*@246xm}R?Wyd^N=}>dZpa^CaWSf)*g#Q4CTE_he?5cSzqC*F5m7)_}qOgJ3 zbUT4Wy-jPt&=~{MRU0rlrcWI*Ux>xGZBaV&Eh=MRc5!xPMJs=$f1a%rtRT5d;OHJf zS2cBcB?HD?iVMTAu>gmoo@uejpKpFfq;imzb^h6b5w=V?{f@oZ%%`4!f9Q6^m@MvE zJ-7hXgxng5g4A1NL{J)b?3Sb!EtsE!wrJs&GcE1etvGN#p#x6F!5g~UQ|y&%Lhju{ z28`IHR}*bGiOc-al9A`nR-(?1j)vN+Z1uFdOwwWt*0fq|N3Q=vS~ej8hGtS~NIMQg z$%eq}Vc#newT!%2QdBZAK>)XE6O|sab^nTyU|RZ`eP$v-5@l#V4tP9XfP(a6nvj{f z*%c>`G=1L>j*N$=;|Gh^-&r=9FBi`(DG*&~u%CrB!ZkQ-Iw>!6-zgC5NV;oIes+zO zwTJJpwV30m2{L-N%2hYBXB(Tmdp-ztD_jCO1OwZMdFZSOM?C3x2t(0MpWx4WmEn3+ zh&~^(5ZQ=|{jG-Rp@n&}zU_4l6;Qrk?4@iU#}E!4m&I2`qMP&BFefbTn1YB#T;@X^ zrfQ~;fTD|APS8NqDWeuN4KMPzEiCmwE`VynC6ANM7Qd{+ximQ~N|8h&DcjCs^*p@Q z$Y1*zwh6M?pPq!Or3Ed4{$7Hm8bK;qw_at^X0aJ6De)$kmP%t zGA-BabtO2^Y?yY#UhrN z8_me<#VYs|Dhi9c#Ax`%X<0Mr*5(UQ+AcZG=j;HAJC-V4C2ud1&eJ-gOs$E zK|EhwB+6>1kZcT)%NIt;&<_@)e+Qe<4uPU<#y~PNmmzwZUKCa?polS&kfRX!N~90b zWBA&hbcf&~+S9Pe9b}liwwg_DAu>3BXla`udYV*m@h4CmImu@9{czL?L0+?<0Pzx{ zLmLp$#RU~yhC_5}(ToYAYBzz*YfER_nXB6Y&2*$d6^GPh7uhi~#~jAe^b&b8F2fb4 z&gGqZRNCf$3|{$w1?eXQa>WojVl)Vr((puCOPFMNyac26(V_(9#D~iq;&mx-_}Z); z(`2D?@VM zkb!618HoWc4mLsuDeUl!xV%Db&$n+e{59Xp6Baa9%TkuHR`TQ?US@%RI3`xLzFQ{mFCV69ptUdym#GNC+cqG@x@Ae!_Ck^K zruChu*bSqRv_<<>>69WFO_GK|WI|meWX|Jr>7_BR`1LMat(Qz}+6Ls$TAq$6IpEQ&G$Ew7!@NaeKHh9OKAkpV&CN6)J*>&Dx8+JS1=ZZ+D-Vk ztY*xW$N^90A_wk5PHRPdjJ)nL4#bb{nBP8%edH!= zcw#(EHlK{|63U^DI$fJodJa3|!P3ii0#z9+1eP3co+}umFzgv>igJ(_KnZ_h)EXk zap5CuyBQ?$H)#=+uvH}EkRZo~B|wB3qQLOMST-v-km5ikZle*^qRi`& zTb4%#cE(-PAwMwHv>D@8we1kTUo8{UQIdGppUwWgWFXu5B z0fp`CsdSrfNV-yO^BfRz5=l7~qzgyA{aN|Td`k8I~&>oy-;Z-+C zLzMP9qCHcdday4$)2ouwhym|m2>DtMKV_FqS$I%XrCgdx&0O9`_kY0&P!TE~hK*yL z>%;6;w-IhmPR=G5R{c6b8`4m=0s%aLH6D*?`DK4!A{RYAn3C9lN!AK3PY$~~Y|BXE z$ur^d@nk7c3lMcVn-zws(%nQQBL&W!Bg7{qm$FHUTFlHE={1!k;c@^}W_nI4%Ll(F zgOkl%LxZCukOlF(w-7q{!m?BvnSo4nQE?rB?HiEv$%@u3G}r-d;81ER^sf`BOz@;S;8lV-A1m3 zBn-5OB<{Qy*25CjY4t`}xqYw^Ypo$FWqnZx@QKJXW zQR{;6=!-yowa38&j0aGY+C`MV<3t-aE$p>UB~`*+IP4}Wb~$owI3UZqbb;W8K)@&Z zU~QfCf}+-+uY@gsx8stWp8op_%RSCPDy=N>H#CeYga|cfY1}Ey2xUX$u-5sN*pjb( zuD7Cp;F|n`N!rF0ze4m=Uwq;uNB3-c0+ z$qQ}6J6R^Spu_2XNdJv@3}!HbraRfT`3iy@BPnThPzSBjjea=gWN*0-Hk>oO#Njuf}QcR+2!%`zVV zf$x-MSZc+z{=5{C^kP{KWP?H>1gD=ZR<`%PT~yx{{sc9Px&MnQBFx?-rO8fC*rbUF z0)IH_K|ra~y(%%3hxkYf4TT|&?r(#FnIsZ6OH{UNA1o@JXKw^DmC81lE)|Zh$!T|8 zVn%W_(!q}#z#zXhTZ2ghLN0+~OqPzJA4dIlcPq{IX*ZGY ziKsL?Q>7B#E~c79Zm-35+kJFeTi0p?E-vhnf4U!=)?Fj3q>bCx+3}a{v>8!v!X;36 ze0fZpltywIyuG|Bgx`fDnoTu^4>N(;?XYBbRaDobV#+z%CdDd9oOZ?Yxr%GhgWpeZWfpI>p-4WcdP)OM@xm?!aX+SZ{aqZoxDrP zO+``1L&YTR77POLiwrgrNje6DlhpMTi6j|;q>O7^Yuu6eY9dg~Rm?;gZ}aVKMHTIO zzzLA-L)i99PiofD0sgFiT0sYUo}_D--kO&Q4n#`t1s?kdxiKk-CebzzpLohkV?L`N zcPJJ=r~aw%`c=pXDD_1w8pg+))E%mNqVQc_Ga0e4uqOlBv$M*o{`vY=9oSkdmgWkp z?`dACespz1HSTtR;{|rCZ_WSzq%V#H7{`? z5HR9)HM=G0@r~`@MImm(y~HYbb0Q@QOE;Hj{(V88J$;wOnH6gKyQ^i7|2Zs#)mAHD zlWyx_c2R7la;9pUditmGP~_J)w8b6sTnt`c7Uao*%p^ER1G7WTI^g`MuMpI;A1u)Q!!5L;iw0@IB_c_V>D|$eI3k3_6cPx>_h2Lu>mc5C zpb0;i=}b8MaIXn8BeRhCg!Q8gNIk;HQND@lMu`AahO3fzO?2`Q_6+ifOic2a_bjYH zO>C{;_8hIyP28*q_PnepO#H1FZ$Pa&$`F`A%rF~K&4?Pw%%~bU%$OUc%y@QH0Sodl z9`Sat?TK-4Z$Y*21R>K1{GsQF`e6vje&O^ec@grcJ&|^3zoX*N-=b?V2x6x(`Qy&9 z^y3k5{1WJK^AhFp0zfC)y^;3+I5Cd@+6_ut`ym5(j3g8D2bo3UfZ!Hi#@%68i48K9 z=mnd_=0N1OS{B$DR>2Q0m3oI51hJuq!BLJBQ4ZEc1VdhSMae5V3%}JQV%{{D5%~hpDzYucPc5db_Url1_;^wA~ zW?y%u&8;o1+(=lNnMs)B%^fV=tVq6KY^)?qYVIa(|H8t_*nffH{s%BlTgk-6+|-SP zNz2;ot1Bz>{{`^&`SWuJ1VvU-MiK-R6a)nH>jL@Q01*R$fr5gDf`oyFhK7ZOfkVJR zM1Y4!z(qqx#vsHaCL+WmARr-Uq#_}uCnF%B=AxlzW?^S%C#K>N;AZ7#WMgOj=R-hY zVPO&A5pWO@aaaKa0M`H4<#PZ86$WG+WC0wM6a)+v6dV=wa~Op9Yn+gv|0-XC?*A&F zVBiptP|z^2aPVIp+E75iK);wzAiyCZAt1hb`+waBfk1^s1F(odp{p1}lR9It1}7K8 zkcl=8VyZ4&k+Ye&guudKVdLQ9QBYD*)6lYWaB^|;@QR5`NJ>e|$f~JpXliNe=$e|D zTUc6I+qk;9dw6@OfD`hudJ?pLDzTp{_Gzd9vz>YUfc5zR|Bc@LH_7AwQyW-9TUB{%u?-%u(kx+i zOD;m#Nt-ld>_od;V=d;etNCNCY012?H$2DK4p(>jVq9x$YzF%BK=`Pg&R2D5XT|M% zFYk$*-lpi)B>vf8)+EiV?4A}@cloNe+FS&CXjsx~$2BA>=Ox|ihi{nWo7yK@nVAb&_4jfoj{DKw z!vsN5{zJ6j$0GG9L2xyU6~^#s84sHT?wUzpbP?BFF_hh1DU*|u3F~Za*@_5Z?ng_{ zYt*Ab0`)Yd1uW#Mzjf_)H9}T0bf+BuTZ;ITo2GCY zZlwXya>o4w?wX*=D@S8Fyf`&VCy{!4^92v&j+ahIYt^3J){*z1%K?q!b=JRsw9~i$ zOXdy@-NCdyu~7pd5X}mFk-C9V3Cq?w@4Y3kMG_cDd&il5HekskSxTr~cU3LOfv#V^46D>6xZ; z>T8o@S3p@pU{XEP+!1br!c%BTUrogbM>)~MGFz0$bAce2k>?ok{#sOfuO;SgM}}xU z5-eFzK$}wq&l~L@ncjrNnHlY+3Y61!myC5ZHxqy6p%#dN%E7vKeDTii#WqBpJt2#Z z;7K&W*FOaQJVMH}5JDO&=Bw^94*OKr-0^|kz2V}$bb`=38p}Q)X?K;tKgolHC$H61 z?4YMxm@C8@^CcN-*`<^;$W?@&ASe>{TG&_nLJ#g|#GMu({vNmQbglojO#WFa|E(er zqdw^_4WmL?+%P5?Q>qjQz+BQzmv^L0UfSveu8JPuUp3g)(~b5KW*qdl*(LQn9L6+`x4H5FuJI4STPNY!x=LtC<1CJunbC)2cMX%VRh?S@Y2VGkWr44^ zJ931Z_dTXqETN%j@b3((2fshg`v)%msVmvZ-(cgCkwl`@o(8KSTuqIYKY)9i~rgh3^oS zXNK{xuk_?Ky<1VMOc_X0{-#$OKOR)+n)UVVk6UDJK7$< z9nInq3<6a%G}Nxod)4V$6eEIQtc<8!NvI+Zi}WVsXXI1J0MIL_c!i_$C$ zd`|orxVslx?apn0_KH+;!5gVioOAFDeR6-N<5$3xtO@aKtRT`dX-thVW+1C3&G6vX z04Fb$U1+(g@An#DEF>5Eu5bhTd~0wN$xrB5+P$gY+1UdgnwTL}QT6zt5lopFaaUS; zoTS_TvXq(m{%1LW0C}jb@}EuQf321EmU?u4Sc{mdk(;C_ucAo*8i zI@w|~&j=Q_LuG2Ho-Q<*M4b>_;`n_xB~RFSs5(6N7=w7Id^TA3JYMPF$!PmR%D?25 zOF^w4+};ikdYZl$L_UAz8G|4jy|Q$FY!F+(9(som#COiReqU@W(|Zj>>-hv>?@(aq zu`1bMX{8WOisbnf+VjWLIB#ErLD$;kN)Sk9fy(h#8Tp>beI?M6d{-=cIjk{M?Y6w! z(DCOzz&{c3I)3Fn{dN$dmY$qkg4&?=$9uh(knG6S-zdf&fq)y)=Z;P>%xQXX@}`2~ zw5ve8%lj|UIe4!2e3!cUN9ZQZ!_0OU9YYy=N_fC2U&3f#C{vYU9hF3l(A;#6f{aU{ zl$X)5&t-HKBAfKm1&6m?0rR|g)gc`vsM=4nxDU)@&E!^2C&^C`Z!(Q9qL9P6uq^;y zU`%ZtqlNY!MUbZ*NSUGt)op{>bzwYx?Hg59d%8=9)*%@N4d@h za?LsL<A*77PjW4Hc#F5MGm;6xfx&(#|Ca{$_)A{lXkX+!13f?V4xO}Pxtx_f z39>6$$6G6Z$J!w|=pE*5MNnO>)=2U=kueuNN5bbCqA$hVz&{3J z&~A8U^nS5+U)=XIr`uBD0#J=-MMo`@Z`e^6~Kl`|09vyb&4DN37ldkCaUoiDg zS9W&!azB4aM6c30JKJMef3com_Mnb(h9P-eK`U;jTm6cUcSV^UKO74EiK#huINIFm z=~`vDp+9$&>#3d~IjT+22)!IfyxP7SP9j=Wpxs2ipW?GNXPjI8-jI90dGhYTQgiv* zzov9{C?nxSMDY~9sF#H`P;~s z5Oct)k3UPk@pMp^llykTN$V6E!k?~B^NS`@M3oihSOSCr+}0`L01~^*{n1Ms`^^5Ul^!kN!r5OJc(WApYHv`Vv#hHL{I3_DI&B`93cEVMp5w z^v!dgY+BS*FMDJQUSZ#;W4*s{*khTj=$9ladc^!0YRz9t zD2Y^C^^1w)!!mPoP%zhLp-)vimn3mM<}RN0P;Q2C%NyOa8%$D2H{*|Nb5A-&!4?mp z50?J&k_;x0B0q(D*_{eR%YhE72{q>6G5KiL?}R`o*0@{mnhwnVCrFtTNaDAEK;3)d z@IrV1ik?@jp?LOhSO$9+Ty+o6d%@6-03X*_e(dDG(TfuIYRLvf;l3X2g_a42JESad z(PT!J1<-386A81l#>_FaeAeZM%j(tr7Ws)bUZ1M~fQZe!Xq>76bb1Omm%xv51qmpkrH-Dwz8%l-2i z9E{a(W2d4$(QlZK@(P?a_$BtFp&~tra=Eg-PMVo9;w(eH1U(cis3P1=S8>+PNIudw z`VnlLwC9{(Gg*qA@mT18;tu?&qxG7e@NKOm?J^x_-BFUo+wSh{L^u`L(LN zC`ZnFc;ji)eIwb7UI;*6KmzfK2{Hf256$RlR&`EU%&D&VNUrH) zRgjYDGVwGV$PMUX&YzeRZD4!;PPVKJKBl=qyyQ^~NCk(P!40CV(pIYULfM*o7QHF7 zEvLEh8#Qm??N$&^tRs@GYbCSQ+6~Qtj(uK;fNRWJ$CLNo_ar#087y*Ip7Vq)v% za}(mbX}(VoX1aB&@=D>OLi9tlUuDPrvqz~?R|<;!o9>CP89zVlbv`JrI3sta_-y+x zymcRR#GOZ2l*u6oc0dcbkGS7Pe6ZvF9Lt}WpIT#T>mE zn7evckm((S*>}x*;+#Ec61DgT7N4NAA0L&1F4M16AL3r|u*}-qwI*UIJ54=t{Tp>D`FdRt|E2iS zQ2s%5nj`i^3SZ-UEDNT))3k2t5^!c&On@9v(t|!4fZo6GX5lv4p}`h(EkooXjjT!F zoZxy_Um>}$vslNU6`|8;=DL#jJmYS`TFmQQ*_!&%##j?8b1x7ONMtqNq&+kI^q0Ud z@XxRcbi$o=7WAt)?qBk+_rSH>YG)Bex-n*f@~u7mO7YbjU{i;r*$V}~5Pz~-R*bIoR z{uA~`SKx29J@a?)3}DMYY=GZg$?G1!L~SD5Y`%6P^<@q@2HNepzODp}i_V*X(5g3@ z$H(N82lUOUM^e#YOWZr+MA>Tw-Ip`1e&4At6$s+=z;I|I=rRx=?Wf4yizl{e?AJr| z#OrE9#;4p;FINe@T)n7<1}fi1~*Tdz5Yn zYo-PHpF-Vo0war4!#_b}J5|ocMLt1_34CKN9{%F$vXj(7K9earT2o*)9TK4~P+UvJ zeaX-^?|FC3P6r-jJ?EvK1qGsiGo-C1kx;HK{hAp_uflxLVmt7S1F;qqb^D4@DNKpS<1IxIfl^J9tvu=hp`|1#Y*n7^CWK? z0RIWM8F7lcWftE&-p5y? zS4NYH5XwgL>Z8WnnjqfO*_LIc;NXuKDi{l$on3PW0L;jesHA5?^}9o9i~ScH>euP-XMJGc$x&E?r+NCMNY#DH%2z>9hG()sB#q70C z!t+X)T|y!Eo%&I`G4AIRB*ZURbY!|qj(2n%UCSh>bbZ4rq%ABDAgkhO+w`K92hByPJ5co(Tn=eBa`$F6X|?`!+fPUq@QZ)7^(3rJNl=Wqx=D(cK|T-Srx z_{}*!LE?0`6h!~n>e11QvV(pJo(p&pr#rlHFV_7Z#Jy!uB|*5Rd2n}Y+}*u#8h3Yh z8h2>i-JOGW!@=F%8+Q)gNaOCVJ>0vqKW64`?8L^#Ze;$b%&I?`Q5BV$-}gQ*S1;sK zx#ECq`HU0GQQw|KeO}xBUW?1Q232I725zP{fl?95ePwzE?z+&3vwx!8Q34IfqmA`jz{2lDP zw|wiT4Tdt~sSO(_I`)V@|7v`2S7Zbp*xKX}M)KDT+ZSE3#FcJ1U6i)3tyKR2tmECb zT_Za*x!0%8TM$`?apb~rz3*lsdVpQ>Sb&LHHONm*D&15&22gW6NFu!xV}_V>wbU7?AZ7<>Y_a=KuF?e`Pr*OQz@8V;GC{ zvQ4E%+^@7sfJPj;?<`!DR45M1Cc{BxsVwNkP46oi{iOBlxDP>PJ{@FNtOl*ZK@*5b z!!z6OCGSnk^F$$~ML4uwcpykfx^F=8$}^v8+WBdwNTo-EQbbi+HG>WjdKV#>mhf_j zCT#o%@X$y#T9$$VcrOM2J&hfkKU9nV)uP@evCjF5v7%iF!2Ue$cLo&y&qo^nW1G_> z9&=f*6=NE4wD)A+s3NfJp@!zPpTCI%11{Y;FUq;}8n&Av25>7Qh*4!A13iJ$;brB# z^>fNIn>5n??rUNSa%$V)E8Y}e`yOppdVT|J_STABYHxfFhD4fKCL^+Emj z{#1H@i`V zuCd>(g957!_tQCP>*KoEzR`TIPj|Skku6gz$=XD#h~JYWJm1I7pWZG|RHRYQyDfP! zWHcXvS}zrqk~qbp?NpG#QSu1`44H?Z9WQ%Ii#0#Fja{4Hpp4Jk#T^dBy=MmvQs0y!Gx-rBT-QYX+0s@;m8NYRz6ueg2JRy`i=i-HeJSYz(AYl2v6Bh zm7F}Q`Q0D*+u}ogN2rd=*nc;F7C%W<4+GiuLQQ4FOSNwAx=YGA5BwiyYn4s#=josG z;3Bkiq5#ZZqp#O+GS_5&UXl!@&dwq_4aT-1;Z}6bHG-v-t{AyF!^f>yxJ}LQwpA05 zvtz0e5&Y#(qC=bhQ6)lE<1%SYX~{z@O}^Hw?u~srMmOC&Uz;#PMPQ?}i{N^Au24Xd zfA_2q`X)x}v;SKoTW-AJCEb)PZE6s*I_c6$D$=5ENw`&z$zz?rnSMM~MBI@wMi zZWpQjdg@LvpC{F-4Lqq+*p_|FYqP(ry=8DTnblfM;_uXBOUl~BIl_DihZEpos=^-e z=f_z4c$wMwa<w$OT1sY?x3*kL8rSGiL*@Vxt=g#uAoWL<> zl#krIOrD)s_KjflP_d`nzUL-=NjWUt!K0i_1=&?TQbE(M{g4pn+#hRptQz3QeU}-{ zjziBL#^%UqDqUBzYka(Qe?bpt<`=#QfcdVB+mzK1n=F}Ne622XJ(fck*q#}o*z-W( zTuUj7Wh+nqPS>@EcBZuCJ$dn@wSo4Q_gPLrUUWC_qlz>))4P0M^1A+#9LC$J)#7+| zFxE4mB^1?^^PieQpQjCop1SEdpgYBtTzl_6d;eP`U4Ywr`}bFMML3$y?=RX0*Nz@Q z9|)0dZQ~N*1g;*dXK6mfzubepE3Q4pQ~OC}Krh>NB7Q!bOHDUET-W&z(xdb)Y@eEf zZ}(&r&+y@K8<BEE&4w!bqCHh+I8(huPmWFxEVdWS#GI%=j6t zsAni;*XzR-+RbIB4_@B(Wy3Du7o&j}bbiHMwGAy3FVe%@9kU>z zTXUn4v%y*{xr>-9k6)oD9N;ljH;nxdFSx9nXuk1=pS?}K-@$$RJ4Bce^RB-p&yL)! z*fXirUz^5_d)8uj3!js==`SJXp{G4$AiGsUQi>s7EzFdTz&3A-I)KXV!85ie=DLgt(74t*5X9^cz> zsg_;Qkz#iTU$I3U7n_cJH4Kd$51){8fg@eS8cqm!Yr02j9i5&mE@IIP|8h>c#R?j} zBIW`khR)hM{pr_+w?vLoPiqnXVI)Y*?>uT5oZp2t2-g74n~D;;OGI#bV%!h^8VOb# z?S9*OoWImm_SmfK@f&Kvue|Gccxl_Mhg9zqcw{GB zy>U~0VYhYu9J(e%wDq2`wtj0s(venh!q?RFN&Q2SxC~AA^Ena~t`^QRmG?R06|NQ` z6!19y%hJ;jfCR*`>=<@q*2-?bo5l0f6Hw%#I{pjU(-MHP7j1O@)_{3`^->i0$kjP# z)7ppWyU2Zvk}eGzCmJ<4dP|EMMEmGz=y?6;>B=3z(5S@QD`CAn(0NBu-^#Sh^V|r` z`FlrQdruq!me*?Uruym+jCo_|_ZICb_MA@$U=O&>cr@oekP%rmv-AFmJwT|p@Z&6- z=Jb|I!HHt@>-Fv*cn&jM!z%+Up&!0xHg{)lxHd$5Q6%dEKUi)448GD_lT4JIYw9bq zh(t<%Ja1nzMj5@67@)a4f01XbHiqNyZM}Eg{M$J!LFl)EhvJ~)&>1rt#ZOEbG6A<$|8qQ{{g@p3%-l0A7+i2OV4 zWc|4H>itLhsa_mveR}MD|4vI}vYzC(~m zw;V-J7wP>t&rE5aB(D|$e-|7FI?}W7*FYR(WNsn+tRZvZ=HwunfT`+Loi=rCH^FeI z2bb(S5!opV%!l-`l; zC@7$?Ug*v47QVNuHW43G<3OC4kS$L3g~|09wI#SSdMBbBjp%r4nOMa2&fuFNQUo2y@636zz$+V zglhgt%4iSOUuRCYCo6iXo`m>bm$dW*Y}4DejuHbr2_eCUCl#YmwCa~Nit5qFnS6y2 z5VidSCC_7!$FX!bw7mv1FTZYNIGmk#;tL0AJ(5y^#rNCNQ3>y4>MrSj4j2Qex4 zV>I@ery-d5K$UYqsrz(MBmp<7(%Bs)t+HuxWirbT+F2Q8;(wcslZY}XhPt9Bu?wcA zxBq6w9f=gRWk}Erjyq~^pXB!b*}yKC6z2t00Q_0=A(npx|+qGV#CKk)=c-$VVSwO7K-Q8be zZ#iFjH2q3d{r{b|?SI)o$72(F)F`ttQ^Uc zRCqg4Vg**+`Va#-XIfpy#C+5?DU|damH*1BI1bu&U(>nliTN<*+v&H%9PsR)gK}!7`Tb$j(RoB;#SNLo&szP+&FTLpHidb{Ze7jA#k- zDHQ@t9&k^J72fHjp(mXzroqXi>Jo!Jmul!G{F{#zPVI$$ib5EiDAOvu zii!yUl&#tDIT+j&JT|sg_C|~7s|%Io92Y9)R>+`(=^qLxh4sI(6?QeaD~2a+J>$0) z*>Yscj(N&ecO65D54J3n-=I>JJjfIR7Khj{@JN5B1@Y6D&@9BWD{|Nb4{D&`DPj?K zkyJ&Q5kXJNI40p(#;s?u21&NlIVGr*mQ1q-l_o#|H60B}>8kGa(&5+~ky*7|B7asQ z$lRm|B0(@Su+czxj7w-1n#_9PR){jfX*fC;*9)hlKvr>15OIJ%xkNm`k1_8X}-1V$6dN+RWaI7J+{UwfQ*;!bV5(GL5+s0Tj#cM)Z z`V5$|HY?d5o@(4kGNFIadvqJo2AB4qj>et6as0!gmqau;fqQ+F?K&q+zq=GfGGC^(OPSS=YU~Cx}%x4-y zsgPcvXJ-jwQH~o|cGoIE0#suD>|yD(SfH`g(ieq3;=nyH6ywm&*7OLJs~Qm>3o-FU zCih01w=$n1z5^}|u~eiV--LZZ)}iqhJ5$2^D4*6^tezY`Q2}^2OejKnJ z=Bl>VKpna#mO&beN0T|%4qc2aZHy?%+^yX#^8Y{kC>9m()uLmw{RY}1r=YYY(GFpN|6C# zdauyncbs-CJEEp)qau8nbw(a~{hs|BJ!<*tGhEzPv=Bf{@WO}*NPrhw#w}o6%ai)r z$$;K!i(uY}{Dl{CJ4lkhd8Zdxc*&bI|F(jwHh#4WH}Az21GJAWG7o!th@U@=wym93 zE7cOwM}qf%!jJ!i_szV-`08)Ez@ksf(mk5^DrhKCqe7*mt4AYgM{SfYQ7B2y5_9j- zI!b-&26Li!DI+R#<-~%WH$hZxXCzFSfH6Jgrk|#i2&73Mc!clB1Y)tsP-O(VDQR%O zbCuA33gVDyV$fI;;=C;f;% z00c%jvy?5lDm+sJ^5}x~=n6B{@4Ro&DO{3LQk+#Lb(Q#od%puz0+dNhE`FfCO%vCQ`WSOf`Bdaf4Ug%` z##(O0KRa*@NrOwo%j~e=i6voRIjJL4S$>C0`OD4l=*c-@t^8M$`JdMzW3jN<45|b! zS(7#jW@hEzVi9YgxoK7juA}zsBrGbvnbUwt2sD8qb8QpuNm5oNC0w4IiZuOs$NVTC z8u)U~-`CWNq`{>G#@XZPfQ7UM*s_uq?hwtP8uFU*0F;m^{_k1#uo6%rCkpr&g0(KY4vi$$NnkiilZ@3su2uno0~=8;hV&d@Duytn;Pc;Xp4%hb*|CV`y%e zR03v>VI|6wbFog>9& z^4fzTrEy#oH>`RIUAN{F0tHFWjF{5NWIx0pQ(L9E(p_UInGo(FaU8Qykx`AvVc8sB zZaksZ(2%vbXBeNz9`cgz!n~1e>CZ?%P-!*#+qD4B60ZJPlsj0N|H8t z=T8_VYUch7c!5v$UAferrwKMUp8AdW6hpgFx*G;r! zl6U5!5V1Iz7ZotC?q$G%&X#!m6#?Eib=*PJM|~z~%ZQ$4tqm8x+;G>PjM;1CU3550 zNetHY*@d4TG6n3O0t*^G0Aa`wDw#katNJm4MRoEj))Qd^=gMIrt=!h2;2ABK*g`av z7&CVO(1y*={O}VN)5V6)hC~;OCY_l6mwleiFBn1RdhVehR-cYisD?8h`$8PZ@7}4i zSf-CFb41DQQ;<^=I}K!wb^G!Y>r<>tC>F!va98X}lWkWBn1lmP1M)gQlWfofplA^@ z5tVl`bp*ExJ=H*R9JJE=4kX&Y>K4b~Q#5W^k}2;Dhp8J{k`{2tz3tOOxM>?Ca99_s zQ^vhgltDyBd?uPUKi-2qO6R*0AO?iAn8WyP^v1^vN2(%@`Rx`Le)X(ymE2D?Rori3 z*P_n3H>&pEwW^N0cd3HUf>hV-!>3|av2yqt`FJ|5GUK2oJ@GTM{5h342*0medCq^G zw=Z|8Ue({VZyXzbw`x@sn{3I!2EOyka+3CgR5#$UbZ)s6N~Q?e+qENyG(w-bN`xja z*-iJuAk@{RjiW{2;~rGhA7vrVW4V3ltcjEEK?>p)^a@s)^31E3>RJOKZ#_pW z@}}hUYCzauUf;~Nhw9dl#~KK<+(}ZaB9CM75Ny6F$h9}VFbUyPoSI4&l*{7&F6^-8 zzKJX6V)o2wpvp)$Tub7vFUungEjWI7n6uPmVr)!N1;`_KG*+20gUWI;KheWq4Zb#J zV{7OlHu7sGgW#EmDSi>6{DNZ0%q{DZT%9A^8=AA#u%NBPc8#NJWOBgPtr-r>_653E z>l)6ISi~zFSkNa{7{gddQdw6kH0z`_Of=0X1L&<`eA1ga96mocrdUOHb!>qm*PbM@ zQS_hVuDU$_G!qcAgg`Y*9?2hAa4k`InrX?Ia$i}Is1%I|qf3lDY#3TWQC0C4zXnYd z0gFIQd1+n3a@m6I{X7a?Q?h2XZwn%*4H{SrVs)s$tpZrISAYCe5XO_Vcpo{LWQkI7 zTDzGBQ3=?q(s!}o{(u)vS^2}zr*H!=kCsH17$qA!pt~4nQjZB7HH_ws{@$*B;Alt)fk{S;_Nt5-EEFT29gAX9zEQ#Aq3nvV_R%tXR zcdndBtmEQ$OvqhQ-U;NqMY(WPfpPB3;AMwwNqMC_(o)4Ygzr=Ix@2dK6%;g70)~n# zO>H}xGP>Vg=DCEQH|qI{L}lovodNwEM^*;#(X04mWL>>d@z~_#0^+dH6Ad}_lpt$s z^kDbZHuZ5fD!xHE3@Hb*AMJZ*96|K3y=zHU4%1y|uFj2a5bzkGGmenqJmdn}A?Szp zDtu^%amcF-EqqL&Ua1bk@o*K4mFjyF%&$D#dW%O}ND`3bC-^){4@a-47Ca)t_N}>t zU_f+JQxR5*6Q8dhWcfz2F9gBuggsg5;UN-zAJPuL9L+0&kLD+zaycjF_4F z=3j>$B>XiYrM+!Y zq8$hhyINcv*6dOTyx;l5po!bfz)*DXwXyl|by*d`GMQwT7)<%;3Nlp$w<$`9U7g@# zW($oN8xGk#M*Zj)q+KmVQn_||Q3iMNa$ja7lQLmi#W?JMSvFwnH*u0~VYDuyx^h2& zzco%>T9Q`=6ntc>tzjKmGB!C9G?m>=Y!$YehW8J7*f4}&O9?!VmrN8%H8a?{f3}Hp ztaK5shw<<^t?-+tb=t2V2q(T--H#1J0kdx@MF29hda7Dpwi>iyZwMBrG5q9vu17H$ z-qe7dX*cq)>aHgqQBYURiR^K8%>oxk@t*Whq-PM&zw5IEv+V5N( zf%8Y-NlI1p4ApWFZ}l8nCL5daxi6QkHUuqpk#7s*eJ8;@sGLsgZL@-&yBfDA@i|ks zya~&H`@+Nq;jjpi*fbiLVA;1DzYak!h~cN3qIfEdGZU!^nP8-rBgR%J^* zs>|c{15X<0W)^aO2bTbtRW#nqet~RMVtEwD^dxL!bV9Yji@3|#{H?Rv+&z*bR@h7- zJcFjHE%x z1?xV?HeK&!l}1M9EV|oAu-XSL`MDY_9~0GqAt)Hp7M2{bvCBjds zUdEG!pOc~Wm{2@V7%IUhnmDH4t@L;kv~)I$E9nUsy1N|`{pNH)&20DcxwtUksy~vo zw)26MczL`1;W8C^Ap2`WXrAUyePVYkI>7mvgvc^25oJHo4??*?_#j_dhL6liApV4W zhE~{gHt`g-l|&gR2w|P!G=g;G~$E@JQy|^Auf`?rrW!aG+xg?mHF&xYA1zLYYtKbGKDxu0o0q;vP_#}@RyBFT za+SdzTX~GU0vc7Oi;r%~4rVk&uY#8|U{8{3v^Tj9lr!E+#m1>{v;i)4%_p6SE&o|0 zz4clFF(gpQsPsj4)R9q1V6KRSl>MNc?6O&jO2cpt++9_Gb{;Fs)DZzP5yZ%6eV^0&QBj3W>P$U zy*dvoHR(zrj7b%yUu_-)hNq$vvzo6Yhd3d4@cKt_;wB~^3vOr#6sUcs5BJrd2*UpD z;mtG~3=^01YsO#Vp-5A|D`*o8UhHJSD?`4z!{27|iX0iCoUlE)q(Zu|ig2yE%ht{taVB}RJ9?zD z_s>_WN@nr7$MVFzO*P1aUUHdcVZ!#zs*@7&o6S_*^mApWIg1s%PP(|>@TYd}Un^E1 z%nz#t%D?Ro)S}nJdH$`=+s69l_1?}^7OXK?nd9vjL$;B<^QYaDia!rg;xTG?IWOwt z?-Fbe#ALG@bA6~h)qIV>@E zW{gwWJ51r%F@h%c@u(A)e0=v3iQ6ApVWpL`j#{=PflB{Od@ok2OVWVX7Rd$jw|C0_ zYVKa|_8X2UJG|5Vm(K5ZAq?NlEw9TZ#Ff~~X>O6P#r0y)%ahg}wk+F)<%W+e?S0X_ z;EOSjW3##pe<$HT+-|8CK~XDJmApZF#upm|{NYBV2EnsYCfh-sGsREcIQ0;Oos8!$ zFh*X_$y%ole|GLO{v(F6*Nl_G>-KK37L&Ai>y zbu6{UlEAOpXF}(GMGlzt9{%t2#aD0nbxb#3NU1UNjnSltdQRWjgRhz%8_AL}@G$1V zl>#L8(um(G6H7TC%U-q@oxbqpA-I#R6CNe}aeG))ey%PRnu%Vx<~bf|S^}@NK`t)` zI0sJ_t+_{^YbG$t^B$ZMY5$N1TP6%@T0RpKwYqBrz>UQ3lN%iJ5%sqczT`N5(0`5g zQ*P(oSiu>u-t>M2%cB+WeEIY3vFm)PZ6AsV{}{zDia5~0noEh7PYV* z!y_8N%lsF*+Xzb}L^LkF-&YX2lNyOIl7)Io37}O2$S4M>a#%LP24dtKRn<$t1z;=lKwE(gSZ)SHeL=fGU{T#0f!dBH4ZDe}SD%9*=tT_KLYLH*C zOeET`+&%O{$#x0RBsA7fHKD}TUlklb4KDbjH?1BBvbjjXh2ftwVt`REv)D13Lkdo? z^{lsJZZ3$H#=jVm?1t9%>u!Sag!KO8pERCli8eA~(z{^63xNSeik`Si%Jb(i@lsJ^ z2XxWOxo*tPa~F$~B}Ovprv%y;28Q-}RsZs#!O|@$S8O@g`~|7s5~Q>!($?827#kXY zjlVK2&>&$ETX}(HyVy!{T+Hyyj4cs&%GQauRERhl&6&wy_INI!Ld30kV5zN062kj0 zAcS~WN^>&xy+TAeQX*4v-YTchek1%l`8~qma;HC~L>K&t$y?ts4yMwT%sB~tSA1!g zEG31{DiQr6qp^gcf?tq?VA=+maASIDkp0_6WK#M?D;FNS@KU#*JZbK+C+M(()U;m} zIHnFkdalb{i0yxpDaak0KVgr}+Qw-4q}%^sonxRtv{SD3wmuMRLbLSDsy?mGMbaOc zEJm-fUMsW}^({S-InA(DJ#9bHCCs%oBkVn~rA)SUD=IwkrEJoJ&OzeF=P|U^u$Njq zTLD#?a`dQxEvt%#r`qJF3fO-V$n2_e{~8{)wTPcvM9yI<`^Dp;s_uwcJiHmEv;mPS z@9{;!eX*GBSgUjpJLm^>3B_+acH)o*FuMU4PSc}{vmXvB+W{O0pO6+v=*<9>X!JNl z2W1~DFwz=_!S>kb zD*cFx8<_L${kuCh(G2U8J;V}SLNhfPA|6Z!h4Yjm1_{EiQ465<5CP{cJL^|JEr3U% z8XDqvK*h2=?U$JXSs1F04zSL}plnFhJ<_9t>;N>fRgTwF zf2Gg@ddDE+EcJeyUN;ao-KeF#ulm*yc6HqY;E&_s>64_q1ukWKoimO<=$ zUlCtS@`G3^m>OVhs+3*$V|22a#?cDiq5hhO|9YblA&)fh)cWFX5#&?T7)`?&KQ1LT z&G8%V++Gzj)qQs49)$7?o&0U&FM6M?&Fq{zKrNY8&kAQ^`P#I%A-j{#iTp7Lzz)0i z{lZLW{tM(NR&`xAi>lxejUnp+yK;d1c7Ou^aTLV;FHT-t8YEwsCIy~q(%_5-Ku_@2 z8Wokoqu$Ci9ZzZ2DY2b&AE~ypb+%z)LL?M7A1T~OwiL_vaLa1%Z;E!I47 zEmW2epA8vEik1zV7n@Z*jEdDW8dda*636O&w$hI=A-l0LUh={is|HaCwY#ZJ?xC?W zOwp@&w454pD(cdNAnZBms(N^Oqw?g`)l{%=Sd^UEB0TigKc}_Sq_w<|aB-y2)?*W~ z7;P~2SrlAohagvrsxS5o(j+qxbop2%R9@2Q3c! z&;(uVU6nK}`Dh&*(LR@Scf8!u@;1bP4{ghAA=K!+TJ)gCx_-P|cgdH`@&#jFb!<=_ zB2wx18GU#tqwV7YG)H0SkFeO3w<Fd6S#ja#A*?IB&kZQ(2?ut$cCiCw~UvajoW}A+HsIa zU>*7NSE`XobW$w&9>K>TU$^WhuU0A zwrJP|4js^SefPYD;m#Dgp1ppWSnKD$g8*OB`#GaC$Fx&;!jCM z=c}q5Dw8Tk%zvblz*nQQ1({J2DD`O2!pSWb8Dz?S3|0ia9<)WvDfglLr9CR^o;-Z` z7568oO)AfTattdE7memwn=Ta#s&csYFV^*v=0yK$V{VIc&9@m$&b}1OcHo`Q$ zfBD%*jpG8v33m-U;~}|Wl*e(r0oHv))Kt~&>cp#kVel~%7FL)o3JUnRHBON8&NE&I zZW}7YE+Ien(suTY#D1ZR@{*XaG{sSF&QtCG+Sepk?0_8?QEh^qrdRwzglCtA2r3T> za<(yXUw|RP&wLtZV2}~k*6^V2Pox%Kj`2BAevq*7)&M+9>Fds2B08T zsVDC}y=y;nsEh%mkEz&lS1+A`_V?)VtK2KDNqS{DClWt2}~rl}0}872{i4+*|1CnSw2n^ebq4ga2GziEC* z5Pji8R$&nk@&(uZH+^>WrQ=_l9Rdu&B8&HYfa~=Y<~mNsQwQt`jgo~zbOH@cd5)~n zngv`xH62n7 zTP!^I&&i+)yGb+p1_H(__M=zxvzm*-Y%j?AeZv82njYz@gw;C#uq9|%;j?jw`u!bw z&RaGA@=XvcW+tPALrF3GXUZVkF)9b{29<%93na@}2c1W|(el6T^iG6+p9aZRkqwo{pFS-!nG0X?5=wk}zLn3?2K2lTdN!x!->0TJc4EA4 z5KGBdU7Ta+S>^SxHJu!z=+h$^zqa`LA1DVmoOd5ED+g5iv3fnK2(7iHUZocV4(UJi zEE?<)j=Pv%5)xCL*!9|65^kk6`aXZ&xJKv~*!(fE*}4`Ifb*yJ%>NUhRuIo}&c^b2 zc_FMFIpzPl*(#T@-u=Q%NlMm6`jq3@qiK-RUiwGhvxl2M^8D>#LST!4>z$a~*TLhf z863~c!RjVw2UEOP`CWpC4&>LbV}6lddyQ-Kd)s!27;G}=3xyO!any3xfd26N+@+LQ zXADlRRc4xIh7BRvPL6D0b*e?Kr;r^TYG{N#6gDv+))|cLx>8ZBj!iGR@lPVc>NJ(f zX(LWgY@URj=L;G{=Bo!b3uA~R+4ekg-9wz$IUI{L6>V)xAvwjZfNI}Qc+-6m=uCJ zr%w*#1Gm4=wQvzF=fU8s$+HwI>F}6^vDN^@f{6|LQ`|ALWiGDlYA(ri@uxjMQT`Sc)wX)UTgJp4W0 zU$ddM$&b1Kzbu-SHe$w)l(rl^gH>+8Ujb2$Z;UrLV%C06xzNyrMm&yC133`sl)-lg z?YN^v3H5|6`f*2Dq%w{h2=GY^vc$L)WDZue-$kVol)eN{X6N;_6tZk+!D-mwcIe!cL^& zWA69LMdd~2)DfFU60&tP%7)%q~ zl2M7{NfXKO%XQFnJLGRs;e+dfGiL4enlnpHGRJ(Rc6syW$*8$Wv!0k5p-gx=X{Lsn zMl2~Zyo6G$)jEUK482rynlrJy<+a(KTvI_X7IK%s8^C;*&o6GP+92nd!ex~jB8yhZ zEqXqO`MaOpi|)nulXvC!o9;F7vv&=u{qCP3p1V#}u>EI<=PYb028fyWwULLX)hgNk zW6BmkG0T!unB&yC%L;e?X|Ag5x=L4X*RFAR_{FMTQE;*%2OhZ3%g%Y(Cov}okEMOf zp#Yk~Vz1|Q`V8^#e};G#_SxUXg49LTcwjuPlIy%t@=~Q?eHFDXPCjH(M_j?%4`gyI zc;c{>-!_W!buaHXkxdO(D>2KxNF3vqI2_CwUCRj+RS&Fx;0GlSM75i7x>h^Ztbjg( z{3K~bxOAtNG7i%mycF@7rHr6w)PYeMt1+8~efC4(mC%-4Ov)*P`gNVt2$QIz+tucM z0?V151#1~FKs8`rF(6(IEhOruMw3z16|*%e>M|zqngqfqGE(CD;E?51H;iikwOoyM z#sauE{cKJq`97v5Ss2n{z|pE6*|N^RyaR(PMv#-4+_aBxiB|Tb(U9xyr=^W5af2?^ z*b3Z6g_z6+c7o%!dUz^rtHBxmCSG(imxoc#8MOTai-8c7#a>mE{n;*|DWc`2#fZEn zSsi`O0o3yE3MSm!U|Kr~qb0hu?zH!yjjo+l32H}z>?y;1#pFI_YZ}fwA1g{-8*OCr zWKBEM{Rn&4{fyHEYr16ku)KFm@esZF5-mwyyc>rt(I(5yBM7R~=|a%V-N5dNV)q?O z(ce>*(L%)l?aYrOSUfV->Yry8T$NcB>0`DJ;<}zvHb7U0B?@xWj@AJlb*UL2DVg}1 zN6~D@0R`JRm&z+C7&7$-6ZT?wRiu^dC&aE+O?o96dPl9%!K94XHvP6B*3MPxUWu>K zd_h9#2W??pKoufdh-i+^az?fA)GW&2G-2Xp$YW0aX&R8gL1ZV61=N=bIC5@&e8`m8 zOirGsop68L~c#6MPNST>9oh2Y4pcu=WXeyRAyl31qd%wHO=d@22$^}1*5%E<)x9S* zvUS1e!>m)0eP(=`Umflj8z``SnLr?#YrrN@|%9 zx$>-%3y+0jX%u<&e%ri&3)R5&xb4{_Ek{f4&60g3Gt6>4c}~eqt1w6{i>^9?j>AJ{ zo}8k%%Q?vnD_h9GeYnXLUDST$!hQV7?|Li)$d&tylTUg|gUC($LX%PYj=zz+_mwB{ z>xg3ckTW9LO9x!J4}RzfkK|%aJZC|fdy~7lJ^*PpMM@6?-ZQ2@{^3O`Q275Bgg)N?%8QHl|1U4D|M#Rv|2c&J z4e1dt2RqyUs61LUv`hRn=6ZKD`4A6OKn7)A!kK)Ty^v9Y{t~qdbEB(DH4;H3-2h4X zPgwBYY~upB2_&HmBL8mf9kE9pt655tx$(Ly{%Op$C9*BeynT27h$bQo0LBLw^mso# z8s`V-ykBi82kP_&Jmzf8fJr}GSI_?#3%@y<2KvjCZq@wjHTd`Mm^|0+g7)8G@4J=a z^~Ww&uWoAZ>yEiXX%o%c(|N!&pN0|jd-bwg*1m>0-{Y(jX>Z_@=BMcBWw$_yz7Tx8 zyDKIKgXzWv3LyIr%~AY+XpYL{JwhRq_#LNmzQ}ee(^8#BPvFIY4h!-~5XyKDsyUoi zM*;I2Hzce}zKccEl{T!M(3s*IAq)loDLE20R-7-B_X|j&LUZKB^=Nm{Rzi$3$nXtiRE!{$Q>0DT|;@U>@|W-PEUB1wxhjkEkB-%$-yK6*U!>yv)=5Z#?iTuqf)wiBkB{@lky7l zgM4|zM~4^(<%e#LQ0tEu#sQs6H&2J)ORaxjcf9*26Dw!Fl#(2_r>o~43&tSp;7&l1 z_*@*WDAB7I_&AmlO$!l^CbuWjaQ95aKV5_z&S%?SGk(Ys;f)kI-0U}|HJgaY%UCec z-ytQJX0cXLA2_>YG#ZzcYOm0i$Yv%ogudDvnj>aqR(XB7`?yint}Ne&sl?ZQn9Alp zjE@vyKXDzh7o|@tq8D^ivk~;#v|-A-lg7E3vXP5YR!jxAYl$e&>>dc(2)E~|%@pUG z>A()%b_Kre0};H)R>JwDsoz8vsBW1A$X@X zqxNQXT5t|}lSul_$nLAmz#)jFK>6Ksm49=2lP&g~5u_%a>-6NF_a-?&2+jMup6`Yz?UbE+oM4^4!b+v%hy~^ZGbxAR^jiKYW=d?QJx;vM zm$en5ZB6Nn0yT+oz2aihcQg01H2Rm@3Uf})!(^8%wkFBwnkrO|?5|S;`E0!{il_k%B&=;uLNx=AKUY@!=pC`VsHYkzDry`+h_?tHhI-nbmCpSb9q)>|AY7A zh*Ky{6d{+EF1cE+oKkq%<{d=%p_D1BbE7NKInEXKV!-AhZfcM;Q7OPwk?w~t^8Owc zJrT@1uGeGmN9&s9p{Deb)WUq>dhfDizU!po{^cK*~x=ts9Wt;W5yiCaOV<^nN=xNmrqN>+k5(5&d?w@ zBvz!J--A4pbfin=r;ejgtlNb+>2%$&B>~Aqy5;nb-Q(q=n#X$y(rLsIO;ga zR=wMMrP}>TsUKM0VikFZ2-1A9uF*SHBJEGQa3B1)4f4-+I#OeShJS{Q|6myU_xe87 zM(PRV&Sl91*?4M_@(8wM&GChNL3*)H98mW%zBM1ly8`EZ^QZ{0%$(+N$TL2|QJZO0Md{C&|L^hohL-wc(X zucl(}LoxZ5*vhss98CZ5dSt2MLiHuWvmvXr#@Q0r^3100Vz*VgevjbA)3ajjlR-fA z$&6yRpQ_K;J__%QKfV$Pb`1;4$ORQ_uOUjCkgAf?SlUe-$3%NKwdS~6yZh(+d;=2g zU%~{cEqf8V)lj%vD&p@DWci*KQz^2gY0f-B zIgkkkHyHxazygHz=-92_J{)s+qg=o zh&!hf_*%cL#o{-dci3ar;Z1+oNwZV9cfEJXz9yG`)Z5=b!}x8>?Si?6?mQb{bef~T zqfPGQG0hAYEmZy2OWVIHUFKHB_Nwq@Wy;%Gk7LUEkw{CQ{GNJd)7%iHequ{Z@J?-? zE}xKmwe(Ht6BQ5C;ocA$9Rj{Ku4yRAw@`;RqTRMIlQc^oZCDDo*E{^X+Gnua90Yw6D@2!LT$JqP30Ol>GsL zfx_hAiQz>fOjihK3s)->die?UncJL`$W?5fm{JUf?C@@1{wGe*3^XZ2590Y|l@_S50X5USu6Fnw|A%q8yQ)Remy|`dy;07z_3{nb^vp9`Jaq&yy*veK z?hk*b@HI0p#E^Jzq>_B%$bLB<@JDbDAY6+XIa5Xh(42 z2>+EUncK{R@#{pYvC#sBW6!g3N1HuUxVzGf!9$z(yGcr|qA4)($N0?PMC2hi3$c`O z&r-K;MITDJoD<|YXaDKB9V|XOqr-bUAvy1ewU7GV$jD4F6KTF8n$s57kv8MY4)?Bh zUsA%&kAE?9LfH(0UV*#n)EUKt@Cf-`biaBd@yT<6xw|f}of{D&a?s9!4yh5n&N%cm zn&s;g6P7AsC0_FS(9eUZa90Xrzb9+%I$6+8eXoXkThde zoK!MA(5J;bC>+PU{Ysr>jnU@ocI`ch@ftt8lT(w@5xJIKNLIMN(QC zZPdQroe-Pf9ASlsU-#FhSn03&v=@l$+nfzt?#*g}i-o#EVDtqzoWIm!TC&zb^*+py z6!^Wk?I$qJt+SK(Twe`ekC2G4I5BUozbTycT%;PJ1$zY+K#jrL^CxB8Fkd9OpkR~9# z6GS>H9i&O`O?oHNd+)t>fgmkFNWOi}otbmy%sF#s=FYv}^L@|!k!QdAP4-T*_u6Z% z-zx9#Wag7y=dMmewHxiZw%b>UjVs@Kv~yengiU(p^nDpE_x-~j?Y)hGM^6VdQb_hBKU>WYNp%c=*1+!jOv#wGx5dY?kY#!OtkwnN z6%|%=zWmMydDjJQTI{qMO{~1nuC$e!QX)UD{Fj<;&||Jg`1{E}*^f|EyXo?=mxSS^ z9sz4Pt{T&sf+k3Dg2&h%S11i65jeK**BW$o8^0oUa=}1#cYA}qPxC3h63#2l*p)e&-@3p zCS&(I@66xuiCz}KOC9{aHpIjx+}e$g8mN7n$k zd`bVdB>lWP)pL$w!FWmx)^Q6;A6a58Q!JhY?I{5}2NBUM>_|125MqW=ivl}P9?NzD z28M;WFg@monSB7RNnfco*|)Z~*8|q3BN+TVylyl#kIOCIk-TZieNUoM>2G*fVQk-8 zP}^rTzlCF^qBKYmL~ zFHlmzzCfUQ87{$vrJb5IpiP=rUmfZ{Cf2yORMsjqMNZf4__f);FCDk9qIgO#lQ~wO zmrNzOl8d1olOD7^T`nuLUE}r|LoI!k8Z>SfWqaFW8rN7Taa?EU%bTYb1-t^4R4mIg zOdq3^Zgk8tv9CHubF z!&-Q*qi%WBnvK{f=ojisNyLaB6r?Y&`9?S_jZ>)^%GsC1ag95wnx);mnT{gkMyT@# z!@JX1nbzw$y$D>F*A}ZIIVyfnZ;Ci8C+(8yq7mt@`@q6oUPN$72wR7ONM&B2h% zx9znHIAYB~Kd8NDx|>t)jBGyiqo{E45-}uy^z9`*!+@QDIKDkryU#b{vaNG9mhI68 zgttExJ)&pR-_G=Si64%Q$r7?ulS(_h(f`f~`zREDbUjevZ0mY+FCmS9ioZ-+0x2JM zVe*LsSI*`G%7P?26@x zf4D_pj;eh-@bYoBfV8E7fncY~a?qP;z6q%Eqn5LcnS`*s(ppQ&j34Y*E2$ z?)Gv|q!b)-R3!J6rC1^rlmkKLxml&pm*aM`L;S|JfZhkSkkLH8@LXCwD_@$I)7er% zcc~JI1C2-H@6uX}@Mh8|fB2+C))g*E)6LCScT%qOC45TgC4AiM({= zQ<2{tAOq!nrEwtl!#Yr7k>%>HrIKFT=C-)6B2`n%C9OD1{mB;^Y zc2CezRkTKC!xcA1sc4*1P}}2q+TmJn8bom-74^eNeOxJd70y1I$I`g`lm6dWb!%GW zXKoTP%5tvR?IpR)`T{{Gr*OQR?)>Pdpo|MA4u-1j$uB~MZ!h&McD@$In}n0>-{8ve zuLy5=@Gf&>y)nGurh<=yQ(!=5troOc@&Yaw_SD0DFX)-Mrkz@#}W8F)RItyc$y|W4R?B5+Fpx{Sr1!{ z__QgU1)nw=)aJ_Y7Q?0kvmDgj^IS8;(aWqcp4~&7-Rx#4M<&y1W#9EU-3nr|?FsKt zwL6EVYnRTS)K&ef({CMehUa+&CFV^zEZNdLza;7GWPDeQRPqLO4N0i>%GbI=uRUgw z^c;{*sO9|eL^8cjkVDSGGkm?De;AD<#K_j#kt}T&-xH z8~ZcKzX^~p(&*Qu!=%w7c@gu*QE5cxZtjTFBWwcc-KV$mKsQx7nh7x;f$&{$RV53` z0>igKQw%v&&eNH9;-?)r+{-JU`X;X7 zz8)^2D#Gq^zPR%!(bxR5wFt0yU0%ElAewiE6YF%xY}u^i-{m!$62GR5efjxZ=gupp z*YP3oX{Nld^J5P`3+ri_FqH&HmHMu0$=;8JQq<~vdW~h`mJ|`a?k;N*OH4WayeHSw z{CSpYw&@qyg4krr6J2bp<2TQXRclOJWRGGw64}3gn3?l8o!?M>MB$7USEu*R7*oq%!4too@T3lm8L{rk)BhVK1}o31F^4cq5dRV z!KDvd^ZD>EpRLkus6~8=v-ca)RGJ(1U&Gr@4p%&& z@_DB7J`twTcdf<6hc=KEx3uRQ>N<;K7*z>&J&osy_|Uk%?92|;rATP%ZQ`d5;kQnf zZ<9wJ5^0!V?!x2llw2=PLDpTD@3_8tQVwWAKYc-O^$?m=Y#Nc*zEOv59lIHV*gEQY zBiW+sQwp5Ee53`XSA|}=-neP1(Vy7!HS`aZZc)*Y3AP?`h-esN@uX%Gayu2z7c6nJ33CEkQ5XNa5&A!;YmWS(UZ7sRQR#pUEli&YVg$w##lLa#I z>3yn3UsBPi!K_5X=n;&GVYIJ~Aw|Y}6sC_vd6Z_zy9G&Ww`<+y!tt0E8FdaAJbMjx z&Y{HHAEzXYXf&1IIe`F2$3h{b+u|nYIHRz&8XqXj-2khFA3Uy2lcAY2%KF-_F#k+a z$VPn@)Ka21=IyhTyjI0cQ{*9v)uOEblUif;4teP@^b1pxB!Kt9!eW~cjPFD5v zT;|2>j0Nw+I9aS&EPnHc?Bg}B?v-^=&rb16O#7vB_c0NDbPy2>Sq9i~F?Uq$Hwb7jKuO%j7-7 z6K<(}PkJHrl4O*%BMED{e}v?y~WX>lbiD#Oi>KJ@i;2|D5`6n^j!?#q6M z&t!SGWi_2P3et*~^~v(BDyj2RqBDDw*I^2Bj66NA8$JXA!nIEZETgi@uS`%Nst0aw zQ|eZ`I`&g#E79+WIa_$5IL-J<$5SI19Yti>Z15zX-pvDb$lqbU`Qa1%O2bcMPd%9G zgb43;G>z)zaR-XUC9BZz^P9(vIGak6mTyMPZhVn@a2w-s{L|+$c)X0+l}su)CvY)o z#nk8fBca#ol2keFyk@)qX5@u!yo(~ur?ZEeBw3!XbsR8`Ei`CU12tpTvR9(%`KItIRKXQ4fou=OhpDXm6Rke@_^r9E9HIr9@5r3iC*Cpl^E$9872l8XB} ztouRxYZ#A*-)h~U$r8Pym5j)jk8{(T7|RIU(jdc)k}d1v9bv2Lp?6k%DO8?nt{B^z z-FkDv<>90EZzWGMoA8lS0N%r~q{0(L&K8=-={S{>(s7y2nSlEM z*tl_jQR=&Hn4&sAfW)pE%`_y=M}L0C2TQa%-u2m6Qc91t)|gMotJ#6A<;~@sG&PDCkpnwkD&=T5j^M^*9DDnMwNI$tpi&;RmegORh`R> zA0br~S#W^-a}Apa-L z+G|MFs941l$J>@Ks#5ZrXAR@9T|M?FvG%VlQfo|8o7ZBau#@y+DWh%N9H#129Xdff6`)pJ}p|yOo^bX$7<(mzw~IRwMc^R zo1+mv)5O$lp4q4T^V8Xdtiu8>-3bEp=C3Lh9z~TXJxEBk{xQs8b32;JJ+Y0CV(xLy zdAeO%c61^q|K415e%^Mrfs&CRzg0;6w%+KH(qRIdtzhc*u`^kMy{${S#ksR^LY-}O zCa@~LfiA|wgKQb!Jy7MRugRGclvVUG_HCz?x+TwS3&}q2l~nGOdev#kRxM8MbblhM zXenF8DQfwC_Yph4=#62^flrzhOUBC|O73s#RbMtaO7LIRkzB64Js&xDJv=#tY8w@L zG%oGR8PQK>AQF#L5F_h)i$T4&&-8xO>mJ@VI`X(`ubUifik%qeZg|nIlC<#=I&V+b)|3Y`h$HUJj_z&`(2?z`RI;r{p0lqU#!E3eu;XC`8 z$L;?wd}n{Xj_co0*RT&D1+#aXXiMvxqB?XNoA?QGwOEX+*$VCtgkW!VZ)G&Tfws^W zqCrC^#n8n9BNV?Rl_^;_8uZtba!5Ln!7F0j&8v$_fZs#|V?tFwSC~8(6ZtnNW*N;%PkKC98gk2I=Qweog->M(p8~=Su#lu`xNPuBI&H zxycKjK8;(hMHj!n2>WjqXJ1260gME-PH50eJv8WwHL|Yfcc%WKQ~mCm@4xxFfBG}I zX7$xo6kp6&0UoT<=i1aPUjylA89J{b-km4pwx~_tX6+Cyw+UG;Ztx=I&2_V03VS<; zv49v9hqTn2zy7p>yBS<9M;EAdf@Pwq9Gw~!$wc;2V9c;}=iVUVM+&O8`bS>=UxtPK zH=xUt$S5cg8Z;$Bds&EvBhprw;6sD( zT-8Y9+9(5VoMHIkD}a^`zu;~9VB7V-u(|`egCx&_1*rt@RR-t1|~p*+GbC`91`^{@;=w=Uf)DG2d%8a0p^cteZ5X6D~^U9O4er?dHcA{q!^(~ zgJimh!Ip`H@%(ddbM^<1*V<{8N&V5)^>Uc=(Rpal@TNp0p28i_P_Y*j1>wnagy5UBn4fteW>e5CSPa> zLWAmDplmr@A$)6>+0P;KPoZL(`Su=kRPsgBl`{6#)B@F^LjKwd3epqQX@?{%w4AS0 z%(dN+7g`am8gY+UU**X;yR-A8$G#%Hk(s3B)X|uuXL9cy{f%MdVu|7pAgz$MW1Z+B z8eBfSX&eT>vgH3daqtSehODH?RYllcS;@t;UZILNxy3iCy~cC%#pV$#WoHj!>BfNq&R*BJk0to1qv0^dae?Ph4u zcPbo|4|{g8*>9c{$?Jb6Px_rLHAPxPDr!um5#Z%x8QWXzX7-tlVOTws1*;m4=Nh(V zZ&zzi65hFI{>1|Cdp;f{wU~JY(&~KZ7pq$p=UK8s_NjyJ2;euX0y$!2uJ)w{Fh;(GSS93T;7GDG0C$sE}^7pY`9 zgad|;;1+qZ@;BTpeA}M4$YA~+Lqop{ggJ!&ojvNePY(;IM4)~cNza*Q&$VZ}mu>Mp zzE@zPTkPWKxI`g$!YE&Q^@rBxs< zj(Cr%B@#mTItLB%H_qa^Xq3}X$?OF*!$kk2Uq!+DCZUA|<+QXn-hm+{S5YO~$f=$5 zWgKLA&HXDLhbuM-*vG&_dZc-#^`z7Q$WVzmr-?m+U063omB^s1JS*d{rRaHP+ zuDio_8np9skVG&<{xBNk7pPvksxiEVFVc&{ekHf7T_mQIx$uHxrlS*KdJa+V+|?$W z;qfeX_DU#6s`B>eYxDR|I_|@;UqD;Pin%Uel$KyP<7+f%dJ8z2dOItsq~o^WQ_b~uWZlKz)R++UW9Lo zi_s{so~{o{b<$b}tP`ivw8mA?nE~|>N}*r55B+hL^#lPur39Q8^_C|C?qz@JJ^rGyGfv>i2cLEHb-H*8ExKRf0jo#hI%uOb&j6Zak#R?8U5|G_ zvc8@t7yNu{GW0kas;UIY=F7~Ii^fNPlJ((kxpNpXf_6~voO}@t0`27%Go#4b*ii)r zEA)Se}j{&Mm>xsvQB$s#ZL(!}3{q_;&0D*zI&T;q-yRYj5oq6X#4bCA3H&^79b zoF9-zX#DK3z6z4&Vh~EP1APZYafTtJoF1Ju80V)Tem=bjbP)0Iv=SP1C}%AL2w;f; zK!D~Nr5S~qfd=!Xzzg}R(IA67OM9>zAcMg_Uz%^?S+;9P#rGZ*(5;*t?dW&zoe3 zPFRVD#H(BxVLBZ3Mtui%J1TJ{^NoDv=$i2?y~_!ivQZG_Nhi`{dn8x<)cE|pVNe27 z;@y^MnJ~MAMCSdTbf=^!3*LPDL;%HF-Z|MyO{Xlr%`+7OyhX%ofPyv}Ax@D|~Fjfh~mOKKV&SL%`%Ok3|vs-mnjT_bTPHk96xJR!%{ow~^DH&3Y=s&Z? z{DFafhVwtO&wsYv_fuM7=j5EQ@9a=CD2qq?x&Ch_elhc^^}`jr-xEWH;=>LxDq-CH zhUwXFKa6JoWaru)6bDOUYz0zTEP+L1QW;?oDI44)^_A~nnKe%{i zOk%{JZIW)MhAiVN-I5PP7)XJOUg{&%Ft}#;dV}AX?R|~R0m#81ibi`H^-5lYNEi(o z^g3^W_`qoMJei2B4{EvV4xvo`T;~JrZKIMr0YtEn-AHBP`06Q!?b~`ZXfx5X=-dU# zuIO5)?ir@w><&Rd=-6IbN;z;C&s)Mu)TKjMilaXN(`e>jKtpVQK_|ZgDyjbvPAQ>B zM64c=Zy8FAA_bQ{M4#kwevfqu(Fqlm*yep-LumaJ