Maria@18: # -*- coding: utf-8 -*- Maria@18: """ Maria@18: Created on Fri Sep 1 19:11:52 2017 Maria@18: Maria@18: @author: mariapanteli Maria@18: """ Maria@18: Maria@18: import pytest Maria@18: Maria@18: import numpy as np Maria@18: Maria@18: import scripts.outliers as outliers Maria@18: Maria@18: Maria@18: def test_country_outlier_df(): Maria@18: counts = {'a':2, 'b':3} Maria@18: labels = np.array(['a', 'a', 'a', 'a', 'b', 'b', 'b']) Maria@18: df = outliers.country_outlier_df(counts, labels, normalize=True) Maria@18: assert np.array_equal(df['Outliers'].get_values(), np.array([0.5, 1.0])) Maria@18: Maria@18: Maria@18: def test_normalize_outlier_counts(): Maria@18: outlier_counts = {'a':2, 'b':3} Maria@18: country_counts = {'a':4, 'b':3} Maria@18: outlier_counts = outliers.normalize_outlier_counts(outlier_counts, country_counts) Maria@18: outlier_counts_true = {'a':.5, 'b':1.} Maria@18: assert np.array_equal(outlier_counts, outlier_counts_true) Maria@18: Maria@18: Maria@18: def test_get_outliers_df(): m@20: np.random.seed(1) m@20: X = np.random.randn(100, 3) m@20: # create outliers by shifting the entries of the last 5 samples m@20: X[-5:, :] = X[-5:, :] + 10 m@20: Y = np.concatenate([np.repeat('a', 95), np.repeat('b', 5)]) m@20: df, threshold, MD = outliers.get_outliers_df(X, Y) m@20: # expect that items from country 'b' are detected as outliers m@20: assert np.array_equal(df['Outliers'].get_values(), np.array([0., 1.0])) m@20: