freenode/#clasp - IRC Chatlog
Search
14:14:20
drmeister
Initialize a single-float specialized vector with a simple vector of double-floats?
14:15:46
drmeister
No -apparently not. "Each leaf of the nested structure must be of the type given by element-type. "
14:22:39
drmeister
The compiler warnings we are getting now in slime are fantastic! Programming is very zippy.
14:28:56
davidlovemore
Bike: si_addr seems to work on intel linux. You can get at the regs via the u_context_t structure passed to the third argument of the sigaction callback.
14:30:26
Bike
yeah, i've looked at the context a bit. i'm not sure we need to do anything with them in the lisp debugger, though they might help with the float traps debacle
14:34:45
Bike
when we do floating point arithmetic in lisp we'd prefer to signal an error rather than get NaNs like the default. i tried to set it up (by setting the FPU to trap, which ends up as a SIGFPE) but i couldn't get it working consistently
14:36:19
davidlovemore
My guess is something somewhere is messing with the FPU configuration which you can kind of do on intel, so the behaviour might depend on what libraries might have been initialized or called recently.
14:37:18
Bike
ugh. that sounds even worse than i was dealing with. there's no standard way to access the float traps, was my first problem, so i was using intel intrinsics
14:37:34
Bike
and then i found that upon entrance to a signal handler the fpu register is reset, for some reason
14:38:55
davidlovemore
Yes, that makes sense. the fpu is put into a standardized state for the traps but as you indicate, looking at the registers might help you detect what state it was in when the trap happenned.
14:39:26
Bike
that wasn't my only problem, unfortunately, and i want to deal with specifics of mcontext and stuff as little as possible
14:42:45
Bike
plus i dug into the IEEE 754 stndard a bit and there are language independent operations for setting trap states, as far as i understood, so it's annoying that C doesn't provide anything
14:45:21
davidlovemore
But from an implementation point of view isn't it better to do a whole load of floating point and then if x!=x (true on NaN) repeat mre carefully. Traps are slow. Conditional branches that are rarely taken are pretty much instant.
14:47:20
Bike
i don't know what's faster. but we don't have an effective way to automatically group floating point computations together, and doing a check after every operation would probably be slow
14:50:38
Bike
Oh, yes, for the programmer I was intending to allow dynamic control of the fpu traps, and it wouldn't be hard to put specified checking on top of that
14:50:56
Bike
but our language standard specifies errors being signaled, so that's what i wanted to start with
14:52:30
Bike
I could get it working in the simple terminal REPL but not in our usual development environment. i wasn't sure why, but multithreading might be involved
14:53:57
davidlovemore
It could be you have to finsh handling one fault before you get another, but I am beginning to guess here.
14:56:47
Bike
but yes, that was another issue. i have it signaling lisp errors from signal handlers. the lisp error handler can then return control to somewhere up the stack. but that means we're kind of still in the signal handler, and posix doesn't really seem prepared for doing normal things in a signal handler
14:59:11
davidlovemore
That doesn't sound the right way to use signal handlers. But fiddling the machine state so you can continue is hard.
14:59:59
Bike
yeah, i wasn't sure of the best way to do it, but i don't have a lot of examples to go off of. as far as i could tell sbcl works like this, but i'm not totally sure about that
15:02:54
davidlovemore
An obvious way is for each instruction (or instruction region) that can fail is to have a location to jump to on an error. But how do you do that if setcontext fails. You would be better to conditionally jump.
16:16:46
drmeister
selwyn: Here's how I'm using the jupyter notebook to debug the algorithm that I'm implementing.
16:17:44
drmeister
That shows the animation of the optimization process that turns a molecule described as a network of atoms and bonds starting with random coordinates into a pleasing (to a chemist) flat cartoon of the molecule.
16:19:01
drmeister
Kevslinger: At the end of that animation you see the problem that I described yesterday. When I use the scroll mechanism on my mouse to make the molecule bigger and smaller - it also scrolls the jupyter notebook up and down at the same time. This is new behavior that showed up a couple of weeks ago. It's very annoying and hard to figure out where it is coming from.
16:19:50
drmeister
So I end up making the image larger (and scroll down) and then moving the mouse to the left where scrolling only moves the notebook up and go back and forth like that.
16:20:02
selwyn
does the cartoon correspond to the real-life geometric configuration of the molecule in any way? for example are the angles between the bonds
16:20:58
Kevslinger
I guess you could go into full-screen with the molecule, but that's pretty painful if you have to do it often
16:21:42
drmeister
selwyn: The cartoon corresponds more or less to how a chemist would sketch the molecule in a molecule sketching program. This image is rendered with tubes while a chemist would use simple lines and letters for non-carbon elements. But the layout is close to what a chemist would sketch.
16:24:28
selwyn
i am deciding between using the CLIM graphical inspector and jupyter notebooks for something similar for a new project
16:57:18
drmeister
I don't know - it's some molecule that I'm using as a test case. This one isn't one that we make.
17:00:15
selwyn
so.. are you optimising over time the value of a cost function which measures how regular the rendition of the molecule looks on the screen?
18:32:40
Kevslinger
So xeus-python isn't compatible with nglview at the moment because of dependency issues. I think xeus-python is using an outdated IPython (or nglview is), but I'm not sure. Been trying to dig through it
19:59:15
drmeister
selwyn: I learned some new optimization techniques implementing this algorithm. It simulates the motions of the atoms by calculating the forces on each atom and integrating Newton's laws of motion. It has a collection of "correction terms" that give the force a kick in an appropriate direction when the shape of the molecule goes wrong in some way.
20:30:14
scymtym
selwyn: are you aware that the McCLIM inspector has been rewritten and is much better now?
20:51:55
Kevslinger
drmeister: When I try to run `import nglview as ngl` in the Xeus-python kernel, I get an error where nglview is trying to import classes from IPython. When I open a regular (ipykernel) python notebook, I don't get that issue, and nglview imports fine
20:52:40
Kevslinger
It's gotta be something with versioning in the xeus kernel I think. On. another note, I think these MacBook keyboards are the worst thing Apple has done in quite some time.
21:03:47
drmeister
Kevslinger: Could you paste the error you see with "import nglview as ngl" in the Xeus-python kernel?
21:06:12
Kevslinger
it's strange because I can run that exact line in the py3 kernel and it works fine (not the xeus kernel)
21:13:57
drmeister
If you removed those functions and the "HTML" from import HTML,... I wonder if it goes farther.
21:16:05
Kevslinger
the other imports (Javascript, display) also don't work and are used elsewhere. I'll keep hacking and see if I can easily get it
21:18:49
drmeister
https://ipython.readthedocs.io/en/stable/api/generated/IPython.display.html#IPython.display.HTML
21:24:54
Kevslinger
Both that and another example I tried gave me `Error displaying widget: model not found`
21:25:33
Kevslinger
Which might be because I had to comment out the ipython_display function here https://github.com/arose/nglview/blob/master/nglview/player.py#L784
21:27:05
drmeister
OTOH it should use the structure _ipython_display_ in widget.py for a static structure.
21:32:29
Kevslinger
Okay, I found some errors on GitHub and am using the JS console. Will try to debug and I'll get back to you if I figure anything. out
21:33:29
drmeister
I see the dependencies https://github.com/QuantStack/xeus-python#installation-from-source
21:36:20
Kevslinger
To get xeus-python up and running, I made a Miniconda environment with xeus-python, jupyterlab, and I think jupyter
21:36:55
Kevslinger
I can document the steps to go from 0 to a running notebook with xeus-python. The steps on Github assume you have Conda setup with Jupiter lab already
21:38:40
Kevslinger
yeah, I'm getting some error messages from the JS console. I don't really understand them, but I'll start copy-pasting and crossing my fingers.
21:40:45
Kevslinger
This issue seems related to https://github.com/jupyterlab/jupyterlab/issues/2791, which was then closed as it was related to https://github.com/jupyterlab/jupyterlab/issues/2831