Skip to content
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

Cis amides in cyclic peptides #10

Open
isohelio opened this issue Nov 18, 2024 · 5 comments
Open

Cis amides in cyclic peptides #10

isohelio opened this issue Nov 18, 2024 · 5 comments

Comments

@isohelio
Copy link

Hi,

I'm using pyPept to build simple peptide macrocycles. I'm finding the BILN notation extremely useful for this and the pyPept interface is very straightforward to use.

Unfortunately, there seems to be a problem with the geometry of peptide bonds in cyclic peptides. If I build a simple linear deca-alanine then the geometry is all sensible, entirely trans peptide bond (N-H points away from C=O).

run_pyPept --biln A-A-A-A-A-A-A-A-A-A

deca_alanine

If I cyclise that structure then essentially all of the peptide bonds become cis (N-H points in same direction as C=O).

run_pyPept --biln 'A(1,1)-A-A-A-A-A-A-A-A-A(1,2)'

cyclic_deca_alanine

I think non-proline peptide bonds are nearly always trans even in relatively small cyclic peptides.
e.g. as seen in PDB structure 7zkr.

Is this a known problem, or a misunderstanding on my part?

Many thanks,
Mikie

deca_alanine

@isohelio
Copy link
Author

Attaching pdb file output for the two structures.

pept.zip

@amin-sagar
Copy link

Hello.
I have the same observation. I tried to generate a bicyclic peptide as mentioned in #9 and all the peptide bonds are in cis conformation.

Best,
Amin.

@foxth
Copy link
Contributor

foxth commented Nov 28, 2024

Ah, that's a problem of the underlying rdkit routine to produce a 3D structure. We simply pass our molecule object to rdkit's ETKDGv3 coordinate generator. And as this is a distance geometry procedure, anything might come out of this. For small ring sizes, cis-amides are the only way to get the ring closed, so Im not sure there is a general way to avoid this. Maybe playing with some of the options of ETKDGv3 might help, but I havent tried these.
This is even a problem when generating 2D structures (again, here we rely on rdkits rdDepictor module): I have generated cyclic poly-Ala with different ring sizes, and the larger they get the better rdkit is in producing trans-amides.
2d_peptides
But even this doesnt always help you: for cAla10, the 2D structure looks perfectly fine, all trans, but when I load that into moe and do a minimization to obtain a 3D conformer, I end up with one cis bond in the peptide.

So no easy solution here, Im afraid. Maybe posting the problem to the rdkit list - they might have a solution to this (I believe there are ways to set some constraints for the DG algorithm, so one would be a minimum distance between the NH and the carbonyl oxygen for all the amide bonds, but I have never done this). I just skimmed through the rdkit documentation - there is a flag to enforce trans-amides (https://www.rdkit.org/docs/source/rdkit.Chem.rdDistGeom.html -> forceTransAmides); this could be the way to go...

Best,
Th.

@isohelio
Copy link
Author

Hi,

thanks for the assessment. I was just coming to the same conclusion that the problem was arising in RDKit.

I think trans peptides are almost universal even in small peptide macrocycles. Here is one from PDB 7tb1.

image

I had not seen that setting for trans peptides, will see if I can activate it.

Regards,
Mike

@isohelio
Copy link
Author

Hi,

Ok, I modified conformer.py after line ~317 as shown below

            parameters.useRandomCoords = True
            print("settings forceTransAmides")
            parameters.forceTransAmides = True
            AllChem.EmbedMolecule(romol, parameters)

Running cyclic alanine reports

settings forceTransAmides
15:02:29   INFO:File generated: cyclic_deca_alanine.png.
15:02:29   INFO:File generated: cyclic_deca_alanine.pdb.

But alas output is still all cis.

Reading rdkit/rdkit#3794 seems to suggest that it is the default.

I will report the problem at RDKit, and see if there is any possibility for a solution.

image

Thanks
Mike

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants