Prepare aspirina
La aspirina es el medicamento más utilizado para tratar el dolor, la fiebre y la inflamación. Esta puede ser sintetizada combinando cantidades equimolares de ácido salicílico y anhídrido acético. Aquí, los datos químicos de Wolfram Knowledgebase son utilizados junto con el marco de cantidades y grupos de entidades, copias e instancias, para estudiar la preparación química de la aspirina.
Represente un lote típico de laboratorio para la preparación de 100 milimolar de aspirina usando EntityGroup.

reactants =
EntityGroup[{EntityInstance[Entity["Chemical", "SalicylicAcid"],
Quantity[0.1, "Moles"]],
EntityInstance[Entity["Chemical", "AceticAnhydride"],
Quantity[0.1, "Moles"]]}]

Calcule el total de masa para este lote usando una forma "currificada" de una consulta de entidades y propiedades.

mass = reactants["AbsoluteMass"]

Debido a que el anhídrido acético es un líquido, sería conveniente saber exactamente cuánto se necesita.

UnitConvert[
EntityInstance[Entity["Chemical", "AceticAnhydride"],
Quantity[0.1, "Moles"]]["AbsoluteVolume"], "Milliliter"]

Suponiendo un estequiométrico, ej. una reacción cuantitativa (teórica), esto produce 100 milimoles de aspirina. Sin embargo, en la práctica produce alrededor del 90%.

EntityInstance[Entity["Chemical", "Aspirin"],
0.9*Quantity[0.1, "Moles"]]["AbsoluteMass"]

Cuente los átomos que constituyen la molécula de aspirina.

elem = Entity["Chemical", "Aspirin"]["ElementCounts"]

Reúna los números adecuados de estos átomos en una expresión de entidades agrupadas.

atomAssemble =
EntityGroup[
MapThread[EntityCopies[#1, #2] &, {Keys[elem], Values[elem]}]]


atomicmass = atomAssemble["AtomicMass"]

Como se espera, la masa atómica total de este grupo de entidades coincide con la masa molar de la molécula completa.

molarmass =
Entity["Chemical", "Aspirin"][
EntityProperty["Chemical", "MolarMass"]]


Equal @@ QuantityMagnitude /@ {atomicmass, molarmass}

Sin embargo, existen otras combinaciones isotópicas posibles, cada una de ellas con una masa total ligeramente diferente.

stableIsotopes = #[EntityProperty["Element", "StableIsotopes"]] & /@
Keys[elem]

Este grupo consiste solamente de isótopos estándar (el llamado "de iones principales").

EntityGroup[{EntityCopies[Entity["Isotope", "C12"], 9],
EntityCopies[Entity["Isotope", "H1"], 8],
EntityCopies[Entity["Isotope", "O16"], 4]}]["AtomicMass"]

La probabilidad de ocurrencia de una molécula con tal composición es menor al 90%. Sin embargo, en un espectro de masas sería el pico molecular más prominente.

Times @@ MapThread[(QuantityMagnitude[#1[
EntityProperty["Isotope", "IsotopeAbundance"]],
"PureUnities"])^#2 &, {stableIsotopes[[All, 1]], Values[elem]}]
