User 04db012416
23-01-2008 12:45:50
Hello,
For the smiles string...
CN1CC(=O)N2[C@@H](C1=O)CC3=C([C@H]2C4=CC5=C(C=C4)OCO5)NC6=CC=CC=C36
When I view this in Daylight Depict, it displays the H's of the two chiral centers and a wedged bond for the H's as well. However, when view in Marvin Sketch, the explicit H's are not displayed and the wedged bonds are in the ring system. My question is why?....and how can I get it to display as rendered by Depict.
Thanks.
ChemAxon 25dcd765a3
23-01-2008 14:59:18
Hi,
The given smiles string has no explicit H atoms, only implicit ones.
It seems that Depict first changes some implicit Hydrogens to explicit ones and then depict it.
In Marvin you can only add explicit Hydrogens to all atoms.
You can generate the smiles with explicit Hydrogens:
Code: |
molconvert smiles:+H -s "CN1CC(=O)N2[C@@H](C1=O)CC3=C([C@H]2C4=CC5=C(C=C4)OCO5)NC6=CC=CC=C36"
[H]N1C2=C([H])C([H])=C([H])C([H])=C2C2=C1[C@]([H])(N1C(=O)C([H])([H])N(C(=O)[C@@]1([H])C2([H])[H])C([H])([H])[H])C1=C([H])C2=C(OC([H])([H])O2)C([H])=C1[H]
|
Or add explicit Hydrogens at the viewer and clean wedged bonds.
In either case the wedges will appear only at the bond to the Hydrogens.
So basically it is not possible to do the same thing what Daylight does.
You should make some programming to do the same thing:
1) Add explicit H to chiral centers only
2) Clean wedges
3) Change some more bond to wedge keeping the chirality.
Andras
User 04db012416
23-01-2008 15:15:02
Thank you for your reply. Your suggestion indeed works.
However, is there a way to replicate the Daylight depict render using the original smiles string ...make the implicit H's explicit and show only the explicit hydrogens in the structure using molconvert or MSketch?
Thanks again.
User 870ab5b546
23-01-2008 17:16:52
If you mean can you do it in Java, this should work for you:
Code: |
String smilesIn = "CN1CC(=O)N2[C@@H](C1=O)CC3=C([C@H]2C4=CC5=C(C=C4)OCO5)NC6=CC=CC=C36";
MolImporter imp = new MolImporter();
Molecule mol = imp.importMol(smilesIn);
mol.hydrogenize(true); // add explicit H atoms
mol.stereoClean(); // move wedged bonds to H atoms
mol.implicitizeHydrogens(0); // remove unwedged H atoms only
String smilesOut = mol.toFormat("smiles"); |
If you want the positions of the atoms in smilesOut to remain unchanged, use instead:
Code: |
String smilesOut = mol.toFormat("mrv"); |
Almost every Marvin GUI action has a corresponding API command, and vice versa.
User 04db012416
25-01-2008 14:54:44
Thank you again.
One last follow up.
Is it possible to also show both wedged bonds (solid and dashed) at this chiral center, instead of 3 normal bonds?
Also, how can I achieve the same result with a chiral center that has no H's...for example:
C[C@H]1[C@H]([C@H](C[C@@H](O1)O[C@H]2C[C@@](CC3=C(C4=C(C(=C23)O)C(=O)C5=C(C4=O)C=CC=C5OC)O)(C(=O)CO)O)N)O.Cl
Thanks in advance.
ChemAxon 25dcd765a3
29-01-2008 16:38:36
We have decided to implement it in the future, but surely not in Marvin 5.0.1.
Andras
User 04db012416
14-03-2008 04:21:35
When testing the java code suggested by Bobr:
Code: |
String smilesIn = "CN1CC(=O)N2[C@@H](C1=O)CC3=C([C@H]2C4=CC5=C(C=C4)OCO5)NC6=CC=CC=C36";
MolImporter imp = new MolImporter();
Molecule mol = imp.importMol(smilesIn);
mol.hydrogenize(true); // add explicit H atoms
mol.stereoClean(); // move wedged bonds to H atoms
mol.implicitizeHydrogens(0); // remove unwedged H atoms only
String smilesOut = mol.toFormat("smiles"); |
There seems to be no difference in the resulting molecule. The mol.implicitizeHydrogens(0) which should remove all unwedged H atoms seems to remove all H atoms. Is there a way to make it recognize only the unwedged atoms?
Thanks in advance.
User 870ab5b546
14-03-2008 10:06:19
The documentation for MoleculeGraph.implicitizeHydrogens(0) is incomplete. Evidently, it works only on 2D molecules. When you import a SMILES molecule, its dimension is 0, so you need to do a 2D clean before implicitzing the H atoms. This code:
Code: |
String smilesIn = "CN1CC(=O)N2[C@@H](C1=O)CC3=C([C@H]2C4=CC5=C(C=C4)OCO5)NC6=CC=CC=C36";
System.out.println("starting with " + smilesIn);
MolImporter imp = new MolImporter();
Molecule mol1 = imp.importMol(smilesIn);
mol1.clean(2, null); // convert to 2D
mol1.hydrogenize(true); // add explicit H atoms
mol1.stereoClean(); // move wedged bonds to H atoms
mol1.implicitizeHydrogens(0); // remove unwedged H atoms only
String smilesOut = mol1.toFormat("smiles");
System.out.println("after implicitize H: " + smilesOut); |
gives this output:
Code: |
starting with CN1CC(=O)N2[C@@H](C1=O)CC3=C([C@H]2C4=CC5=C(C=C4)OCO5)NC6=CC=CC=C36
after implicitize H: [H][C@]12CC3=C(NC4=CC=CC=C34)[C@]([H])(N1C(=O)CN(C)C2=O)C5=CC6=C(OCO6)C=C5 |
Sorry for the earlier misinformation.
ChemAxon 25dcd765a3
14-03-2008 11:47:51
Dear All,
MoleculeGraph.implicitizeHydrogens(..) works for molecules in 0, 2, 3 dimension.
If the molecule is in 0D then it has no wedged H atoms, so it will remove all H atoms.
(Also the ones which would get wedge in 2D.) This also applies to Hydrogens in 3D.
I also would like to call your attention to the return value of mol.stereoClean(), which is false in case of 0D molecules.
Andras
User 04db012416
14-03-2008 17:23:32
Thanks bobgr for all the help in troubleshooting this.
Best regards.
User 331d7f5c0b
21-04-2009 21:17:14
Hi Andras,
When do you expect to implement this? Also, why doesn't the following standardizer config achieve the desired result?
addexplicitH..wedgeclean..removeexplicitH
Moses
volfi wrote: |
We have decided to implement it in the future, but surely not in Marvin 5.0.1.
Andras |
ChemAxon 25dcd765a3
22-04-2009 15:07:55
We have already implemented this request.
see H add Hydrogens at
http://www.chemaxon.com/marvin/help/sci/cleanoptions.html#2d
Here is a simple example:
molconvert -2:H mrv -s 'CN1CC(=O)N2[C@@H](C1=O)CC3=C([C@H]2C4=CC5=C(C=C4)OCO5)NC6=CC=CC=C36' |mview -
Also, why doesn't the following standardizer config achieve the desired resultaddexplicitH..wedgeclean..removeexplicitH
removeexplicitH also removes the wedged H so you get back your original molecule.
Andras
User 331d7f5c0b
22-04-2009 18:27:43
Hi Andras,
I guess my question is, isn't the default behavior of the removeexplicitH standardizer action *not* to remove Hs with wedge bonds? If that's not the default, then why provide the option to do something like this:
addexplicitH..wedgeclean..removeexplicitH:wedged
Moses
volfi wrote: |
Also, why doesn't the following standardizer config achieve the desired resultaddexplicitH..wedgeclean..removeexplicitH
removeexplicitH also removes the wedged H so you get back your original molecule.
Andras |
ChemAxon 25dcd765a3
24-04-2009 09:11:35
Hi,
Actually it is possible to do it in API level, but I let Zsolt to answer the standardizer part, as he is the expert.
Andras
ChemAxon e08c317633
24-04-2009 17:02:03
moses wrote: |
I guess my question is, isn't the default behavior of the removeexplicitH standardizer action *not* to remove Hs with wedge bonds? If that's not the default, then why provide the option to do something like this:
addexplicitH..wedgeclean..removeexplicitH:wedged
Moses
|
Moses, you are right, "removeexplicitH" action by default does not remove wedged bonds, but wedged bonds exists only in 2D. See Andras's earlier comment:
volfi wrote: |
If the molecule is in 0D then it has no wedged H atoms, so it will remove all H atoms.
(Also the ones which would get wedge in 2D.) This also applies to Hydrogens in 3D.
|
Examples:
1. In 0D (SMILES) there are no wedged bonds, so the explicit hydrogens are removed by Standardizer.
$ standardize -c removeexplicitH "[H][C@](F)(Cl)Br"
F[C@@H](Cl)Br
2. If 2D clean is performed before explicit hydrogen removal, then the explicit hydrogens with wedged bonds are not removed by Standardizer.
$ standardize -c clean..removeexplicitH "[H][C@](F)(Cl)Br"
[H][C@](F)(Cl)Br
I hope this helps.
Zsolt
If the molecule is in 0D then it has no wedged H atoms, so it will remove all H atoms.
(Also the ones which would get wedge in 2D.) This also applies to Hydrogens in 3D.
moses wrote: |
I guess my question is, isn't the default behavior of the removeexplicitH standardizer action *not* to remove Hs with wedge bonds? If that's not the default, then why provide the option to do something like this:
addexplicitH..wedgeclean..removeexplicitH:wedged
Moses
|
Moses, you are right, "removeexplicitH" action
If the molecule is in 0D then it has no wedged H atoms, so it will remove all H atoms.
(Also the ones which would get wedge in 2D.) This also applies to Hydrogens in 3D.