Giter VIP home page Giter VIP logo

fcatools / conexp-ng Goto Github PK

View Code? Open in Web Editor NEW
29.0 29.0 8.0 17.94 MB

ConExp-NG is a simple GUI-centric tool for the study & research of Formal Concept Analysis (FCA) that allows you to create formal contexts, draw concept lattices and explore dependencies between attributes.

Home Page: https://github.com/fcatools/conexp-ng/wiki

License: GNU General Public License v3.0

Java 99.75% HTML 0.25%

conexp-ng's People

Contributors

blu2lz avatar davidbormann avatar eugenkiss avatar janfk avatar rjoberon avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

conexp-ng's Issues

Expert Mode for Context Editor (Shortcuts/VIM)

Analogous to ConExp's Expert Mode for fast editing of contexts but extended, create a shortcut concept and its corresponding implementation of an Expert Mode for ConExpNG.

In my opinion this shortcut concept should mimic VIM's unique mode of editing. E.g.

  • hjkl moves the active cell through the context,
  • L toggles the current cell and moves to the right cell or to the first cell in the next row,
  • J toggles the current cell and moves to the cell below or to the first cell in the next column,
  • ...
  • g / G jumps to the first/last object,
  • 0 / $ jumps to the first/last attribute,
  • d / D removes the current object/attribute,
  • o / O adds a new object below/above the currently selected row and lets the user input an corresponding name,
  • ...
  • shortcuts for selections, renaming
    • click on an attributename or object to select only the row or column
    • select other entries by shift+arrowkeys
    • moving attribute or object by ctrl +arrowkeys
    • renaming by r/R for object/attribute
    • click on the first cell to select all
  • ...

Since creating the ConExp-mimicking context editor from scratch was enough work as it is, I did not invest much time into the implementation of an expert mode although I believe it would be worthwhile to have it.

Don't forget to provide an explanation of the various shortcuts in the User Guide!

Arrow Relations

ConExp's context editor has the option to show arrow relations in the context editor. Provide a togglebutton in the toolbar with the same functionality.

Usability of ConExp

We should use some evaluation techniques (e.g. heuristic evaluation) for ConExp's GUI in order to find problems we don't want to recreate and in order to create a better mockup for our new GUI. To that end, we should also obtain a list from Mr.Jäschke in which he describes his personal gripes with ConExp.

ConExp Zoom

Mr.Jäschke suggested that there are problems in terms of zooming inside tha lattice view since, internally, only Integers are used (?).

Project Name

We need to invent a catchy name for our project.

Replace Document Tree

I think the document tree is out of place. Can there be several roots, i.e. can you have several files opened at the same time? Can a file have more than one context? To both questions the answer is no. It seems to me that this tree representation is superfluous and a much simpler representation would get the job done much better.

This yet-to-be-conceived representation does only have to offer the following capabilities:

  • Show filename (although even this could be shown somewhere else)
  • Show the list of lattice views (btw: they should be renameable)
  • Show links to calculated implications/associations (although even this bould be shown somewhere else)

Icons

Use free icons in place of ConExp's icons. The creation of a handful custom icons may be needed.

Resizing column width in the context editor

First of all, it should be possible to only resize the objects column, e.g. it makes sense if your objects have long names. To this end, if the mouse is over the vertical line of the first column transform mouse button to resizer and allow resizing while dragging.

Then, it also makes sense to allow resizing of the other columns if the attribute names are long. But for consistency, all attribute columns should always have the same length. Provide the the resizer interaction but only in the attribute header cells.

Note, the column width should be saved in the program state and ideally also in the saved file.

Cut/Copy/Paste in the Context Editor

ConExp has cut/copy/paste options in the context menu for selections inside the matrix. Currently, these menu entries do nothing. Implement the functionality (it won't be very trivial to be honest).

Many-Valued Formal Contexts

ConExp only supports unary formal contexts. It would be great to support the creation of many-valued formal contexts where the input of ordinal or scalar data is possible.

Note: Mr.Jäschke suggested that these many-valued inputs could be transformed into binary inputs internally? If possible this reduction would probably make the implementation easier. See also slide 24 of Introduction to FCA ICFCA2004: "The process of creating single-valued contexts from a many-valued data set is called conceptual scaling."

How to handle this problem GUI-wise?

  • The Elba User Manual provides an illustrated GUI-flow of working with many-valued contexts.
  • The program SPSS provides a way to enter many-valued data.

Unsaved Changes

If the user tries to exit the application while having unsaved changes a dialog, like in every other GUI, should pop up reminding the user of this fact and providing appropriate actions.

Lattice Layout Algorithms as a Separate Module

... or at least so modular that it can easily be exchanged by another algorithm. In particular, the algorithm should have no dependency to the GUI (Swing) classes (and vice versa).

The idea to have it as a separate library would be that other developers could easily re-use it.

JavaDoc URL

Put generated JavaDoc in the gh-pages branch and put a link to them in the Developer Guide.

Compact View for Context Editor

ConExp allows a more compact view of the context. Add a togglebutton in the toolbar that, when toggled, shows this compact representation.

Batik dependencies

Remove unnecessary batik dependencies from pom.xml. Currently, I've just added every batik lib I could find just to be sure but I'm positive that we are only going to use a tiny fraction of these.

Minimum Size for GUI

We need to set a lower bound for the main window's size so that it is impossible to hide essential GUI elements by resizing the main window.

CSS-like Styles for SVG resp. Lattice

IIRC, one can style style SVG files with an CSS-like language. It would be cool, if we had the ability to choose from several styles. E.g. one basic style and one Latex-like style. Then Tikz-Export would be superfluous, imho. Maybe we could even discover css files in certain locations (folder, where ConExpNG.jar resides and ConExpNG settings directory) and if found, present these additional styles as an option in the GUI.

Better File Format

ConExp's default file format has some deficiencies

  1. Calculated implications/associations are not saved => If the file is reopened these, in parts time-consuming, calculations must be repeated
  2. According to Mr.Jäschke the structure of the XML files per se is not very elegant

At the very least we should resolve the first problem. Here & here is some useful information for a possible file format.

Extra data that needs to be saved:

  • implications/associatons
  • graph & snapshots (each snapshot must remember the subset of selected objects/attributes)
  • column widths

Include example contexts folder

Include a folder examples that contains several examplary contexts as xml files. Their purpose is twofold. For one, they serve as examples for the users. On the other hand, we can repurpose them for internal testing.

Mailing list

Create a google group and correctly link to it from the wiki.

Scrolling in the Context Editor while Headers Stay Visible

I believe it would be great, especially for bigger contexts, if both the attribute header row and the object header column would stay visible at all times. When scrolling horizontally, the attribute header row would scroll horizontally, too, and when scrolling vertically, the object header columns would scroll vertically, too.

Use Cases

Hier noch mal die Use Cases (dann muss man nicht immer in der Dropbox nachschauen), die meines Erachtens umgesetzt werden sollten. Jedoch habe ich noch keine Sortierung nach Priorität reingebracht.

Use-Cases:

  • Neue Datei erstellen
  • Datei öffnen
  • Datei speichern
  • Programm schließen (extend "Datei speichern")
  • Anzahl der formalen Begriff berechen (nötig?)
  • Objekten Attribute zuweisen / Attributen Objekte zu weisen
  • Redundanz entfernen
  • Objekte löschen
  • Attribute löschen
  • Verband erstellen
  • Attribute selektieren
  • Objekte selektieren
  • Verband bewegen
  • Knoten bewegen
  • Verband partiell makieren
  • Verband als SVG exportieren
  • Verband als PDF exportieren
  • LaTeX-Code des Verbands anzeigen
  • Verband-Anzeige ändern
  • Assoziationsregeln berechnen
  • Implikationsregeln berechnen
  • Attributexploration starten
  • Visualisiere Attributexplorationsfragen (include "Attributexploration starten")

UML Diagram

Create an UML diagram till monday the 17.6.

Import of ConExp Files

Import of ConExp files must be possible! Backwards compatibility! Everything else would be bad, as users would somehow need to (manually) recreate their potentially large contexts. We can't expect users to do this.

Modular Addition of New Layout Algorithms

Structure the code in a way so that it is easy to add new layout algorithms. To that end implement at least two different layout algorithms and try to extract an abstract interface from them. In addition, provide a section in the developer guide that explains how to add a new layout algorithm as the addition of a new layout algorithm will probably not only entail the implementation of the algorithm per se but also the addition of GUI code which allows to adjust certain layout parameters.

Usability of ConExp-NG

As we did for ConExp we should test the usability of our new GUI so that we find possible problems as soon as possible.

Also, we should check that our reimagined imitation of ConExp does indeed provide all of ConExp's orginial functionality by going through this list and ConExp's documentation.

Recently opened files

We must find a way to introduce this functionality. Problem ist, we decided not to have a traditional menu. Ideas:

  • Another button next to open files that stands for "open a recent file" (maybe folder symbol with a clock) that opens a list of say the 5 last opened files from which you can choose which to open
  • Displaying a small arrow on the "open folder" button (like "run" in eclipse) that, when clicked, opened a list or recently opened files

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.