Add similaritys

This commit is contained in:
2025-10-22 17:56:26 +02:00
parent 5f6305a2f2
commit 593b813988
6 changed files with 138 additions and 58 deletions

View File

@@ -14,7 +14,7 @@ enum DrawingStage
done,
};
constexpr int numberOfFunc = 2;
constexpr int numberOfFunc = 6;
class Vapp
{

View File

@@ -11,7 +11,7 @@ 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,8 +100,12 @@ 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::hamming_distance_without_seeds);
simil[5] = Similarity::calc_similarity(manager.vector, Similarity::levenshtein_distance);
stageOfDrawing = DrawingStage::done;
break;
@@ -173,13 +177,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", "hamming_distance_without_seeds: %f", simil[4]);
ImGui::LabelText("##sim6", "levenshtein_distance: %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("hamming_distance_without_seeds");
ImGui::TableSetColumnIndex(6);
ImGui::Text("levenshtein_distance");
for (int row = 0; row < similTable.size(); row++)
{
ImGui::TableNextRow();
@@ -277,7 +303,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 +316,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::hamming_distance_without_seeds);
similTable[s][5] = Similarity::calc_similarity(manager.vector, Similarity::levenshtein_distance);
DnaManager::newGen(&manager);
}
else