herbie-fp / odyssey

A platform for exploring floating-point expressions :boat:
https://herbie-fp.github.io/odyssey/
MIT License
18 stars 0 forks source link

Error plot brushing #108

Open jaelafield opened 3 months ago

jaelafield commented 3 months ago

Implement brushing on the Error Plot to give users a focused view on a subset of points.

jaelafield commented 3 months ago

Next planned step is filming a brief video with visual examples of the kind of options with the brushing feature and writing up a few initial corresponding questions, then sending those out for feedback in the herbie channel. Goal to do that is morning of 8/28, though haven't done much on this besides previously discussed planning!

elmisback commented 3 months ago

Assuming that's 8/29, that feedback plan sounds good to me! I think we can already plan to implement subset selection with what you've got, pending the solution of the bucketing issue. We can discuss in the meeting tomorrow.

jaelafield commented 2 months ago

Update: Thread with video of initial design considerations and discussion. General plan for details of first implementation summarized there. New related step:

jaelafield commented 2 months ago

Notes from 9/12 meeting:

UI notes:

jaelafield commented 2 months ago

Current in-progress (besides above):

Lower priority UI adjustments to keep in mind for later:

Major consideration to come next:

jaelafield commented 2 months ago

Notes about difficulty with updating global variable causing re-render:

jaelafield commented 2 months ago

"mouse up" action can be detected with .on("end", () => {... originally I was using .on("brush end", () => {... "brush end" may be the correct behavior for the highlighting as it's nice for that to be continuous as the mouse drags, but just "end" can be defined separately and may be good for helping with the global variable setting, however that doesn't fix it on its own.

jaelafield commented 1 month ago

(I'm sick, so not much progress) Have an in-progress attempt to save the brushing state so the selected subset of points can be stored globally and then the brushing can be reapplied after the re-render. Have yet to try to debug it, so unsure if it'll work.

jaelafield commented 1 month ago

Monday, I re-familiarized myself with what I was attempting earlier last week ^^, and I roughly diagnosed the current bugs, but I also reminded myself how ugly my current approach is. I expect to have a solid hour tomorrow before RA meeting to attempt those fixes I have in mind, but if it works that really just feels like a proof of concept to me, I'd love to find a cleaner way to handle it.

(Covid-catch up on all other things has left me with less time on this than I'd like, so sorry!)

jaelafield commented 1 month ago

Working on an attempt on the pattern we talked about in 2:1 yesterday.

This portion (the easy part) works fine with a play value for the subset analysis:

global context exists for subset of points analysis
...
in the `ExpressionTable` for each expression where the "error" and "speedup" are calculated
     if a subset of points have been selected
               instead calculate values to be rendered using subset analysis instead of standard analysis

I need to actually get that analysis value correctly which I will continue to work on before the meeting tomorrow!

Not currently blocked, though I will update here if something comes up as I continue to work on it.

jaelafield commented 1 month ago

I have an analysis call working on just the subset of points selected. If I have some free time before tomorrow, I'll try to get the "cost" call working as well. I haven't looked into it much, so if it's a similar pattern it should be quick, otherwise I'm unsure.

There's also some bugginess with deselecting a brushed region, so I'll start debugging that also.

jaelafield commented 3 weeks ago

Created flag to hide brushing implementation for feature freeze

jaelafield commented 1 week ago

Plan by meeting tomorrow: