3.6.3. horton.matrix.cholesky – Cholesky decomposition of four-index objects¶
- 
class 
horton.matrix.cholesky.CholeskyFourIndex(nbasis, nvec=None, array=None, array2=None)¶ Bases:
horton.matrix.base.FourIndexArguments:
- nbasis
 - The number of basis functions.
 
Optional arguments:
- nvec
 - The number of (2-index) Cholesky vectors.
 - array
 - The array with Cholesky vectors, shape = (nvec, nbasis, nbasis).
 - array2
 - The second set of Cholesky vectors, if different from the first.
 
Either nvec or array must be given (or both).
- 
__init__(nbasis, nvec=None, array=None, array2=None)¶ Arguments:
- nbasis
 - The number of basis functions.
 
Optional arguments:
- nvec
 - The number of (2-index) Cholesky vectors.
 - array
 - The array with Cholesky vectors, shape = (nvec, nbasis, nbasis).
 - array2
 - The second set of Cholesky vectors, if different from the first.
 
Either nvec or array must be given (or both).
- 
assign(other)¶ Assign with the contents of another object
Arguments:
- other
 - Another CholeskyFourIndex object.
 
- 
assign_four_index_transform(ao_integrals, exp0, exp1=None, exp2=None, exp3=None, method=’tensordot’)¶ Perform four index transformation.
Arguments:
- oa_integrals
 - A CholeskyFourIndex with integrals in atomic orbitals.
 - exp0
 - A DenseExpansion object with molecular orbitals
 
Optional arguments:
- exp1, exp2, exp3
 - Can be provided to transform each index differently. See
parse_four_index_transform_expsfor details. - method
 - Either 
einsumortensordot(default). 
- 
change_basis_signs(signs)¶ Correct for different sign conventions of the basis functions.
- 
clear()¶ Reset all elements to zero.
- 
contract_two_to_four(subscripts, two, out=None, factor=1.0, clear=True)¶ Contracts with a two-index object to obtain a four-index object.
Arguments:
- subscripts
 - Any of 
abcd,cd->acbd,abcd,cd->acdb,abcd,cb->acdb,abcd,cb->acbd,abcd,ab->acbd,abcd,ab->acdb,abcd,ad->acbd,abcd,ad->acdb,abcd,ad->abcd,abcd,ad->abdc,abcd,bd->abcd,abcd,bd->abdc,abcd,bc->abdc,abcd,bc->abcd,abcd,ac->abcd,abcd,ac->abdc - two
 - An instance of DenseTwoIndex.
 
Optional arguments:
- out, factor, clear
 - See 
DenseLinalgFactory.einsum() 
- 
contract_two_to_two(subscripts, two, out=None, factor=1.0, clear=True)¶ Contract self with a two-index to obtain a two-index.
Arguments:
- subscripts
 - Any of 
abcd,bd->ac(direct),abcd,cb->ad(exchange) - two
 - The input two-index object. (DenseTwoIndex)
 
Optional arguments:
- out, factor, clear
 - See 
DenseLinalgFactory.einsum() 
- 
copy()¶ Return a copy of the current four-index operator
- 
decouple_array2()¶ Allocates a second Cholesky vector if not done yet
- 
classmethod 
from_hdf5(grp)¶ Construct an instance from data previously stored in an h5py.Group.
Arguments:
- grp
 - An h5py.Group object.
 
- 
get_dense()¶ Return the DenseFourIndex equivalent. ONLY FOR TESTING. SUPER SLOW.
- 
get_element(i, j, k, l)¶ Return a matrix element
- 
iadd(other, factor)¶ This method is not supported due to the Cholesky decomposition.
- 
iadd_exchange()¶ In-place addition of its own exchange contribution
- 
is_symmetric(symmetry=2, rtol=1e-05, atol=1e-08)¶ Check the symmetry of the array.
Optional arguments:
- symmetry
 - The symmetry to check. See Handling of index symmetry for more details.
 - rtol and atol
 - relative and absolute tolerance. See to 
np.allclose. 
- 
iscale(factor)¶ In-place multiplication with a scalar
Arguments:
- factor
 - A scalar factor.
 
- 
itranspose()¶ In-place transpose:
0,1,2,3 -> 1,0,3,2
- 
new()¶ Return a new four-index object with the same nbasis
- 
permute_basis(permutation)¶ Reorder the coefficients for a given permutation of basis functions.
- 
randomize()¶ Fill with random normal data
- 
reset_array2()¶ Deallocates the second cholesky vector and sets it to match the first.
- 
set_element(i, j, k, l, value)¶ This method is not supported due to the Cholesky decomposition.
- 
slice_to_three(subscripts, out=None, factor=1.0, clear=True)¶ Returns a three-index contraction of the four-index object.
Arguments:
- subscripts
 - Any of 
abcc->bac,abcc->abc,abcb->abc,abbc->abc 
Optional arguments:
- out, factor, clear
 - See 
DenseLinalgFactory.einsum() 
- 
slice_to_two(subscripts, out=None, factor=1.0, clear=True)¶ Returns a two-index contraction of the four-index object.
Arguments:
- subscripts
 - Any of 
aabb->ab,abab->ab,abba->ab 
Optional arguments:
- out, factor, clear
 - See 
DenseLinalgFactory.einsum() 
- 
sum()¶ Return the sum of all elements. EXPENSIVE!
- 
symmetrize(symmetry=8)¶ 
- 
to_hdf5(grp)¶ Dump this object in an h5py.Group
Arguments:
- grp
 - An h5py.Group object.
 
- 
is_decoupled¶ 
- 
nbasis¶ The number of basis functions
- 
ndim¶ The number of axes in the N-index object.
- 
nvec¶ The number of Cholesky vectors
- 
shape¶ The shape of the object
- 
class 
horton.matrix.cholesky.CholeskyLinalgFactory(default_nbasis=None)¶ Bases:
horton.matrix.dense.DenseLinalgFactoryOptional arguments:
- default_nbasis
 - The default basis size when constructing new operators/expansions.
 
- 
__init__(default_nbasis=None)¶ Optional arguments:
- default_nbasis
 - The default basis size when constructing new operators/expansions.
 
- 
create_expansion(nbasis=None, nfn=None)¶ Create a DenseExpansion with defaults from the LinalgFactory
Optional arguments:
- nbasis
 - The number of basis functions. When not given, the default_nbasis value of the DenseLinalgFactory instance will be used.
 - nfn
 - The number of orbitals. When not given, the default_nbasis value of the DenseLinalgFactory instance will be used.
 
- 
create_four_index(nbasis=None, nvec=None, array=None, array2=None)¶ Create a DenseFourIndex with defaults from the LinalgFactory
Optional arguments:
- nbasis
 - The number of basis functions. When not given, the default_nbasis value of the DenseLinalgFactory instance will be used.
 
- 
create_one_index(nbasis=None)¶ Create a DenseOneIndex with defaults from the LinalgFactory
Optional arguments:
- nbasis
 - The number of basis functions. When not given, the default_nbasis value of the DenseLinalgFactory instance will be used.
 
- 
create_three_index(nbasis=None, nbasis1=None, nbasis2=None)¶ Create a DenseThreeIndex with defaults from the LinalgFactory
Optional arguments:
- nbasis
 - The number of basis functions. When not given, the default_nbasis value of the DenseLinalgFactory instance will be used.
 
- 
create_two_index(nbasis=None, nbasis1=None)¶ Create a DenseTwoIndex with defaults from the LinalgFactory
Optional arguments:
- nbasis
 - The number of basis functions. When not given, the default_nbasis value of the DenseLinalgFactory instance will be used.
 - nbasis1
 - The number of basis functions for the second axis if it differes
from 
nbasis. 
- 
einsum(subscripts, out, factor, clear, *operands)¶ einsum wrapper for DenseNBody objects
Arguments:
- subscripts
 - The usual subscripts argument for the einsum function, except
that the format is slightly limited. All indexes must be
explicitly stated. If the output argument is a scalar, 
->may not be present. In all other cases,->must be present. - out
 - An output DenseNBody object. This argument is not allowed when the result is a scalar.
 - factor
 - Multiply the contraction by a scalar factor.
 - clear
 - When set to False, the output argument is not zeroed before adding the contraction.
 - operands
 - A list where each element is (i) a DenseNBody object or (ii) a two-tuple of DenseNBody object and ranges to select for slicing. The ranges must be a tuple of integers of the form (begin0, end0, begin1, end1, …) where the number of (begin, end) pairs depends on the dimensionality of the corresponding tensor.
 
Returns: the out object. When the out argument is given, this is returned with in-place modifications.
- 
from_hdf5(grp)¶ Construct an instance from data previously stored in an h5py.Group.
Arguments:
- grp
 - An h5py.Group object.
 
- 
set_default_nbasis(nbasis)¶ 
- 
tensordot(a, b, axes, out=None, factor=1.0, clear=True)¶ tensordot wrapper for dense n-index objects.
Arguments:
- a, b, axes
 - See documentation of numpy.tensordot
 
Optional arguments:
- out
 - The output argument, an instance of one of the Dense?Index classes.
 
- 
to_hdf5(grp)¶ Write a LinalgFactory to an HDF5 group
Argument:
- grp
 - A h5py.Group instance to write to.