def format_basis(basis_tab): '''Convert the input :attr:`Cell.basis` to the internal data format. ``{ atom: (l, kappa, ((-exp, c_1, c_2, ..), nprim, nctr, ptr-exps, ptr-contraction-coeff)), ... }`` Args: basis_tab : dict Similar to :attr:`Cell.basis`, it **cannot** be a str Returns: Formated :attr:`~Cell.basis` Examples: >>> pbc.format_basis({'H':'gth-szv'}) {'H': [[0, (8.3744350009, -0.0283380461), (1.8058681460, -0.1333810052), (0.4852528328, -0.3995676063), (0.1658236932, -0.5531027541)]]} ''' fmt_basis = {} for atom in basis_tab.keys(): atom_basis = basis_tab[atom] if isinstance(atom_basis, str) and 'gth' in atom_basis: fmt_basis[atom] = basis.load(atom_basis, _std_symbol(atom)) else: fmt_basis[atom] = atom_basis return mole.format_basis(fmt_basis)
def format_basis(basis_tab): '''Convert the input :attr:`Cell.basis` to the internal data format:: { atom: (l, kappa, ((-exp, c_1, c_2, ..), nprim, nctr, ptr-exps, ptr-contraction-coeff)), ... } Args: basis_tab : dict Similar to :attr:`Cell.basis`, it **cannot** be a str Returns: Formated :attr:`~Cell.basis` Examples: >>> pbc.format_basis({'H':'gth-szv'}) {'H': [[0, (8.3744350009, -0.0283380461), (1.8058681460, -0.1333810052), (0.4852528328, -0.3995676063), (0.1658236932, -0.5531027541)]]} ''' fmt_basis = {} for atom in basis_tab.keys(): atom_basis = basis_tab[atom] if isinstance(atom_basis, str) and 'gth' in atom_basis: fmt_basis[atom] = basis.load(atom_basis, _std_symbol(atom)) else: fmt_basis[atom] = atom_basis return mole.format_basis(fmt_basis)
def format_basis(basis_tab): '''Convert the input :attr:`Cell.basis` to the internal data format:: { atom: (l, kappa, ((-exp, c_1, c_2, ..), nprim, nctr, ptr-exps, ptr-contraction-coeff)), ... } Args: basis_tab : dict Similar to :attr:`Cell.basis`, it **cannot** be a str Returns: Formated :attr:`~Cell.basis` Examples: >>> pbc.format_basis({'H':'gth-szv'}) {'H': [[0, (8.3744350009, -0.0283380461), (1.8058681460, -0.1333810052), (0.4852528328, -0.3995676063), (0.1658236932, -0.5531027541)]]} ''' def convert(basis_name, symb): if basis_name.lower().startswith('unc'): return uncontract(basis.load(basis_name[3:], symb)) else: return basis.load(basis_name, symb) fmt_basis = {} for atom in basis_tab.keys(): symb = _atom_symbol(atom) stdsymb = _std_symbol(symb) if stdsymb.startswith('GHOST-'): stdsymb = stdsymb[6:] atom_basis = basis_tab[atom] if isinstance(atom_basis, (str, unicode)): if 'gth' in atom_basis: bset = convert(str(atom_basis), symb) else: bset = atom_basis else: bset = [] for rawb in atom_basis: if isinstance(rawb, (str, unicode)) and 'gth' in rawb: bset.append(convert(str(rawb), stdsymb)) else: bset.append(rawb) fmt_basis[symb] = bset return mole.format_basis(fmt_basis)