The bse command line interface
The basis set exchange package contains a command-line interface called
bse
. This command can be used to obtain/print basis sets and references,
as well as query the library for information and metadata.
Installation
The command line is automatically installed when the library is installed
via pip
or similar python package managers.
Depending on how packages are installed, you may need to add the path to
the bse
program to the PATH environment variable.
TAB completion
Tab completion is available for the bash interpreter and is tremendously useful. If enabled, TAB autocompletion will be enabled for
Directories
Arguments (
--elements
, etc)Basis set names
Basis set families
Roles
Basis set formats and reference formats
Autocompletion is implemented via the argcomplete library (https://argcomplete.readthedocs.io). TAB completion can be enabled one of two ways:
Run
eval "$(register-python-argcomplete bse)"
on the command lineEnable globally by running
activate-global-python-argcomplete
and then sourcing~/.bash_completion.d/python-argcomplete.sh
manually or in.bashrc
.
The first method must be run every time a new terminal is opened.
For the second method, you can change the path where the python-argcomplete.sh
script is installed.
For more details, see the documentation for argcomplete (particularly here and here)
Note that both the register-python-argcomplete
and activate-global-python-argcomplete
are part
of the python argcomplete package and you may need to add the path manually to the PATH
environment variable.
General usage
The bse
command is generally followed by a subcommand (see below). bse -h
will display help
and bse -V
will display the version and exit.
$ bse -h
usage: bse [-h] [-V] [-d PATH] [-o PATH] subcommand ...
Description of your program
positional arguments:
subcommand
list-formats Output a list of basis set formats that can be used
with obtaining a basis set
list-writer-formats
Output a list available basis set formats that can be
written
list-reader-formats
Output a list of basis set formats that can be read
list-ref-formats Output a list all available reference formats and
descriptions
list-roles Output a list all available roles and descriptions
get-data-dir Output the default data directory of this package
list-basis-sets Output a list all available basis sets and
descriptions
list-families Output a list all available basis set families
lookup-by-role Lookup a companion/auxiliary basis by primary basis
and role
get-basis Output a formatted basis set
get-refs Output references for a basis set
get-info Output general info and metadata for a basis set
get-notes Output the notes for a basis set
get-family Output the family of a basis set
get-versions Output a list all available versions of a basis set
get-family-notes Get the notes of a family of basis sets
convert-basis Convert basis set files from one format to another
autoaux-basis Form AutoAux auxiliary basis
autoabs-basis Form AutoABS auxiliary basis
create-bundle Create a bundle of basis sets
options:
-h, --help show this help message and exit
-V show program's version number and exit
-d PATH, --data-dir PATH
Override which data directory to use
-o PATH, --output PATH
Output to given file rather than stdout
In general, values provided to options (such as basis set names, formats, and elements) are not case sensitive.
There are two global options available to all subcommands. The first is an alternate
data directory can be specified with -d
or --data-dir
. By default, the built-in
data directory will be used.
$ bse -d ${HOME}/my_data_dir list-basis-sets
Traceback (most recent call last):
File "/opt/hostedtoolcache/Python/3.10.15/x64/bin/bse", line 8, in <module>
sys.exit(run_bse_cli())
File "/opt/hostedtoolcache/Python/3.10.15/x64/lib/python3.10/site-packages/basis_set_exchange/cli/bse_cli.py", line 231, in run_bse_cli
args = cli_check_normalize_args(args)
File "/opt/hostedtoolcache/Python/3.10.15/x64/lib/python3.10/site-packages/basis_set_exchange/cli/check.py", line 159, in cli_check_normalize_args
args_copy.data_dir = _cli_check_data_dir(args.data_dir)
File "/opt/hostedtoolcache/Python/3.10.15/x64/lib/python3.10/site-packages/basis_set_exchange/cli/check.py", line 49, in _cli_check_data_dir
raise RuntimeError("Data directory '{}' does not exist or is not a directory".format(data_dir))
RuntimeError: Data directory '/home/runner/my_data_dir' does not exist or is not a directory
Also, output can be written to a file rather than to the terminal
$ bse -o /tmp/my_out_file list-basis-sets
$ cat /tmp/my_out_file
2ZaP 2ZaP basis set of Zhong, Barnes, and Petersson
2ZaPa-NR Double Zeta augmented + polarization (nonrelativistic)
2ZaPa-NR-CV Double zeta augmented +polarization (nonrelativistic + core-valence)
...
Element strings
Some subcommands take a string specifying which elements the subcommand will work with. This string is a comma-separated list of element symbols and/or Z numbers. Ranges can also be used.
Symbols are not case sensitive and can be mixed with Z-numbers.
- Examples:
H-Ne
- for hydrogen through neon (inclusive)1-10
- same as aboveC,8,p-17
- carbon, oxygen, phosphorus through chlorine
Subcommands
Below is a list of the available subcommands. All subcommands
can take the -h
option to display help for that subcommand.
$ bse get-basis -h
usage: bse get-basis [-h] [--elements ELEMENTS] [--version VERSION]
[--noheader] [--unc-gen] [--unc-spdf] [--unc-seg]
[--rm-free] [--opt-gen] [--make-gen]
[--aug-steep AUG_STEEP] [--aug-diffuse AUG_DIFFUSE]
[--get-aux GET_AUX]
basis fmt
positional arguments:
...
list-formats
Lists the available output formats of basis sets.
With -n
or --no-description
, the command will hide the description of the formats.
$ bse list-formats
acesii ACES II
bdf BDF
bsedebug BSE Debug
cfour CFOUR
cp2k CP2K
crystal Crystal
dalton Dalton
demon2k deMon2K
fhiaims FHI-aims
gamess_uk GAMESS UK
gamess_us GAMESS US
gaussian94 Gaussian
gaussian94lib Gaussian, system library
jaguar Jaguar
json JSON
libmol Molpro system library
molcas Molcas
molcas_library Molcas basis_library
molpro Molpro
nwchem NWChem
orca ORCA
pqs PQS
psi4 Psi4
qchem Q-Chem
qcschema QCSchema
ricdwrap Wrapper for generating acCD auxiliary basis sets with OpenMolcas
turbomole Turbomole
veloxchem VeloxChem
xtron xTron
$ bse list-formats -n
acesii
bdf
bsedebug
cfour
cp2k
crystal
dalton
demon2k
fhiaims
gamess_uk
gamess_us
gaussian94
gaussian94lib
jaguar
json
libmol
molcas
molcas_library
molpro
nwchem
orca
pqs
psi4
qchem
qcschema
ricdwrap
turbomole
veloxchem
xtron
list-ref-formats
Lists the available output formats of references.
With -n
or --no-description
, the command will hide the description of the formats.
$ bse list-ref-formats
txt Plain Text
bib BibTeX
ris RIS
endnote EndNote
json JSON
$ bse list-ref-formats -n
txt
bib
ris
endnote
json
list-writer-formats
Print a list of the formats that can be written to by the library
$ bse list-writer-formats
acesii ACES II
bdf BDF
bsedebug BSE Debug
cfour CFOUR
cp2k CP2K
crystal Crystal
dalton Dalton
demon2k deMon2K
fhiaims FHI-aims
gamess_uk GAMESS UK
gamess_us GAMESS US
gaussian94 Gaussian
gaussian94lib Gaussian, system library
jaguar Jaguar
json JSON
libmol Molpro system library
molcas Molcas
molcas_library Molcas basis_library
molpro Molpro
nwchem NWChem
orca ORCA
pqs PQS
psi4 Psi4
qchem Q-Chem
qcschema QCSchema
ricdwrap Wrapper for generating acCD auxiliary basis sets with OpenMolcas
turbomole Turbomole
veloxchem VeloxChem
xtron xTron
list-reader-formats
Print a list of the formats that can be read by the library
$ bse list-reader-formats
turbomole Turbomole
gaussian94 Gaussian94
nwchem NWChem
dalton Dalton
molcas Molcas
molcas_library Molcas basis_library
molpro Molpro
libmol Molpro system library
cfour CFOUR
genbas Genbas
gbasis GBasis
demon2k deMon2k
ricdlib MolCAS RICDlib
gamess_us GAMESS US
cp2k CP2K
crystal Crystal
veloxchem VeloxChem
list-roles
Lists the available basis set roles. Takes no arguments
$ bse list-roles
orbital Orbital basis
jfit J-fitting
jkfit JK-fitting
rifit RI-fitting
optri Optimized RI-fitting
admmfit Auxiliary-Density Matrix Method Fitting
dftxfit DFT Exchange Fitting
dftjfit DFT Correlation Fitting
guess Initial guess
get-data-dir
Print the default data directory (built into the BSE package)
$ bse get-data-dir
/opt/hostedtoolcache/Python/3.10.15/x64/lib/python3.10/site-packages/basis_set_exchange/data
list-basis-sets
Lists the available basis sets.
This command respects the --data-dir
option.
With -n
or --no-description
, the command will hide the description of the basis set.
$ bse list-basis-sets
2ZaP 2ZaP basis set of Zhong, Barnes, and Petersson
2ZaPa-NR Double Zeta augmented + polarization (nonrelativistic)
2ZaPa-NR-CV Double zeta augmented +polarization (nonrelativistic + core-valence)
...
Basis sets can be filtered by role, family, or by arbitrary search string (case insensitive). See list-roles and list-families.
$ bse list-basis-sets -r jfit
def2-mTZVPP-RIJ def2-mTZVPP RI-J basis for r2SCAN-3c method
def2-universal-JFIT Coulomb fitting auxiliary basis for def2 basis sets
x2c-JFIT x2c coulomb fitting
...
$ bse list-basis-sets -f pople -s '31g'
4-31G 4-31G valence double-zeta basis set
6-31G 6-31G valence double-zeta
6-31G(2df,p) 6-31G(2df,p)
...
list-families
List all basis set families.
This command respects the --data-dir
option.
$ bse list-families
acvxz-j
ahlrichs
ahlrichs_dhf
ahlrichs_fit
ahlrichs_x2c
...
lookup-by-role
Find the name of an auxiliary basis set given the primary basis and the desired role.
$ bse lookup-by-role def2-tzvp jfit
def2-universal-jfit
get-basis
Print a formatted basis set from the library.
This command has several options. See bse get-basis -h
for a complete list.
This subcommand takes two required arguments: the name of the basis set and the format. See list-basis-sets and list-formats.
The main popular option is --elements
which takes an element string. See Element strings.
By default, all elements for which the basis set is defined are included.
A version of the basis set can be specified with --version
.
See get-versions for how to list versions available for a basis set.
By default, a descriptive header is included. This may be disabled with --noheader
Some examples:
$ bse get-basis sto-3g nwchem
#----------------------------------------------------------------------
# Basis Set Exchange
# Version 0.11.dev46+g5a1fd907
# https://www.basissetexchange.org
#----------------------------------------------------------------------
# Basis set: STO-3G
# Description: STO-3G Minimal Basis (3 functions/AO)
# Role: orbital
# Version: 1 (Data from Gaussian09)
#----------------------------------------------------------------------
BASIS "ao basis" SPHERICAL PRINT
#BASIS SET: (3s) -> [1s]
H S
0.3425250914E+01 0.1543289673E+00
0.6239137298E+00 0.5353281423E+00
0.1688554040E+00 0.4446345422E+00
#BASIS SET: (3s) -> [1s]
He S
...
$ bse get-basis sto-3g gaussian94 --noheader
H 0
S 3 1.00
0.3425250914D+01 0.1543289673D+00
0.6239137298D+00 0.5353281423D+00
0.1688554040D+00 0.4446345422D+00
****
He 0
S 3 1.00
0.6362421394D+01 0.1543289673D+00
0.1158922999D+01 0.5353281423D+00
0.3136497915D+00 0.4446345422D+00
****
Li 0
S 3 1.00
0.1611957475D+02 0.1543289673D+00
0.2936200663D+01 0.5353281423D+00
0.7946504870D+00 0.4446345422D+00
SP 3 1.00
0.6362897469D+00 -0.9996722919D-01 0.1559162750D+00
0.1478600533D+00 0.3995128261D+00 0.6076837186D+00
...
$ bse get-basis sto-3g gaussian94 --elements C,7,11-13 --noheader
C 0
S 3 1.00
0.7161683735D+02 0.1543289673D+00
0.1304509632D+02 0.5353281423D+00
0.3530512160D+01 0.4446345422D+00
SP 3 1.00
0.2941249355D+01 -0.9996722919D-01 0.1559162750D+00
0.6834830964D+00 0.3995128261D+00 0.6076837186D+00
0.2222899159D+00 0.7001154689D+00 0.3919573931D+00
****
...
$ bse get-basis cc-pvtz nwchem --noheader --version 0 --elements C --make-gen
BASIS "ao basis" SPHERICAL PRINT
#BASIS SET: (10s,5p,2d,1f) -> [4s,3p,2d,1f]
C S
8236.0000000 0.0005310 0.0000000 -0.0001130 0.0000000
1235.0000000 0.0041080 0.0000000 -0.0008780 0.0000000
280.8000000 0.0210870 0.0000000 -0.0045400 0.0000000
79.2700000 0.0818530 0.0000000 -0.0181330 0.0000000
25.5900000 0.2348170 0.0000000 -0.0557600 0.0000000
8.9970000 0.4344010 0.0000000 -0.1268950 0.0000000
3.3190000 0.3461290 0.0000000 -0.1703520 0.0000000
...
get-refs
Print formatted reference info for a basis set.
This subcommand takes two required arguments: the name of the basis set, and the desired reference format. See list-basis-sets and list-ref-formats.
Elements can be restricted with --elements
. See Element strings.
By default, all elements for which the basis set is defined are included.
A version of the basis set can be specified with --version
.
See get-versions for how to list versions available for a basis set.
$ bse get-refs def2-tzvp --elements 1 bib
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% If you downloaded data from the basis set
% exchange or used the basis set exchange python library, please cite:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@article{pritchard2019a,
author = {Pritchard, Benjamin P. and Altarawy, Doaa and Didier, Brett and Gibsom, Tara D. and Windus, Theresa L.},
title = {A New Basis Set Exchange: An Open, Up-to-date Resource for the Molecular Sciences Community},
journal = {J. Chem. Inf. Model.},
volume = {59},
pages = {4814-4820},
year = {2019},
doi = {10.1021/acs.jcim.9b00725}
}
@article{feller1996a,
author = {Feller, David},
title = {The role of databases in support of computational chemistry calculations},
journal = {J. Comput. Chem.},
volume = {17},
pages = {1571-1586},
year = {1996},
doi = {10.1002/(SICI)1096-987X(199610)17:13<1571::AID-JCC9>3.0.CO;2-P}
}
@article{schuchardt2007a,
author = {Schuchardt, Karen L. and Didier, Brett T. and Elsethagen, Todd and Sun, Lisong and Gurumoorthi, Vidhya and Chase, Jared and Li, Jun and Windus, Theresa L.},
title = {Basis Set Exchange: A Community Database for Computational Sciences},
journal = {J. Chem. Inf. Model.},
volume = {47},
pages = {1045-1052},
year = {2007},
doi = {10.1021/ci600510j}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% References for the basis set
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% H
% Common base shells for def2-TZV*
% weigend2005a
%
% Additional functions to form def2-TZVP
% weigend2005a
%
@article{weigend2005a,
author = {Weigend, Florian and Ahlrichs, Reinhart},
title = {Balanced basis sets of split valence, triple zeta valence and quadruple zeta valence quality for H to Rn: Design and assessment of accuracy},
journal = {Phys. Chem. Chem. Phys.},
volume = {7},
pages = {3297},
year = {2005},
doi = {10.1039/b508541a}
}
get-info
Print some metadata about a basis set. This takes only one required argument (the name of the basis set).
$ bse get-info cc-pvdz
--------------------------------------------------------------------------------
cc-pvdz
--------------------------------------------------------------------------------
Display Name: cc-pVDZ
Description: cc-pVDZ
Role: orbital
Family: dunning
Function Types: gto,gto_spherical
Latest Version: 1
Auxiliary Basis Sets:
rifit cc-pvdz-rifit
Versions:
0 2011-02-14 H-Ar,Ca-Kr Data from the Original Basis Set Exchange
1 2018-10-03 H-Ar,Ca-Kr Data from ccRepo/Grant Hill
get-notes
Print the notes about a basis set. This takes only one required argument (the name of the basis set).
$ bse get-notes sto-3g
--------------------------------------------------------------------------------
Original BSE Contributor: Dr. David Feller
Original BSE PI: (none)
Original BSE Last Modified: Mon, 15 Jan 2007 23:47:11 GMT
--------------------------------------------------------------------------------
Notes from the original BSE
===========================
STO-3G Minimal Basis
--------------------
The exponents and contraction coefficients for the STO-3G basis sets were
obtained by least-squares fitting of Slater-type AO's, with scaling factors
based on optimal values for a variety of molecules. The s and p exponents for
the valence shell were constrained to be equal.
The original scaling factors for Li, Be and B were superseded by values given
in the paper on second row basis sets.
3s and 3p exponents and contraction coefficients are taken from the work of
Hehre et al. JCP 52, 2769 (1970) while the scaling factors for K, Ca, etc.
come from J. Am. Chem. Soc. 19, 2225 (1980).
Note: Whenever the exponents for transition metals differed between programs
such as Gaussian and GAMESS or HONDO, the Gaussian exponents were used.
Attempts to obtain information from W. J. Hehre to arbitrate the
differences proved unsuccessful. The Gaussian 5d convention was used.
STO-3G Atomic Energies
ROHF
State UHF (noneq) ROHF (noneq) ROHF(equiv) HF Limit (equiv)
----- ---------- ----------- ----------- ---------
H 2-S -0.466582 -0.466582 -0.466582 -0.50000
He 1-S -2.807784 -2.807784 -2.807784 -2.86168
Li 2-S -7.315526 -7.315526 -7.315526 -7.43273
Be 1-S -14.351880 -14.351880 -14.351880 -14.57302
B 2-P -24.148989 -24.148989 -24.148989 -24.52906
C 3-P -37.198393 -37.198393 -37.198393 -37.68862
N 4-S -53.719010 -53.719010 -53.719010 -54.40094
O 3-P -73.804150 -73.804150 -73.804150 -74.80940
F 2-P -97.986505 -97.986505 -97.986505 -99.40935
Ne 1-S -126.132546 -126.132546 -126.132546 -128.54710
Na 2-S -159.668424 -159.668211 -159.668211 -161.85891
Mg 1-S -197.007354 -197.007354 -197.007354 -199.61463
Al 2-P -238.858362 -238.858358 -238.858358 -241.87671
Si 3-P -285.466217 -285.466211 -285.466211 -288.85436
P 4-S -336.868770 -336.868770 -336.868770 -340.71878
S 3-P -393.130219 -393.130219 -393.130219 -397.50490
Cl 2-P -454.542192 -454.542192 -454.542192 -459.48207
Ar 1-S -521.222880 -521.222880 -521.222880 -526.81751
K 2-S -593.077768 -593.077768 -593.077768 -599.16479
Ca 1-S -669.988870 -676.75817
Sc 2-D -751.993610 -759.73572
Ti 3-F -839.555178 -848.40600
V 4-F -933.024609 -942.88433
Cr 7-S -1032.076131 -1043.35636
Mn 6-S -1137.648436 -1149.86624
Fe 5-D -1248.758435 -1262.44366
Co 4-F -1366.389467 -1381.41454
Ni 3-F -1488.312456 -1506.87089
Cu 2-S -1618.323760 -1638.96371
Zn 1-S -1756.295868 -1777.84810
Ga 2-P -1900.728501 -1923.26098
Ge 3-P -2051.636259 -2075.35971
As 4-S -2209.263672 -2234.23864
Se 3-P -2373.527343 -2399.86759
Br 2-P -2544.636781 -2572.44130
Kr 1-S -2722.706000 -2752.05496
Rb 2-S -2907.604271
Sr 1-S -3099.116725
Y 2-D
Zr 3-F
Nb 4-F
HF Limit values are taken from C. Froese Fischer, The Hartree-Fock Method for
Atoms, A numerical Approach. (John Wylie and Sons, N.Y., 1977)
get-family
Get the family of the basis set. This takes only one required argument (the name of the basis set).
$ bse get-family cc-pvtz-rifit
dunning_fit
get-versions
Get the available versions of a basis set. This takes only one required argument (the name of the basis set).
With -n
or --no-description
, the command will hide the description of the version.
$ bse get-versions aug-cc-pvtz
0 Data from the Original Basis Set Exchange
1 Data from ccRepo/Grant Hill
$ bse get-versions aug-cc-pvtz -n
0
1
get-family-notes
Print the notes about a basis set family. This takes only one required argument (the basis set family).
$ bse get-family-notes sto
Notes about STO basis sets
============================
STO basis sets are formed by fitting a set of 2/3/4/5/6 exponents/coefficients to
a corresponding Slater function. A set of elements (first row main group, for example)
will share a set of coefficients and a common set of base exponents which are
multiplied by the square of an element-specific scaling factor.
The data in this library corresponds to that found in Gaussian09. Scaling
factors were taken from the literature and verified by dividing them out
...