EMSL_Basis_Set_Exchange_Local/src/parser_handler.py

166 lines
5.4 KiB
Python

import sys
import os
def get_dict_ele():
"""Return dict[atom]=[abreviation]"""
elt_path = os.path.join(os.path.dirname(sys.argv[0]), "/src/misc/elts_abrev.dat")
with open(elt_path, "r") as f:
data = f.readlines()
dict_ele = dict()
for i in data:
l = i.split("-")
dict_ele[l[1].strip().lower()] = l[2].strip().lower()
return dict_ele
# ______ _ _ _ _
# | ___| | | | (_) | |
# | |_ _ __ ___ _ __ ___ __ _| |_ __| |_ ___| |_
# | _| '__/ _ \| '_ ` _ \ / _` | __| / _` | |/ __| __|
# | | | | | (_) | | | | | | (_| | |_ | (_| | | (__| |_
# \_| |_| \___/|_| |_| |_|\__,_|\__| \__,_|_|\___|\__|
#
from src.parser.gamess_us import parse_basis_data_gamess_us
from src.parser.gaussian94 import parse_basis_data_gaussian94
from src.parser.nwchem import parse_basis_data_nwchem
parser_dict = {"Gaussian94": parse_basis_data_gaussian94,
"GAMESS-US": parse_basis_data_gamess_us,
"NWChem": parse_basis_data_nwchem,
"GAMESS-UK": None,
"Turbomole": None,
"TX93": None,
"Molpro": None,
"MolproInt": None,
"Hondo": None,
"SuperMolecule": None,
"Molcas": None,
"HyperChem": None,
"Dalton": None,
"deMon-KS": None,
"deMon2k": None,
"AcesII": None}
def check_format(format):
try:
parser_dict[format]
except KeyError:
str_ = ["This format ({0}) is not available in EMSL".format(format),
"EMSL provide this list : {0}".format(parser_dict.keys())]
print >> sys.stderr, "\n".join(str_)
sys.exit(1)
else:
return format
def get_parser_function(format):
if not parser_dict[format]:
list_parser = [k for k, v in parser_dict.iteritems() if v]
str_ = ["We have no parser for this format {0}".format(format),
"We only support {0}".format(list_parser),
"Fill free to Fock /pull request",
"You just need to add a function like this one:",
"'src.pars.gamess_us.parse_basis_data_gamess_us'"]
print >> sys.stderr, "\n".join(str_)
sys.exit(1)
else:
return parser_dict[format]
# _____ _ _ _ _
# / ___| | | | (_) | |
# \ `--. _ _ _ __ ___ _ __ ___ ___| |_ _ __ _ _ __| |_ ___| |_
# `--. \ | | | '_ ` _ \| '_ ` _ \ / _ \ __| '__| | | | / _` | |/ __| __|
# /\__/ / |_| | | | | | | | | | | | __/ |_| | | |_| | | (_| | | (__| |_
# \____/ \__, |_| |_| |_|_| |_| |_|\___|\__|_| \__, | \__,_|_|\___|\__|
# __/ | __/ |
# |___/ |___/
"""
Return the begin and the end of all the type of orbital
input: atom_basis = [name, S 1, 12 0.12 12212, ...]
output: [ [type, begin, end], ...]
"""
from src.parser.gamess_us import l_symmetry_gamess_us
symmetry_dict = {"GAMESS-US": l_symmetry_gamess_us}
def get_symmetry_function(format):
"""
Return the begin and the end of all the type of orbital
input: atom_basis = [name, S 1, 12 0.12 12212, ...]
output: [ [type, begin, end], ...]
"""
try:
f = symmetry_dict[format]
except KeyError:
print >> sys.stderr, "You need to add a function in symmetry_dict"
print >> sys.stderr, "for your format ({0})".format(format)
sys.exit(1)
else:
return f
# _ _ _ _ _ _ _ _ _ ______ _ _
# | | | | | | | ( | ) | ( | ) | _ (_) | |
# | |_| | __ _ _ __ __| | | ___ V V| | V V | | | |_ ___| |_
# | _ |/ _` | '_ \ / _` | |/ _ \ | | | | | | |/ __| __|
# | | | | (_| | | | | (_| | | __/ | |____ | |/ /| | (__| |_
# \_| |_/\__,_|_| |_|\__,_|_|\___| \_____/ |___/ |_|\___|\__|
"""
Tranforme SP special function (create using get_symmetry_function) into S and P
"""
from src.parser.gamess_us import handle_l_gamess_us
handle_l_dict = {"GAMESS-US": handle_l_gamess_us}
def get_handle_l_function(format):
"""
Tranforme SP special function (create using get_symmetry_function)
into S and P
"""
try:
return handle_l_dict[format]
except KeyError:
print >> sys.stderr, "You need to add a function in handle_l_dict"
print >> sys.stderr, "for your format ({0})".format(format)
sys.exit(1)
# _ _ _ _ _ _ _
# | | | | | (_) | | | | (_)
# | | | | __ _| |_ __| | __ _| |_ _ ___ _ __
# | | | |/ _` | | |/ _` |/ _` | __| |/ _ \| '_ \
# \ \_/ / (_| | | | (_| | (_| | |_| | (_) | | | |
# \___/ \__,_|_|_|\__,_|\__,_|\__|_|\___/|_| |_|
#
from src.parser.gamess_us import check_gamess
from src.parser.nwchem import check_NWChem
d_check = {"GAMESS-US": check_gamess,
"NWChem": check_NWChem}
def get_check_function(name_program):
"""
Tranforme SP special function (create using get_symmetry_function)
into S and P
"""
try:
return d_check[name_program]
except KeyError:
str_ = "You need to add a check funtion for your program {0}"
print >> sys.stderr, str_.format(name_program)
print >> sys.stderr, "This one are avalaible {0}".format(
d_check.keys())
sys.exit(1)