Solvent radial distribution¶
- class mlipaudit.benchmarks.solvent_radial_distribution.solvent_radial_distribution.SolventRadialDistributionBenchmark(force_field: ForceField | Calculator, data_input_dir: str | PathLike = './data', run_mode: RunMode | Literal['dev', 'fast', 'standard'] = RunMode.STANDARD)¶
Benchmark for solvent radial distribution function.
- name¶
The unique benchmark name that should be used to run the benchmark from the CLI and that will determine the output folder name for the result file. The name is
solvent_radial_distribution.- Type:
str
- category¶
A string that describes the category of the benchmark, used for example, in the UI app for grouping. Default, if not overridden, is “General”. This benchmark’s category is “Molecular Liquids”.
- Type:
str
- result_class¶
A reference to the type of
BenchmarkResultthat will determine the return type ofself.analyze(). The result class type isSolventRadialDistributionResult.- Type:
type[mlipaudit.benchmark.BenchmarkResult] | None
- model_output_class¶
A reference to the
SolventRadialDistributionModelOutputclass.- Type:
type[mlipaudit.benchmark.ModelOutput] | None
- required_elements¶
The set of atomic element types that are present in the benchmark’s input files.
- Type:
set[str] | None
- skip_if_elements_missing¶
Whether the benchmark should be skipped entirely if there are some atomic element types that the model cannot handle. If False, the benchmark must have its own custom logic to handle missing atomic element types. For this benchmark, the attribute is set to True.
- Type:
bool
- __init__(force_field: ForceField | Calculator, data_input_dir: str | PathLike = './data', run_mode: RunMode | Literal['dev', 'fast', 'standard'] = RunMode.STANDARD) None¶
Initializes the benchmark.
- Parameters:
force_field – The force field model to be benchmarked.
data_input_dir – The local input data directory. Defaults to “./data”. If the subdirectory “{data_input_dir}/{benchmark_name}” exists, the benchmark expects the relevant data to be in there, otherwise it will download it from HuggingFace.
run_mode – Whether to run the standard benchmark length, a faster version, or a very fast development version. Subclasses should ensure that when
RunMode.DEV, their benchmark runs in a much shorter timeframe, by running on a reduced number of test cases, for instance. ImplementingRunMode.FASTbeing different fromRunMode.STANDARDis optional and only recommended for very long-running benchmarks. This argument can also be passed as a string “dev”, “fast”, or “standard”.
- Raises:
ChemicalElementsMissingError – If initialization is attempted with a force field that cannot perform inference on the required elements.
ValueError – If force field type is not compatible.
- run_model() None¶
Run an MD simulation for each structure. The MD simulation is performed using the JAX MD engine and starts from the reference structure. NOTE: This benchmark runs a simulation in the NVT ensemble, which is not recommended for a water RDF calculation.
- analyze() SolventRadialDistributionResult¶
Calculate how much the radial distribution deviates from the reference.
- Returns:
A
SolventRadialDistributionResultobject.- Raises:
RuntimeError – If called before
run_model().
- class mlipaudit.benchmarks.solvent_radial_distribution.solvent_radial_distribution.SolventRadialDistributionResult(*, failed: bool = False, score: Annotated[float | None, Ge(ge=0), Le(le=1)] = None, structure_names: list[str], structures: list[SolventRadialDistributionStructureResult], avg_peak_deviation: Annotated[float, Ge(ge=0)] | None = None)¶
Result object for the solvent radial distribution benchmark.
- structure_names¶
The names of the structures.
- Type:
list[str]
- structures¶
List of per structure results.
- avg_peak_deviation¶
The average deviation across all structures.
- Type:
float | None
- failed¶
Whether all the simulations failed and no analysis could be performed. Defaults to False.
- Type:
bool
- score¶
The final score for the benchmark between 0 and 1.
- Type:
float | None
- class mlipaudit.benchmarks.solvent_radial_distribution.solvent_radial_distribution.SolventRadialDistributionStructureResult(*, structure_name: str, radii: list[float] | None = None, rdf: list[float] | None = None, first_solvent_peak: float | None = None, peak_deviation: Annotated[float, Ge(ge=0)] | None = None, failed: bool = False, score: float = 0.0)¶
Stores the result for a single structure.
- structure_name¶
The structure name.
- Type:
str
- radii¶
The radii values in Angstrom.
- Type:
list[float] | None
- rdf¶
The radial distribution function values at the radii.
- Type:
list[float] | None
- first_solvent_peak¶
The first solvent peak, i.e. the radius at which the rdf is the maximum.
- Type:
float | None
- peak_deviation¶
The deviation of the first solvent peak from the reference.
- Type:
float | None
- failed¶
Whether the simulation was successful. If unsuccessful, the other attributes will be not be set.
- Type:
bool
- score¶
The score for the molecule.
- Type:
float
- class mlipaudit.benchmarks.solvent_radial_distribution.solvent_radial_distribution.SolventRadialDistributionModelOutput(*, structure_names: list[str], simulation_states: list[SimulationState | None])¶
Model output containing the final simulation states for each structure.
- structure_names¶
The names of the structures.
- Type:
list[str]
- simulation_states¶
SimulationStateorNoneobject for each structure in the same order as the structure names.Noneif the simulation failed.- Type:
list[mlip.simulation.state.SimulationState | None]