2023-05-10 21:51 UTC
  • Xyne


Description: Modules for accessing and working with data from the National Institute of Standards and Technology (NIST).
Latest Version: 2021
Source Code: src/
  • any
Optional Dependencies:
Arch Repositories:
  • [xyne-any]
  • [xyne-i686]
  • [xyne-x86_64]
AUR Page: python3-nist
Arch Forum Thread: 151524


The NIST package provides modules for retrieving and caching scientific data from the National Institute of Standards and Technology (NIST).



This module retrieves isotope data from and provides several functions for extracting. The Isotopes object is a wrapper around the underlying caching database and should be used when full access to all of the isotope data is necessary. The Query object is a simplified wrapper around Isotopes for more basic usage.

The module’s main routine provides a fully functional command-line interface for retrieving data. It also provides support for determining the molecular weights of chemicals based on formula or InChi. This function is wrapped by nist-isotopes. See the help message below.


from NIST.Isotopes import Query
from SciNum import DecimalWithUnits as DwU

q = Query()
n = DwU('8', 'mol')
for formula in ('CH4', 'O2', 'CO2', 'InChI=1S/C4H5As/c1-2-4-5-3-1/h1-5H'):
  mol_mass = q.molecular_weight(formula)
  print(formula, ':', mol_mass, '*', n, '=', mol_mass * n)

CH4 : 16.04246 {±0.00108} g mol^{-1} * 8 mol = 128.33968 {±0.00864} g
O2 : 31.9988 {±0.0006} g mol^{-1} * 8 mol = 255.9904 {±0.0048} g
CO2 : 44.0095 {±0.0014} g mol^{-1} * 8 mol = 352.0760 {±0.0112} g
InChI=1S/C4H5As/c1-2-4-5-3-1/h1-5H : 128.00410 {±0.00357} g mol^{-1} * 8 mol = 1024.03280 {±0.02856} g


This module provides an interface for retrieving physical constants from via the PhysicalConstants object.

The module’s main function provides a complete command-line interface for querying physical constants. See the output below.


Source Code

#!/usr/bin/env python3

A very simple example of using SciNum and NIST.PhysicalConstants to calculate
the pressure of an ideal gas.

The following are demonstrated:

* retrieval of physical constants
* declaration of physical quantities
* basic arithmetic
* reduction to SI base units
* expression in desired units by substitution

from SciNum import DecimalWithUnits as DwU, MeasuredDecimalWithUnits as MDwU
from SciNum.units import Units, Definition, SI_DERIVED_UNIT_DEFINITIONS
from SciNum.units import reduce_to_base_units, express
from NIST.PhysicalConstants import PhysicalConstants

pc = PhysicalConstants()

# This is just to show unit multiplication.
k_b = pc['Boltzmann constant']
N_A = pc['Avogadro constant']
R = k_b * N_A

# This would work as well
# R = pc['molar gas constant']

# Measured decimals are used here to keep track of significant figures. Each
# number has 3 and so 3 sigfigs will be included in the output. Digits beyond
# those are just placeholders.
n = MDwU('5.00', 'mol')
T = MDwU('300', 'K')
V = MDwU('2.00', 'm^3')

# Calculate the pressure p from the ideal gas law.
p = (n * R * T) / V

# Display some output.
print('k_b =', k_b)
print('N_A =', N_A)
# Display fewer digits for R.
print('R =', format(R, '.5f'))
print('n =', n)
print('T =', T)
print('V =', V)

print("Rearranging the ideal gas law (pV = nRT) to solve for p")
print("p = (nRT)/V")
print("p = (%s * %s * %s)/(%s)" % (n, format(R, '.5f'), T, V))
print("p = (%s)/(%s)" % (n * R * T, V))

# Express p in default units (whatever the constants and the above values happen
# to be expressed in).
print('p =', format(p, 'f'), "(%d significant figure(s))" % p.precision)

# Express p in SI base units.
p_SI = p.reduce_to_base_units()
print('  =', format(p_SI, 'f'))

# Express p in Pa
# The Definition for Pa could have been created directly instead of manipulating
Pa_base, Pa_factor = reduce_to_base_units(SI_DERIVED_UNIT_DEFINITIONS['Pa'])
Pa_def = Definition('Pa', Pa_base, Pa_factor)
m_def = express(Pa_def, 'm')
p_Pa = p_SI.substitute_units((m_def,))
print('  =', format(p_Pa, 'f'))


k_b = 1.3806488e-23 {±0.0000013e-23} J K^{-1}
N_A = 6.02214129e+23 {±0.00000027e+23} mol^{-1}
R = 8.31446 {±0.00001} J K^{-1} mol^{-1}
n = 5.00 mol
T = 300 K
V = 2.00 m^{3}

Rearranging the ideal gas law (pV = nRT) to solve for p
p = (nRT)/V
p = (5.00 mol * 8.31446 {±0.00001} J K^{-1} mol^{-1} * 300 K)/(2.00 m^{3})
p = (1.25E+4 J)/(2.00 m^{3})
p = 6240 J m^{-3} (3 significant figure(s))
  = 6240 kg m^{-1} s^{-2}
  = 6240 Pa


This module provides the database caching functionality for the other modules.


Wrapper scripts are provide for querying data from the command line:

  • nist-isotopes: query isotope data or get molecular weights for formulae
  • nist-phys_const: query physical constants

Note that the scripts provide an option to draw tables using box-drawing characters. This is not shown below because Firefox is unable to draw such characters correctly (it breaks the table). Try the example commands yourself with the --box option.

echo | sed 's/\./@/'
XHTML 1.0 Strict CSS level 3 Atom 1.0