Discussion:
[Rdkit-discuss] RMSD value between two non-covalent molecular complexes
gosia olejniczak
2017-06-21 13:47:55 UTC
Permalink
dear RDKit experts,

is it possible to calculate RMSD value between two non-covalent molecular
complexes?

For instance:
complex1: X(conformer1) + H2O
complex2: X(conformer2) + H2O

i tried GetBestRMS and GetO3A.Align but the program clearly neglects H2O
and calculates the RMSD only between X(conformer1) and X(conformer2)

thank you!
best regards,
gosia
Paolo Tosco
2017-06-21 14:01:51 UTC
Permalink
Hi Gosia,

you may want to look at the CombineMols() function in the rdmolops
module. If you make a single molecule out of the two fragments, then you
should manage to get what you are looking for.

Cheers,
p.
Post by gosia olejniczak
dear RDKit experts,
is it possible to calculate RMSD value between two non-covalent
molecular complexes?
complex1: X(conformer1) + H2O
complex2: X(conformer2) + H2O
i tried GetBestRMS and GetO3A.Align but the program clearly neglects
H2O and calculates the RMSD only between X(conformer1) and X(conformer2)
thank you!
best regards,
gosia
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Rdkit-discuss mailing list
https://lists.sourceforge.net/lists/listinfo/rdkit-discuss
gosia olejniczak
2017-06-22 14:20:49 UTC
Permalink
Hi again,

i found where the problem was (it seems):

as i was reading in molecules from sdf file through "SDMolSupplier" by
doing:

suppl = Chem.SDMolSupplier(filename)

the hydrogen atoms were removed (what was not obvious since e.g.
GetNumAtoms with "heavy" flag was returning the total number of atoms -
including hydrogens, but none of the functions like "GetAtomIdx" etc. was
seeing hydrogens - i looked in the code, maybe it is because in the
"Code/GraphMol/ROMol.cpp" in all such functions the "GetNumAtoms" and not
"GetNumHeavyAtoms" is called?)

then i guess that it must have messed up something somewhere, so that
instead of seeing "x+h2o" the code did as if there was only "x" on a file

but if i read in the molecules as:
suppl = Chem.SDMolSupplier(filename, removeHs=False)

then all seems to be ok (rmsd values seem to include h2o; also h2o are
drawn with py3Dmol);

best regards,
gosia
Hi Paolo,
Thank you for the prompt answer!
- the whole complex "X+h2o" is read from one sdf file
- Chem.Mol.GetNumAtoms gives the correct number of atoms (= it includes
h2o) [*]
so i'm wondering what is the best way to specify two fragments "x" and
"h2o", so that i could use them as arguments to CombineMols()?
1. search for h2o pattern in "x+h2o" (GetSubstructMatch)
2. remove h2o from the "x+h2o" complex (DeleteSubstruct) and get only "x"
-> save it
3. remove x from the "x+h2o" complex (DeleteSubstruct) and get only "h2o"
-> save it
4. then finally use CombineMols() with separate fragments from 2. and 3.?
that seems a bit silly, maybe there is a simpler way?
thank you!
all the best,
gosia
[*] still, the plot of its 3D structure drawn with py3Dmol only shows "x"
and not "x+h2o"...
Post by Paolo Tosco
Hi Gosia,
you may want to look at the CombineMols() function in the rdmolops
module. If you make a single molecule out of the two fragments, then you
should manage to get what you are looking for.
Cheers,
p.
dear RDKit experts,
is it possible to calculate RMSD value between two non-covalent molecular
complexes?
complex1: X(conformer1) + H2O
complex2: X(conformer2) + H2O
i tried GetBestRMS and GetO3A.Align but the program clearly neglects H2O
and calculates the RMSD only between X(conformer1) and X(conformer2)
thank you!
best regards,
gosia
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
------------------------------------------------------------
------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Rdkit-discuss mailing list
https://lists.sourceforge.net/lists/listinfo/rdkit-discuss
Francois BERENGER
2017-06-22 23:41:12 UTC
Permalink
Post by gosia olejniczak
Hi again,
as i was reading in molecules from sdf file through "SDMolSupplier" by
suppl = Chem.SDMolSupplier(filename)
the hydrogen atoms were removed (what was not obvious since e.g.
GetNumAtoms with "heavy" flag was returning the total number of atoms -
including hydrogens, but none of the functions like "GetAtomIdx" etc.
was seeing hydrogens - i looked in the code, maybe it is because in the
"Code/GraphMol/ROMol.cpp" in all such functions the "GetNumAtoms" and
not "GetNumHeavyAtoms" is called?)
then i guess that it must have messed up something somewhere, so that
instead of seeing "x+h2o" the code did as if there was only "x" on a file
suppl = Chem.SDMolSupplier(filename, removeHs=False)
I was also surprised recently by this quite unfortunate default
parameter value, when reading some carefully prepared 3D conformers,
with hydrogens and partial charges ...
Post by gosia olejniczak
then all seems to be ok (rmsd values seem to include h2o; also h2o are
drawn with py3Dmol);
best regards,
gosia
Hi Paolo,
Thank you for the prompt answer!
- the whole complex "X+h2o" is read from one sdf file
- Chem.Mol.GetNumAtoms gives the correct number of atoms (= it
includes h2o) [*]
so i'm wondering what is the best way to specify two fragments "x"
and "h2o", so that i could use them as arguments to CombineMols()?
1. search for h2o pattern in "x+h2o" (GetSubstructMatch)
2. remove h2o from the "x+h2o" complex (DeleteSubstruct) and get
only "x" -> save it
3. remove x from the "x+h2o" complex (DeleteSubstruct) and get only
"h2o" -> save it
4. then finally use CombineMols() with separate fragments from 2. and 3.?
that seems a bit silly, maybe there is a simpler way?
thank you!
all the best,
gosia
[*] still, the plot of its 3D structure drawn with py3Dmol only
shows "x" and not "x+h2o"...
Hi Gosia,
you may want to look at the CombineMols() function in the
rdmolops module. If you make a single molecule out of the two
fragments, then you should manage to get what you are looking for.
Cheers,
p.
Post by gosia olejniczak
dear RDKit experts,
is it possible to calculate RMSD value between two
non-covalent molecular complexes?
complex1: X(conformer1) + H2O
complex2: X(conformer2) + H2O
i tried GetBestRMS and GetO3A.Align but the program clearly
neglects H2O and calculates the RMSD only between
X(conformer1) and X(conformer2)
thank you!
best regards,
gosia
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org!http://sdm.link/slashdot
_______________________________________________
Rdkit-discuss mailing list
https://lists.sourceforge.net/lists/listinfo/rdkit-discuss
<https://lists.sourceforge.net/lists/listinfo/rdkit-discuss>
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Rdkit-discuss mailing list
https://lists.sourceforge.net/lists/listinfo/rdkit-discuss
<https://lists.sourceforge.net/lists/listinfo/rdkit-discuss>
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Rdkit-discuss mailing list
https://lists.sourceforge.net/lists/listinfo/rdkit-discuss
Loading...