Re: ChemicalData[], SMILES, EdgeRules

*To*: mathgroup at smc.vnet.net*Subject*: [mg104077] Re: ChemicalData[], SMILES, EdgeRules*From*: Carl Woll <carlw at wolfram.com>*Date*: Sun, 18 Oct 2009 05:23:22 -0400 (EDT)*References*: <hb1ntf$son$1@smc.vnet.net> <200910140319.XAA22431@smc.vnet.net> <200910151118.HAA09216@smc.vnet.net> <200910171104.HAA13273@smc.vnet.net>

If you can convert the SMILES string to a molecular formula in Hill display order (I think), then you can use ChemicalData on this string. For example: In[19]:= Pick[ChemicalData["C10H16"], ChemicalData["C10H16", "SMILES"], "CC1=CCC2CC1C2(C)C"] Out[19]= {"PlusMinusAlphaPinene", "AlphaPinene", "PlusAlphaPinene", "MinusAlphaPinene"} Carl Woll Wolfram Research Scot Martin wrote: > Mike, > > Thank you for your input on this. Here's the further information you asked > about, most grateful if you can be helpful. First, what I am trying to do > essentially? I have about 500 SMILES strings in a text file and I want to > get the element count in each (i.e., number of carbon, oxygen, etc.). So, my > plan was, "ImportString[] with SMILES and then use 'ElementTally' of > ChemicalData[]." I was surprised, however, that I couldn't convert the > SMILES data from ImportString[] into a format for ChemicalData[ ]. Here is > some more specific information: > > In[1]:= ImportString["CC1=CCC2CC1C2(C)C", "SMILES"] > > Out[1]= {"EdgeRules" -> {{1 -> 2, 2 -> 3, 2 -> 7, 3 -> 4, 4 -> 5, > 5 -> 6, 5 -> 8, 6 -> 7, 7 -> 8, 8 -> 9, 8 -> 10}}, > "EdgeTypes" -> {{"Single", "Double", "Single", "Single", "Single", > "Single", "Single", "Single", "Single", "Single", "Single"}}, > "FormalCharges" -> {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, > "VertexTypes" -> {{"C", "C", "C", "C", "C", "C", "C", "C", "C", > "C"}}} > > In[2]:= GraphPlot[First["EdgeRules" /. %]] > > Out[2]:= :: graphics :: > > > For comparison, this molecule is alpha-pinene: > > In[3]:= ChemicalData["AlphaPinene"] > > Out[3]:= :: graphics :: > > > In[4]:= ChemicalData["AlphaPinene", "ElementTally"] > > Out[4]= {{"C", 10}, {"H", 16}} > > > In[5]:= ChemicalData["AlphaPinene", "SMILES"] > > Out[5]= "CC1=CCC2CC1C2(C)C" > > But how to get ImportString to communicate to ChemicalData[] that I mean > "AlphaPinene"? > > Scot > > -----Original Message----- > From: Armand Tamzarian [mailto:mike.honeychurch at gmail.com] > Sent: Thursday, October 15, 2009 07:19 > To: mathgroup at smc.vnet.net > Subject: [mg104062] [mg104012] Re: ChemicalData[], SMILES, EdgeRules > > On Oct 14, 6:59 am, "Scot T. Martin" <smar... at seas.harvard.edu> wrote: > >> I have used ImportString[%,"SMILES"] to obtain the following from >> Mathematica: >> >> {"EdgeRules" -> {{1 -> 2, 2 -> 3, 2 -> 4, 4 -> 5, 4 -> 7, 5 -> 6}}, >> "EdgeTypes" -> {{"Single", "Double", "Single", "Single", "Single", >> "Single"}}, "FormalCharges" -> {{0, 0, 0, 0, 0, 0, 0}}, >> "VertexTypes" -> {{"C", "C", "O", "C", "C", "O", "O"}}} >> >> My question is: how do I next use this information? I would like to have >> access to all of the ChemicalData[] functionality, such as drawing a thre= >> > e > >> dimesional structure, molecular weight calculation, "ElementTally", and s= >> > o > >> forth. >> >> However, I cannot find any way that Mathematica will recognize the Rules >> list produced as output from ImportString as an input for chemical >> structure for use by ChemicalData[]. >> >> Anyone have hints? >> > > Can you provide more details? For started when you use GraphPlot with > those rules you don't get a molecular structure you get 4 unconnected > lines so I think the file you imported to generate those rules is > unusual. > > ref/format/SMILES > > ChemicalData[] can be used to produce SMILES information but it > doesn't follow -- at least as far as I know -- that given the SMILES > information you can then identify the molecule in ChemicalData[] which > is what you appear to be wanting to do (???) > > Mike > > > >

**References**:**Re: Mathematica 7.01 and Mac OS 10.6 (Snow Leopard)***From:*Joel Reymont <joelr1@gmail.com>

**Re: ChemicalData[], SMILES, EdgeRules***From:*Armand Tamzarian <mike.honeychurch@gmail.com>

**Re: ChemicalData[], SMILES, EdgeRules***From:*"Scot Martin" <smartin@seas.harvard.edu>