Skip to content
Snippets Groups Projects
Commit 734f4777 authored by Joana Plewnia's avatar Joana Plewnia
Browse files

changed statistics export

added statistics to frequency filter
parent dc10d0ae
No related branches found
No related tags found
1 merge request!322Feature/forgetting in wm and em
......@@ -218,7 +218,7 @@ namespace armarx::armem::server::ltm::detail
std::map<std::string, processor::SnapshotFilter::FilterStatistics>
getFilterStatistics(){
auto stats = processors->getSnapshotFilterStatistics();
test::save_statistics(stats);
test::save_statistics(stats, this->name());
return stats;
}
......
......@@ -58,7 +58,7 @@ namespace armarx::armem::server::ltm::processor::filter
stats.additional_time += (end - start);
return true;
}
if (similarity > 0.5 || std::isnan(similarity)){
if (similarity < this->threshold || std::isnan(similarity)){
images.pop_back(); //the last image was rejected, so we do not save it and also not compare future images with it
stats.rejected += 1;
auto end = std::chrono::high_resolution_clock::now();
......@@ -99,13 +99,12 @@ namespace armarx::armem::server::ltm::processor::filter
stats.similarity_type = aron::similarity::NDArraySimilarity::Type::CHERNOFF;
} else {
ARMARX_WARNING << "Undefined similarity measure detected in JSON file";
stats.similarity_type = aron::similarity::NDArraySimilarity::Type::NONE;
}
}
if(json.find(PARAM_MAX_OBJECTS) != json.end()){
max_images = json.at(PARAM_MAX_OBJECTS);
ARMARX_INFO << VAROUT(max_images);
//stats.additional_info += "max objects to compare: ";
//stats.additional_info += std::to_string(max_images);
stats.number_of_compared_objects = max_images;
}
......
......@@ -29,6 +29,7 @@ namespace armarx::armem::server::ltm::processor::filter
SnapshotFrequencyFilter::accept(const armem::wm::EntitySnapshot& e)
{
ARMARX_INFO << deactivateSpam() << "Checking Snapshot frequency filter";
auto start = std::chrono::high_resolution_clock::now();
auto entityID = e.id().getEntityID();
auto genMs = e.time().toMilliSecondsSinceEpoch();
......@@ -44,8 +45,16 @@ namespace armarx::armem::server::ltm::processor::filter
std::cout << "gen: " << (dataGeneratedInMs) << std::endl;
std::cout << "last: " << (timestampLastCommitInMs) << std::endl;*/
timestampLastCommitInMs[entityID] = genMs;
auto end = std::chrono::high_resolution_clock::now();
stats.end_time = end;
stats.additional_time += (end - start);
stats.accepted += 1;
return true;
}
auto end = std::chrono::high_resolution_clock::now();
stats.end_time = end;
stats.additional_time += (end - start);
stats.rejected += 1;
return false;
}
......@@ -57,6 +66,9 @@ namespace armarx::armem::server::ltm::processor::filter
waitingTimeInMs = json.at(PARAM_WAITING_TIME);
ARMARX_INFO << VAROUT(waitingTimeInMs);
}
stats.start_time = std::chrono::high_resolution_clock::now();
stats.number_of_compared_objects = 1;
stats.similarity_type = aron::similarity::NDArraySimilarity::Type::NONE;
}
SnapshotFilter::FilterStatistics SnapshotFrequencyFilter::getFilterStatistics()
......
......@@ -5,6 +5,8 @@
// Base Class
#include "../Filter.h"
#include <chrono>
namespace armarx::armem::server::ltm::processor::filter
{
class MemoryFrequencyFilter : public MemoryFilter
......
......@@ -3,6 +3,8 @@
// Base Class
#include "../Filter.h"
#include <chrono>
namespace armarx::armem::server::ltm::processor::filter
{
......
......@@ -8,13 +8,30 @@
namespace armarx::armem::server::test
{
void save_statistics(std::map<std::string, ltm::processor::SnapshotFilter::FilterStatistics> stats)
void save_statistics(std::map<std::string, ltm::processor::SnapshotFilter::FilterStatistics> stats, std::string memoryName)
{
std::string directory_path = "Experiments";
if(!std::filesystem::is_directory(directory_path)){
std::filesystem::create_directory(directory_path);
auto now = std::chrono::high_resolution_clock::now();
auto now_time = std::chrono::high_resolution_clock::to_time_t(now);
auto time = localtime(&now_time);
auto month = time->tm_mon;
auto day = time->tm_mday;
std::filesystem::path d_p = "Experiments";
if(!std::filesystem::is_directory(d_p)){
std::filesystem::create_directory(d_p);
}
d_p /= std::to_string(month);
if(!std::filesystem::is_directory(d_p)){
std::filesystem::create_directory(d_p);
}
d_p /= std::to_string(day);
if(!std::filesystem::is_directory(d_p)){
std::filesystem::create_directory(d_p);
}
ARMARX_INFO << "Experiments will be saved at: " << d_p.string();
for(auto f : stats){
ARMARX_INFO << f.first << ": " << f.second.additional_time.count() << " sec; " << f.second.accepted << " accepted";
......@@ -22,10 +39,6 @@ void save_statistics(std::map<std::string, ltm::processor::SnapshotFilter::Filte
nlohmann::json jsonData;
bool ended_without_recording = false;
auto now = std::chrono::high_resolution_clock::now();
auto now_time = std::chrono::high_resolution_clock::to_time_t(now);
auto time = localtime(&now_time);
for(const auto& pair: stats){
if(pair.second.accepted + pair.second.rejected < 1){
......@@ -33,6 +46,7 @@ void save_statistics(std::map<std::string, ltm::processor::SnapshotFilter::Filte
ARMARX_INFO << "Trying to not add JSON file because accepted + rejected < 1";
}
std::map<std::string, std::string> information;
information["Memory Name: "] = memoryName;
information["additional time needed: "] = (std::to_string(pair.second.additional_time.count()) + " sec");
information["number of accepted elements: "] = std::to_string(pair.second.accepted);
information["number of rejected elements: "] = std::to_string(pair.second.rejected);
......@@ -67,7 +81,7 @@ void save_statistics(std::map<std::string, ltm::processor::SnapshotFilter::Filte
s << std::put_time(time, "%Y%m%d%H%M%S");
std::string timeID = s.str();
jsonData["Time "] = timeString;
std::string path = directory_path;
std::string path = d_p.string();
path += "/tmp_wm_";
path += timeID;
path += ".json";
......
......@@ -30,6 +30,6 @@
namespace armarx::armem::server::test
{
void save_statistics(std::map<std::string, ltm::processor::SnapshotFilter::FilterStatistics> stats);
void save_statistics(std::map<std::string, ltm::processor::SnapshotFilter::FilterStatistics> stats, std::string memoryName = "");
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment