1#!/usr/bin/python3 2# This script downloads the basis set library data from www.basissetexchange.org 3# into the directory $NWCHEM_TOP/src/basis/libraries.bse 4# to use, set the env. variable NWCHEM_BASIS_LIBRARY=$NWCHEM_TOP/src/basis/libraries.bse/ 5# Requires the installation of the python env. from 6# https://github.com/MolSSI-BSE/basis_set_exchange 7# See https://molssi-bse.github.io/basis_set_exchange/ 8# 9# names changed 10# def2-universal-jfit was weigend_coulomb_fitting 11# dgauss-a1-dftjfit was dgauss_a1_dft_coulomb_fitting 12# dgauss-a2-dftjfit was dgauss_a2_dft_coulomb_fitting 13# 14import basis_set_exchange as bse 15from datetime import datetime 16today = datetime.now().isoformat(timespec='minutes') 17print(today) 18all_bs = bse.get_all_basis_names() 19md = bse.get_metadata() 20for bas_name in all_bs: 21 #get version and list of elements 22 version_bs = md[bas_name]['latest_version'] 23 elements_list = md[bas_name]['versions'][version_bs]['elements'] 24 #open file 25 # get rid of asterisks 26 file_name = bas_name.replace("*","s") 27 #get rid of parenthesis 28 file_name = file_name.replace("(","") 29 file_name = file_name.replace(")","") 30 #replace commas with underscore 31 file_name = file_name.replace(",","_") 32 #replace whitespace with underscore 33 file_name = file_name.replace(" ","_") 34 #replace forward slash with underscore 35 file_name = file_name.replace("/","_") 36 print(' file name is '+file_name+"\n") 37 output_file = open(file_name,'w') 38 output_file.write('# BSE Version '+bse.version()+'\n') 39 output_file.write('# Data downloaded at '+today+'\n') 40 output_file.write('# '+bas_name+' version number '+version_bs+'\n') 41 output_file.write('# Description: '+md[bas_name]['description']+'\n') 42 output_file.write('# Role: '+md[bas_name]['role']+'\n') 43 output_file.write('# '+bse.get_references(bas_name,fmt='txt').replace('\n','\n# ')) 44 output_file.write('# \n') 45 for element in elements_list: 46 #element='h' 47 try: 48 bs_str=bse.get_basis(bas_name, header=False, elements=element, fmt='nwchem', optimize_general=True, uncontract_general=True) 49 except: 50# print("failed for"+element) 51 pass 52 else: 53 bs_str=bs_str.replace("BASIS","basis") 54 bs_str=bs_str.replace("END","end") 55 bs_str=bs_str.replace("PRINT","") 56 element_str=bse.misc.compact_elements([element]) 57 bs_str=bs_str.replace("ao basis",element_str+"_"+bas_name) 58 #ECP 59 bs_str=bs_str.replace("ECP","ecp \""+element_str+"_"+bas_name+"\"") 60 output_file.write(bs_str) 61 # 62 print(bas_name+" "+element_str) 63print("end") 64 65