pantea.simulation package#

Submodules#

pantea.simulation.lennard_jones module#

class pantea.simulation.lennard_jones.LJPotential(sigma, epsilon, r_cutoff, gradient_method='direct')[source]#

Bases: object

A simple implementation of Lennard-Jones potential.

compute_forces(structure)[source]#

Compute force components for all atoms.

Return type

ArrayImpl

class pantea.simulation.lennard_jones.LJPotentialParams(epsilon, sigma)[source]#

Bases: tuple

Create new instance of LJPotentialParams(epsilon, sigma)

epsilon: ArrayImpl#

Alias for field number 0

sigma: ArrayImpl#

Alias for field number 1

pantea.simulation.molecular_dynamics module#

class pantea.simulation.molecular_dynamics.MDSimulator(time_step, thermostat=None)[source]#

Bases: object

A molecular dynamics simulator to predict trajectory of particles over time. :type time_step: float :param time_step: time step in Hartree time unit :type time_step: float :type thermostat: Optional[BrendsenThermostat] :param thermostat: input thermostat that controls the temperature of the system

to the target value, defaults to None

This simulator is intended to be used for small systems of atoms during the potential training in order to generate new training dataset.

repr_physical_params(system)[source]#

Represent current physical parameters.

Return type

str

simulate_one_step(system)[source]#

Update parameters for next time step.

Return type

None

verlet_integration(system)[source]#

Update atom positions, velocities, and forces based on Verlet algorithm.

Return type

None

pantea.simulation.monte_carlo module#

class pantea.simulation.monte_carlo.MCSimulator(translate_step, target_temperature, movements_per_step=1, seed=12345)[source]#

Bases: object

A Monte Carlo simulator to predict atom configurations for a given temperature.

Parameters
  • translate_step (float) – maximum translate step in Bohr unit

  • target_temperature (float) – target temperature for the system

  • atomic_masses (Optional[Array], optional) – atomic mass of atoms in the input structure, defaults to None

  • movements_per_step (int, default to 1) – number of random movements per step

  • seed (int, optional) – seed for generating random atom movements, defaults to 12345

It must be noted that this MC simulator modifies atom positions and total_energy of Structure inside the system.

This simulator is intended to be used for small systems of atoms during the potential training in order to generate new dataset.

metropolis_algorithm(system)[source]#

Update atom positions based on metropolis algorithm.

Return type

None

repr_physical_params(system)[source]#

Represent current physical parameters.

Return type

str

simulate_one_step(system)[source]#

Update parameters for next time step.

Return type

None

class pantea.simulation.monte_carlo.PotentialInterface(*args, **kwargs)[source]#

Bases: Protocol

compute_forces(structure)[source]#
Return type

ArrayImpl

pantea.simulation.simulate module#

class pantea.simulation.simulate.MDSystemInterface(*args, **kwargs)[source]#

Bases: Protocol

potential: PotentialInterface#
structure: Structure#
class pantea.simulation.simulate.PotentialInterface(*args, **kwargs)[source]#

Bases: Protocol

compute_forces(structure)[source]#
Return type

ArrayImpl

class pantea.simulation.simulate.SimulatorInterface(*args, **kwargs)[source]#

Bases: Protocol

repr_physical_params(system)[source]#
Return type

None

simulate_one_step(system)[source]#
Return type

None

step: int#
pantea.simulation.simulate.simulate(system, simulator, num_steps=1, output_freq=None, filename=None, append=False)[source]#

Simulate system for a given number of steps.

Parameters
  • system (MDSystemInterface) – a system of particles and the interacting potential.

  • simulator (SimulatorInterface) – either a molecular dynamics (MD) or monte carlo (MC) simulator

  • num_steps (int, optional) – number of steps, defaults to 1

  • output_freq (Optional[int], optional) – print outputs and/or dump configuration file after this number of steps, defaults to None

  • filename (Optional[Path], optional) – output configuration file (e.g., *.xyz) as supported in the ASE, defaults to None

  • append (bool, optional) – whether append to the exiting configuration file or not, defaults to False

Return type

None

pantea.simulation.system module#

class pantea.simulation.system.PotentialInterface(*args, **kwargs)[source]#

Bases: Protocol

compute_forces(structure)[source]#
Return type

ArrayImpl

class pantea.simulation.system.System(potential, structure, velocities, masses)[source]#

Bases: object

An extended atom Structure for molecular simulations (e.g. MD).

property box: Optional[Box]#
Return type

Optional[Box]

classmethod compute_forces(potential, structure)[source]#
Return type

ArrayImpl

property forces: ArrayImpl#
Return type

ArrayImpl

classmethod from_structure(structure, potential, temperature=300.0, seed=2024)[source]#
Return type

System

classmethod generate_random_velocities(temperature, masses, seed)[source]#

Generate Maxwell-Boltzmann distributed random velocities.

Return type

ArrayImpl

get_center_of_mass_position()[source]#
Return type

ArrayImpl

get_center_of_mass_velocity()[source]#
Return type

ArrayImpl

get_elements()[source]#
Return type

Tuple[str, ...]

get_kinetic_energy()[source]#
Return type

ArrayImpl

get_potential_energy()[source]#

Return total potential energy.

Return type

ArrayImpl

get_pressure()[source]#
Return type

ArrayImpl

get_temperature()[source]#
Return type

ArrayImpl

get_total_energy()[source]#
Return type

ArrayImpl

masses: ArrayImpl#
property natoms: int#
Return type

int

property positions: ArrayImpl#
Return type

ArrayImpl

potential: PotentialInterface#
structure: Structure#
update_forces_from_positions()[source]#
Return type

None

update_total_potential_energy_from_positions()[source]#
Return type

None

velocities: ArrayImpl#

pantea.simulation.thermostat module#

class pantea.simulation.thermostat.BrendsenThermostat(target_temperature, time_constant)[source]#

Bases: object

Control simulation temperature using Brendsen thermostat.

get_rescaled_velocities(simulator, system)[source]#
Return type

ArrayImpl

class pantea.simulation.thermostat.BrendsenThermostatParams(time_step, time_constant, current_temperature, target_temperature)[source]#

Bases: tuple

Create new instance of BrendsenThermostatParams(time_step, time_constant, current_temperature, target_temperature)

current_temperature: ArrayImpl#

Alias for field number 2

target_temperature: ArrayImpl#

Alias for field number 3

time_constant: ArrayImpl#

Alias for field number 1

time_step: ArrayImpl#

Alias for field number 0

class pantea.simulation.thermostat.MDSimulatorInterface(*args, **kwargs)[source]#

Bases: Protocol

time_step: float#
class pantea.simulation.thermostat.SystemInterface(*args, **kwargs)[source]#

Bases: Protocol

get_temperature()[source]#
Return type

ArrayImpl

velocities: ArrayImpl#

Module contents#

class pantea.simulation.BrendsenThermostat(target_temperature, time_constant)[source]#

Bases: object

Control simulation temperature using Brendsen thermostat.

get_rescaled_velocities(simulator, system)[source]#
Return type

ArrayImpl

class pantea.simulation.LJPotential(sigma, epsilon, r_cutoff, gradient_method='direct')[source]#

Bases: object

A simple implementation of Lennard-Jones potential.

compute_forces(structure)[source]#

Compute force components for all atoms.

Return type

ArrayImpl

class pantea.simulation.MCSimulator(translate_step, target_temperature, movements_per_step=1, seed=12345)[source]#

Bases: object

A Monte Carlo simulator to predict atom configurations for a given temperature.

Parameters
  • translate_step (float) – maximum translate step in Bohr unit

  • target_temperature (float) – target temperature for the system

  • atomic_masses (Optional[Array], optional) – atomic mass of atoms in the input structure, defaults to None

  • movements_per_step (int, default to 1) – number of random movements per step

  • seed (int, optional) – seed for generating random atom movements, defaults to 12345

It must be noted that this MC simulator modifies atom positions and total_energy of Structure inside the system.

This simulator is intended to be used for small systems of atoms during the potential training in order to generate new dataset.

metropolis_algorithm(system)[source]#

Update atom positions based on metropolis algorithm.

Return type

None

repr_physical_params(system)[source]#

Represent current physical parameters.

Return type

str

simulate_one_step(system)[source]#

Update parameters for next time step.

Return type

None

class pantea.simulation.MDSimulator(time_step, thermostat=None)[source]#

Bases: object

A molecular dynamics simulator to predict trajectory of particles over time. :type time_step: float :param time_step: time step in Hartree time unit :type time_step: float :type thermostat: Optional[BrendsenThermostat] :param thermostat: input thermostat that controls the temperature of the system

to the target value, defaults to None

This simulator is intended to be used for small systems of atoms during the potential training in order to generate new training dataset.

repr_physical_params(system)[source]#

Represent current physical parameters.

Return type

str

simulate_one_step(system)[source]#

Update parameters for next time step.

Return type

None

verlet_integration(system)[source]#

Update atom positions, velocities, and forces based on Verlet algorithm.

Return type

None

class pantea.simulation.System(potential, structure, velocities, masses)[source]#

Bases: object

An extended atom Structure for molecular simulations (e.g. MD).

property box: Optional[Box]#
Return type

Optional[Box]

classmethod compute_forces(potential, structure)[source]#
Return type

ArrayImpl

property forces: ArrayImpl#
Return type

ArrayImpl

classmethod from_structure(structure, potential, temperature=300.0, seed=2024)[source]#
Return type

System

classmethod generate_random_velocities(temperature, masses, seed)[source]#

Generate Maxwell-Boltzmann distributed random velocities.

Return type

ArrayImpl

get_center_of_mass_position()[source]#
Return type

ArrayImpl

get_center_of_mass_velocity()[source]#
Return type

ArrayImpl

get_elements()[source]#
Return type

Tuple[str, ...]

get_kinetic_energy()[source]#
Return type

ArrayImpl

get_potential_energy()[source]#

Return total potential energy.

Return type

ArrayImpl

get_pressure()[source]#
Return type

ArrayImpl

get_temperature()[source]#
Return type

ArrayImpl

get_total_energy()[source]#
Return type

ArrayImpl

masses: ArrayImpl#
property natoms: int#
Return type

int

property positions: ArrayImpl#
Return type

ArrayImpl

potential: PotentialInterface#
structure: Structure#
update_forces_from_positions()[source]#
Return type

None

update_total_potential_energy_from_positions()[source]#
Return type

None

velocities: ArrayImpl#
pantea.simulation.simulate(system, simulator, num_steps=1, output_freq=None, filename=None, append=False)[source]#

Simulate system for a given number of steps.

Parameters
  • system (MDSystemInterface) – a system of particles and the interacting potential.

  • simulator (SimulatorInterface) – either a molecular dynamics (MD) or monte carlo (MC) simulator

  • num_steps (int, optional) – number of steps, defaults to 1

  • output_freq (Optional[int], optional) – print outputs and/or dump configuration file after this number of steps, defaults to None

  • filename (Optional[Path], optional) – output configuration file (e.g., *.xyz) as supported in the ASE, defaults to None

  • append (bool, optional) – whether append to the exiting configuration file or not, defaults to False

Return type

None