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