Skip to content

Commit 789d298

Browse files
committed
Support for restraints in cpydock
1 parent fb50b1c commit 789d298

File tree

2 files changed

+18
-8
lines changed

2 files changed

+18
-8
lines changed

lightdock/scoring/cpydock/driver.py

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ class CPyDockModel(DockingModel):
2525
def __init__(self, objects, coordinates, restraints, charges,
2626
vdw_energy, vdw_radii, des_energy, des_radii, sasa, hydrogens,
2727
reference_points=None, n_modes=None):
28-
super(CPyDockModel, self).__init__(objects, coordinates, reference_points)
28+
super(CPyDockModel, self).__init__(objects, coordinates, restraints, reference_points)
2929
self.charges = charges
3030
self.vdw_energy = vdw_energy
3131
self.vdw_radii = vdw_radii
@@ -49,8 +49,15 @@ class CPyDockAdapter(ModelAdapter):
4949
"""
5050
def _get_docking_model(self, molecule, restraints):
5151
atoms = molecule.atoms
52+
parsed_restraints = {}
5253
# Assign properties to atoms
53-
for atom in atoms:
54+
for atom_index, atom in enumerate(atoms):
55+
res_id = "%s.%s.%s" % (atom.chain_id, atom.residue_name, str(atom.residue_number))
56+
if restraints and res_id in restraints:
57+
try:
58+
parsed_restraints[res_id].append(atom_index)
59+
except:
60+
parsed_restraints[res_id] = [atom_index]
5461
res_name = atom.residue_name
5562
atom_name = atom.name
5663
if res_name == "HIS":
@@ -95,12 +102,11 @@ def _get_docking_model(self, molecule, restraints):
95102
log.info('Done.')
96103

97104
reference_points = ModelAdapter.load_reference_points(molecule)
98-
99105
try:
100-
return CPyDockModel(atoms, coordinates, restraints, elec_charges, vdw_energies, vdw_radii, des_energy, des_radii,
106+
return CPyDockModel(atoms, coordinates, parsed_restraints, elec_charges, vdw_energies, vdw_radii, des_energy, des_radii,
101107
sasa, hydrogens, reference_points=reference_points, n_modes=molecule.n_modes.copy())
102108
except AttributeError:
103-
return CPyDockModel(atoms, coordinates, restraints, elec_charges, vdw_energies, vdw_radii, des_energy, des_radii,
109+
return CPyDockModel(atoms, coordinates, parsed_restraints, elec_charges, vdw_energies, vdw_radii, des_energy, des_radii,
104110
sasa, hydrogens, reference_points=reference_points)
105111

106112

@@ -125,9 +131,13 @@ def __call__(self, receptor, receptor_coordinates, ligand, ligand_coordinates):
125131
receptor.vdw_radii, ligand.vdw_radii,
126132
receptor.hydrogens, ligand.hydrogens,
127133
receptor.sasa, ligand.sasa,
128-
receptor.des_energy, ligand.des_energy)
134+
receptor.des_energy, ligand.des_energy,
135+
3.9)
129136
solv = -1*(solv_rec + solv_lig)
130-
return (elec + parameters.scoring_vdw_weight * vdw + solv)*-1.
137+
energy = (elec + parameters.scoring_vdw_weight * vdw + solv)*-1.
138+
perc_receptor_restraints = ScoringFunction.restraints_satisfied(receptor.restraints, set(interface_receptor))
139+
perc_ligand_restraints = ScoringFunction.restraints_satisfied(ligand.restraints, set(interface_ligand))
140+
return energy + perc_receptor_restraints * energy + perc_ligand_restraints * energy
131141

132142

133143
# Needed to dynamically load the scoring functions from command line

lightdock/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
"""Framework version"""
22

3-
CURRENT_VERSION = "0.5.1"
3+
CURRENT_VERSION = "0.5.2"

0 commit comments

Comments
 (0)