StatusVector: Use NaN as filler always
Some checks failed
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Failing after 2m56s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Failing after 3m3s
Build Packages / build:rpm (rocky8_nocuda) (push) Failing after 3m11s
Build Packages / build:rpm (ubuntu2204) (push) Failing after 3m2s
Build Packages / build:rpm (rocky8_sls9) (push) Failing after 3m8s
Build Packages / build:rpm (rocky8) (push) Failing after 3m7s
Build Packages / Create release (push) Has been skipped
Build Packages / build:rpm (rocky9_nocuda) (push) Failing after 3m17s
Build Packages / build:rpm (rocky9) (push) Failing after 3m11s
Build Packages / Generate python client (push) Successful in 24s
Build Packages / Build documentation (push) Successful in 40s
Build Packages / build:rpm (ubuntu2404) (push) Failing after 2m20s
Build Packages / Unit tests (push) Has been cancelled

This commit is contained in:
2025-12-08 11:45:37 +01:00
parent e6f9937675
commit ad4ae4d2fe
5 changed files with 191 additions and 189 deletions

View File

@@ -64,8 +64,7 @@ int32_t StatusVector::GetActualBinning(int32_t bin_size) const {
return mean;
}
MultiLinePlotStruct StatusVector::GetMeanPerBin(int32_t bin_size, float x_start, float x_incr,
const std::optional<float> &fill_value) const {
MultiLinePlotStruct StatusVector::GetMeanPerBin(int32_t bin_size, float x_start, float x_incr) const {
std::unique_lock ul(m);
MultiLinePlotStruct ret;
@@ -89,13 +88,8 @@ MultiLinePlotStruct StatusVector::GetMeanPerBin(int32_t bin_size, float x_start,
if (bin_size == 1) {
for (int i = 0; i < content.size(); i++) {
if (std::isfinite(content[i])) {
ret.x.push_back(x_start + x_incr * i);
ret.y.push_back(content[i]);
} else if (fill_value) {
ret.x.push_back(x_start + x_incr * i);
ret.y.push_back(fill_value.value());
}
ret.x.push_back(x_start + x_incr * i);
ret.y.push_back(content[i]);
}
} else {
for (int bin = 0; bin < elems; bin++) {
@@ -110,22 +104,18 @@ MultiLinePlotStruct StatusVector::GetMeanPerBin(int32_t bin_size, float x_start,
}
float bin_x = static_cast<float>(bin_size) * (bin + 0.5f);
if (count_bin > 0) {
ret.x.push_back(x_start + x_incr * bin_x);
ret.x.push_back(x_start + x_incr * bin_x);
if (count_bin > 0)
ret.y.push_back(static_cast<float>(sum_bin / static_cast<double>(count_bin)));
} else if (fill_value) {
ret.x.push_back(x_start + x_incr * bin_x);
ret.y.push_back(fill_value.value());
}
else
ret.y.push_back(NAN);
}
}
}
return ret;
}
MultiLinePlotStruct StatusVector::GetMaxPerBin(int32_t bin_size, float x_start, float x_incr,
const std::optional<float> &fill_value) const {
MultiLinePlotStruct StatusVector::GetMaxPerBin(int32_t bin_size, float x_start, float x_incr) const {
std::unique_lock ul(m);
MultiLinePlotStruct ret;
@@ -142,13 +132,8 @@ MultiLinePlotStruct StatusVector::GetMaxPerBin(int32_t bin_size, float x_start,
if (bin_size == 1) {
for (int i = 0; i < content.size(); i++) {
if (std::isfinite(content[i])) {
ret.x.push_back(x_start + x_incr * i);
ret.y.push_back(content[i]);
} else if (fill_value) {
ret.x.push_back(x_start + x_incr * i);
ret.y.push_back(fill_value.value());
}
ret.x.push_back(x_start + x_incr * i);
ret.y.push_back(content[i]);
}
} else {
for (int bin = 0; bin < elems; bin++) {
@@ -164,30 +149,26 @@ MultiLinePlotStruct StatusVector::GetMaxPerBin(int32_t bin_size, float x_start,
float bin_x = static_cast<float>(bin_size) * (bin + 0.5f);
if (max_bin_set) {
ret.x.push_back(x_start + x_incr * bin_x);
ret.x.push_back(x_start + x_incr * bin_x);
if (max_bin_set)
ret.y.push_back(max_in_bin);
} else if (fill_value) {
ret.x.push_back(x_start + x_incr * bin_x);
ret.y.push_back(fill_value.value());
}
else
ret.y.push_back(NAN);
}
}
}
return ret;
}
MultiLinePlot StatusVector::GetMeanPlot(int64_t bin_size, float x_start, float x_incr,
const std::optional<float> &fill_value) const {
MultiLinePlot StatusVector::GetMeanPlot(int64_t bin_size, float x_start, float x_incr) const {
MultiLinePlot ret;
ret.AddPlot(GetMeanPerBin(bin_size, x_start, x_incr, fill_value));
ret.AddPlot(GetMeanPerBin(bin_size, x_start, x_incr));
return ret;
}
MultiLinePlot StatusVector::GetMaxPlot(int64_t bin_size, float x_start, float x_incr,
const std::optional<float> &fill_value) const {
MultiLinePlot StatusVector::GetMaxPlot(int64_t bin_size, float x_start, float x_incr) const {
MultiLinePlot ret;
ret.AddPlot(GetMaxPerBin(bin_size, x_start, x_incr, fill_value));
ret.AddPlot(GetMaxPerBin(bin_size, x_start, x_incr));
return ret;
}
@@ -210,23 +191,21 @@ void StatusMultiVector::AddElement(const std::string &s, uint32_t id, std::optio
}
MultiLinePlotStruct StatusMultiVector::GetMeanPerBin(const std::string &in_key, int64_t bin_size, float x_start,
float x_incr,
const std::optional<float> &fill_value) const {
float x_incr) const {
MultiLinePlotStruct ret{};
for (const auto &[key, value]: status) {
if (key == in_key) {
ret = value->GetMeanPerBin(bin_size, x_start, x_incr, fill_value);
ret = value->GetMeanPerBin(bin_size, x_start, x_incr);
ret.title = key;
}
}
return ret;
}
MultiLinePlot StatusMultiVector::GetMeanPlot(int64_t bin_size, float x_start, float x_incr,
const std::optional<float> &fill_value) const {
MultiLinePlot StatusMultiVector::GetMeanPlot(int64_t bin_size, float x_start, float x_incr) const {
MultiLinePlot ret;
for (const auto &[key, value]: status) {
auto tmp = value->GetMeanPerBin(bin_size, x_start, x_incr, fill_value);
auto tmp = value->GetMeanPerBin(bin_size, x_start, x_incr);
tmp.title = key;
ret.AddPlot(tmp);
}