@@ -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
0 commit comments