def test_load(self, json_mock, file_mock): """Load can recreate an instance from a saved file.""" # Setup covariance = [[ 1.006711409395973, -0.11010327176239865, 0.8776048563471857, 0.823443255069628 ], [ -0.11010327176239865, 1.006711409395972, -0.4233383520816991, -0.3589370029669186 ], [ 0.8776048563471857, -0.4233383520816991, 1.006711409395973, 0.9692185540781536 ], [ 0.823443255069628, -0.3589370029669186, 0.9692185540781536, 1.0067114093959735 ]] json_mock.return_value = { 'covariance': covariance, 'distribs': { 'feature_01': { 'mean': 5.843333333333334, 'std': 0.8253012917851409 }, 'feature_02': { 'mean': 3.0540000000000003, 'std': 0.4321465800705435 }, 'feature_03': { 'mean': 3.758666666666666, 'std': 1.7585291834055212 }, 'feature_04': { 'mean': 1.1986666666666668, 'std': 0.7606126185881716 } } } # Run instance = GaussianMultivariate.load('somefile.json') # Check assert (instance.covariance == np.array( [[ 1.006711409395973, -0.11010327176239865, 0.8776048563471857, 0.823443255069628 ], [ -0.11010327176239865, 1.006711409395972, -0.4233383520816991, -0.3589370029669186 ], [ 0.8776048563471857, -0.4233383520816991, 1.006711409395973, 0.9692185540781536 ], [ 0.823443255069628, -0.3589370029669186, 0.9692185540781536, 1.0067114093959735 ]])).all() for name, distrib in instance.distribs.items(): assert instance.distribs[name].to_dict( ) == json_mock.return_value['distribs'][name]
def test_load(self, json_mock, open_mock): """Load can recreate an instance from a saved file.""" # Setup covariance = [[ 1.006711409395973, -0.11010327176239865, 0.8776048563471857, 0.823443255069628 ], [ -0.11010327176239865, 1.006711409395972, -0.4233383520816991, -0.3589370029669186 ], [ 0.8776048563471857, -0.4233383520816991, 1.006711409395973, 0.9692185540781536 ], [ 0.823443255069628, -0.3589370029669186, 0.9692185540781536, 1.0067114093959735 ]] json_mock.return_value = { 'covariance': covariance, 'fitted': True, 'type': 'copulas.multivariate.gaussian.GaussianMultivariate', 'distribution': 'copulas.univariate.gaussian.GaussianUnivariate', 'columns': ['feature_01', 'feature_02', 'feature_03', 'feature_04'], 'univariates': [{ 'type': 'copulas.univariate.gaussian.GaussianUnivariate', 'mean': 5.843333333333334, 'std': 0.8253012917851409, 'fitted': True, }, { 'type': 'copulas.univariate.gaussian.GaussianUnivariate', 'mean': 3.0540000000000003, 'std': 0.4321465800705435, 'fitted': True, }, { 'type': 'copulas.univariate.gaussian.GaussianUnivariate', 'mean': 3.758666666666666, 'std': 1.7585291834055212, 'fitted': True, }, { 'type': 'copulas.univariate.gaussian.GaussianUnivariate', 'mean': 1.1986666666666668, 'std': 0.7606126185881716, 'fitted': True, }] } # Run instance = GaussianMultivariate.load('test.json') # Check assert (instance.covariance == np.array( [[ 1.006711409395973, -0.11010327176239865, 0.8776048563471857, 0.823443255069628 ], [ -0.11010327176239865, 1.006711409395972, -0.4233383520816991, -0.3589370029669186 ], [ 0.8776048563471857, -0.4233383520816991, 1.006711409395973, 0.9692185540781536 ], [ 0.823443255069628, -0.3589370029669186, 0.9692185540781536, 1.0067114093959735 ]])).all() for a, b in zip(json_mock.columns, instance.columns): assert a == b for a, b in zip(json_mock.univariates, instance.univariates): assert a.to_dict() == b.to_dict() assert open_mock.called_once_with('test.json', 'r')