アスピリンの調合
アスピリンは,痛み,熱,炎症に最もよく使われる薬物の一つである.アスピリンは,等モル量のサリチル酸と無水酢酸を混ぜることで合成できる.ここでは,アスピリンの化学調合のために,Wolfram Knowledgebaseからの化学データが数量フレームワーク,実体グループ,コピー,インスタンスとともにに使われている.
EntityGroupを使って一度に100ミリモルのアスピリンを化学調合する様子を表す.
In[1]:=
![Click for copyable input](assets.ja/prepare-aspirin/In_11.png)
reactants =
EntityGroup[{EntityInstance[Entity["Chemical", "SalicylicAcid"],
Quantity[0.1, "Moles"]],
EntityInstance[Entity["Chemical", "AceticAnhydride"],
Quantity[0.1, "Moles"]]}]
Out[1]=
![](assets.ja/prepare-aspirin/O_8.png)
実体特性クエリの「カレー」形式を使って今回の総質量を計算する.
In[2]:=
![Click for copyable input](assets.ja/prepare-aspirin/In_12.png)
mass = reactants["AbsoluteMass"]
Out[2]=
![](assets.ja/prepare-aspirin/O_9.png)
無水酢酸は液体なので,厳密にどれだけ必要かが分かると便利である.
In[3]:=
![Click for copyable input](assets.ja/prepare-aspirin/In_13.png)
UnitConvert[
EntityInstance[Entity["Chemical", "AceticAnhydride"],
Quantity[0.1, "Moles"]]["AbsoluteVolume"], "Milliliter"]
Out[3]=
![](assets.ja/prepare-aspirin/O_10.png)
等量,つまり(理論的な)定量的反応を仮定すると,100ミリモルのアルピリンができるはずである.しかし,実際に得られるだろう得られるのは,ほぼ90%である.
In[4]:=
![Click for copyable input](assets.ja/prepare-aspirin/In_14.png)
EntityInstance[Entity["Chemical", "Aspirin"],
0.9*Quantity[0.1, "Moles"]]["AbsoluteMass"]
Out[4]=
![](assets.ja/prepare-aspirin/O_11.png)
アスピリン分子の構成原子を数える.
In[5]:=
![Click for copyable input](assets.ja/prepare-aspirin/In_15.png)
elem = Entity["Chemical", "Aspirin"]["ElementCounts"]
Out[5]=
![](assets.ja/prepare-aspirin/O_12.png)
適切な数のこれらの原子をグループ化された実体式にまとめる.
In[6]:=
![Click for copyable input](assets.ja/prepare-aspirin/In_16.png)
atomAssemble =
EntityGroup[
MapThread[EntityCopies[#1, #2] &, {Keys[elem], Values[elem]}]]
Out[6]=
![](assets.ja/prepare-aspirin/O_13.png)
In[7]:=
![Click for copyable input](assets.ja/prepare-aspirin/In_17.png)
atomicmass = atomAssemble["AtomicMass"]
Out[7]=
![](assets.ja/prepare-aspirin/O_14.png)
予想された通り,この実体グループの総原子質量は分子全体のモル質量と一致する.
In[8]:=
![Click for copyable input](assets.ja/prepare-aspirin/In_18.png)
molarmass =
Entity["Chemical", "Aspirin"][
EntityProperty["Chemical", "MolarMass"]]
Out[8]=
![](assets.ja/prepare-aspirin/O_15.png)
In[9]:=
![Click for copyable input](assets.ja/prepare-aspirin/In_19.png)
Equal @@ QuantityMagnitude /@ {atomicmass, molarmass}
Out[9]=
![](assets.ja/prepare-aspirin/O_16.png)
しかし,可能な同位体の組合せは他にもあり,それぞれの総質量は微妙に異なる.
In[10]:=
![Click for copyable input](assets.ja/prepare-aspirin/In_20.png)
stableIsotopes = #[EntityProperty["Element", "StableIsotopes"]] & /@
Keys[elem]
Out[10]=
![](assets.ja/prepare-aspirin/O_17.png)
このグループは標準的な同位体(いわゆる「主イオン」)のみからなっている.
In[11]:=
![Click for copyable input](assets.ja/prepare-aspirin/In_21.png)
EntityGroup[{EntityCopies[Entity["Isotope", "C12"], 9],
EntityCopies[Entity["Isotope", "H1"], 8],
EntityCopies[Entity["Isotope", "O16"], 4]}]["AtomicMass"]
Out[11]=
![](assets.ja/prepare-aspirin/O_18.png)
このような構成の分子が出現する確率は90%未満である.しかし,質量スペクトルでは,これは最も顕著な分子のピークになる.
In[12]:=
![Click for copyable input](assets.ja/prepare-aspirin/In_22.png)
Times @@ MapThread[(QuantityMagnitude[#1[
EntityProperty["Isotope", "IsotopeAbundance"]],
"PureUnities"])^#2 &, {stableIsotopes[[All, 1]], Values[elem]}]
Out[12]=
![](assets.ja/prepare-aspirin/O_19.png)