def test_mouseday_features_loader(): # Checking load_mouseday_features returns a data frame of # the correct dimension mouseday_features1 = data.load_mouseday_features(["Food", "Water", "Distance"]) mouseday_features2 = data.load_mouseday_features(["Food", "Water"]) mouseday_features3 = data.load_mouseday_features() assert mouseday_features1.shape == (1921, 36) assert mouseday_features2.shape == (1921, 25) assert mouseday_features3.shape == (1921, 102)
def test_mouseday_load_input(): with pytest.raises(ValueError) as excinfo: data.load_mouseday_features(["Food", "Water", "Distances"]) fea_list = ["ASProbability", "ASNumbers", "ASDurations", "Food", "Water", "Distance", "ASFoodIntensity", "ASWaterIntensity", "MoveASIntensity"] fea_str = "{" for item in fea_list: fea_str += '"' + item + '", ' fea_str = fea_str[:-2] + "}" expected1 = "Input value must be chosen from " + fea_str + "." assert excinfo.value.args[0] == expected1 with pytest.raises(TypeError) as excinfo: data.load_mouseday_features(("Food", "Water", "Distances")) expected2 = "Input value must be a list." assert excinfo.value.args[0] == expected2
def test_prep_data(): # check prep_data() returns approriate lists for classification df = data.load_mouseday_features() strain = df['strain'] features = df.iloc[:, 3:] train_y, train_x, test_y, test_x = classification.prep_data( strain, features) assert train_y.shape == (1440, ) assert train_x.shape == (1440, 99) assert test_y.shape == (481, ) assert test_x.shape == (481, 99)
def test_fit_svm(): # check svm() returns approriate data frame with # prediction labels and true labels # labels are integers from 0 to 15 df = data.load_mouseday_features() strain = df['strain'] features = df.iloc[:200, 3:] train_y, train_x, test_y, test_x = classification.prep_data( strain, features) result = classification.fit_svm(train_y, train_x, test_x, [1], [0.1]) assert features.shape == (200, 99) assert result.shape == (50, 1) assert all(result.iloc[:, 0] >= 0) & all(result.iloc[:, 0] <= 15) assert all([i.is_integer() for i in result.iloc[:, 0]])
def test_get_summary(): # check get_summary returns approriate data frame of precision, # recall, f-1 measure, in terms of shape and range(0,1) df = data.load_mouseday_features() strain = df['strain'] features = df.iloc[:, 3:] train_y, train_x, test_y, test_x = classification.prep_data( strain, features) result = classification.fit_random_forest( train_y, train_x, test_x, [1], [10])[0] summary = classification.get_summary(result, test_y) assert summary.shape == (16, 3) assert all(summary.iloc[:, 0] <= 1) & all(summary.iloc[:, 0] >= 0) assert all(summary.iloc[:, 1] <= 1) & all(summary.iloc[:, 1] >= 0) assert all(summary.iloc[:, 2] <= 1) & all(summary.iloc[:, 2] >= 0)
def test_get_summary(): # check get_summary returns approriate data frame of precision, # recall, f-1 measure, in terms of shape and range(0,1) df = data.load_mouseday_features() strain = df['strain'] features = df.iloc[:, 3:] train_y, train_x, test_y, test_x = classification.prep_data( strain, features) result = classification.fit_random_forest(train_y, train_x, test_x, [1], [10])[0] summary = classification.get_summary(result, test_y) assert summary.shape == (16, 3) assert all(summary.iloc[:, 0] <= 1) & all(summary.iloc[:, 0] >= 0) assert all(summary.iloc[:, 1] <= 1) & all(summary.iloc[:, 1] >= 0) assert all(summary.iloc[:, 2] <= 1) & all(summary.iloc[:, 2] >= 0)