Re: [Rdkit-discuss] Question about generating configurational isomerism

2017-01-28 Thread Jacob Durrant
Worked great! Thanks for your help, Pavel.

On Sat, Jan 28, 2017 at 1:52 AM Pavel Polishchuk 
wrote:

> Hi Jacob,
>
>   you need to call AssignStereochemistry with force=True parameter
>   Chem.AssignStereochemistry(mol, force=True)
>
> Pavel.
>
> On 01/28/2017 05:43 AM, Jacob Durrant wrote:
>
> I'm trying to set the configuration of a molecule with a double bond, but
> it doesn't seem to be working. Here's my code:
>
> ===
> from rdkit.Chem import AllChem
> from rdkit import Chem
> from rdkit.Chem.rdchem import BondStereo
>
> # Make a molecule with a double bond, no stereo specified (cis or trans)
> smi = "NC(O)=C(C)S"
> mol = Chem.MolFromSmiles(smi)
>
> # Get that double bond
> double_bonds = [b.GetIdx() for b in mol.GetBonds() if
> b.GetBondTypeAsDouble() == 2 and b.GetStereo() is BondStereo.STEREONONE]
> double_bond_index = double_bonds[0]
> double_bond = mol.GetBondWithIdx(double_bond_index)
>
> # It's stereo is STEREONONE at this point
> print double_bond.GetStereo()
>
> # Get the bonds connected to the first and second atoms
> first_atom = double_bond.GetBeginAtom()
> bonds_connected_to_first_atom = first_atom.GetBonds()
>
> second_atom = double_bond.GetEndAtom()
> bonds_connected_to_second_atom = second_atom.GetBonds()
>
> # Get the indecies of those bonds, removing the central double bond.
> bonds_connected_to_first_atom_indecies = [b.GetIdx() for b in
> first_atom.GetBonds()]
> bonds_connected_to_first_atom_indecies.remove(double_bond_index)
>
> bonds_connected_to_second_atom_indecies = [b.GetIdx() for b in
> second_atom.GetBonds()]
> bonds_connected_to_second_atom_indecies.remove(double_bond_index)
>
> # Set the directions of the for bonds connected to this double bond.
>
> mol.GetBondWithIdx(bonds_connected_to_first_atom_indecies[0]).SetBondDir(Chem.BondDir.ENDUPRIGHT)
>
> mol.GetBondWithIdx(bonds_connected_to_first_atom_indecies[1]).SetBondDir(Chem.BondDir.ENDDOWNRIGHT)
>
>
> mol.GetBondWithIdx(bonds_connected_to_second_atom_indecies[0]).SetBondDir(Chem.BondDir.ENDUPRIGHT)
>
> mol.GetBondWithIdx(bonds_connected_to_second_atom_indecies[1]).SetBondDir(Chem.BondDir.ENDDOWNRIGHT)
>
> # I assume this should set the stereochemistry. But it doesn't appear to.
> # It's stereo is STEREONONE at this point
> print double_bond.GetStereo()
> Chem.AssignStereochemistry(mol)
> # Still STEREONONE
> print double_bond.GetStereo()
>
> # And when I print out the smiles, no stereochemistry is given.
> print Chem.MolToSmiles(mol, isomericSmiles=True, canonical=True)
> # CC(S)=C(N)O
> ===
>
> Any suggestions? Thanks!
>
> ~Jacob
> --
>
> Sent from my mobile.
>
>
> --
> 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 
> listRdkit-discuss@lists.sourceforge.nethttps://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
> Rdkit-discuss@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/rdkit-discuss
>
-- 

Sent from my mobile.
--
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
Rdkit-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rdkit-discuss


Re: [Rdkit-discuss] Question about generating configurational isomerism

2017-01-27 Thread Pavel Polishchuk

Hi Jacob,

  you need to call AssignStereochemistry with force=True parameter
  Chem.AssignStereochemistry(mol, force=True)

Pavel.


On 01/28/2017 05:43 AM, Jacob Durrant wrote:
I'm trying to set the configuration of a molecule with a double bond, 
but it doesn't seem to be working. Here's my code:


===
from rdkit.Chem import AllChem
from rdkit import Chem
from rdkit.Chem.rdchem import BondStereo

# Make a molecule with a double bond, no stereo specified (cis or trans)
smi = "NC(O)=C(C)S"
mol = Chem.MolFromSmiles(smi)

# Get that double bond
double_bonds = [b.GetIdx() for b in mol.GetBonds() if 
b.GetBondTypeAsDouble() == 2 and b.GetStereo() is BondStereo.STEREONONE]

double_bond_index = double_bonds[0]
double_bond = mol.GetBondWithIdx(double_bond_index)

# It's stereo is STEREONONE at this point
print double_bond.GetStereo()

# Get the bonds connected to the first and second atoms
first_atom = double_bond.GetBeginAtom()
bonds_connected_to_first_atom = first_atom.GetBonds()

second_atom = double_bond.GetEndAtom()
bonds_connected_to_second_atom = second_atom.GetBonds()

# Get the indecies of those bonds, removing the central double bond.
bonds_connected_to_first_atom_indecies = [b.GetIdx() for b in 
first_atom.GetBonds()]

bonds_connected_to_first_atom_indecies.remove(double_bond_index)

bonds_connected_to_second_atom_indecies = [b.GetIdx() for b in 
second_atom.GetBonds()]

bonds_connected_to_second_atom_indecies.remove(double_bond_index)

# Set the directions of the for bonds connected to this double bond.
mol.GetBondWithIdx(bonds_connected_to_first_atom_indecies[0]).SetBondDir(Chem.BondDir.ENDUPRIGHT)
mol.GetBondWithIdx(bonds_connected_to_first_atom_indecies[1]).SetBondDir(Chem.BondDir.ENDDOWNRIGHT)

mol.GetBondWithIdx(bonds_connected_to_second_atom_indecies[0]).SetBondDir(Chem.BondDir.ENDUPRIGHT)
mol.GetBondWithIdx(bonds_connected_to_second_atom_indecies[1]).SetBondDir(Chem.BondDir.ENDDOWNRIGHT)

# I assume this should set the stereochemistry. But it doesn't appear to.
# It's stereo is STEREONONE at this point
print double_bond.GetStereo()
Chem.AssignStereochemistry(mol)
# Still STEREONONE
print double_bond.GetStereo()

# And when I print out the smiles, no stereochemistry is given.
print Chem.MolToSmiles(mol, isomericSmiles=True, canonical=True)
# CC(S)=C(N)O
===

Any suggestions? Thanks!

~Jacob
--

Sent from my mobile.



--
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
Rdkit-discuss@lists.sourceforge.net
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
Rdkit-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rdkit-discuss