InteratomicPotentialDataset

class hdnnpy.dataset.property.interatomic_potential_dataset.InteratomicPotentialDataset(order, structures)[source]

Bases: hdnnpy.dataset.property.property_dataset_base.PropertyDatasetBase

Interatomic potential dataset for property of HDNNP.

It accepts 0 or 3 for order.

Notes

Currently you cannot use order = 2 or 3, since it is not implemented.

Parameters:
__getitem__(item)

Return property data this instance has.

If item is string, it returns corresponding property. Available keys can be obtained by properties attribute. Otherwise, it returns a list of property sliced by item.

__len__()

Number of atomic structures given at initialization.

calculate_properties(structure)[source]

Calculate required properties for a structure data.

Parameters:structure (AtomicStructure) – A structure data to calculate properties.
Returns:Calculated properties. The length is the same as order given at initialization.
Return type:list [ndarray]
clear()

Clear up instance variables to initial state.

load(file_path, verbose=True, remake=False)

Load dataset from .npz format file.

Only root MPI process load dataset.

It validates following compatibility between loaded dataset and atomic structures given at initialization.

  • length of data
  • elemental composition
  • elements
  • tag

It also validates that loaded dataset satisfies requirements.

  • order
Parameters:
  • file_path (Path) – File path to load dataset.
  • verbose (bool, optional) – Print log to stdout.
  • remake (bool, optional) – If loaded dataset is lacking in any property, recalculate dataset from scratch and overwrite it to file_path. Otherwise, it raises ValueError.
Raises:
  • AssertionError – If loaded dataset is incompatible with atomic structures given at initialization.
  • ValueError – If loaded dataset is lacking in any property and remake=False.
make(verbose=True)

Calculate & retain property dataset

It calculates property dataset by data-parallel using MPI communication.
The calculated dataset is retained in only root MPI process.

Each property values are divided by COEFFICIENTS which is unique to each property dataset class.

Parameters:verbose (bool, optional) – Print log to stdout.
save(file_path, verbose=True)

Save dataset to .npz format file.

Only root MPI process save dataset.

Parameters:
  • file_path (Path) – File path to save dataset.
  • verbose (bool, optional) – Print log to stdout.
Raises:

RuntimeError – If this instance do not have any data.

COEFFICIENTS = [1.0, -1.0, 1.0, 1.0]

Coefficient values of each properties.

Type:list [float]
PROPERTIES = ['energy', 'force', 'harmonic', 'third_order']

Names of properties for each derivative order.

Type:list [str]
UNITS = ['eV/atom', 'eV/$\\AA$', 'eV/$\\AA$^2', 'eV/$\\AA$^3']

Units of properties for each derivative order.

Type:list [str]
coefficients

Coefficient values this instance have.

Type:list [float]
elemental_composition

Elemental composition of atomic structures given at initialization.

Type:list [str]
elements

Elements of atomic structures given at initialization.

Type:list [str]
has_data

True if success to load or make dataset, False otherwise.

Type:bool
n_property = 1

Number of dimensions of 0th property.

Type:int
name = 'interatomic_potential'

Name of this property class.

Type:str
order

Derivative order of property to calculate.

Type:int
properties

Names of properties this instance have.

Type:list [str]
tag

Unique tag of atomic structures given at initialization.

Usually, it is a form like <any prefix> <chemical formula>. (ex. CrystalGa2N2)

Type:str
units

Units of properties this instance have.

Type:list [str]