in tensorflow_data_validation/anomalies/int_domain_util.cc [143:200]
UpdateSummary UpdateIntDomain(const FeatureStatsView& feature_stats,
tensorflow::metadata::v0::IntDomain* int_domain) {
UpdateSummary update_summary;
const IntIntervalResult result = GetIntInterval(feature_stats);
if (result) {
const variant<IntInterval, ExampleStringNotInt> actual_result = *result;
if (absl::holds_alternative<ExampleStringNotInt>(actual_result)) {
if (feature_stats.GetFeatureType() == metadata::v0::BYTES) {
update_summary.descriptions.push_back(
{tensorflow::metadata::v0::AnomalyInfo::INT_TYPE_NOT_INT_STRING,
kInvalidValues,
absl::StrCat(
"String values that were not ints were found, such as \"",
*absl::get_if<ExampleStringNotInt>(&actual_result), "\".")});
update_summary.clear_field = true;
} else if (feature_stats.GetFeatureType() == metadata::v0::INT) {
if (int_domain->has_max() || int_domain->has_min()) {
update_summary.descriptions.push_back(
{tensorflow::metadata::v0::AnomalyInfo::DOMAIN_INVALID_FOR_TYPE,
kInvalidValues,
absl::StrCat(
"Integer had values that were not valid Int64, such as \"",
*absl::get_if<ExampleStringNotInt>(&actual_result), "\".")});
update_summary.clear_field = true;
}
} else {
update_summary.descriptions.push_back(
{tensorflow::metadata::v0::AnomalyInfo::DOMAIN_INVALID_FOR_TYPE,
kInvalidValues,
absl::StrCat("IntDomain incompatible with feature type ",
feature_stats.GetFeatureType())});
update_summary.clear_field = true;
}
return update_summary;
}
if (absl::holds_alternative<IntInterval>(actual_result)) {
const IntInterval interval =
*absl::get_if<IntInterval>(&actual_result);
if (int_domain->has_min() && int_domain->min() > interval.min) {
update_summary.descriptions.push_back(
{tensorflow::metadata::v0::AnomalyInfo::INT_TYPE_SMALL_INT,
kOutOfRangeValues,
absl::StrCat("Unexpectedly small value: ", interval.min, ".")});
int_domain->set_min(interval.min);
}
if (int_domain->has_max() && int_domain->max() < interval.max) {
update_summary.descriptions.push_back(
{tensorflow::metadata::v0::AnomalyInfo::INT_TYPE_BIG_INT,
kOutOfRangeValues,
absl::StrCat("Unexpectedly large value: ", interval.max, ".")});
int_domain->set_max(interval.max);
}
return update_summary;
}
}
return update_summary;
}