inincs / pyNCS

pyNCS is a python library that allows easy access to Neuromorphic Chips and Systems (NCS),
http://inincs.github.com/pyNCS/
GNU General Public License v2.0
16 stars 10 forks source link

interactive visualization of mappings: xdot? #7

Open fabioedoardoluigialberto opened 11 years ago

fabioedoardoluigialberto commented 11 years ago

As you know, the Connection class contains "dot" representations of the connectivity between populations, and that's what introduced the dependency on pydot package. The "dot" representation has been chosen for its compact, easy to read representation, which can be also easily converted into any other more complex representation. On the other hand, until now it has only been possible to dump this representation into a file and then call the 'dot' program from bash to generate a png of the connectivity graph. No interactive GUI for mappings and plots has ever been possible with this approach.

I just found a package that could enhance user experience by providing graphical visualization of the mappings. It turns out that the tools have always been there in the same graphviz package from where pydot was taken in first place... I think xdot package could be the solution.

http://code.google.com/p/jrfonseca/wiki/XDot#Features

Pros of xdot:

Other projects:

Both the above alternatives seem much bigger projects. The latter uses pygame but given the simplicity of the dot representation I would stick with the slickest solution, i.e. xdot.

What do you think?

Fabio

fabioedoardoluigialberto commented 11 years ago

Just tested xdot.py. Check the screencast: http://www.youtube.com/watch?v=Wj8KM_kYJNw&feature=youtu.be

eneftci commented 11 years ago

It might be nice to have a visualization package that supports bi-directional connections with pyNCS (callbacks), so it could also be used to create/delete connections. Of course this is way beyond our objectives for the moment, but it may be helpful to think ahead of time.

fabioedoardoluigialberto commented 11 years ago

In that case I think we could even grab ideas and code from Jack Audio Connection Kit interfaces. Jack is an open source audio server with very low latency intended for professionals. There are many graphical interfaces that let you simply click sources and destinations to connect them. These interfaces usually interact with the audio server in real-time. One of them is Qjackctl.

I imagine an interface like those. We could grab some open source code and modify it so that it interfaces to a "mapping server".

Check screenshots here