Wolfram言語

Knowledgebaseへの幅広いアクセス

アスピリンの調合

アスピリンは,痛み,熱,炎症に最もよく使われる薬物の一つである.アスピリンは,等モル量のサリチル酸と無水酢酸を混ぜることで合成できる.ここでは,アスピリンの化学調合のために,Wolfram Knowledgebaseからの化学データが数量フレームワーク,実体グループ,コピー,インスタンスとともにに使われている.

EntityGroupを使って一度に100ミリモルのアスピリンを化学調合する様子を表す.

In[1]:=
Click for copyable input
reactants = EntityGroup[{EntityInstance[Entity["Chemical", "SalicylicAcid"], Quantity[0.1, "Moles"]], EntityInstance[Entity["Chemical", "AceticAnhydride"], Quantity[0.1, "Moles"]]}]
Out[1]=

実体特性クエリの「カレー」形式を使って今回の総質量を計算する.

In[2]:=
Click for copyable input
mass = reactants["AbsoluteMass"]
Out[2]=

無水酢酸は液体なので,厳密にどれだけ必要かが分かると便利である.

In[3]:=
Click for copyable input
UnitConvert[ EntityInstance[Entity["Chemical", "AceticAnhydride"], Quantity[0.1, "Moles"]]["AbsoluteVolume"], "Milliliter"]
Out[3]=

等量,つまり(理論的な)定量的反応を仮定すると,100ミリモルのアルピリンができるはずである.しかし,実際に得られるだろう得られるのは,ほぼ90%である.

In[4]:=
Click for copyable input
EntityInstance[Entity["Chemical", "Aspirin"], 0.9*Quantity[0.1, "Moles"]]["AbsoluteMass"]
Out[4]=

アスピリン分子の構成原子を数える.

In[5]:=
Click for copyable input
elem = Entity["Chemical", "Aspirin"]["ElementCounts"]
Out[5]=

適切な数のこれらの原子をグループ化された実体式にまとめる.

In[6]:=
Click for copyable input
atomAssemble = EntityGroup[ MapThread[EntityCopies[#1, #2] &, {Keys[elem], Values[elem]}]]
Out[6]=
In[7]:=
Click for copyable input
atomicmass = atomAssemble["AtomicMass"]
Out[7]=

予想された通り,この実体グループの総原子質量は分子全体のモル質量と一致する.

In[8]:=
Click for copyable input
molarmass = Entity["Chemical", "Aspirin"][ EntityProperty["Chemical", "MolarMass"]]
Out[8]=
In[9]:=
Click for copyable input
Equal @@ QuantityMagnitude /@ {atomicmass, molarmass}
Out[9]=

しかし,可能な同位体の組合せは他にもあり,それぞれの総質量は微妙に異なる.

In[10]:=
Click for copyable input
stableIsotopes = #[EntityProperty["Element", "StableIsotopes"]] & /@ Keys[elem]
Out[10]=

このグループは標準的な同位体(いわゆる「主イオン」)のみからなっている.

In[11]:=
Click for copyable input
EntityGroup[{EntityCopies[Entity["Isotope", "C12"], 9], EntityCopies[Entity["Isotope", "H1"], 8], EntityCopies[Entity["Isotope", "O16"], 4]}]["AtomicMass"]
Out[11]=

このような構成の分子が出現する確率は90%未満である.しかし,質量スペクトルでは,これは最も顕著な分子のピークになる.

In[12]:=
Click for copyable input
Times @@ MapThread[(QuantityMagnitude[#1[ EntityProperty["Isotope", "IsotopeAbundance"]], "PureUnities"])^#2 &, {stableIsotopes[[All, 1]], Values[elem]}]
Out[12]=

関連する例

de en es fr ko pt-br ru zh