From 2224389fb3f3682e6a52639e63ef4254a6459046 Mon Sep 17 00:00:00 2001 From: "Daniel J. Hofmann" Date: Fri, 3 Nov 2017 13:26:30 -0400 Subject: [PATCH] Filters zero value histograms, formats numbers --- .../extractor/guidance/statistics_handler.hpp | 24 +++++++++++++++---- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/include/extractor/guidance/statistics_handler.hpp b/include/extractor/guidance/statistics_handler.hpp index d12288ffd..32c6ac140 100644 --- a/include/extractor/guidance/statistics_handler.hpp +++ b/include/extractor/guidance/statistics_handler.hpp @@ -7,6 +7,9 @@ #include "util/log.hpp" +#include +#include +#include #include #include @@ -41,17 +44,28 @@ class StatisticsHandler final : public IntersectionHandler ~StatisticsHandler() override final { - // Todo: type and modifier to string + const auto add_second = [](const auto acc, const auto &kv) { return acc + kv.second; }; - util::Log() << "Assigned turn instruction types"; + const auto num_types = + std::accumulate(begin(type_hist), end(type_hist), std::uint64_t{0}, add_second); + const auto num_modifiers = + std::accumulate(begin(modifier_hist), end(modifier_hist), std::uint64_t{0}, add_second); + + util::Log() << "Assigned " << num_types << " turn instruction types:"; for (const auto &kv : type_hist) - util::Log() << internalInstructionTypeToString(kv.first) << ": " << kv.second; + if (kv.second > 0) + util::Log() << std::fixed << std::setprecision(2) + << internalInstructionTypeToString(kv.first) << ": " << kv.second + << " (" << (kv.second / static_cast(num_types) * 100.) << "%)"; - util::Log() << "Assigned turn instruction modifiers"; + util::Log() << "Assigned " << num_modifiers << " turn instruction modifiers:"; for (const auto &kv : modifier_hist) - util::Log() << instructionModifierToString(kv.first) << ": " << kv.second; + if (kv.second > 0) + util::Log() << std::fixed << std::setprecision(2) + << instructionModifierToString(kv.first) << ": " << kv.second << " (" + << (kv.second / static_cast(num_modifiers) * 100.) << "%)"; } bool canProcess(const NodeID, const EdgeID, const Intersection &) const override final