def test_ordered(): check_vector_transform(tr.ordered, SortedVector(6)) check_jacobian_det(tr.ordered, Vector(R, 2), at.dvector, np.array([0, 0]), elemwise=False) vals = get_values(tr.ordered, Vector(R, 3), at.dvector, np.zeros(3)) close_to_logical(np.diff(vals) >= 0, True, tol)
def test_log_exp_m1(): check_transform(tr.log_exp_m1, Rplusbig) check_jacobian_det(tr.log_exp_m1, Rplusbig, elemwise=True) check_jacobian_det(tr.log_exp_m1, Vector(Rplusbig, 2), at.dvector, [0, 0], elemwise=True) vals = get_values(tr.log_exp_m1) close_to_logical(vals > 0, True, tol)
def test_simplex_bounds(): vals = get_values(tr.simplex, Vector(R, 2), at.dvector, np.array([0, 0])) close_to(vals.sum(axis=1), 1, tol) close_to_logical(vals > 0, True, tol) close_to_logical(vals < 1, True, tol) check_jacobian_det(tr.simplex, Vector(R, 2), at.dvector, np.array([0, 0]), lambda x: x[:-1])
def test_upperbound(): trans = tr.Interval(None, 0.0) check_transform(trans, Rminusbig) check_jacobian_det(trans, Rminusbig, elemwise=True) check_jacobian_det(trans, Vector(Rminusbig, 2), at.dvector, [-1, -1], elemwise=True) vals = get_values(trans) close_to_logical(vals < 0, True, tol)
def test_lowerbound(): trans = tr.Interval(0.0, None) check_transform(trans, Rplusbig) check_jacobian_det(trans, Rplusbig, elemwise=True) check_jacobian_det(trans, Vector(Rplusbig, 2), at.dvector, [0, 0], elemwise=True) vals = get_values(trans) close_to_logical(vals > 0, True, tol)
def test_logodds(): check_transform(tr.logodds, Unit) check_jacobian_det(tr.logodds, Unit, elemwise=True) check_jacobian_det(tr.logodds, Vector(Unit, 2), at.dvector, [0.5, 0.5], elemwise=True) vals = get_values(tr.logodds) close_to_logical(vals > 0, True, tol) close_to_logical(vals < 1, True, tol)
def test_circular(): trans = tr.circular check_transform(trans, Circ) check_jacobian_det(trans, Circ) vals = get_values(trans) close_to_logical(vals > -np.pi, True, tol) close_to_logical(vals < np.pi, True, tol) assert isinstance(trans.forward(1, None), TensorConstant)
def test_interval(): for a, b in [(-4, 5.5), (0.1, 0.7), (-10, 4.3)]: domain = Unit * np.float64(b - a) + np.float64(a) trans = tr.Interval(a, b) check_transform(trans, domain) check_jacobian_det(trans, domain, elemwise=True) vals = get_values(trans) close_to_logical(vals > a, True, tol) close_to_logical(vals < b, True, tol)
def test_upperbound(): def transform_params(*inputs): return None, 0.0 trans = tr.interval(transform_params) check_transform(trans, Rminusbig) check_jacobian_det(trans, Rminusbig, elemwise=True) check_jacobian_det(trans, Vector(Rminusbig, 2), at.dvector, [-1, -1], elemwise=True) vals = get_values(trans) close_to_logical(vals < 0, True, tol)
def test_lowerbound(): def transform_params(*inputs): return 0.0, None trans = tr.interval(transform_params) check_transform(trans, Rplusbig) check_jacobian_det(trans, Rplusbig, elemwise=True) check_jacobian_det(trans, Vector(Rplusbig, 2), at.dvector, [0, 0], elemwise=True) vals = get_values(trans) close_to_logical(vals > 0, True, tol)
def test_chain_values(): chain_tranf = tr.Chain([tr.logodds, tr.ordered]) vals = get_values(chain_tranf, Vector(R, 5), at.dvector, np.zeros(5)) close_to_logical(np.diff(vals) >= 0, True, tol)