comparative-concepts / cc-database

Cross-linked database of Comparative Concepts, extracted from "Morphosyntax: constructions of the world's languages", by William Croft (2022)
https://comparative-concepts.github.io/cc-database/
4 stars 1 forks source link

[BUG] nodes/edges disappearing from the graph #13

Closed wcroft closed 4 hours ago

wcroft commented 1 week ago

Where is the bug?

In the visualization.

Describe the problem

If you select a set of nodes to remove, then unselect certain of those nodes, then remove selected, undesired things happen. Most commonly, if you unselect one node, the unselected node remains as desired, but the link(s) to the remaining nodes are lost. If you unselect more than one node, it's not clear what happens: more links are lost but sometimes the unselected node seems lost as well.

Screenshots

I sent Peter screenshots but I don't have them any more.

How to correct it

I don't have suggestions of good fixes. I did notice that in the case of one unselected node surviving but losing its (SubtypeOf) link, I could click again on (display) SubtypeOf, even though it was already on, and the link came back. It didn't seem to work with more nodes were unselected and stranded.

Additional context

[Add any other context about the problem here]

heatherleaf commented 5 hours ago

Bill's description of the bug:

My example was trying to more or less replicate Tree 5 of the manually constructed Construction Relations trees, namely clause-level information packaging types below “declarative construction”. My first attempt was to turn on all 3 relations in the Constructions graph, then select downward 5 times (because that’s the lowest level displayed in Tree 5), and then remove unselected. That left a too-large tree, as there are many nodes below the ones in Tree 5 that have to do with subtypes of other constructions that I’m not interested in. I tried to prune the tree, and discovered at least one bug, to be described below. I tried to avoid the bug by starting from just the top node, “declarative construction”, and removing all unselected, i.e. all other nodes except “declarative construction”, and then grow downwards once, twice, thrice. This is actually useful to the user because you start with a single node and can observe the structure of the database by growing the graph one step at a time (in this case, one step downwards). (Actually, I now realize that I could have done downward once before removing unselected.) This is particularly helpful because linguists aren’t used to a star representation; they are used to tree representations. After growing downwards 3 times, subtypes of predicate are introduced, and I wanted to prune them away. So I selected “predicate”, expanded downwards once, and then deselected “predicate”, which I wanted to keep. See screenshot. Then I did remove selected. This removed the nodes I didn’t want. But it also removed the HeadOf relations between “predicate” and “clause” and between “predicate” and “topic-comment construction”. See screenshot. Maybe since HeadOf is a new(er) relation, it didn’t get preserved when you do remove selected?

heatherleaf commented 5 hours ago

And follow-up:

The bug is different from how I first described it. I thought that it was due to HeadOf. But the bug recurred when I reran the example with only SubtypeOf relations. What seems to be happening is that you select a node, then do expand downward, then deselect the first node, then remove selected, what happens is that the deselected node isn’t removed (expected) but the link from the deselected node to the rest of the subgraph is also removed. See attached screenshots: the first after expansion and deselection of the first node, the second after removal of the selected nodes in the first screenshot.

(1) After expansion and deselection of the first node:

Screenshot 2024-11-12 at 4 45 13 PM

(2) After removal of the selected nodes:

Screenshot 2024-11-12 at 4 56 18 PM
heatherleaf commented 5 hours ago

I can confirm. Minimal steps to reproduce (from graph Constructions and only showing SubtypeOf):

  1. Search for "complex sentence" (only one node will be selected)
  2. "Expand downwards" once (23 nodes selected)
  3. Remove "complex sentence" from the selection (by clicking and holding)
  4. "Remove selected"

The node "complex sentence" becomes isolated. (The edge from "construction" to "complex sentence" disappears)

heatherleaf commented 4 hours ago

Fixed by d72e29a