def get_basis_data(basis_name, atom_number): """Gets the data of a given basis set name and element.""" # Imports basis data at runtime from BioNanoLEGO.Tools import import_name basis_map_name = basis_name.lower() if basis_map_name in BASIS_MAP: basis_file = "BioNanoLEGO.GaussBasis." + BASIS_MAP[basis_map_name] try: basis_data = import_name(basis_file, BASIS_ATTR) try: return basis_data[atom_number] except: print_avail_basis(basis_name, basis_data) raise LookupError("Failed to import '%s' basis set for No. '%d' element!" % (basis_name, atom_number)) except: raise ImportError("Failed to import '%s' basis set file!" % basis_file) else: raise LookupError("Unknown basis set '%s'!" % basis_name)
except: print_avail_basis(basis_name, basis_data) raise LookupError("Failed to import '%s' basis set for No. '%d' element!" % (basis_name, atom_number)) except: raise ImportError("Failed to import '%s' basis set file!" % basis_file) else: raise LookupError("Unknown basis set '%s'!" % basis_name) def print_avail_basis(basis_name="GTO", basis_data=None): """Prints the available elements for a given basis set.""" from BioNanoLEGO.Element import get_atomic_symbol if basis_data: print " Available elements of basis set " + basis_name valid_elements = "" for atomic_number in basis_data.keys(): valid_elements = valid_elements + ", " + get_atomic_symbol(atomic_number) print valid_elements if __name__ == "__main__": # Prints the available elements for all the basis sets in BioNanoLEGO for basis_name in BASIS_MAP.values(): basis_file = "BioNanoLEGO.GaussBasis." + BASIS_MAP[basis_map_name] try: basis_data = import_name(basis_file, BASIS_ATTR) print_avail_basis(basis_name, basis_data) except: raise ImportError("Failed to import '%s' basis set!" % basis_name)