Skip to content
Periodic table, physical constants, and molecule parsing for quantum chemistry.
Python Shell
Branch: master
Clone or download
Latest commit f07eaa4 Aug 20, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
devtools Pydantic: Version bumps Aug 14, 2019
docs Merge pull request #117 from Lnaden/better_install Aug 20, 2019
nist_data
qcelemental NumPy: Calls top level functions and not core C functions Aug 16, 2019
.codecov.yml Molecule: Patches compare fixes Aug 14, 2019
.gitattributes adds versioneer Sep 1, 2018
.gitignore type: more typing changes May 7, 2019
.lgtm.yml importing raise_error and molutil (#63) May 8, 2019
.travis.yml let's edit the right file Jul 17, 2019
CHANGELOG.md Create CHANGELOG.md Oct 24, 2018
LICENSE Update LICENSE Oct 2, 2018
MANIFEST.in Install correctly -- data yes, checkup_data no Sep 7, 2018
README.md Recursive ndarray-->list fn now handles lists and flattens Jan 15, 2019
readthedocs.yml Docs: Adds RTD builds Oct 9, 2018
setup.cfg star: more mypy checks May 7, 2019
setup.py Pydantic: Version bumps Aug 14, 2019
versioneer.py adds versioneer Sep 1, 2018

README.md

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')}
You can’t perform that action at this time.