Logger(data_sets: Dict[str, scm.params.core.dataset.DataSet], interface: scm.params.parameterinterfaces.base.BaseParameters, losses: Dict[str, scm.params.core.lossfunctions.Loss], path: Optional[Union[str, pathlib.Path]] = None, group_by: Optional[Tuple[str]] = None, iteration_digits: int = 6, sort_stats_by: str = 'contribution', general_log_interval: int = 10, parameters_log_interval: int = 500, history_log_interval: int = 500, flush_log_interval: int = 10)¶
Logger class used to save function evaluations to disk. Single instance is used for all logging from all optimizers.
Logs and saves the following data produced during an Optimization to disk for every Data Set provided:
best/*: Same as latest/* but for the iteration with the lowest loss function.
history/ : Same as latest/* but stored every history iterations.
initial/*: Same as latest/* but for the initial parameter settings.
latest/active_parameters.txt: iteration and list of current parameter values.
latest/data_set_predictions.yaml: file in DataSet yaml format that can be loaded with a DataSetEvaluator.
latest/engine.txt: Engine settings block for AMS.
latest/evaluation.txt: Current evaluation number.
latest/loss.txt: The loss function value.
latest/parameter_interface.yaml: Parameters in yaml format.
latest/pes_predictions/*.txt: Predictions for all entries with the
latest/scatter_plots/*.txt: Current predictions per extractor or grouped as defined by the group_by attribute.
latest/stats.txt: Current MAE and RMSE per extractor or grouped as defined by the group_by attribute.
running_active_parameters.txt: The values of the (active) parameters, stored every ‘parameters’ iterations.
running_loss.txt: iteration and loss function value. Plottable with
running_stats.txt: mae and rmse per extractor or grouped as defined by the group_by attribute.
Depending on the parameter interface, also:
latest/lj_parameters.txt: For Lennard-Jones optimizations, contains the LJ parameters
latest/ffield.ff: For ReaxFF optimizations, contains the parameters in ffield format
latest/xtb_files: For GFN1-xTB optimizations, contains the parameters in a format that can be read by AMS
The files are stored in a directory called dataset_name_results, e.g. training_set_results.
It is possible to turn off the logging of a particular type by setting the associated
- data_setsDict[str, DataSet]
Dictionary of data set names to
Parameter interface used during the optimization. Note that a copy of the interface is made by the logger so that the provided interface and logger interface are no longer the same python object.
- lossesDict[str, Loss]
Dictionary of data set names to
- path :str OR Path, optional
Path to root directory in which all files will be logged. Defaults to the current working directory.
- group_bytuple of strings
A tuple in the same format as accepted by DataSetEvaluator.group_by().
group_by=('Extractor', 'Expression') # default group_by=('Group', 'SubGroup') # requires that the dataset entries have Group and SubGroup metadata
Number of digits to print the iteration number to file names and latest/evaluation.txt, running_loss.txt, and running_stats.txt.
Example: iteration_digits == 6 will print the first iteration as 000001
Example: iteration_digits == None will print the first iteration as 1
Sort the latest/stats.txt and related files.
‘contribution’: sort by contribution to loss function value
‘rmse’: sort by rmse
‘mae’: sort by mae
None: do not sort (use the same order as in the original DataSet)
Interval between writes to stdout, running_loss and running_stats and all latest/ and best/ files.
Interval between writes to running_active_parameters.txt
Interval of copies from ‘latest’ to ‘history’
How often to flush the running_* files