4.6.3. ResultsImporters API¶
-
class
ResultsImporter
(job_collection=None, data_set=None, settings=None)¶ -
__init__
(job_collection=None, data_set=None, settings=None)¶ Class for constructing job_collection.yaml, data_set.yaml, and job_collection_engines.yaml files
- job_collection : JobCollection or str or None
If None, a new JobCollection will be created
If a str, will be read from that file.
- data_set : DataSet, dict of DataSets, or None
If None, a new DataSet will be created
If a str, will be read from that file.
If dict, then if the dictionary has no key ‘training_set’ one will be created with a new DataSet
- settings : str, or Settings or dict
Some settings affecting the way the results importer works.
If a string is given, it should be the path to a results_importer_settings.yaml file. The settings are then loaded from that file. Otherwise, the settings are read from the Settings or dict.
If a setting is not set, it will take some default value.
- ‘remove_bonds’: bool (default True). Whether to delete the bonds from the jobs in the job collection. The bonds are not needed for ReaxFF or DFTB parametrization.
- ‘trim_settings’ : bool (default True). If the reference job is a GeometryOptimization but the newly added job is a SinglePoint, then remove the GeometryOptimization settings block from the settings. Similarly remove unused MolecularDynamics/PESScan blocks.
- ‘default_go_settings’ : Settings() containing default settings in the GeometryOptimization block of the AMS input. E.g. {‘MaxIterations’: 30, ‘PretendConverged’: True}
- ‘units’: Settings() containing the preferred units for different extractors. Units can be specified either with a known string or with a 2-tuple (string, float). For example
{'energy': 'eV', 'forces': ('custom_unit', 12.34)}
. The unit for ‘energy’ is also used for relative_energies. The known units are given in the PLAMS documentation.
results_importer_settings = Settings() results_importer_settings.trim_settings = True results_importer_settings.default_go_settings.MaxIterations = 20 results_importer_settings.units.energy = 'kcal/mol' results_importer_settings.remove_bonds = False sc = ResultsImporter(settings=results_importer_settings)
-
add_singlejob
(amsjob, properties, name=None, task='SinglePoint', data_set=None, subgroup=None, settings=None, extra_engine=None)¶ This function adds an entry to the job collection and an entry to the reference engine collection using amsjob as a template The items of properties are extractors.
Returns a list of expressions added to the data_set.
- amsjob : AMSJob or path to ams.results folder or path to VASP results folder or path to Quantum ESPRESSO .out file
- Job with a finished reference calculation
- data_set : str or None
- for example ‘training_set’ or ‘validation_set’. A value of None means ‘training_set’
- subgroup : str or None
- Set the SubGroup metadata for the DataSetEntries
- task : str
- The Task of the added job. Defaults to SinglePoint, no matter what the Task of the reference amsjob is. If you want GeometryOptimizations to be run during the parametrization, you must set task=’GeometryOptimization’ here.
- settings : Settings
Custom settings for the added job. By default, all settings from the reference job are inherited.
Any settings provided with this argument will override the inherited settings from the reference job.
sett = Settings() sett.input.ams.GeometryOptimization.MaxIterations = 50 ri = ResultsImporter() ri.add_singlejob(..., task='GeometryOptimization', settings=sett)
- properties : list or dict of extractors
If given as a list, the default settings (weights, sigma, unit) are used for each data_set entry.
The arguments to the extractor should be specified without the jobid.
Example:
properties = ['energy', 'angle((0,1,2))']
will add two data_set entries, one for the energy and one for the angle between the first three atomsProperties can also be a dict, where the keys are the extractors as above and the values are dicts containing the settings for the data set entry.
Example:
properties = { 'energy': { 'weight': 1.0, 'sigma': 1.0 'unit': 'eV', }, 'forces': { 'weight': ..., 'sigma': ...., 'unit': 'Ha/bohr', 'weights_scheme': WeightsSchemeGaussian(normalization='numentries'), } }, 'pes': { # this will translate the "min" to a fixed index (recommended) 'relative_to': 'min', }, 'pes(relative_to="min")': { # the pes returned from this extractor might be relative to different datapoints }, 'angle((0,1,2))': { 'weight': ..., } }
-
add_pesscan_singlepoints
(amsjob, properties, name=None, task='SinglePoint', start=0, end=None, step=1, indices=None, data_set=None, subgroup=None, settings=None, extra_engine=None)¶ The reference job must be a PESScan. This method extracts the converged points and adds them to the job collection as single points. Returns a list of expressions added to the data_set.
To add a job with Task ‘PESScan’ (for use with the pes* extractors), do NOT use this method but instead the
add_singlejob()
method.- amsjob : AMSJob or path to ams.results folder
- The job must have had Task PESScan
- properties : list or dictionary
Allowed keys are ‘energy’ (not recommended) and ‘relative_energies’ (recommended).
The ‘forces’ are not supported since AMS only writes the constrained gradients to the ams.rkf files.
- name : str
- Jobs in the job collection will get ID “name_frame003” etc.
- task : str
- Task, only ‘SinglePoint’ makes sense
- start : int
- start step (0-based)
- end : int or None
- end step (0-based). If None, the entire trajectory is used
- step : int
- Use every step frames
- indices : list of int
- Manually specified list of indices. Overrides start/end/step if not None.
- data_set : str
- Dataset (‘training_set’, etc.)
- subgroup : str
- Set a custom SubGroup metadata key for the data_set entries.
For the property ‘relative_energies’ you can set the ‘relative_to’ option to specify the reference point. Allowed values:
‘min’ : smallest energy from indices subset
‘max’ : largest energy from indices subset
‘first’ : first energy from indices subset
‘last’ : last energy from indices subset
‘min_global’ : smallest energy in the trajectory
‘max_global’ : largest energy in the trajectory
‘first_global’ : first energy in the trajectory
‘last_global’ : last energy in the trajectory
If specifying e.g. ‘min_global’, then the smallest energy in the trajectory is always included, even if it is not covered by the indices subset.
Example:
add_pesscan_singlepoints('/path/to/ams.rkf', properties={ 'energy': { 'weight': 1.5 }, 'relative_energies': { 'weight': 2.0, 'sigma' : 0.1, 'unit' : 'eV', 'relative_to': 'min_global' }, }
-
add_neb_singlepoints
(amsjob, properties, name=None, task='SinglePoint', data_set=None, subgroup=None, images='highest', extra_engine=None)¶ Method for extracting frames from an NEB calculation, and adding singlepoint jobs for each of the frames. Returns a list of expressions added to the data_set.
- amsjob : AMSJob or path to ams.results folder
- The job must contain History and NEB sections on ams.rkf
- properties : list or dictionary
- Allowed keys are [‘energy’, ‘relative_energies’]
- name : str
- Jobs in the job collection will get ID “name_frame003” etc.
- task : str
- Task, only ‘SinglePoint’ makes sense.
- data_set : str
- Dataset (‘training_set’, etc.)
- subgroup : str
- Set custom SubGroup metadata for the data_set entries.
- images : str, ‘highest’ or ‘all’
- Whether to include only the highest energy image or all images
-
add_trajectory_singlepoints
(amsjob, properties, name=None, task='SinglePoint', start=0, end=None, step=1, N=None, indices=None, data_set=None, subgroup=None, settings=None, extra_engine=None)¶ ResultsImporter for extracting frames from a trajectory file, and adding singlepoint jobs for each of the frames. Returns a list of expressions added to the data_set.
To add a job with task ‘GeometryOptimization’ or ‘MolecularDynamics’, do NOT use this method but instead use the
add_singlejob()
method.- amsjob : AMSJob or path to ams.results folder
- The job must contain a History section on ams.rkf, e.g. from a geometry optimization or MD simulation
- properties : list or dictionary
- Allowed keys are [‘energy’, ‘relative_energies’, ‘forces’, ‘stresstensor’] Not all extractors are supported, since each individual frame does not constitute an AMSResults
- name : str
- Jobs in the job collection will get ID “name_frame003” etc.
- task : str
- Task, only ‘SinglePoint’ makes sense
- start : int
- start step (0-based)
- end : int or None
- end step (0-based). If None, the entire trajectory is used
- step : int
- Use every step frames
- N : int
- Get N equally spaced frames in the interval [start, end). Overrides
step
if set. - indices : list of int
- Manually specified list of indices. Overrides start/end/step if not None.
- data_set : str
- Dataset (‘training_set’, etc.)
- subgroup : str
- Set custom SubGroup metadata for the data_set entries.
For the property ‘relative_energies’ you can set the ‘relative_to’ option to specify the reference point. Allowed values:
‘min’ : smallest energy from indices subset
‘max’ : largest energy from indices subset
‘first’ : first energy from indices subset
‘last’ : last energy from indices subset
‘min_global’ : smallest energy in the trajectory
‘max_global’ : largest energy in the trajectory
‘first_global’ : first energy in the trajectory
‘last_global’ : last energy in the trajectory
If specifying e.g. ‘min_global’, then the smallest energy in the trajectory is always included, even if it is not covered by the indices subset.
Example:
add_trajectory_singlepoints('/path/to/ams.rkf', properties={ 'energy': { 'weight': 1.5 }, 'relative_energies': { 'weight': 2.0, 'sigma' : 0.1, 'unit' : 'eV', 'relative_to': 'min_global' }, 'forces': {} }
-
add_pesexploration_singlepoints
(amsjob, properties, name=None, task='SinglePoint', indices=None, data_set=None, subgroup=None, settings=None, extra_engine=None)¶ ResultsImporter for PES exploration reference jobs. Returns a list of expressions added to the data_set.
To add jobs with task ‘PESExploration’ to the job collection (although you most likely do not want to do that because of the computational expense), do NOT use this method but instead the
add_singlejob()
method.The method will add
- Forward and reverse reaction barriers from any transition state
- Relative energies between two minima connected by a transition state
- Relative energies between the lowest-energy minimum and all other minima
The “lowest-energy” and “all other minima” refer to minima either explicitly specified in indices, or connected to one of the transition states in indices.
Tip
Most PES explorations contain very many states. Select the subset you’re interested in with the indices, corresponding to state numbers.
- amsjob: AMSJob or path to amsjob
- An AMSJob or path to AMSJob
- properties: list or dict
- ‘energy’ and/or ‘relative_energies’
- name: str
- prefix for the jobids of the individual datapoints
- task: str
- must be ‘SinglePoint’
- indices: None or list of int
- The indices in this method are 1-based! The state numbering for a PES Exploration is 1-based, and those indices are used for everyday working. Therefore the same indexing scheme is kept.
- data_set:
- Dataset
- subgroup:
- Subgroup
- settings:
- Settings
-
add_reaction_energy
(reactants, products, normalization='r0', normalization_value=1.0, task='SinglePoint', weight=1.0, sigma=None, reactants_names=None, products_names=None, reference=None, unit=None, dupe_check=True, data_set=None, subgroup=None, settings=None, extra_engine=None, metadata=None)¶ ResultsImporter for adding reaction energies to the data_set.
- reactants : list
- a list of jobids, or a list of paths to ams.results folders or ams.rkf files, or a list of AMSJobs
- products : list
- a list of jobids, or a list of paths to ams.results folders or ams.rkf files, or a list of AMSJobs
- normalization_species : str
- ‘r0’ for the first reactant, ‘r1’ for the second reactant, etc. ‘p0’ for the first product, ‘p1’ for the second product, etc. This normalizes the chemical equation such that the coefficient in front of the specified species is normalization_value
- normalization_value : float
- Normalize the chemical equation such that the coefficient in front of normalization_species is this number
- task : str, default ‘SinglePoint’
- Set the task for the job collection entries (only if new entries are created from AMSJobs)
- weight : float, optional
- Weight for the data set entry
- sigma : float, optional
- Sigma for the data set entry
- reactants_names : list
- set the job_collection IDs (only if new entries are created from AMSJobs). By default the job name is used.
- products_names : list
- set the job_collection IDs (only if new entries are created from AMSJobs). By default the job name is used
- reference : float or None
- The reaction energy. If None, an attempt will be made to calculate this, if all the constituent jobs (reactants and products) were loaded as AMSJobs
- unit : str or 2-tuple
- Energy unit. If 2-tuple should be of the form (“string”, “conversion_factor_from_au”)
- dupe_check : bool
- Check for duplicate data set entries
- metadata:
- a dictionary containing metadata for the data set entry. Note: new key-value pairs may be added to the dictionary by this method.
- settings : Settings
- Additional job settings
This method is primarily to be used by providing a list of paths to ams.results folders. The method will
- Create reference engines in the EngineCollection based on the engine settings for the provided jobs
- Extract the final structures from the AMSJobs, and add them to the JobCollection with the provided Task and pertinent ReferenceEngineID
- Balance the chemical equation, calculate the reference value, and add an entry to the DataSet
- The metadata for the DataSet entry is augmented by INFO_ReferenceEngineIDs, which gives all the reference engines used to calculate the reference data
-
store
(folder=None, prefix='', binary=False, text=True, backup=True, store_settings=True)¶ - folder : str
- If folder is not given, the current working directory is used. If the folder does not exist, it will be created.
- prefix : str
- Prefix the output file names, e.g. giving “prefixjob_collection.yaml”
- binary : bool
- Whether to output binary job_collection.pkl and training_set.pkl files
- text : bool
- Whether to output text files job_collection.yaml and training_set.yaml. The engine_collection.yaml and results_importer_settings.yaml files are always created in text format.
- backup : bool
- Whether to backup any existing files by appending a .002 suffix or similar to the existing files.
- store_settings : bool
- Whether to save results_importer_settings.yaml
Saves job_collection.yaml, reference_engines.yaml, training_set.yaml. For each additional data_set (e.g. “validation_set”), a yaml file is also created.
-
add_engine_from_amsjob
(amsjob, name=None)¶ Reads the engine definition from amsjob and adds it to the engine collection. Returns the ID of the engine in the engine collection.
amsjob: an AMSJob, or path to ams.results
- name : str or None
- If None, the engine name is created from the engine settings
-