Add similarity and experimental drawBranch
This commit is contained in:
@@ -11,10 +11,11 @@ enum DrawingStage
|
||||
drawTree,
|
||||
drawBig,
|
||||
calSim,
|
||||
save,
|
||||
done,
|
||||
};
|
||||
|
||||
constexpr int numberOfFunc = 2;
|
||||
constexpr int numberOfFunc = 6;
|
||||
|
||||
class Vapp
|
||||
{
|
||||
@@ -52,4 +53,5 @@ private:
|
||||
std::vector<std::array<float, numberOfFunc>> similTable;
|
||||
|
||||
void setUpTable();
|
||||
void drawToFile();
|
||||
};
|
||||
@@ -6,12 +6,13 @@
|
||||
#include <rlImGui.h>
|
||||
#include <imgui.h>
|
||||
#include <raylib.h>
|
||||
#include <fstream>
|
||||
|
||||
const char select_user_id[] = "SELECT USER_ID FROM user_table GROUP BY USER_ID;";
|
||||
|
||||
constexpr int sizeOfCanvas = 1000;
|
||||
|
||||
void Vapp::init(char* filename)
|
||||
void Vapp::init(char *filename)
|
||||
{
|
||||
bigTexture = LoadRenderTexture(sizeOfCanvas * 4, sizeOfCanvas * 4);
|
||||
treeTexture = LoadRenderTexture(sizeOfCanvas, sizeOfCanvas);
|
||||
@@ -100,11 +101,18 @@ void Vapp::update()
|
||||
break;
|
||||
case DrawingStage::calSim:
|
||||
|
||||
simil[0] = Similarity::calc_similarity(manager.vector, Similarity::hamming_distance);
|
||||
simil[1] = Similarity::calc_similarity(manager.vector, Similarity::hamming_distance_without_seeds);
|
||||
simil[0] = Similarity::calc_similarity(manager.vector, Similarity::euclidean_distance);
|
||||
simil[1] = Similarity::calc_similarity(manager.vector, Similarity::cosine_similarity);
|
||||
simil[2] = Similarity::calc_similarity(manager.vector, Similarity::cosine_similarity_int);
|
||||
simil[3] = Similarity::calc_similarity(manager.vector, Similarity::hamming_distance);
|
||||
simil[4] = Similarity::calc_similarity(manager.vector, Similarity::levenshtein_distance);
|
||||
simil[5] = Similarity::calc_similarity(manager.vector, Similarity::dot_minmax);
|
||||
stageOfDrawing = DrawingStage::save;
|
||||
break;
|
||||
case DrawingStage::save:
|
||||
drawToFile();
|
||||
stageOfDrawing = DrawingStage::done;
|
||||
break;
|
||||
|
||||
case DrawingStage::done:
|
||||
enableAll = true;
|
||||
break;
|
||||
@@ -173,13 +181,35 @@ void Vapp::draw()
|
||||
if (showStats)
|
||||
{
|
||||
ImGui::Begin("Status", &showStats);
|
||||
ImGui::LabelText("##sim1", "hamming_distance: %f", simil[0]);
|
||||
ImGui::LabelText("##sim2", "hamming_distance_without_seeds: %f", simil[1]);
|
||||
ImGui::LabelText("##sim1", "euclidean_distance: %f", simil[0]);
|
||||
ImGui::LabelText("##sim2", "cosine_similarity: %f", simil[1]);
|
||||
ImGui::LabelText("##sim3", "cosine_similarity_int: %f", simil[2]);
|
||||
ImGui::LabelText("##sim4", "hamming_distance: %f", simil[3]);
|
||||
ImGui::LabelText("##sim5", "levenshtein_distance: %f", simil[4]);
|
||||
ImGui::LabelText("##sim6", "dot_minmax: %f", simil[5]);
|
||||
|
||||
const ImGuiTableFlags flags = ImGuiTableFlags_NoHostExtendX | ImGuiTableFlags_SizingFixedFit | ImGuiTableFlags_Resizable | ImGuiTableFlags_BordersOuter | ImGuiTableFlags_BordersV | ImGuiTableFlags_ContextMenuInBody;
|
||||
const int columns = numberOfFunc + 1;
|
||||
if (ImGui::BeginTable("table1", columns, flags))
|
||||
{
|
||||
|
||||
ImGui::TableNextRow();
|
||||
|
||||
ImGui::TableSetColumnIndex(0);
|
||||
ImGui::Text("index");
|
||||
ImGui::TableSetColumnIndex(1);
|
||||
ImGui::Text("euclidean_distance");
|
||||
ImGui::TableSetColumnIndex(2);
|
||||
ImGui::Text("cosine_similarity");
|
||||
ImGui::TableSetColumnIndex(3);
|
||||
ImGui::Text("cosine_similarity_int");
|
||||
ImGui::TableSetColumnIndex(4);
|
||||
ImGui::Text("hamming_distance");
|
||||
ImGui::TableSetColumnIndex(5);
|
||||
ImGui::Text("levenshtein_distance");
|
||||
ImGui::TableSetColumnIndex(6);
|
||||
ImGui::Text("dot_minmax");
|
||||
|
||||
for (int row = 0; row < similTable.size(); row++)
|
||||
{
|
||||
ImGui::TableNextRow();
|
||||
@@ -277,7 +307,7 @@ void Vapp::setUpTable()
|
||||
UiUnit unit = DnaManager::next(&manager);
|
||||
if ((unit.index != pos))
|
||||
{
|
||||
// DOTO: SET ERROR
|
||||
// TODO: SET ERROR
|
||||
TraceLog(LOG_ERROR, "LOADING DNA");
|
||||
sql::finalize(get_gen_stmt);
|
||||
return;
|
||||
@@ -290,9 +320,13 @@ void Vapp::setUpTable()
|
||||
{
|
||||
similTable.emplace_back();
|
||||
int s = similTable.size() - 1;
|
||||
similTable[s][0] = Similarity::calc_similarity(manager.vector, Similarity::hamming_distance);
|
||||
similTable[s][1] = Similarity::calc_similarity(manager.vector, Similarity::hamming_distance_without_seeds);
|
||||
|
||||
similTable[s][0] = Similarity::calc_similarity(manager.vector, Similarity::euclidean_distance);
|
||||
similTable[s][1] = Similarity::calc_similarity(manager.vector, Similarity::cosine_similarity);
|
||||
similTable[s][2] = Similarity::calc_similarity(manager.vector, Similarity::cosine_similarity_int);
|
||||
similTable[s][3] = Similarity::calc_similarity(manager.vector, Similarity::hamming_distance);
|
||||
similTable[s][4] = Similarity::calc_similarity(manager.vector, Similarity::levenshtein_distance);
|
||||
similTable[s][5] = Similarity::calc_similarity(manager.vector, Similarity::dot_minmax);
|
||||
DnaManager::newGen(&manager);
|
||||
}
|
||||
else
|
||||
@@ -301,7 +335,37 @@ void Vapp::setUpTable()
|
||||
}
|
||||
|
||||
sql::reset(get_gen_stmt);
|
||||
|
||||
int64_t id = ids[selected_id_index];
|
||||
char buff[50];
|
||||
sprintf(buff, "%ld.txt", id);
|
||||
std::ofstream file(buff);
|
||||
|
||||
file << "| index | euclidean_distance | cosine_similarity | cosine_similarity_int | hamming_distance | levenshtein_distance | dot_minmax |\n";
|
||||
file << "| --- | --- | --- | --- | --- | --- | --- |\n";
|
||||
|
||||
|
||||
|
||||
for (size_t i = 0; i < similTable.size(); i++)
|
||||
{
|
||||
file << "|" << i << "|";
|
||||
for (size_t j = 0; j < similTable[i].size(); j++)
|
||||
{
|
||||
file << similTable[i][j] << "|";
|
||||
}
|
||||
file << "\n";
|
||||
}
|
||||
}
|
||||
|
||||
sql::finalize(get_gen_stmt);
|
||||
}
|
||||
|
||||
void Vapp::drawToFile()
|
||||
{
|
||||
int64_t id = ids[selected_id_index];
|
||||
char buff[50];
|
||||
sprintf(buff, "%ld_%d.png", id, selected_gen);
|
||||
Image image = LoadImageFromTexture(bigTexture.texture);
|
||||
ExportImage(image, buff);
|
||||
UnloadImage(image);
|
||||
}
|
||||
Reference in New Issue
Block a user