feat: add question visualization GUI #113
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
This contribution introduces an interactive Tkinter-based GUI for analyzing question similarity. Through the GUI, users can see the following graphs: Cosine similarity matrix (heatmap), Cluster scatter plot (K-Means or Affinity Propagation based on the number of given questions) and Network graph. Users can also add new questions and display all current questions.
Note: This feature's additional dependencies (tkinter, matplotlib, networkx) are intentionally excluded from requirements.txt since they are not core requirements for the library. This GUI aims to provide an additional optional way to visualize and manage instrument questions without impacting the core package's minimal dependencies.
Fixes
No existing issue was fixed.
Type of change
Testing
I have added some basic tests to ensure the draw functions run without error and that empty input exits program correctly.
The Harmony API still runs with the introduced changes, since they implement a separate feature and do not affect existing functionality.
Test Configuration
Checklist
requirements.txt
,pyproject.toml
and also in therequirements.txt
in the API repo