def test_normalize_to_100g(self): """Normalize a row of weight based measurements (in grams) to 100g""" flour = [1.0] milk = [3.75] egg = [1.01] butter = [0.16] columns = zip(flour, milk, egg, butter) new_columns = list(normalize_to_100g(columns)) self.assertEquals(len(new_columns), 1) self.assertEquals(len(new_columns[0]), 4) self.assertAlmostEquals(new_columns[0][0], 16.9, 1) self.assertAlmostEquals(new_columns[0][1], 63.32, 1) self.assertAlmostEquals(new_columns[0][2], 17.05, 1) self.assertAlmostEquals(new_columns[0][3], 2.73, 1)
def calculate_statistics(raw_data, ingredients, zero_columns): """Calculate mean, confidence interval and minimum sample size for each ingredient. """ raw_data = list(normalize_to_100g(raw_data)) data = numpy.array(raw_data).transpose() if zero_columns is not None and len(zero_columns) > 0: filter_map = create_zero_filter(ingredients, zero_columns) data = filter_zeros(data, filter_map) _, _, defaults = calculate_variables(data) data = apply_defaults(raw_data, defaults, filter_map) return calculate_statistics(data, ingredients, None) else: intervals, std_deviations, means = calculate_variables(data) return Statistics(ingredients, intervals, std_deviations, means)
def normalize(ingredients, columns): """Tests were originally written with the axis swapped, so we use zip to swap back here so that the tests don't need to change""" columns = to_grams(ingredients, columns) return zip(*normalize_to_100g(columns))