Hi Paul, On Fri, Sep 14, 2012 at 6:12 AM, <[email protected]> wrote: > > > has anyone worked so far on this topic: > > http://www.mail-archive.com/[email protected]/msg01706.html >> >> Rebalance protonation states by deprotonating strong acids and/or >> protonating strong bases > > This would be easy to do given a set of SMARTS patterns defining the > strong acids/bases. > > > E.g. these two molecules are identical: > O=C(OC)C1=CCC2[N+](C)C1CC2 > C1[C@@H]2CC[C@@H](C(C(OC)=O)=C1)[N@]2C > > but their charge state is not! >
Before my real reply: a bit of pedantry: Those two molecules aren't really iidentical; the second one has additional stereochemical information specified. Also: the charged N in the first molecule has a radical, I think you meant [NH+] there. Now the answer to your actual question: If you have a list SMARTS patterns that define the strong acids and bases that you want to (de)protonate, it would be pretty easy to write a function that handles the (de)protonation. The SMARTS patterns would need to be written in such a way that the atom to be modified is in a known position, for example the first. So you could something like this for tertiary aliphatic amines: [NX3](C)(C)C Note that that definition is seriously oversimplified. Once you have those definitions, you would need one protonate function and one deprotonate function that goes through the matched atoms and adds/removes a charge and H as appropriate. I haven't done anything in this area because the pre-requisite is to have a good set of patterns. -greg ------------------------------------------------------------------------------ Got visibility? Most devs has no idea what their production app looks like. Find out how fast your code is with AppDynamics Lite. http://ad.doubleclick.net/clk;262219671;13503038;y? http://info.appdynamics.com/FreeJavaPerformanceDownload.html _______________________________________________ Rdkit-discuss mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/rdkit-discuss

