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(): symb = _atom_symbol(atom) stdsymb = _std_symbol(symb) atom_basis = basis_tab[atom] if isinstance(atom_basis, (str, unicode)) and 'gth' in atom_basis: if atom_basis.lower().startswith('unc'): fmt_basis[symb] = uncontract( basis.load(atom_basis[3:], stdsymb)) else: fmt_basis[symb] = basis.load(atom_basis, stdsymb) else: fmt_basis[symb] = 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 : list 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(): symb = _symbol(atom) rawsymb = _rm_digit(symb) stdsymb = _std_symbol(rawsymb) symb = symb.replace(rawsymb, stdsymb) if isinstance(basis_tab[atom], str): fmt_basis[symb] = basis.load(basis_tab[atom], stdsymb) else: fmt_basis[symb] = basis_tab[atom] return fmt_basis
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)