At the moment the only way to do this is to disable the "cleanup"
functionality in SanitizeMol(). This can be done, but it will also have the
consequence that things like the hypervalent N in nitro groups (i.e.
"-N(=O)=O") is not cleaned up.
In [2]: m = Chem.MolFromSmiles('O=Cl(=O)(=O)[O-]',sanitize=False)
In [3]: m.UpdatePropertyCache(strict=False)
In [4]:
Chem.SanitizeMol(m,sanitizeOps=Chem.SANITIZE_ALL^Chem.SANITIZE_CLEANUP^Chem.SANITIZE_PROPERTIES)
Out[4]: rdkit.Chem.rdmolops.SanitizeFlags.SANITIZE_NONE
In [5]: Chem.MolToSmiles(m)
Out[5]: 'O=Cl(=O)(=O)[O-]'
In [6]: m2 = Chem.MolFromSmiles('CN(=O)=O',sanitize=False)
In [7]: m2.UpdatePropertyCache(strict=False)
In [8]:
Chem.SanitizeMol(m2,sanitizeOps=Chem.SANITIZE_ALL^Chem.SANITIZE_CLEANUP^Chem.SANITIZE_PROPERTIES)
Out[8]: rdkit.Chem.rdmolops.SanitizeFlags.SANITIZE_NONE
In [10]: Chem.MolToSmiles(m2)
Out[10]: 'CN(=O)=O'
Note that this way of doing things disables all "unreasonable" valence
checking.
-greg
On Tue, Nov 21, 2017 at 10:12 AM, Chris Earnshaw <cgearns...@gmail.com>
wrote:
> Hi
>
> Sometime between 2014 and now there appears to have been a change in
> the way hypervalent halogen structures are handled. The old behaviour
> (involving some tweaking of atomic_data.cpp to allow the higher
> oxidation states) was to have a neutral halogen with double bonds to
> most of the oxygens, e.g.
> chlorate O=Cl(=O)[O-]
> perchlorate O=Cl(=O)(=O)[O-]
>
> The current behaviour is to 'charge separate' the dative bonds, giving
> chlorate [O-][Cl2+]([O+])[O-]
> perchlorate [O-][Cl3+]([O-])([O+])[O-]
>
> Although this may be regarded as 'correct' (arguable!), it can cause
> problems of compatibility with other software and looks remarkably
> ugly. It's also inconsistent with the handling of hypervalent P and S
> compounds. Using the same convention, we should have -
>
> trimethylphosphine oxide C[P+]([O-])(C)C
> dimethylsulfoxide C[S+]([O-])C
> dimethylsulfone C[S2+]([O-])([O-])C
>
> - and I really don't want this to happen!
>
> Does anyone know a way to restore the old behaviour for chlorites,
> bromates, periodates etc.?
>
> Best regards,
> Chris Earnshaw
>
> ------------------------------------------------------------
> ------------------
> 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