simulation.tools submodule

cg_openmm.simulation.tools.build_mm_simulation(topology, system, positions, temperature=Quantity(value=300.0, unit=kelvin), friction=Quantity(value=1.0, unit=/picosecond), simulation_time_step=None, total_simulation_time=Quantity(value=1.0, unit=picosecond), output_traj=None, output_data=None, print_frequency=100)[source]

Build an OpenMM Simulation()

Parameters
  • topology (Topology()) – OpenMM Topology()

  • system (System()) – OpenMM System()

  • positions (Quantity() ( np.array( [cgmodel.num_beads,3] ), simtk.unit )) – Positions array for the model we would like to test

  • temperature (SIMTK Unit()) – Simulation temperature, default = 300.0 K

  • friction – Langevin thermostat friction coefficient, default = 1 / ps

  • simulation_time_step – Simulation integration time step

  • total_simulation_time – Total run time for individual simulations

  • output_traj (str) – Output destination for trajectory coordinates (.pdb or .dcd), Default = None

  • output_data (str) – Output destination for non-coordinate simulation data, Default = None

  • print_frequency – Number of simulation steps to skip when writing to output, Default = 100

Returns

Example

>>> from simtk import unit
>>> from foldamers.cg_model.cgmodel import CGModel
>>> cgmodel = CGModel()
>>> topology = cgmodel.topology
>>> system = cgmodel.system
>>> positions = cgmodel.positions
>>> temperature = 300.0 * unit.kelvin
>>> friction = 1.0 / unit.picosecond
>>> simulation_time_step = 5.0 * unit.femtosecond
>>> total_simulation_time= 1.0 * unit.picosecond
>>> output_traj = "output.pdb"
>>> output_data = "output.dat"
>>> print_frequency = 20
>>> openmm_simulation = build_mm_simulation(topology,system,positions,temperature=temperature,friction=friction,simulation_time_step=simulation_time_step,total_simulation_time=total_simulation_time,output_traj=output_traj,output_data=output_data,print_frequency=print_frequency)
cg_openmm.simulation.tools.get_mm_energy(topology, system, positions)[source]

Get the OpenMM potential energy for a system, given a topology and set of positions.

Parameters
  • topology – OpenMM Topology()

  • system – OpenMM System()

  • positions – Positions array for the model we would like to test

Returns

  • potential_energy ( Quantity() ) - The potential energy for the model with the provided positions.

Example

>>> from foldamers.cg_model.cgmodel import CGModel
>>> cgmodel = CGModel()
>>> topology = cgmodel.topology
>>> system = cgmodel.system
>>> positions = cgmodel.positions
>>> openmm_potential_energy = get_mm_energy(topology,system,positions)
cg_openmm.simulation.tools.minimize_structure(cgmodel, positions, tol=0.1, max_iter=1000, timestep=Quantity(value=5, unit=femtosecond), output_file='minimized_structure.pdb')[source]

Minimize the potential energy

Parameters
  • cgmodel (class) – CGModel() object containing openmm system and topology objects

  • positions – Positions array for the structure to be minimized

  • output_file (str) – Output destination for minimized structure file (including extension - ‘dcd’ and ‘pdb’ supported)

Returns

  • positions ( Quantity() ( np.array( [cgmodel.num_beads,3] ), simtk.unit ) ) - Minimized positions

  • initial_potential_energy ( Quantity() - Potential energy for the initial structure.

  • final_potential_energy ( Quantity() - Potential energy for the minimized structure.

  • simulation (Openmm simulation object for minimization run)

cg_openmm.simulation.tools.plot_simulation_data(simulation_times, y_data, plot_type=None, output_directory=None)[source]

Plot simulation data.

Parameters
  • simulation_times (List) – List of simulation times (x data)

  • y_data (List) – List of simulation data

  • plot_type (str) – Form of data to plot, Default = None, Valid options include: “Potential Energy”, “Kinetic Energy”, “Total Energy”, “Temperature”

Example

>>> import os
>>> from simtk import unit
>>> simulation_data_file = "output.pdb"
>>> simulation_time_step = 5.0 * unit.femtosecond
>>> simulation_data = read_simulation_data(simulation_data_file,simulation_time_step)
>>> simulation_times = simulation_data["Simulation Time"]
>>> y_data = simulation_data["Potential Energy"]
>>> plot_type = "Potential Energy"
>>> plot_simulation_data(simulation_times,y_data,plot_type="Potential Energy")
cg_openmm.simulation.tools.plot_simulation_results(simulation_data_file, plot_output_directory, simulation_time_step, total_simulation_time)[source]

Plot all data from an OpenMM output file

Parameters
  • simulation_data_file (str) – Path to file containing simulation data

  • plot_output_directory (str) – Path to folder where plotting results will be written.

  • simulation_time_step – Simulation integration time step

Example

>>> import os
>>> from simtk import unit
>>> simulation_data_file = "output.pdb"
>>> plot_output_directory = os.getcwd()
>>> simulation_time_step = 5.0 * unit.femtosecond
>>> plot_simulation_results(simulation_data_file,plot_output_directory,simulation_time_step)
cg_openmm.simulation.tools.read_simulation_data(simulation_data_file, simulation_time_step)[source]

Read OpenMM simulation data

Parameters
  • simulation_data_file (str) – Path to file that will be read

  • simulation_time_step – Time step to apply for the simulation data

Returns

  • data ( dict( “Simulation Time”: list,”Potential Energy”: list,”Kinetic Energy”: list,”Total Energy”: list,”Temperature”: list ) ) - A dictionary containing the simulation times, potential energies, kinetic energies, and total energies from an OpenMM simulation trajectory.

Example

>>> from simtk import unit
>>> simulation_data_file = "output.dat"
>>> simulation_time_step = 5.0 * unit.femtosecond
>>> data = read_simulation_data(simulation_data_file,simulation_time_step)
cg_openmm.simulation.tools.run_simulation(cgmodel, total_simulation_time, simulation_time_step, temperature, friction=Quantity(value=1.0, unit=/picosecond), print_frequency=1000, minimize=True, output_directory='output', output_traj='simulation.pdb', output_data='simulation.dat')[source]

Run OpenMM() simulation

Parameters
  • cgmodel (class) – CGModel() object

  • total_simulation_time – Total run time for individual simulations

  • simulation_time_step – Simulation integration time step

  • temperature – Simulation temperature, default = 300.0 K

  • friction – Langevin thermostat friction coefficient, default = 1 / ps

  • minimize (bool) – Whether or not the structure is energy-minimized before simulating.

  • print_frequency – Number of simulation steps to skip when writing to output, Default = 1000

  • output_directory (str) – Output directory for simulation data

  • output_traj (str) – file to write the trajectory to (with .pdb or .dcd extension)

  • output_data (str) – file to write the output data as a function of time.

Example

>>> import os
>>> from simtk import unit
>>> from foldamers.cg_model.cgmodel import CGModel
>>> cgmodel = CGModel()
>>> topology = cgmodel.topology
>>> system = cgmodel.system
>>> positions = cgmodel.positions
>>> temperature = 300.0 * unit.kelvin
>>> friction = 1.0 / unit.picosecond
>>> simulation_time_step = 5.0 * unit.femtosecond
>>> total_simulation_time= 1.0 * unit.picosecond
>>> output_directory = os.getcwd()
>>> output_traj = "output.pdb"
>>> output_data = "output.dat"
>>> print_frequency = 20
>>> run_simulation(cgmodel,total_simulation_time,simulation_time_step,temperature,friction,print_frequency,output_directory=output_directory,minimize=True,output_traj=output_traj,output_data=output_data)

Warning

When run with default options this subroutine is capable of producing a large number of output files. For example, by default this subroutine will plot the simulation data that is written to an output file.