阿司匹林制备
阿司匹林是一种广泛用于治疗疼痛、发烧和炎症的药品. 他可以通过相同摩尔数的水杨酸(salicylic acid)和酸酐(acid anhydride)合成产生. 这里,我们将 Wolfram Knowledgebase 中的化学品数据与数量框架和实体组、复制一同使用,来研究学习阿司匹林的化学制备.
用 EntityGroup 表示典型实验用的一批 100 毫摩尔的阿司匹林预备品.
In[1]:=
![Click for copyable input](assets.zh/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.zh/prepare-aspirin/O_8.png)
用“加里化(curried)” 格式的实体-属性查询,计算该批化学品的总质量.
In[2]:=
![Click for copyable input](assets.zh/prepare-aspirin/In_12.png)
mass = reactants["AbsoluteMass"]
Out[2]=
![](assets.zh/prepare-aspirin/O_9.png)
由于乙酸酐是液体,知道实际需要多少将会更方便.
In[3]:=
![Click for copyable input](assets.zh/prepare-aspirin/In_13.png)
UnitConvert[
EntityInstance[Entity["Chemical", "AceticAnhydride"],
Quantity[0.1, "Moles"]]["AbsoluteVolume"], "Milliliter"]
Out[3]=
![](assets.zh/prepare-aspirin/O_10.png)
假如是化学计量比反应,即(理论上的)定量反应,这将生出 100 mmol 的阿司匹林. 但是实际所能取得的产出大约为 90%.
In[4]:=
![Click for copyable input](assets.zh/prepare-aspirin/In_14.png)
EntityInstance[Entity["Chemical", "Aspirin"],
0.9*Quantity[0.1, "Moles"]]["AbsoluteMass"]
Out[4]=
![](assets.zh/prepare-aspirin/O_11.png)
计算组成阿司匹林分子的原子数目.
In[5]:=
![Click for copyable input](assets.zh/prepare-aspirin/In_15.png)
elem = Entity["Chemical", "Aspirin"]["ElementCounts"]
Out[5]=
![](assets.zh/prepare-aspirin/O_12.png)
将适当数目的这些原子放入分组的实体表达式中.
In[6]:=
![Click for copyable input](assets.zh/prepare-aspirin/In_16.png)
atomAssemble =
EntityGroup[
MapThread[EntityCopies[#1, #2] &, {Keys[elem], Values[elem]}]]
Out[6]=
![](assets.zh/prepare-aspirin/O_13.png)
In[7]:=
![Click for copyable input](assets.zh/prepare-aspirin/In_17.png)
atomicmass = atomAssemble["AtomicMass"]
Out[7]=
![](assets.zh/prepare-aspirin/O_14.png)
自然地,该实体分组的总体原子质量与整个分子的摩尔质量一致.
In[8]:=
![Click for copyable input](assets.zh/prepare-aspirin/In_18.png)
molarmass =
Entity["Chemical", "Aspirin"][
EntityProperty["Chemical", "MolarMass"]]
Out[8]=
![](assets.zh/prepare-aspirin/O_15.png)
In[9]:=
![Click for copyable input](assets.zh/prepare-aspirin/In_19.png)
Equal @@ QuantityMagnitude /@ {atomicmass, molarmass}
Out[9]=
![](assets.zh/prepare-aspirin/O_16.png)
但是,其中有很多可能的同位素组合,每个的整体质量都会有细微差别.
In[10]:=
![Click for copyable input](assets.zh/prepare-aspirin/In_20.png)
stableIsotopes = #[EntityProperty["Element", "StableIsotopes"]] & /@
Keys[elem]
Out[10]=
![](assets.zh/prepare-aspirin/O_17.png)
这一组仅含有标准同位素(即 “主要离子”).
In[11]:=
![Click for copyable input](assets.zh/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.zh/prepare-aspirin/O_18.png)
产生有这样成分的分子的概率小于 90%,不过其在质谱中则为最显著分子峰值.
In[12]:=
![Click for copyable input](assets.zh/prepare-aspirin/In_22.png)
Times @@ MapThread[(QuantityMagnitude[#1[
EntityProperty["Isotope", "IsotopeAbundance"]],
"PureUnities"])^#2 &, {stableIsotopes[[All, 1]], Values[elem]}]
Out[12]=
![](assets.zh/prepare-aspirin/O_19.png)