-
Notifications
You must be signed in to change notification settings - Fork 71
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Problems of determination of ligand-protein interactions #68
Comments
I analyzed the attached files and found issues in ProLIF rules. Hope this will simplify analysis and fixing. case 1: import prolif as plf
from rdkit import Chem
protein_fname = '5es1_last_connect_wo_asn.pdb'
mols = Chem.SDMolSupplier('10222_pymol.sdf', removeHs=False)
prot = plf.Molecule(Chem.MolFromPDBFile(protein_fname, removeHs=False))
fp = plf.Fingerprint()
m = plf.Molecule.from_rdkit(mols[0])
fps = fp.run_from_iterable([m], prot, n_jobs=1)
df = fps.to_dataframe()
print(df.transpose()) Output;
Here are two issues:
case 2: protein_fname = '2414_protein_frame3.pdb'
mols = Chem.SDMolSupplier('2414_ligand_frame3_censor.sdf', removeHs=False)
prot = plf.Molecule(Chem.MolFromPDBFile(protein_fname, removeHs=False))
fp = plf.Fingerprint()
m = plf.Molecule.from_rdkit(mols[0])
fps = fp.run_from_iterable([m], prot, n_jobs=1)
df = fps.to_dataframe()
print(df.transpose()) Output:
Here is the same issue with pi-stacking in Tyr84 and a new issue with Ala85. I suggest:
I looked at other patterns in the paper and found further potential issues:
It might be convenient if patterns will be provided as arguments for those pre-defined interactions and a user can changes them easily. Currently, as far as I understand, the only option is to create a custom class, but then a user should copy-paste all other code from default classes. |
Hi both of you, and thanks a lot @DrrDom for contributing. The SMARTS patterns used in ProLIF are indeed too simple in some cases and can incorrectly detect or miss some interactions. It's something I've meant to change for quite some time now but never found the time. Regarding pi stacking, again, I have another more precise implementation in the works but haven't found the time to thoroughly test it. As for customizing interactions, you should just have to do this: class Hydrophobic(plf.interactions.Hydrophobic):
def __init__(self):
super().__init__(
hydrophobic="[$([#6])&!$([#6X4H0]),$([#16])&!$([#16X3])&!$([#16X4]),F,Cl,Br,I;+0]"
) and the code that actually runs the interaction detection will be inherited from the original hydrophobic class, but it will use the overwritten hydrophobic smarts pattern. Best, |
Thanks for the example! It might be reasonable to open a discussion on pharmacophore patterns or transfer this issue to discussions. I'm still not completely sure how hydrophobic pattern should be changed. It may be further extended. For example, should we recognize close methyl and carbonyl groups as hydrophobic contacts or not? I also found another issue. This time with the pattern encoding positive center. It neglects delocalization of charge in conjugated systems. For example, there are two oxygens in a carboxyl group and only one has an explicit charge. This group may interact with a charged NH3+ group. However, if a charged oxygen looks away from NH3+ only a H-bond will be detected; This issue is not that critical as a previous one because charged contacts are rarely occurred and nevertheless there will be H-bond contacts, but it would be good to solve it as well. |
@DrrDom yes good suggestion, I've created a discussion #77. And yes, ProLIF doesn't really consider charge delocalization and resonance structures. |
- The SMARTS for the following groups have been updated to a more accurate definition: - HBond acceptor: exclude amides and some amines, exclude biaryl ethers and alkoxy oxygen from esters, include aromatic nitrogens, - Anion: include resonance forms of carboxylic, sulfonic and phosphorus acids, - Cation: include amidine and guanidine, - Metal ligand: exclude amides and some amines. Co-authored-by: Cédric Bouysset <[email protected]>
Hi,
I tried to use ProLIF for my complexes and found some points about which I would like to clarify. PiStacking is found by ProLIF in the first complex (2414_protein_frame3.pdb and 2414_ligand_frame3_censor.sdf), but the geometry of the fragments of pyrimidine and TYR84 does not imply interaction during visual inspection. The second question on this complex is devoted to the fact that the ALA85.AHBAcceptor interaction is not found, while the GLU83.AHBDonor tool determines. By visual inspection, these two interactions are determined. The same result was found for another complex (2414_protein_frame2.pdb and 2414_ligand_frame2_censor.sdf).
To determine the protein-ligand interactions used the following code:
Also for the third complex (5es1_last_connect_wo_asn.pdb and 10222_pymol.sdf) is found ALA85.AHBDonor, although this interaction is not obvious during visual inspection.
Could you check please if the tool works correctly in this case? All files of complexes are attached.
Kind regards,
Guzel
files.zip
The text was updated successfully, but these errors were encountered: