freenode/#clasp - IRC Chatlog
Search
0:34:28
drmeister
The (similarity-graph molecules similarity-matrix) generates a single graph - but there are disconnected subgraphs within it.
0:34:54
drmeister
(connected-components graph) returns list of list of vertices. Each list of vertices is vertices from one subgraph.
0:36:46
drmeister
The edges are molecuels that are similar to each other and the weight is the similarity score.
0:37:59
drmeister
The work we are doing requires each graph to contain one single connected component - so I'm isolating the components.
0:38:57
drmeister
Right - I didn't state that - but yes - there will be only one edge between each pair of vertices.
0:39:39
drmeister
I think it is - but the picture is a bit too low res for you to see. Let me check though - you make a good point.
0:41:34
Bike
component-edges = (remove-if-not (lambda (edge) (or (find (vertex1 edge) component) (find (vertex2 edge) component))) remaining-edges)
0:42:32
Bike
this also isn't very efficient either way, but i guess if the graphs are small enough to look at it won't matter too much
0:42:50
drmeister
Yes yes - you are right. Then I want 'append' rather than 'collect' in the loop - right?
0:44:00
drmeister
I want all the component-edges to be all the edges that connect vertices in the component
0:45:15
Bike
at the end i'd do (setf remaining-edges (set-difference remaining-edges component-edges))
0:47:07
Bike
the remove-if-not just looks through the edges and collects only those that have a vertex in the component
0:47:56
Bike
and "for efficiency" i'd skip the remaining-edges stuff and just keep looking through all of the edges - you'll do redundant searching, but it should cons less, which seems more important
0:53:05
Bike
you could also go through the whole list separating out the component... let me write that out
0:54:05
no-defun-allowed
Well, if you put the objects through a filter, are you going to keep the objects that are stuck in the filter or the objects that go through?
0:55:00
no-defun-allowed
List.partition returns a tuple with the objects in the filter and the objects that fell through.
0:56:13
no-defun-allowed
(defun partition (predicate list) (loop for item in list if (funcall predicate item) collect item into positive else collect item into negative finally (return (values positive negative)))) ;; look ma, no parens
0:59:57
no-defun-allowed
Very funny, but you can use it. Short of some α-transforms (renaming) there's few reasonable ways to do that, IMO.
1:03:39
no-defun-allowed
Maybe too much of a stretch, but you could invent a function that's called like (list-funcall-if <test> (lambda (object) <then>) (lambda (object) <else>) <list>)
3:43:15
drmeister
I put in a question to Lang Hames. I feel like it might be something I have to tell the JIT to do.
3:44:19
drmeister
Yes. It's something recent I came up with. The faso/fasp files add object files to the JIT.
3:45:38
drmeister
I don't know if you remember the old "Palmolive" commercials? https://www.youtube.com/watch?v=_bEkq7JCbik
3:55:20
drmeister
I can load the faso file multiple times - so the external linkage symbol isn't creating a collision.
3:56:03
drmeister
I've spent months working out how to get faso files to work without external linkage symbols. Now I've forgotten what to do when I want an external linkage symbol.
3:57:40
Bike
going to sleep. night. if you have any other ideas for what i should focus on fixing before release i'm all ears, though i suppose now might not be the time.