#!/usr/bin/env python # -*- coding: utf-8 -*- """EMSL Api. Usage: EMSL_api.py list_basis [--basis=...] [--atom=...] [--db_path=] [--average_mo_number] EMSL_api.py list_atoms --basis= [--db_path=] EMSL_api.py get_basis_data --basis= --format= [--atom=...] [--db_path=] [(--save [--path=])] [--check] [--treat_l] EMSL_api.py list_formats EMSL_api.py create_db --db_path= --format= [--no-contraction] EMSL_api.py (-h | --help) EMSL_api.py --version Options: -h --help Show this screen. --version Show version. --no-contraction Basis functions are not contracted is the path to the SQLite3 file containing the Basis sets. By default is $EMSL_API_ROOT/db/Gausian_uk.db Example of use: ./EMSL_api.py list_basis --atom Al --atom U ./EMSL_api.py list_basis --atom S --basis 'cc-pV*' --average_mo_number ./EMSL_api.py list_atoms --basis ANO-RCC ./EMSL_api.py get_basis_data --basis 3-21++G* """ version = "0.3.0" import os from src.docopt import docopt from src.EMSL_dump import EMSL_dump from src.EMSL_local import EMSL_local, checkSQLite3 if __name__ == '__main__': arguments = docopt(__doc__, version='EMSL Api ' + version) # ___ # | ._ o _|_ # _|_ | | | |_ # if arguments["--db_path"]: db_path = arguments["--db_path"] else: db_path = os.path.dirname(__file__) + "/db/Gamess-us.db" # Check the db try: if not(arguments['create_db']): db_path, db_path_changed = checkSQLite3(db_path) except: raise # _ _ _ ______ _ # | | (_) | | | ___ \ (_) # | | _ ___| |_ | |_/ / __ _ ___ _ ___ # | | | / __| __| | ___ \/ _` / __| / __| # | |___| \__ \ |_ | |_/ / (_| \__ \ \__ \ # \_____/_|___/\__| \____/ \__,_|___/_|___/ if arguments["list_basis"]: e = EMSL_local(db_path=db_path) elts = arguments["--atom"] amn = arguments["--average_mo_number"] l = e.get_list_basis_available(elts, arguments["--basis"], average_mo_number=amn) if amn: for name, des, avg in l: print "- '{}' ({}) || {:<50}".format(name, avg, des) else: for name, des in l: print "- '{}' || {:<50}".format(name, des) # _ _ _ _____ _ _ # | | (_) | | | ___| | | | # | | _ ___| |_ | |__ | | ___ _ __ ___ ___ _ __ | |_ ___ # | | | / __| __| | __|| |/ _ \ '_ ` _ \ / _ \ '_ \| __/ __| # | |___| \__ \ |_ | |___| | __/ | | | | | __/ | | | |_\__ \ # \_____/_|___/\__| \____/|_|\___|_| |_| |_|\___|_| |_|\__|___/ if arguments["list_atoms"]: e = EMSL_local(db_path=db_path) basis_name = arguments["--basis"] l = e.get_list_element_available(basis_name) print ", ".join(l) # ______ _ _ _ # | ___ \ (_) | | | | # | |_/ / __ _ ___ _ ___ __| | __ _| |_ __ _ # | ___ \/ _` / __| / __| / _` |/ _` | __/ _` | # | |_/ / (_| \__ \ \__ \ | (_| | (_| | || (_| | # \____/ \__,_|___/_|___/ \__,_|\__,_|\__\__,_| if arguments["get_basis_data"]: e = EMSL_local(db_path=db_path, format=arguments["--format"]) basis_name = arguments["--basis"][0] elts = arguments["--atom"] l_atom_basis = e.get_basis(basis_name, elts, arguments["--treat_l"], arguments["--check"]) # Add separation between atoms, and a empty last line str_ = "\n\n".join(l_atom_basis) + "\n" if arguments["--save"]: if arguments["--path"]: path = arguments["--path"] else: path = "_".join([basis_name, ".".join(elts)]) path = "/tmp/" + path + ".bs" with open(path, 'w') as f: f.write(str_ + "\n") print path else: print str_ # _ _ _ __ _ # | | (_) | | / _| | | # | | _ ___| |_ | |_ ___ _ __ _ __ ___ __ _| |_ ___ # | | | / __| __| | _/ _ \| '__| '_ ` _ \ / _` | __/ __| # | |___| \__ \ |_ | || (_) | | | | | | | | (_| | |_\__ \ # \_____/_|___/\__| |_| \___/|_| |_| |_| |_|\__,_|\__|___/ if arguments["list_formats"]: e = EMSL_dump() for i in e.get_list_format(): print i # _____ _ _ _ # / __ \ | | | | | # | / \/_ __ ___ __ _| |_ ___ __| | |__ # | | | '__/ _ \/ _` | __/ _ \ / _` | '_ \ # | \__/\ | | __/ (_| | || __/ | (_| | |_) | # \____/_| \___|\__,_|\__\___| \__,_|_.__/ if arguments["create_db"]: db_path = arguments["--db_path"] format = arguments["--format"] contraction = not arguments["--no-contraction"] e = EMSL_dump(db_path=db_path, format=format, contraction=contraction) e.new_db() # _ # / | _ _. ._ o ._ _ # \_ | (/_ (_| | | | | | (_| # _| # Clean up on exit if not(arguments['create_db']) and db_path_changed: os.system("rm -f /dev/shm/%d.db" % (os.getpid()))