schrodinger.application.desmond.fepana module

Tools for various FEP-related analyses.

Copyright Schrodinger, LLC. All rights reserved.

class schrodinger.application.desmond.fepana.Restraint(atom, ref, k)

Bases: object

__init__(atom, ref, k)
schrodinger.application.desmond.fepana.get_energy_table(fname, term_list)

columns: (0, 0) (0, 1) (1, 1) … “total” rows : frame1, frame2, frame3, …

Separate table for each term. table[row][col]

schrodinger.application.desmond.fepana.get_global_quantity(fname, quantity_list)
schrodinger.application.desmond.fepana.get_mean(ene, index=- 1, data_structure='table')

Returns (mean, std_error, std_dev,).

schrodinger.application.desmond.fepana.parse_eneseq(eneseq_fname)

Returns a 1D structured array with names equal to the column names

Parameters

eneseq_fname – eneseq file name.

schrodinger.application.desmond.fepana.init_bennett(data: Union[str, numpy.ndarray], n_win=12, temperature=300.0, begin_time=100.0, end_time=- 1.0, random_seed=2111839, result_file=None, nresamples=0, file_pattern='gibbs.%d.dE')
Parameters

data – Either a directory or a numpy array.

As a directory, it must contain the dE files, which are named after the pattern specified by the file_pattern argument.

As a numpy array, it is the dE data read from the dE files. The data is an MxNx3 array, where M is the number of lambda windows, N the number of time points, and the 3 are (time, forward energy, reverse energy).

schrodinger.application.desmond.fepana.run_bennett(bar, begin_time=100.0, end_time=- 1.0, nresamples=None)
schrodinger.application.desmond.fepana.are_times_invalid(begin_time, end_time)

Are the given begin and end times reasonable?

schrodinger.application.desmond.fepana.get_delta_time(begin_time, end_time, delta_time, window=0)
schrodinger.application.desmond.fepana.calc_free_energy_time_function(dir, last_time, n_win, temperature=300.0, begin_time=100.0, end_time=- 1.0, delta_time=30.0, random_seed=2111839)

Calculates the free energy as a function of time.

schrodinger.application.desmond.fepana.calc_free_energy_rtime_function(dir, last_time, n_win, temperature=300.0, begin_time=100.0, end_time=- 1.0, delta_time=30.0, random_seed=2111839)

Calculates the free energy as a function of reversed time.

schrodinger.application.desmond.fepana.calc_free_energy_stime_function(dir, last_time, n_win, temperature=300.0, begin_time=100.0, end_time=- 1.0, delta_time=30.0, window=500.0, random_seed=2111839)

Calculates the free energy as a function of time with sliding window.

schrodinger.application.desmond.fepana.calc_freeenergy_time_function(dir, last_time, n_win, temperature=300.0, begin_time=100.0, end_time=- 1.0, delta_time=30.0, random_seed=2111839)

Calculates the free energy as a function of time.

schrodinger.application.desmond.fepana.calc_freeenergy_rtime_function(dir, last_time, n_win, temperature=300.0, begin_time=100.0, end_time=- 1.0, delta_time=30.0, random_seed=2111839)

Calculates the free energy as a function of reversed time.

schrodinger.application.desmond.fepana.calc_freeenergy_stime_function(dir, last_time, n_win, temperature=300.0, begin_time=100.0, end_time=- 1.0, delta_time=30.0, window=500.0, random_seed=2111839)

Calculates the free energy as a function of time with sliding window.

exception schrodinger.application.desmond.fepana.TimeSanityException

Bases: Exception

schrodinger.application.desmond.fepana.cleanup_time(begin_time, end_time, last_time, delta_time, window=0)
schrodinger.application.desmond.fepana.calc_time_curve(dir, n_win, temperature, begin_time, end_time, random_seed, time_ranges)

Calculates the free energy as a function of time_ranges

class schrodinger.application.desmond.fepana.DeltaEnergy

Bases: object

__init__()
schrodinger.application.desmond.fepana.read_dE_file(dE_fname, time_range=None)
schrodinger.application.desmond.fepana.calc_work_prob_distr(energy, energy_range=None)
schrodinger.application.desmond.fepana.calc_forward_reversed_work_overlap(dE0, dE1)
schrodinger.application.desmond.fepana.calc_lambda_window_overlap(dE_fname0, dE_fname1, time_range)
schrodinger.application.desmond.fepana.plot_lambda_window_overlap(dE_fname0, dE_fname1, out_fname=None, legend=None, time_range=None, filename=None, reporter=None)
schrodinger.application.desmond.fepana.calc_lambda_sim_matrix(num_lambda, *gibbs_dname, **kw)
schrodinger.application.desmond.fepana.get_pathway(mat)
schrodinger.application.desmond.fepana.print_pathway(pathway)
class schrodinger.application.desmond.fepana.FreeEnergyContrib(coulomb=None, vdw=None, bonded=None)

Bases: object

__init__(coulomb=None, vdw=None, bonded=None)
schrodinger.application.desmond.fepana.calc_contrib(fname, cfg_fname)
schrodinger.application.desmond.fepana.correct_restr(egout0, egout1, fname_out)
schrodinger.application.desmond.fepana.long_range_dispersion_energy(r_cut, c6, rho)

r_cut: cutoff radius (Angstrom). c6: average dispersion coefficient (kcal/mol * Angstrom**6). rho: number density (1/ Angstrom**3)

schrodinger.application.desmond.fepana.get_field_from_log(field, fname)
schrodinger.application.desmond.fepana.get_number_density_from_cms(model)

Returns a tuple of elements as follows: 1. the number density in the unit of 1 / Angstrom**3 2. number of atoms in the system 3. volume of the system

schrodinger.application.desmond.fepana.get_average_box_volume(fname)

‘fname’ must be a *_simbox.dat file.

schrodinger.application.desmond.fepana.calc_long_range_dispersion_energy(model, atom_list, log_fname=None, simbox_fname=None, cfg_fname=None, r_cut=- 1, average_coefficient=- 1)

Calculates correction for the cross link restraints in absolute binding free energy simulations.

Reference: Boresch, Stefan, Franz Tettinger, Martin Leitgeb, and Martin Karplus. Absolute Binding Free Energies: A Quantitative Approach for Their Calculation. The Journal of Physical Chemistry B 107, no. 35 (September 2003): 9535-9551. http://pubs.acs.org/doi/abs/10.1021/jp0217839.

Note: We could not reproduce the numbers on the 5th row of Table 5 in the reference.

Calculates correction for the cross link restraints in absolute binding free energy simulations.

We use Huangfeng Xu’s formula. The partition function of the restraint terms is this:

Z = \int dr r^2 exp( -\beta kr (r - r0)^2 )
    \Prod_{i = 1, 2   } \int_0^\pi d\theta_i \sin\theta_i exp( -\beta ka (\theta_i - \theta_{i0})^2 )
    \Prod_{i = 1, 2, 3} \int_{\psi_{i0} - \pi}^{\psi_{i0} + \pi} d\psi_i exp( -\beta kd (\psi_i - \psi_{i0})^2 )

The integration over theta is approximated by integration over {-inf, inf}.

schrodinger.application.desmond.fepana.calc_free_energy_correction_due_to_restraint(r, fc, temperature) float
Parameters
  • r – Cross-link restraint to calculate the free energy correction for

  • fc – Three force constants for the stretch, the angle, and the torsion restraints, respectively.

the model should be created by the topo.read_cms function ligand is a list of ligand atoms’ indices.

schrodinger.application.desmond.fepana.calc_free_energy(dir, last_time: float, n_win: int, temperature: float, bennett_options: Dict, random_seed: int) Dict

Return forward, reverse and slide energies.

schrodinger.application.desmond.fepana.plot_convergence(data, dG_fname, dF_fname_pattern, x_label, dF_color, dG_color='black', reporter=None) Dict[str, Union[List[str], str]]

process the data and write png files.

Return a dictionary with format {‘url’: url, ‘dF’: df, ‘dG’: dG_fname}