阿司匹林制备
阿司匹林是一种广泛用于治疗疼痛、发烧和炎症的药品. 他可以通过相同摩尔数的水杨酸(salicylic acid)和酸酐(acid anhydride)合成产生. 这里,我们将 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]=
用“加里化(curried)” 格式的实体-属性查询,计算该批化学品的总质量.
In[2]:=
mass = reactants["AbsoluteMass"]
Out[2]=
由于乙酸酐是液体,知道实际需要多少将会更方便.
In[3]:=
UnitConvert[
EntityInstance[Entity["Chemical", "AceticAnhydride"],
Quantity[0.1, "Moles"]]["AbsoluteVolume"], "Milliliter"]
Out[3]=
假如是化学计量比反应,即(理论上的)定量反应,这将生出 100 mmol 的阿司匹林. 但是实际所能取得的产出大约为 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]=