Skip to content

Commit 0ff39a8

Browse files
committed
Add pos_def_sym_mats
1 parent 452c28e commit 0ff39a8

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

bayesml/_check.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,22 @@ def pos_def_sym_mat(val,val_name,exception_class):
100100
pass
101101
raise(exception_class(val_name + " must be a positive definite symmetric 2-dimensional numpy.ndarray."))
102102

103+
def sym_mats(val,val_name,exception_class):
104+
if type(val) is np.ndarray:
105+
if val.ndim >= 2 and val.shape[-1] == val.shape[-2]:
106+
if np.allclose(val, np.swapaxes(val,-1,-2)):
107+
return val
108+
raise(exception_class(val_name + " must be a symmetric 2-dimensional numpy.ndarray."))
109+
110+
def pos_def_sym_mats(val,val_name,exception_class):
111+
sym_mats(val,val_name,exception_class)
112+
try:
113+
np.linalg.cholesky(val)
114+
return val
115+
except np.linalg.LinAlgError:
116+
pass
117+
raise(exception_class(val_name + " must be a positive definite symmetric 2-dimensional numpy.ndarray."))
118+
103119
def float_(val,val_name,exception_class):
104120
if np.issubdtype(type(val),np.floating):
105121
return val

0 commit comments

Comments
 (0)