def test_validate_numeric_annots(self): cluster = Annotations( "../tests/data/cluster_bad_missing_coordinate.txt", TestAnnotations.ALLOWED_FILE_TYPES, ) cluster.create_data_frame() self.assertTrue(cluster.validate_numeric_annots)
def test_coerce_numeric_values(self): cm = Annotations( "../tests/data/metadata_example.txt", ["text/csv", "text/plain", "text/tab-separated-values"], ) cm.create_data_frame() cm.file = Annotations.coerce_numeric_values(cm.file, cm.annot_types) dtype = cm.file.dtypes[("Average Intensity", "numeric")] self.assertEqual(dtype, np.float) # Test that numeric values wer # Pick a random number between 1 and amount of lines in file ran_num = random.randint(1, 20) for column in cm.file.columns: annot_type = column[1] if annot_type == "numeric": value = str(cm.file[column][ran_num]) print(Decimal(value).as_tuple().exponent) assert ( abs(Decimal(value).as_tuple().exponent) >= self.EXPONENT ), "Numbers did not round to 3 or less decimals places" # Test for string in numeric column cm_has_bad_value = Annotations( "../tests/data/metadata_bad_contains_str_in_numeric_column.txt", ["text/csv", "text/plain", "text/tab-separated-values"], ) cm_has_bad_value.create_data_frame() self.assertRaises( ValueError, Annotations.coerce_numeric_values, cm_has_bad_value.file, cm_has_bad_value.annot_types, )