def test_get_likelihood_with_parents(self, bivariate_mock): """If edge has parents, their dependences are used to retrieve univariates.""" # Setup index = None left = 0 right = 1 copula_name = 'copula_name' copula_theta = 'copula_theta' instance = Edge(index, left, right, copula_name, copula_theta) instance.D = {0, 1, 2, 3} parent_1 = MagicMock(spec=Edge) parent_1.D = {1, 2, 3} parent_2 = MagicMock(spec=Edge) parent_2.D = {0, 2, 3} univariates = np.array([ [0.25, 0.75], [0.50, 0.50], [0.75, 0.25] ]).T instance_mock = bivariate_mock.return_value instance_mock.probability_density.return_value = [0] instance_mock.partial_derivative.return_value = 'partial_derivative' expected_partial_derivative_call_args = [ ( (np.array([[ [0.25, 0.75], [0.50, 0.50], ]]),), {} ), ( (np.array([[ [0.50, 0.50], [0.25, 0.75] ]]), ), {} ) ] # Run result = instance.get_likelihood(univariates) # Check value, left_given_right, right_given_left = result assert value == 0 assert left_given_right == 'partial_derivative' assert right_given_left == 'partial_derivative' bivariate_mock.assert_called_once_with(copula_type='copula_name') assert instance_mock.theta == 'copula_theta' compare_nested_iterables( instance_mock.partial_derivative.call_args_list, expected_partial_derivative_call_args )
def test_identify_eds(self): """_identify_eds_ing returns the left, right and dependency for a new edge.""" # Setup first = Edge(None, 2, 5, None, None) first.D = {1, 3} second = Edge(None, 3, 4, None, None) second.D = {1, 5} # Please, note that we passed the index, copula_name and copula_theta as None # To show they are no going to be used in the scope of this test. # left, right and dependence set expected_result = (2, 4, set([1, 3, 5])) # Run result = Edge._identify_eds_ing(first, second) # Check assert result == expected_result
def test_to_dict(self): """To_dict returns a dictionary with the parameters to recreate an edge.""" # Setup edge = Edge(2, 5, 'clayton', 1.5) edge.D = [1, 3] expected_result = { 'L': 2, 'R': 5, 'name': 'clayton', 'theta': 1.5, 'D': [1, 3], 'U': None, 'likelihood': None, 'neighbors': None, 'parents': None, 'tau': None } # Run result = edge.to_dict() # Check assert result == expected_result