@@ -25,7 +25,7 @@ class CPyDockModel(DockingModel):
25
25
def __init__ (self , objects , coordinates , restraints , charges ,
26
26
vdw_energy , vdw_radii , des_energy , des_radii , sasa , hydrogens ,
27
27
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 )
29
29
self .charges = charges
30
30
self .vdw_energy = vdw_energy
31
31
self .vdw_radii = vdw_radii
@@ -49,8 +49,15 @@ class CPyDockAdapter(ModelAdapter):
49
49
"""
50
50
def _get_docking_model (self , molecule , restraints ):
51
51
atoms = molecule .atoms
52
+ parsed_restraints = {}
52
53
# 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 ]
54
61
res_name = atom .residue_name
55
62
atom_name = atom .name
56
63
if res_name == "HIS" :
@@ -95,12 +102,11 @@ def _get_docking_model(self, molecule, restraints):
95
102
log .info ('Done.' )
96
103
97
104
reference_points = ModelAdapter .load_reference_points (molecule )
98
-
99
105
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 ,
101
107
sasa , hydrogens , reference_points = reference_points , n_modes = molecule .n_modes .copy ())
102
108
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 ,
104
110
sasa , hydrogens , reference_points = reference_points )
105
111
106
112
@@ -125,9 +131,13 @@ def __call__(self, receptor, receptor_coordinates, ligand, ligand_coordinates):
125
131
receptor .vdw_radii , ligand .vdw_radii ,
126
132
receptor .hydrogens , ligand .hydrogens ,
127
133
receptor .sasa , ligand .sasa ,
128
- receptor .des_energy , ligand .des_energy )
134
+ receptor .des_energy , ligand .des_energy ,
135
+ 3.9 )
129
136
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
131
141
132
142
133
143
# Needed to dynamically load the scoring functions from command line
0 commit comments