MayaFlux 0.4.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ validate_numeric_data_for_analysis()

void MayaFlux::Kakshya::validate_numeric_data_for_analysis ( const std::vector< double > &  data,
const std::string &  operation_name,
size_t  min_size = 1 
)

Validates numeric data for analysis operations.

Parameters
dataData to validate
operation_nameName of operation for error messages
min_sizeMinimum required data size (default 1)
Exceptions
std::invalid_argumentif data is invalid for analysis

Definition at line 248 of file ContainerUtils.cpp.

251{
252 if (data.empty()) {
253 error<std::invalid_argument>(Journal::Component::Kakshya, Journal::Context::Runtime, std::source_location::current(), "Cannot perform {} on empty data", operation_name);
254 }
255
256 if (data.size() < min_size) {
257 error<std::invalid_argument>(Journal::Component::Kakshya, Journal::Context::Runtime, std::source_location::current(), "{} requires at least {} data points, got {}", operation_name, min_size, data.size());
258 }
259
260 if (auto invalid_it = std::ranges::find_if_not(data, [](double val) {
261 return std::isfinite(val);
262 });
263 invalid_it != data.end()) {
264
265 const auto index = std::distance(data.begin(), invalid_it);
266 error<std::invalid_argument>(Journal::Component::Kakshya, Journal::Context::Runtime, std::source_location::current(), "{} data contains NaN or infinite values at index {}", operation_name, index);
267 }
268}

References MayaFlux::Journal::Kakshya, and MayaFlux::Journal::Runtime.