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
simulation ( Simulation() ) - OpenMM Simulation() object
- 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.