Skip to content

Periodic table, physical constants, and molecule parsing for quantum chemistry.

License

Notifications You must be signed in to change notification settings

stvogt/QCElemental

 
 

Repository files navigation

QCElemental

Build Status codecov Language grade: Python Documentation Status Chat on Slack python

QCElemental is a resource module for quantum chemistry containing physical constants and periodic table data from NIST and molecule handlers.

Periodic Table and Physical Constants data are pulled from NIST srd144 and srd121, respectively (details) in a renewable manner (class around NIST-published JSON file).

This project also contains a generator, validator, and translator for Molecule QCSchema.

Periodic Table

A variety of periodic table quantities are available using virtually any alias:

>>> import qcelemental as qcel
>>> qcel.periodictable.to_E('KRYPTON')
'Kr'
>>> qcel.periodictable.to_element(36)
'Krypton'
>>> qcel.periodictable.to_Z('kr84')
36
>>> qcel.periodictable.to_A('Kr')
84
>>> qcel.periodictable.to_A('D')
2
>>> qcel.periodictable.to_mass('kr', return_decimal=True)
Decimal('83.9114977282')
>>> qcel.periodictable.to_mass('kr84')
83.9114977282
>>> qcel.periodictable.to_mass('Kr86')
85.9106106269

Physical Constants

Physical constants can be acquired directly from the NIST CODATA:

>>> import qcelemental as qcel
>>> qcel.constants.Hartree_energy_in_eV
27.21138602
>>> qcel.constants.get('hartree ENERGY in ev')
27.21138602
>>> pc = qcel.constants.get('hartree ENERGY in ev', return_tuple=True)
>>> pc.lbl
'Hartree energy in eV'
>>> pc.data
Decimal('27.21138602')
>>> pc.units
'eV'
>>> pc.comment
'uncertainty=0.000 000 17'

Alternatively, with the use of the Pint unit conversion package, arbitrary conversion factors can be obtained:

>>> qcel.constants.conversion_factor("bohr", "miles")
3.2881547429884475e-14

Covalent Radii

Covalent radii are accessible for most of the periodic table from Alvarez, Dalton Transactions (2008) doi:10.1039/b801115j.

>>> import qcelemental as qcel
>>> qcel.covalentradii.get('I')
2.626719314386381
>>> qcel.covalentradii.get('I', units='angstrom')
1.39
>>> qcel.covalentradii.get(116)
Traceback (most recent call last):
...
qcelemental.exceptions.DataUnavailableError: ('covalent radius', 'Lv')
>>> qcel.covalentradii.get(116, missing=4.0)
4.0
>>> qcel.covalentradii.get('iodine', return_tuple=True).to_dict()
{'label': 'I', 'units': 'angstrom', 'data': Decimal('1.39')}

About

Periodic table, physical constants, and molecule parsing for quantum chemistry.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 99.9%
  • Shell 0.1%