Hello. I'm using MMPAlignment to get the best overlay of two identical compounds (with differing 3D coordinates) and I'm getting an RMSD of -1.0. Since the RMSD is computed from the MCS, and the MCS includes the entire compound, it seems that the RMSD should be a sensible number (i.e., >= 0).
On a closely related note, is there a better way to find the best (lowest RMSD) 3D alignment of two identical compounds with differing 3D coordinates?
The MMPAlignment modifies the coordinates of the MCS part of the molecule to align such a way, that it will have the same coordinates as the MCS of the reference structure. For this calculation a series of flexible alignments, and special force field optimizations are carried out. The RMSD returned by the MMPAlignment represents the goodness of the fit of the two MCSes after this process. So, it should be be around 0 but of course still positive.
When the found MCS is too small with respect to the whole reference
structure, this complex process above falls
back to standard shape based alignment and the RMSD wll be -1.
MMPAlignment is benefical for studying pairs of very similar molecules, like matched molecule pairs.
For determinig rmsd between confromations, please see this other post:
Hope this helps, and sorry for the late answer.
Thank you for the response. I'm aligning a number of different conformers of the same molecule. In that case, one would expect that MMPAlignment would never return a RMSD of -1 given that the 2D structures of the query and target molecules are identical. However, I am still occasionally getting a return value of -1 for some reason. For example, in the case of one molecule I'm aligning 15 conformations against a single lowest energy conformation. 10 of the alignments return a positive RMSD and 4 of the alignments return -1. All of the conformations are very similar (RMSDs < 0.08).
Indeed, the MMPAlignment should not return RMSD = -1 for different conformations of the same structure. In your case of aligning different conformations of the same
structure, MMPAlignment should return RMSD=0. Here the value '-1' stands
for that the overlay of the MCS part was not successful.
MMPAlignment changes the "second" molecule in such a way, that the MCS part will have exactly the same coordinates as the MCS of the "first" molecule. While the non MCS parts of the "second" are flexibly overlayed to the "first" by maximizing the a shape/chemical atomtype function.The RMSD returned by the program is calculated for the MCS atoms. I am wondering if this is that you really what to achieve with the two conformations.
If you could send me over the molecule pair, that results in this behavior, along with the code snippet you are using, we can either fix MMPAlignment, or suggest some other tool, that may better suites your usecase.
Thank you for the rapid response. Maybe there is a better more direct way to do what I'm trying to do. I'm simply trying to align (superpose) N-1 conformations of a single molecule on the lowest evergy conformation of that molecule in a rigid fashion. In other words, suppose I have compute N conformations for a single molecule. Next, I select one conformer from the ensemble to be my reference. Following that, I want to rotate and translate the remaining N-1 conformers in a way as to minimized the RMSD of each conformer with respect to the reference conformer. Finally, I want to be to get the RMSD and rotated/translated coordinates for each of the N-1 conformers. Does that make sense?
We are considering the different possibilities for you to serve a good solution. We will get back to you soon.
The mentioned functionality (rmsd calculation after conformation alignment) is not available in public API currently. We will provide you a small interface which contains the proper methods.
The typical usage of this interface:
final MCSAlignment alignment = MCSAlignment.Factory.createNew(Molecule reference);
final MCSAlignmentResult result = alignment.align(Molecule otherMolecule);
result.rmsd(); // rmsd value after alignment process
result.rotatedMolecule(); // otherMolecule with new rotated/translated coordinates
This interface will be released next week (Marvin version 15.7.20).
Please let us know if you have any further question.
Thanks. I am looking forward to trying out the new functionality.
Hello. This does not do what I want. I would like to align molecules in a RIGID fashion. In other words, the query molecule is to be rotated and translated in order to minimize the RMSD with the reference (target) molecule. Bond lengths and angles in the query molecule should not be altered. Thanks.
This calculation does exactly what you need.
Bond lengths and angles in the query molecule should not be altered.
The reference and aligned molecule are also rigid, their bonds and angles is not changed.
Could you send us an example (the two conformers) which shows the unexpected behavior?
Hello. I'm getting an Exception when using the rigid alignment code above. The input conformations look good to me, but I'm still getting the following Exception and I'm wondering if you can give me clue as to what I'm doing wrong from the stack trace. Thanks!
This exception is thrown if the reference molecule contains more atoms than the aligned molecule, e.g. the count of hydrogens in molecules are different.
We have fixed this issue and the fix will be available next week (Marvin version 15.9.14).