CAS Common Chemistry API in Mathematica#

by Vishank Patel

These recipe examples were tested on March 31, 2022 using Mathematica 12.3.

CAS Common Chemistry API Documentation (requires registration): https://www.cas.org/services/commonchemistry-api

Attribution: This tutorial uses the CAS Common Chemistry API. Example data shown is licensed under the CC BY-NC 4.0 license.

1. Common Chemistry Record Detail Retrieval#

Information about substances in CAS Common Chemistry can be retrieved using the /detail API and a CAS RN identifier:

Setup API Parameters#

detailBaseURL = "https://commonchemistry.cas.org/api/detail?";
casrn1 = "10094-36-7" ; (*ethyl cyclohexanepropionate*)

Request data from CAS Common Chemistry Detail API#

casrn1Data = Import[detailBaseURL <> "cas_rn=" <> casrn1, "RawJSON"];
casrn1Data

Output not shown

casrn1Data //OutputForm (*Changed to plain text output*)
<|uri -> substance/pt/10094367, rn -> 10094-36-7, name -> Ethyl cyclohexanepropionate, 
 
>   image -> <svg width="228.6" viewBox="0 0 7620 3716" text-rendering="auto"\
 
>     stroke-width="1" stroke-opacity="1" stroke-miterlimit="10" stroke-linejoin="miter"\
 
>     stroke-linecap="square" stroke-dashoffset="0" stroke-dasharray="none"\
 
>     stroke="black" shape-rendering="auto" image-rendering="auto" height="111.48"\
 
>     font-weight="normal" font-style="normal" font-size="12" font-family="'Dialog'"\
 
>     fill-opacity="1" fill="black" color-rendering="auto" color-interpolation="auto"\
 
>     xmlns="http://www.w3.org/2000/svg"><g><g stroke="white" fill="white"><rect y="0"\
 
>     x="0" width="7620" stroke="none" height="3716"/></g><g\
 
>     transform="translate(32866,32758)" text-rendering="geometricPrecision"\
 
>     stroke-width="44" stroke-linejoin="round" stroke-linecap="round"><line y2="-30850"\
 
>     y1="-31419" x2="-30792" x1="-31777" fill="none"/><line y2="-29715" y1="-30850"\
 
>     x2="-30792" x1="-30792" fill="none"/><line y2="-31419" y1="-30850" x2="-31777"\
 
>     x1="-32762" fill="none"/><line y2="-29146" y1="-29715" x2="-31777" x1="-30792"\
 
>     fill="none"/><line y2="-30850" y1="-29715" x2="-32762" x1="-32762"\
 
>     fill="none"/><line y2="-29715" y1="-29146" x2="-32762" x1="-31777"\
 
>     fill="none"/><line y2="-31376" y1="-30850" x2="-29885" x1="-30792"\
 
>     fill="none"/><line y2="-30850" y1="-31376" x2="-28978" x1="-29885"\
 
>     fill="none"/><line y2="-31376" y1="-30850" x2="-28071" x1="-28978"\
 
>     fill="none"/><line y2="-30960" y1="-31376" x2="-27352" x1="-28071"\
 
>     fill="none"/><line y2="-31376" y1="-30960" x2="-26257" x1="-26976"\
 
>     fill="none"/><line y2="-30850" y1="-31376" x2="-25350" x1="-26257"\
 
>     fill="none"/><line y2="-32202" y1="-31376" x2="-28140" x1="-28140"\
 
>     fill="none"/><line y2="-32202" y1="-31376" x2="-28002" x1="-28002"\
 
>     fill="none"/><text y="-30671" xml:space="preserve" x="-27317" stroke="none"\
 
>     font-size="433.3333" font-family="sans-serif">O</text><text y="-32242"\
 
>     xml:space="preserve" x="-28224" stroke="none" font-size="433.3333"\
 
>     font-family="sans-serif">O</text></g></g></svg>, 
 
>   inchi -> InChI=1S/C11H20O2/c1-2-13-11(12)9-8-10-6-4-3-5-7-10/h10H,2-9H2,1H3, 
 
>   inchiKey -> InChIKey=NRVPMFHPHGBQLP-UHFFFAOYSA-N, smile -> C(CC(OCC)=O)C1CCCCC1, 
 
>   canonicalSmile -> O=C(OCC)CCC1CCCCC1, 
 
>   molecularFormula -> C<sub>11</sub>H<sub>20</sub>O<sub>2</sub>, 
 
>   molecularMass -> 184.28, experimentalProperties -> 
 
>    {<|name -> Boiling Point, property -> 105-113 °C @ Press: 17 Torr, 
 
>      sourceNumber -> 1|>}, propertyCitations -> 
 
>    {<|docUri -> document/pt/document/22252593, sourceNumber -> 1, 
 
>      source -> De Benneville, Peter L.; Journal of the American Chemical Society,\
 
>        (1940), 62, 283-7, CAplus|>}, 
 
>   synonyms -> {Cyclohexanepropanoic acid, ethyl ester, 
 
>     Cyclohexanepropionic acid, ethyl ester, Ethyl cyclohexanepropionate, 
 
>     Ethyl cyclohexylpropanoate, Ethyl 3-cyclohexylpropionate, 
 
>     Ethyl 3-cyclohexylpropanoate, 3-Cyclohexylpropionic acid ethyl ester, NSC 71463, 
 
>     Ethyl 3-cyclohexanepropionate}, replacedRns -> {}, hasMolfile -> True|>

Display the Molecule Drawing#

MoleculePlot[casrn1Data["smile"]]
Output

Select some specific data#

Get experimental properties:

casrn1Data["experimentalProperties"][[1]]
<|name -> Boiling Point, property -> 105-113 °C @ Press: 17 Torr, sourceNumber -> 1|>

Get boiling point property

casrn1Data["experimentalProperties"][[1]]["property"]
105-113 °C @ Press: 17 Torr

Get InChIKey

casrn1Data["inchiKey"]
InChIKey=NRVPMFHPHGBQLP-UHFFFAOYSA-N
casrn1Data["canonicalSmile"]
O=C(OCC)CCC1CCCCC1

2. Common Chemistry API record detail retrieval in a loop#

Setup API parameters#

detailBaseURLLoop = "https://commonchemistry.cas.org/api/detail?";
casrnList = {"10094-36-7", "10031-92-2", "10199-61-8", "10036-21-2","1019020-13-3"};

Request data for each CAS RN and save to a list#

casrnData = {};
For[i = 1, i <= Length[casrnList], i++,
 AppendTo[casrnData,
  Import[detailBaseURL <> "cas_rn=" <> casrnList[[i]], "RawJSON"]]
 ]
casrnData[[1]]

Output not shown

casrnData[[1]] //OutputForm (*Changed to plain text output*)
<|uri -> substance/pt/10094367, rn -> 10094-36-7, name -> Ethyl cyclohexanepropionate, 
 
>   image -> <svg width="228.6" viewBox="0 0 7620 3716" text-rendering="auto"\
 
>     stroke-width="1" stroke-opacity="1" stroke-miterlimit="10" stroke-linejoin="miter"\
 
>     stroke-linecap="square" stroke-dashoffset="0" stroke-dasharray="none"\
 
>     stroke="black" shape-rendering="auto" image-rendering="auto" height="111.48"\
 
>     font-weight="normal" font-style="normal" font-size="12" font-family="'Dialog'"\
 
>     fill-opacity="1" fill="black" color-rendering="auto" color-interpolation="auto"\
 
>     xmlns="http://www.w3.org/2000/svg"><g><g stroke="white" fill="white"><rect y="0"\
 
>     x="0" width="7620" stroke="none" height="3716"/></g><g\
 
>     transform="translate(32866,32758)" text-rendering="geometricPrecision"\
 
>     stroke-width="44" stroke-linejoin="round" stroke-linecap="round"><line y2="-30850"\
 
>     y1="-31419" x2="-30792" x1="-31777" fill="none"/><line y2="-29715" y1="-30850"\
 
>     x2="-30792" x1="-30792" fill="none"/><line y2="-31419" y1="-30850" x2="-31777"\
 
>     x1="-32762" fill="none"/><line y2="-29146" y1="-29715" x2="-31777" x1="-30792"\
 
>     fill="none"/><line y2="-30850" y1="-29715" x2="-32762" x1="-32762"\
 
>     fill="none"/><line y2="-29715" y1="-29146" x2="-32762" x1="-31777"\
 
>     fill="none"/><line y2="-31376" y1="-30850" x2="-29885" x1="-30792"\
 
>     fill="none"/><line y2="-30850" y1="-31376" x2="-28978" x1="-29885"\
 
>     fill="none"/><line y2="-31376" y1="-30850" x2="-28071" x1="-28978"\
 
>     fill="none"/><line y2="-30960" y1="-31376" x2="-27352" x1="-28071"\
 
>     fill="none"/><line y2="-31376" y1="-30960" x2="-26257" x1="-26976"\
 
>     fill="none"/><line y2="-30850" y1="-31376" x2="-25350" x1="-26257"\
 
>     fill="none"/><line y2="-32202" y1="-31376" x2="-28140" x1="-28140"\
 
>     fill="none"/><line y2="-32202" y1="-31376" x2="-28002" x1="-28002"\
 
>     fill="none"/><text y="-30671" xml:space="preserve" x="-27317" stroke="none"\
 
>     font-size="433.3333" font-family="sans-serif">O</text><text y="-32242"\
 
>     xml:space="preserve" x="-28224" stroke="none" font-size="433.3333"\
 
>     font-family="sans-serif">O</text></g></g></svg>, 
 
>   inchi -> InChI=1S/C11H20O2/c1-2-13-11(12)9-8-10-6-4-3-5-7-10/h10H,2-9H2,1H3, 
 
>   inchiKey -> InChIKey=NRVPMFHPHGBQLP-UHFFFAOYSA-N, smile -> C(CC(OCC)=O)C1CCCCC1, 
 
>   canonicalSmile -> O=C(OCC)CCC1CCCCC1, 
 
>   molecularFormula -> C<sub>11</sub>H<sub>20</sub>O<sub>2</sub>, 
 
>   molecularMass -> 184.28, experimentalProperties -> 
 
>    {<|name -> Boiling Point, property -> 105-113 °C @ Press: 17 Torr, 
 
>      sourceNumber -> 1|>}, propertyCitations -> 
 
>    {<|docUri -> document/pt/document/22252593, sourceNumber -> 1, 
 
>      source -> De Benneville, Peter L.; Journal of the American Chemical Society,\
 
>        (1940), 62, 283-7, CAplus|>}, 
 
>   synonyms -> {Cyclohexanepropanoic acid, ethyl ester, 
 
>     Cyclohexanepropionic acid, ethyl ester, Ethyl cyclohexanepropionate, 
 
>     Ethyl cyclohexylpropanoate, Ethyl 3-cyclohexylpropionate, 
 
>     Ethyl 3-cyclohexylpropanoate, 3-Cyclohexylpropionic acid ethyl ester, NSC 71463, 
 
>     Ethyl 3-cyclohexanepropionate}, replacedRns -> {}, hasMolfile -> True|>
plotList = {};
For[i = 1, i <= Length[casrnList], i++,
 AppendTo[plotList, MoleculePlot[casrnData[[i]]["smile"]]]
 ]
plotList
Output

Select some specific data#

Get canonical SMILES

cansmiles = {};
For[i = 1, i <= Length[casrnList], i++,
 AppendTo[cansmiles,
  casrnData[[i]]["canonicalSmile"]]
 ]
cansmiles
{O=C(OCC)CCC1CCCCC1, O=C(C#CCCCCCC)OCC, O=C(OCC)CN1N=CC=C1, 
 
>   O=C(OCC)C1=CC=CC(=C1)CCC(=O)OCC, N=C(OCC)C1=CCCCC1}
synonymsList = {};
For[i = 1, i <= Length[casrnList], i++,
 AppendTo[synonymsList,
  casrnData[[i]]["synonyms"]]
 ]
synonymsList
{{Cyclohexanepropanoic acid, ethyl ester, Cyclohexanepropionic acid, ethyl ester, 
 
>    Ethyl cyclohexanepropionate, Ethyl cyclohexylpropanoate, 
 
>    Ethyl 3-cyclohexylpropionate, Ethyl 3-cyclohexylpropanoate, 
 
>    3-Cyclohexylpropionic acid ethyl ester, NSC 71463, Ethyl 3-cyclohexanepropionate}, 
 
>   {2-Nonynoic acid, ethyl ester, Ethyl 2-nonynoate, NSC 190985}, 
 
>   {1<em>H</em>-Pyrazole-1-acetic acid, ethyl ester, 
 
>    Pyrazole-1-acetic acid, ethyl ester, Ethyl 1<em>H</em>-pyrazole-1-acetate, 
 
>    Ethyl 1-pyrazoleacetate, Ethyl 2-(1<em>H</em>-pyrazol-1-yl)acetate}, 
 
>   {Benzenepropanoic acid, 3-(ethoxycarbonyl)-, ethyl ester, 
 
>    Hydrocinnamic acid, <em>m</em>-carboxy-, diethyl ester, 
 
>    Ethyl 3-(ethoxycarbonyl)benzenepropanoate}, 
 
>   {1-Cyclohexene-1-carboximidic acid, ethyl ester, 
 
>    Ethyl 1-cyclohexene-1-carboximidate}}

Transform synonym “list of lists” to a flat list

Flatten[synonymsList]
{Cyclohexanepropanoic acid, ethyl ester, Cyclohexanepropionic acid, ethyl ester, 
 
>   Ethyl cyclohexanepropionate, Ethyl cyclohexylpropanoate, 
 
>   Ethyl 3-cyclohexylpropionate, Ethyl 3-cyclohexylpropanoate, 
 
>   3-Cyclohexylpropionic acid ethyl ester, NSC 71463, Ethyl 3-cyclohexanepropionate, 
 
>   2-Nonynoic acid, ethyl ester, Ethyl 2-nonynoate, NSC 190985, 
 
>   1<em>H</em>-Pyrazole-1-acetic acid, ethyl ester, 
 
>   Pyrazole-1-acetic acid, ethyl ester, Ethyl 1<em>H</em>-pyrazole-1-acetate, 
 
>   Ethyl 1-pyrazoleacetate, Ethyl 2-(1<em>H</em>-pyrazol-1-yl)acetate, 
 
>   Benzenepropanoic acid, 3-(ethoxycarbonyl)-, ethyl ester, 
 
>   Hydrocinnamic acid, <em>m</em>-carboxy-, diethyl ester, 
 
>   Ethyl 3-(ethoxycarbonyl)benzenepropanoate, 
 
>   1-Cyclohexene-1-carboximidic acid, ethyl ester, Ethyl 1-cyclohexene-1-carboximidate}

Create a dataset#

Table[casrnData[[All, i]], {i, {"uri", "rn", "name"}}] // Dataset
Dataset[{{substance/pt/10094367, substance/pt/10031922, substance/pt/10199618, 
 
>     substance/pt/10036212, substance/pt/1019020133}, 
 
>    {10094-36-7, 10031-92-2, 10199-61-8, 10036-21-2, 1019020-13-3}, 
 
>    {Ethyl cyclohexanepropionate, Ethyl 2-nonynoate, 
 
>     Ethyl 1<em>H</em>-pyrazole-1-acetate, Ethyl 3-(ethoxycarbonyl)benzenepropanoate, 
 
>     Ethyl 1-cyclohexene-1-carboximidate}}, 
 
>   TypeSystem`Vector[TypeSystem`Vector[TypeSystem`Atom[String], 5], 3], <||>]