Skip to content
Snippets Groups Projects
Commit b68f5e4e authored by Studer Gabriel's avatar Studer Gabriel
Browse files

code cleanup

parent f175d4c1
No related branches found
No related tags found
No related merge requests found
......@@ -8,7 +8,7 @@ def _PreprocessStructures(mdl, ref, mdl_ch1, mdl_ch2, ref_ch1, ref_ch2,
Sets int properties to each residue in mdl_ch1, mdl_ch2 as well as
the respective reference chains.
dockq_mapped: 1 if a residues in mdl_ch1 is mapped to a residue in ref_ch1
dockq_mapped: 1 if a residues in mdl_ch1 is mapped to a residue in ref_ch1
and vice versa, 0 otherwise. Same is done for mdl_ch2 and
ref_ch2.
dockq_idx: If a pair of residue is mapped, the same index will be set
......@@ -136,7 +136,8 @@ def _GetContacts(ent, ch1, ch2, dist_thresh):
r2.GetIntProp("dockq_idx")))
return contacts
def _ContactScores(mdl, ref, mdl_ch1, mdl_ch2, ref_ch1, ref_ch2, dist_thresh=5.0):
def _ContactScores(mdl, ref, mdl_ch1, mdl_ch2, ref_ch1, ref_ch2,
dist_thresh=5.0):
ref_contacts = _GetContacts(ref, ref_ch1, ref_ch2, dist_thresh)
mdl_contacts = _GetContacts(mdl, mdl_ch1, mdl_ch2, dist_thresh)
......@@ -155,45 +156,44 @@ def _ContactScores(mdl, ref, mdl_ch1, mdl_ch2, ref_ch1, ref_ch2, dist_thresh=5.0
def _RMSDScores(mdl, ref, mdl_ch1, mdl_ch2, ref_ch1, ref_ch2, dist_thresh=10.0):
# backbone atoms used for superposition
sup_atoms = ['CA','C','N','O']
# make mapped residues accessible by the dockq_idx property
mapped_mdl = mdl.Select(f"cname={mdl_ch1},{mdl_ch2} and grdockq_mapped=1")
mapped_ref = ref.Select(f"cname={ref_ch1},{ref_ch2} and grdockq_mapped=1")
mdl_ch1_residues = mapped_mdl.FindChain(mdl_ch1).residues
mdl_ch1_residues = {r.GetIntProp("dockq_idx"): r for r in mdl_ch1_residues}
mdl_ch2_residues = mapped_mdl.FindChain(mdl_ch2).residues
mdl_ch2_residues = {r.GetIntProp("dockq_idx"): r for r in mdl_ch2_residues}
ref_ch1_residues = mapped_ref.FindChain(ref_ch1).residues
ref_ch1_residues = {r.GetIntProp("dockq_idx"): r for r in ref_ch1_residues}
ref_ch2_residues = mapped_ref.FindChain(ref_ch2).residues
ref_ch2_residues = {r.GetIntProp("dockq_idx"): r for r in ref_ch2_residues}
ch = mapped_mdl.FindChain(mdl_ch1)
mdl_ch1_residues = {r.GetIntProp("dockq_idx"): r for r in ch.residues}
ch = mapped_mdl.FindChain(mdl_ch2)
mdl_ch2_residues = {r.GetIntProp("dockq_idx"): r for r in ch.residues}
ch = mapped_ref.FindChain(ref_ch1)
ref_ch1_residues = {r.GetIntProp("dockq_idx"): r for r in ch.residues}
ch = mapped_ref.FindChain(ref_ch2)
ref_ch2_residues = {r.GetIntProp("dockq_idx"): r for r in ch.residues}
# iRMSD
#######
int1 = ref.Select(f"cname={ref_ch1} and {dist_thresh} <> "
f"[cname={ref_ch2}]")
int2 = ref.Select(f"cname={ref_ch2} and {dist_thresh} <> "
f"[cname={ref_ch1}]")
int1_indices = [r.GetIntProp("dockq_idx") for r in int1.residues]
int2_indices = [r.GetIntProp("dockq_idx") for r in int2.residues]
int1 = ref.Select(f"cname={ref_ch1} and {dist_thresh} <> [cname={ref_ch2}]")
int2 = ref.Select(f"cname={ref_ch2} and {dist_thresh} <> [cname={ref_ch1}]")
ref_pos = geom.Vec3List()
mdl_pos = geom.Vec3List()
atom_names = ['CA','C','N','O']
for idx in int1_indices:
for r in int1.residues:
idx = r.GetIntProp("dockq_idx")
if idx in ref_ch1_residues and idx in mdl_ch1_residues:
ref_r = ref_ch1_residues[idx]
mdl_r = mdl_ch1_residues[idx]
for aname in atom_names:
for aname in sup_atoms:
ref_a = ref_r.FindAtom(aname)
mdl_a = mdl_r.FindAtom(aname)
if ref_a.IsValid() and mdl_a.IsValid():
ref_pos.append(ref_a.pos)
mdl_pos.append(mdl_a.pos)
for idx in int2_indices:
for r in int2.residues:
idx = r.GetIntProp("dockq_idx")
if idx in ref_ch2_residues and idx in mdl_ch2_residues:
ref_r = ref_ch2_residues[idx]
mdl_r = mdl_ch2_residues[idx]
for aname in atom_names:
for aname in sup_atoms:
ref_a = ref_r.FindAtom(aname)
mdl_a = mdl_r.FindAtom(aname)
if ref_a.IsValid() and mdl_a.IsValid():
......@@ -230,14 +230,14 @@ def _RMSDScores(mdl, ref, mdl_ch1, mdl_ch2, ref_ch1, ref_ch2, dist_thresh=10.0):
ref_ligand_positions = geom.Vec3List()
mdl_ligand_positions = geom.Vec3List()
for ref_r, mdl_r in zip(ref_receptor_residues, mdl_receptor_residues):
for aname in atom_names:
for aname in sup_atoms:
ref_a = ref_r.FindAtom(aname)
mdl_a = mdl_r.FindAtom(aname)
if ref_a.IsValid() and mdl_a.IsValid():
ref_receptor_positions.append(ref_a.pos)
mdl_receptor_positions.append(mdl_a.pos)
for ref_r, mdl_r in zip(ref_ligand_residues, mdl_ligand_residues):
for aname in atom_names:
for aname in sup_atoms:
ref_a = ref_r.FindAtom(aname)
mdl_a = mdl_r.FindAtom(aname)
if ref_a.IsValid() and mdl_a.IsValid():
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment