ipsuite.analysis.model package¶
Submodules¶
ipsuite.analysis.model.dynamics module¶
- class ipsuite.analysis.model.dynamics.BoxHeatUp(*args, **kwargs)[source]¶
Bases:
ProcessSingleAtomPerform a heat-up analysis by gradually increasing the temperature of the system and monitoring the measured temperature and energy.
Parameters¶
- start_temperaturefloat
The initial temperature (in Kelvin) to start the analysis.
- stop_temperaturefloat
The upper bound of the temperature range (in Kelvin).
- stepsint
Number of temperature increments between start and stop temperature.
- time_stepfloat, optional
Time step of the simulation in femtoseconds. Default is 0.5 fs.
- frictionfloat
Langevin friction coefficient.
- repeattuple of int, optional
Number of repetitions of the unit cell in each direction. Default is (1, 1, 1).
- max_temperaturefloat or None, optional
Maximum allowed temperature before stopping the simulation. If None, set to 1.5 * stop_temperature.
- modeltyping.Any
The MLModel node that implements the ‘get_calculator’ method.
- model_outspathlib.Path
Output directory for model results.
- plotspathlib.Path
Path to save the temperature plot.
Attributes¶
- flux_datapd.DataFrame
DataFrame containing measured temperature, total energy, and set temperature at each step.
- steps_before_explosionint
Number of steps completed before exceeding max_temperature, or -1 if not exceeded.
- frameslist of ase.Atoms
List of atomic configurations at each step.
- data: List[ase.Atoms]¶
- flux_data: DataFrame = NOT_AVAILABLE¶
- friction: float¶
- max_temperature: float | None = None¶
- model: Any¶
- model_outs: Path = PosixPath('$nwd$/model')¶
- plots: Path = PosixPath('$nwd$/temperature.png')¶
- repeat: tuple[int, int, int] = (1, 1, 1)¶
- start_temperature: float¶
- steps: int¶
- stop_temperature: float¶
- time_step: float = 0.5¶
- class ipsuite.analysis.model.dynamics.BoxScale(*args, **kwargs)[source]¶
Bases:
ProcessSingleAtomScale all particles and predict energies.
Attributes¶
model: The MLModel node that implements the ‘predict’ method atoms: list[Atoms] to predict properties for start: int, default = None
The initial box scale, default value is the original box size.
- stop: float, default = 1.0
The stop value for the generated space of stdev points
- num: int, default = 100
The size of the generated space of stdev points
- data: List[ase.Atoms]¶
- energies: DataFrame = NOT_AVAILABLE¶
- mapping: Any | None = None¶
- model_outs: Path = PosixPath('$nwd$/model')¶
- num: int = 100¶
- plot: Path = PosixPath('$nwd$/energy.png')¶
- start: float = 1¶
- stop: float = 2.0¶
- class ipsuite.analysis.model.dynamics.MDStability(*args, **kwargs)[source]¶
Bases:
IPSNodePerform NVE molecular dynamics for all supplied atoms using a trained model. Several stability checks can be supplied to judge whether a particular trajectory is stable. If the check fails, the trajectory is terminated. After all trajectories are done, a histogram of the duration of stability is created.
Attributes¶
model: A node which implements the calc property. Typically an MLModel instance. data: list[Atoms] to run MD for for max_steps: Maximum number of steps for each trajectory time_step: MD integration time step initial_temperature: Initial velocities are drawn from a maxwell boltzman distribution. save_last_n: how many configurations before the instability should be saved bins: number of bins in the histogram seed: seed for the MaxwellBoltzmann distribution
- bins: int = None¶
- checks: list[Node] = None¶
- data: list[Atoms]¶
- property frames: List[Atoms]¶
- initial_temperature: float = 300¶
- max_steps: int¶
- model: Any¶
- model_outs: Path = PosixPath('$nwd$/model_outs')¶
- plots_dir: Path = PosixPath('$nwd$/plots')¶
- save_last_n: int = 1¶
- seed: int = 0¶
- stable_steps_df: DataFrame = NOT_AVAILABLE¶
- time_step: float = 0.5¶
- traj_file: Path = PosixPath('$nwd$/structures.h5')¶
- class ipsuite.analysis.model.dynamics.RattleAnalysis(*args, **kwargs)[source]¶
Bases:
ProcessSingleAtomMove particles with a given stdev from a starting configuration and predict.
Attributes¶
model: The MLModel node that implements the ‘predict’ method atoms: list[Atoms] to predict properties for logspace: bool, default=True
Increase the stdev of rattle with ‘np.logspace’ instead of ‘np.linspace’
- stop: float, default = 1.0
The stop value for the generated space of stdev points
- num: int, default = 100
The size of the generated space of stdev points
- factor: float, default = 0.001
The ‘np.linspace(0.0, stop, num) * factor’
- atom_id: int, default = 0
The atom to pick from self.atoms as a starting point
- data: List[ase.Atoms]¶
- energies: DataFrame = NOT_AVAILABLE¶
- factor: float = 0.001¶
- logspace: bool = True¶
- model_outs: Path = PosixPath('$nwd$/model')¶
- num: int = 100¶
- seed: int = 1234¶
- stop: float = 3.0¶
- ipsuite.analysis.model.dynamics.run_stability_nve(atoms: Atoms, time_step: float, max_steps: int, init_temperature: float, checks: list[Check], save_last_n: int, rng: Generator | None = None) Tuple[int, list[Atoms]][source]¶
Runs an NVE trajectory for a single configuration until either max_steps is reached or one of the checks fails.
ipsuite.analysis.model.dynamics_checks module¶
ipsuite.analysis.model.math module¶
- ipsuite.analysis.model.math.comptue_rll(inputs, std, target)[source]¶
Compute relative log likelihood Adapted from https://github.com/bananenpampe/DPOSE
ipsuite.analysis.model.plots module¶
- ipsuite.analysis.model.plots.density_scatter(ax, x, y, bins, **kwargs) None[source]¶
Create a scatter plot colored by 2d histogram density.
Parameters¶
ax: matplotlib.axes.Axes x: np.ndarray y: np.ndarray bins: int kwargs
any kwargs passed to ‘ax.scatter’
Returns¶
References¶
Adapted from https://stackoverflow.com/a/53865762/10504481
- ipsuite.analysis.model.plots.get_calibration_figure(error, std, markersize: float = 3.0, datalabel=None, forces=False, figsize: tuple = (10, 7))[source]¶
Log-log plot of errors vs predicted standard deviations with quantiles for a linearly increasing noise level.
- ipsuite.analysis.model.plots.get_figure(true, prediction, datalabel: str, xlabel: str, ylabel: str, ymax: float | None = None, figsize: tuple = (10, 7), density=True) Figure[source]¶
Create a correlation plot for true, prediction values.
Parameters¶
true: the true values prediction: the predicted values datalabel: str, the label for the prediction, e.g. ‘MAE: 0.123 eV’ xlabel: str, the xlabel ylabel: str, the xlabel figsize: tuple, size of the figure
Returns¶
plt.Figure
- ipsuite.analysis.model.plots.get_gaussianicity_figure(error_true, error_pred, forces=True)[source]¶
Plots empirical and predicted error distributions. If possible, it also tries to fit a gaussian to the empirical distribution.
- ipsuite.analysis.model.plots.get_histogram_figure(bin_edges, counts, datalabel: str, xlabel: str, ylabel: str, x_lim: Tuple[float, float] = None, y_lim: Tuple[float, float] = None, logy_scale=True, figsize: tuple = (10, 7)) Figure[source]¶
Creates a Matplotlib figure based on precomputed bin edges and counts.
Parameters¶
- bin_edges: np.array
Edges of the histogram bins.
- counts: np.array
Number of occurrences in each bin.
- datalabel: str
Labels for the figure legend.
- xlabel: str
X-axis label.
- ylabel: str
Y-axis label.
- x_lim: tuple
X-axis limits.
- y_lim: tuple
Y-axis limits.
- figsize: tuple
Size of the Matplotlib figure
ipsuite.analysis.model.predict module¶
- class ipsuite.analysis.model.predict.CalibrationMetrics(*args, **kwargs)[source]¶
Bases:
ComparePredictionsAnalyse the calibration of a models uncertainty estimate. Plots the empirical vs predicted error distribution, a log-log calibration plot and the miscalibration area. Further, various UQ metrics are computed: - Mean absolute calibration error - Root mean square miscalibration error - Miscalibration area - NLL - RLL
For more information checkout the uncertainty toolbox or the following paper: 10.1088/2632-2153/ad594a
Parameters¶
- force_dist_slices: List[tuple]
Interval in which to analyse the gassianity of error distributions.
- data_file: Path = PosixPath('$nwd$/data.npz')¶
- energy: dict = NOT_AVAILABLE¶
- force_dist_slices: List[tuple] | None = None¶
- forces: dict = NOT_AVAILABLE¶
- plots_dir: Path = PosixPath('$nwd$/plots')¶
- x: list[ase.Atoms]¶
- y: list[ase.Atoms]¶
- class ipsuite.analysis.model.predict.ForceAngles(*, name: str | None = None, always_changed: bool = False, x: list[ase.atoms.Atoms], y: list[ase.atoms.Atoms], plot: pathlib.Path = PosixPath('$nwd$/angle.png'), log_plot: pathlib.Path = PosixPath('$nwd$/angle_ylog.png'))[source]¶
Bases:
ComparePredictions- angles: dict = NOT_AVAILABLE¶
- log_plot: Path = PosixPath('$nwd$/angle_ylog.png')¶
- plot: Path = PosixPath('$nwd$/angle.png')¶
- x: list[ase.Atoms]¶
- y: list[ase.Atoms]¶
- class ipsuite.analysis.model.predict.ForceDecomposition(*args, **kwargs)[source]¶
Bases:
ComparePredictionsNode for decomposing forces in a system of molecular units into translational, rotational and vibrational components.
The implementation follows the method described in https://doi.org/10.26434/chemrxiv-2022-l4tb9
Currently, single atoms and diatomic molecules are simply filtered out. Please raise an issue if you need those cases to be treated correctly in your work.
Attributes¶
- wasserstein_distance: float
Compute the wasserstein distance between the distributions of the predicted and true forces for each trans, rot, vib component.
- histogram_plt: Path = PosixPath('$nwd$/histogram.png')¶
- rot_force_plt: Path = PosixPath('$nwd$/rot_force.png')¶
- rot_forces: dict = NOT_AVAILABLE¶
- trans_force_plt: Path = PosixPath('$nwd$/trans_force.png')¶
- trans_forces: dict = NOT_AVAILABLE¶
- vib_force_plt: Path = PosixPath('$nwd$/vib_force.png')¶
- vib_forces: dict = NOT_AVAILABLE¶
- wasserstein_distance: dict = NOT_AVAILABLE¶
- x: list[ase.Atoms]¶
- y: list[ase.Atoms]¶
- class ipsuite.analysis.model.predict.ForceUncertaintyDecomposition(*args, **kwargs)[source]¶
Bases:
ComparePredictionsNode for decomposing force uncertainties in a system of molecular units into translational, rotational and vibrational components.
The implementation follows the method described in https://doi.org/10.26434/chemrxiv-2022-l4tb9
Currently, single atoms and diatomic molecules are simply filtered out. Please raise an issue if you need those cases to be treated correctly in your work.
- plots_dir: Path = PosixPath('$nwd$/plots')¶
- rot_forces: dict = NOT_AVAILABLE¶
- trans_forces: dict = NOT_AVAILABLE¶
- vib_forces: dict = NOT_AVAILABLE¶
- x: list[ase.Atoms]¶
- y: list[ase.Atoms]¶
- class ipsuite.analysis.model.predict.Prediction(*args, **kwargs)[source]¶
Bases:
ProcessAtomsCreate and Save the predictions from model on atoms.
Attributes¶
model: The MLModel node that implements the ‘predict’ method atoms: list[Atoms] to predict properties for
predictions: list[Atoms] the atoms that have the predicted properties from model
- data: list[ase.Atoms]¶
- class ipsuite.analysis.model.predict.PredictionMetrics(*args, **kwargs)[source]¶
Bases:
ComparePredictionsCompare model predictions against reference data with comprehensive metrics.
Computes and visualizes prediction accuracy for energy, forces, and stress with statistical measures including MAE, RMSE, and correlation coefficients. Useful for benchmarking different models and analyzing prediction quality.
Parameters¶
- xlist[ase.Atoms]
Reference (ground truth) atomic configurations with calculated properties.
- ylist[ase.Atoms]
Model predictions on the same configurations.
- figure_ymaxdict[str, float], optional
Y-axis limits for plots by property type (energy, forces, stress).
Attributes¶
- energydict
Energy prediction metrics (MAE, RMSE, R², etc.) in meV/atom.
- forcesdict
Force prediction metrics (MAE, RMSE, R², etc.) in meV/Å.
- stressdict
Stress prediction metrics in eV/ų.
- plots_dirPath
Directory containing generated comparison plots.
Examples¶
>>> medium_model = ips.MACEMPModel(model="medium") >>> small_model = ips.MACEMPModel(model="small") >>> with project: ... data = ips.AddData(file="ethanol.xyz") ... medium_data = ips.ApplyCalculator(data=data.frames, model=medium_model) ... small_data = ips.ApplyCalculator(data=data.frames, model=small_model) ... metrics = ips.PredictionMetrics(x=medium_data.frames, y=small_data.frames) >>> project.repro() >>> print(f"Energy MAE: {metrics.energy['mae']:.2f} meV/atom") Energy MAE: 52.23 meV/atom >>> print(f"Force MAE: {metrics.forces['mae']:.2f} meV/Å") Force MAE: 213.22 meV/Å
- data_file: Path = PosixPath('$nwd$/data.npz')¶
- energy: dict = NOT_AVAILABLE¶
- figure_ymax: dict[str, float]¶
- forces: dict = NOT_AVAILABLE¶
- plots_dir: Path = PosixPath('$nwd$/plots')¶
- stress: dict = NOT_AVAILABLE¶
- stress_deviat: dict = NOT_AVAILABLE¶
- stress_hydro: dict = NOT_AVAILABLE¶
- x: list[ase.Atoms]¶
- y: list[ase.Atoms]¶
Module contents¶
As in all ML applications, analysing both the dataset and model predictions are of paramount importance. For dataset exploration it is often convenient to visualize the distribution of labels. Most Nodes are concerned with analysing trained models and often compare to a reference calculator. This ranges from simple prediction correlation plots to force decompositions and energy-volume curves.
- class ipsuite.analysis.model.BoxHeatUp(*args, **kwargs)[source]¶
Bases:
ProcessSingleAtomPerform a heat-up analysis by gradually increasing the temperature of the system and monitoring the measured temperature and energy.
Parameters¶
- start_temperaturefloat
The initial temperature (in Kelvin) to start the analysis.
- stop_temperaturefloat
The upper bound of the temperature range (in Kelvin).
- stepsint
Number of temperature increments between start and stop temperature.
- time_stepfloat, optional
Time step of the simulation in femtoseconds. Default is 0.5 fs.
- frictionfloat
Langevin friction coefficient.
- repeattuple of int, optional
Number of repetitions of the unit cell in each direction. Default is (1, 1, 1).
- max_temperaturefloat or None, optional
Maximum allowed temperature before stopping the simulation. If None, set to 1.5 * stop_temperature.
- modeltyping.Any
The MLModel node that implements the ‘get_calculator’ method.
- model_outspathlib.Path
Output directory for model results.
- plotspathlib.Path
Path to save the temperature plot.
Attributes¶
- flux_datapd.DataFrame
DataFrame containing measured temperature, total energy, and set temperature at each step.
- steps_before_explosionint
Number of steps completed before exceeding max_temperature, or -1 if not exceeded.
- frameslist of ase.Atoms
List of atomic configurations at each step.
- data: List[ase.Atoms]¶
- flux_data: DataFrame = NOT_AVAILABLE¶
- friction: float¶
- max_temperature: float | None = None¶
- model: Any¶
- model_outs: Path = PosixPath('$nwd$/model')¶
- plots: Path = PosixPath('$nwd$/temperature.png')¶
- repeat: tuple[int, int, int] = (1, 1, 1)¶
- start_temperature: float¶
- steps: int¶
- stop_temperature: float¶
- time_step: float = 0.5¶
- class ipsuite.analysis.model.BoxScale(*args, **kwargs)[source]¶
Bases:
ProcessSingleAtomScale all particles and predict energies.
Attributes¶
model: The MLModel node that implements the ‘predict’ method atoms: list[Atoms] to predict properties for start: int, default = None
The initial box scale, default value is the original box size.
- stop: float, default = 1.0
The stop value for the generated space of stdev points
- num: int, default = 100
The size of the generated space of stdev points
- data: List[ase.Atoms]¶
- energies: DataFrame = NOT_AVAILABLE¶
- mapping: Any | None = None¶
- model_outs: Path = PosixPath('$nwd$/model')¶
- num: int = 100¶
- plot: Path = PosixPath('$nwd$/energy.png')¶
- start: float = 1¶
- stop: float = 2.0¶
- class ipsuite.analysis.model.CalibrationMetrics(*args, **kwargs)[source]¶
Bases:
ComparePredictionsAnalyse the calibration of a models uncertainty estimate. Plots the empirical vs predicted error distribution, a log-log calibration plot and the miscalibration area. Further, various UQ metrics are computed: - Mean absolute calibration error - Root mean square miscalibration error - Miscalibration area - NLL - RLL
For more information checkout the uncertainty toolbox or the following paper: 10.1088/2632-2153/ad594a
Parameters¶
- force_dist_slices: List[tuple]
Interval in which to analyse the gassianity of error distributions.
- data_file: Path = PosixPath('$nwd$/data.npz')¶
- energy: dict = NOT_AVAILABLE¶
- force_dist_slices: List[tuple] | None = None¶
- forces: dict = NOT_AVAILABLE¶
- plots_dir: Path = PosixPath('$nwd$/plots')¶
- x: list[ase.Atoms]¶
- y: list[ase.Atoms]¶
- class ipsuite.analysis.model.ForceAngles(*, name: str | None = None, always_changed: bool = False, x: list[ase.atoms.Atoms], y: list[ase.atoms.Atoms], plot: pathlib.Path = PosixPath('$nwd$/angle.png'), log_plot: pathlib.Path = PosixPath('$nwd$/angle_ylog.png'))[source]¶
Bases:
ComparePredictions- angles: dict = NOT_AVAILABLE¶
- log_plot: Path = PosixPath('$nwd$/angle_ylog.png')¶
- plot: Path = PosixPath('$nwd$/angle.png')¶
- x: list[ase.Atoms]¶
- y: list[ase.Atoms]¶
- class ipsuite.analysis.model.ForceDecomposition(*args, **kwargs)[source]¶
Bases:
ComparePredictionsNode for decomposing forces in a system of molecular units into translational, rotational and vibrational components.
The implementation follows the method described in https://doi.org/10.26434/chemrxiv-2022-l4tb9
Currently, single atoms and diatomic molecules are simply filtered out. Please raise an issue if you need those cases to be treated correctly in your work.
Attributes¶
- wasserstein_distance: float
Compute the wasserstein distance between the distributions of the predicted and true forces for each trans, rot, vib component.
- histogram_plt: Path = PosixPath('$nwd$/histogram.png')¶
- rot_force_plt: Path = PosixPath('$nwd$/rot_force.png')¶
- rot_forces: dict = NOT_AVAILABLE¶
- trans_force_plt: Path = PosixPath('$nwd$/trans_force.png')¶
- trans_forces: dict = NOT_AVAILABLE¶
- vib_force_plt: Path = PosixPath('$nwd$/vib_force.png')¶
- vib_forces: dict = NOT_AVAILABLE¶
- wasserstein_distance: dict = NOT_AVAILABLE¶
- x: list[ase.Atoms]¶
- y: list[ase.Atoms]¶
- class ipsuite.analysis.model.ForceUncertaintyDecomposition(*args, **kwargs)[source]¶
Bases:
ComparePredictionsNode for decomposing force uncertainties in a system of molecular units into translational, rotational and vibrational components.
The implementation follows the method described in https://doi.org/10.26434/chemrxiv-2022-l4tb9
Currently, single atoms and diatomic molecules are simply filtered out. Please raise an issue if you need those cases to be treated correctly in your work.
- plots_dir: Path = PosixPath('$nwd$/plots')¶
- rot_forces: dict = NOT_AVAILABLE¶
- trans_forces: dict = NOT_AVAILABLE¶
- vib_forces: dict = NOT_AVAILABLE¶
- x: list[ase.Atoms]¶
- y: list[ase.Atoms]¶
- class ipsuite.analysis.model.MDStability(*args, **kwargs)[source]¶
Bases:
IPSNodePerform NVE molecular dynamics for all supplied atoms using a trained model. Several stability checks can be supplied to judge whether a particular trajectory is stable. If the check fails, the trajectory is terminated. After all trajectories are done, a histogram of the duration of stability is created.
Attributes¶
model: A node which implements the calc property. Typically an MLModel instance. data: list[Atoms] to run MD for for max_steps: Maximum number of steps for each trajectory time_step: MD integration time step initial_temperature: Initial velocities are drawn from a maxwell boltzman distribution. save_last_n: how many configurations before the instability should be saved bins: number of bins in the histogram seed: seed for the MaxwellBoltzmann distribution
- bins: int = None¶
- checks: list[Node] = None¶
- data: list[Atoms]¶
- property frames: List[Atoms]¶
- initial_temperature: float = 300¶
- max_steps: int¶
- model: Any¶
- model_outs: Path = PosixPath('$nwd$/model_outs')¶
- plots_dir: Path = PosixPath('$nwd$/plots')¶
- save_last_n: int = 1¶
- seed: int = 0¶
- stable_steps_df: DataFrame = NOT_AVAILABLE¶
- time_step: float = 0.5¶
- traj_file: Path = PosixPath('$nwd$/structures.h5')¶
- class ipsuite.analysis.model.Prediction(*args, **kwargs)[source]¶
Bases:
ProcessAtomsCreate and Save the predictions from model on atoms.
Attributes¶
model: The MLModel node that implements the ‘predict’ method atoms: list[Atoms] to predict properties for
predictions: list[Atoms] the atoms that have the predicted properties from model
- data: list[ase.Atoms]¶
- class ipsuite.analysis.model.PredictionMetrics(*args, **kwargs)[source]¶
Bases:
ComparePredictionsCompare model predictions against reference data with comprehensive metrics.
Computes and visualizes prediction accuracy for energy, forces, and stress with statistical measures including MAE, RMSE, and correlation coefficients. Useful for benchmarking different models and analyzing prediction quality.
Parameters¶
- xlist[ase.Atoms]
Reference (ground truth) atomic configurations with calculated properties.
- ylist[ase.Atoms]
Model predictions on the same configurations.
- figure_ymaxdict[str, float], optional
Y-axis limits for plots by property type (energy, forces, stress).
Attributes¶
- energydict
Energy prediction metrics (MAE, RMSE, R², etc.) in meV/atom.
- forcesdict
Force prediction metrics (MAE, RMSE, R², etc.) in meV/Å.
- stressdict
Stress prediction metrics in eV/ų.
- plots_dirPath
Directory containing generated comparison plots.
Examples¶
>>> medium_model = ips.MACEMPModel(model="medium") >>> small_model = ips.MACEMPModel(model="small") >>> with project: ... data = ips.AddData(file="ethanol.xyz") ... medium_data = ips.ApplyCalculator(data=data.frames, model=medium_model) ... small_data = ips.ApplyCalculator(data=data.frames, model=small_model) ... metrics = ips.PredictionMetrics(x=medium_data.frames, y=small_data.frames) >>> project.repro() >>> print(f"Energy MAE: {metrics.energy['mae']:.2f} meV/atom") Energy MAE: 52.23 meV/atom >>> print(f"Force MAE: {metrics.forces['mae']:.2f} meV/Å") Force MAE: 213.22 meV/Å
- data_file: Path = PosixPath('$nwd$/data.npz')¶
- energy: dict = NOT_AVAILABLE¶
- figure_ymax: dict[str, float]¶
- forces: dict = NOT_AVAILABLE¶
- plots_dir: Path = PosixPath('$nwd$/plots')¶
- stress: dict = NOT_AVAILABLE¶
- stress_deviat: dict = NOT_AVAILABLE¶
- stress_hydro: dict = NOT_AVAILABLE¶
- x: list[ase.Atoms]¶
- y: list[ase.Atoms]¶
- class ipsuite.analysis.model.RattleAnalysis(*args, **kwargs)[source]¶
Bases:
ProcessSingleAtomMove particles with a given stdev from a starting configuration and predict.
Attributes¶
model: The MLModel node that implements the ‘predict’ method atoms: list[Atoms] to predict properties for logspace: bool, default=True
Increase the stdev of rattle with ‘np.logspace’ instead of ‘np.linspace’
- stop: float, default = 1.0
The stop value for the generated space of stdev points
- num: int, default = 100
The size of the generated space of stdev points
- factor: float, default = 0.001
The ‘np.linspace(0.0, stop, num) * factor’
- atom_id: int, default = 0
The atom to pick from self.atoms as a starting point
- data: List[ase.Atoms]¶
- energies: DataFrame = NOT_AVAILABLE¶
- factor: float = 0.001¶
- logspace: bool = True¶
- model_outs: Path = PosixPath('$nwd$/model')¶
- num: int = 100¶
- seed: int = 1234¶
- stop: float = 3.0¶