freenode/clasp - IRC Chatlog
Search
17:54:50
Colleen
yitzi: drmeister said 1 hour, 54 minutes ago: It's not important to be able to render molecules with cytoscape. cytoscape is for rendering a different type of graph. We will need to label nodes and edges and create and remove edges interactively (not nodes) and then get the new graph back into the kernel.
17:56:43
drmeister
I used the extension manager and after installing jupyter-cytoscape I lost the other widgets.
18:01:20
drmeister
Ok - after restarting everything - it all works. I have the cytoscape stuff up now.
18:01:50
drmeister
I can move the nodes around - is there a way to interactively create an edge between two nodes?
18:10:30
yitzi
It's also got a "file open" command. Not sure if it is possible to retrieve the file contents from the frontend.
18:19:13
drmeister
I'm on to the cytoscape widget now. Could I pick your brains on a few things involving that?
18:20:28
drmeister
I'm trying to figure out how to initialize an edge so it connects two nodes in the graph.
18:22:48
drmeister
It needs to be something like: (push (make-instance 'edge :data (list '("source" . "1") '("target" . "2"))) (edges (graph cyto)))
18:39:43
yitzi
Please keep in mind that I have worked on that thing for maybe an hour. It's super basic still.
18:42:58
yitzi
It's got great potential. I may even use it one my proof classes. Maybe as a four-color map demo.
18:48:44
yitzi
My success with new gui is making me think I might be able to get to nglview 2.7.5 without doing a whole bunch of intermediate steps on the point releases.
18:58:10
drmeister
yitzi: How is your graph theory? We use a max-clique algorithm with topological constraints to compare molecules to each other to determine which are most similar to each other.
18:59:22
drmeister
Depending on an algorithm that tries to solve an NP-complete problem in a reasonable amount of time makes for interesting programming challenges.
19:04:07
yitzi
drmeister: It's okay. If you have specific concerns I can always brush up. My primary area is mathematical physics, group theory, etc. But I am fast learner.
19:05:46
drmeister
We have code that constructs a graph wherein every node is in one loop and there are the minimum number of edges. Edges represent very expensive calculations.
19:20:04
drmeister
We can precalculate them as svg strings and provide them to the cytoscape widget.
19:49:05
drmeister
::notify yitzi I'm going to serve cl-cytoscape on "quickclasp". "quickclasp" is a quicklisp distribution that provides clasp specific systems. Once you release it on quicklisp then I'll remove it from quickclasp.
22:56:57
drmeister
::notify yitzi Can you make 'trivial-backtrace' a dependency of common-lisp jupyter and wherever you catch errors can you add code to dump a backtrace?
23:12:09
drmeister
Installing cl-nglview from quickclasp - it takes minutes because it's got to unpack a ZIP file.
23:18:54
drmeister
https://github.com/clasp-developers/clasp/blob/master/include/clasp/core/numbers.h#L1062
23:21:10
drmeister
I can left shift it and then right shift it and if it remains the same then return it. Otherwise go with the bignum code.
23:35:26
drmeister
If there is only 1 zero bit and you call with bits=1 then it will use the Bignum code.
23:37:54
Bike
also, rather than using __builtin_clz directly, it should probably be a configuration somewhere, like i did for bit array words https://github.com/clasp-developers/clasp/blob/master/include/clasp/core/configure_clasp.h#69
23:39:55
drmeister
So use this macro? https://github.com/clasp-developers/clasp/blob/master/include/clasp/core/configure_clasp.h#L69
23:44:18
drmeister
I have to clear the sign bit, use clz, check if the result will fit in a fixnum, shift it, set the sign bit.
23:52:24
drmeister
You know what someone should do? Write a language where all these fussy "correctness" details are tossed on a pile called "undefined behavior". It would be so much easier to implement a language like that.
0:28:11
drmeister
::notify kpoeck If we are going to compare clasp performance to other Common Lisp there are some things we should turn off. We spill all register arguments to the stack with every function call. I don't think sbcl or ecl do that.
0:39:27
drmeister
::notify yitzi Check this out https://www.dropbox.com/s/qs5tvygmd60ct89/with-lomap.mov?dl=0
0:55:54
Colleen
yitzi: drmeister said 5 hours, 6 minutes ago: I'm going to serve cl-cytoscape on "quickclasp". "quickclasp" is a quicklisp distribution that provides clasp specific systems. Once you release it on quicklisp then I'll remove it from quickclasp.
0:55:54
Colleen
yitzi: drmeister said 1 hour, 58 minutes ago: Can you make 'trivial-backtrace' a dependency of common-lisp jupyter and wherever you catch errors can you add code to dump a backtrace?
0:55:54
Colleen
yitzi: drmeister said 16 minutes, 27 seconds ago: Check this out https://www.dropbox.com/s/qs5tvygmd60ct89/with-lomap.mov?dl=0
0:56:39
yitzi
drmeister: https://www.dropbox.com/s/iirb91g5me1gygj/Screencast_06-07-2020_08%3A50%3A35%20PM.webm?dl=0
1:02:02
yitzi
I am starting to remove the abandoned trajectory player. As soon as I can prove that the new interface can play a trajectory without it i'll get a PR ready. Major code burning happening.
1:03:35
yitzi
https://github.com/QuantStack/ipycytoscape/blob/master/examples/Labels%20example.ipynb
1:06:36
Bike
i think we just transfer type declarations on structure slots to the accessor functions and that's it
1:09:38
Bike
i was considering some stuff to use generic functions for that, since it'd be faster, but there'd be overhead from compilation
1:10:34
Bike
maybe if we set up the discriminating function to have the T case so there will only be misses and thus compilations in the probably-rarer case of a type check failing...
1:15:16
drmeister
yitzi: The point that last one is making is the very complex molecular similarity calculations are very expensive.
1:16:36
drmeister
There is lots of time spent calling class-of and subclass-p and I don't see those calls in the quicklisp code.
1:16:59
Bike
yeah (typep x 'some-structure-type) becomes (subclassp (class-of x) (find-class 'some-structure-type))
1:23:19
Bike
and the other thing i was talking about was may being able to make structure type checks cheaper by making them generic functions instead.
1:23:37
drmeister
kpoeck is measuring code performance - clasp runs with a lot of safety and things like spilling register arguments. Are we comparing apples to apples when we compare ourselves to other implementations.
1:24:22
Bike
if we compare clasp without changes to other implementations without changes i think that's a fair comparison, it's just that it can maybe guide us towards changing policy
1:29:39
Bike
"Since it is especially useful to be able to get the arguments to a function, argument variables are treated specially when the speed optimization quality is less than 3 and the debug quality is at least 1. "
2:56:59
drmeister
Bike: FYI I disabled the use of Eclector's reader when reading leap OFF files because of the terrible performance of terminate-token. I only need to read simple things like strings, floats and numbers
2:57:32
drmeister
When the setjmp/longjmp thing gets implemented then we can turn it back on and use it as a test case.