Introducing new developer Emanuele Olivetti

10 views
Skip to first unread message

Eleftherios Garyfallidis

unread,
Nov 11, 2011, 10:42:53 AM11/11/11
to fos-...@googlegroups.com
Dear friends,

I had a great pleasure to work together with Emanuele on a tractography labeler and volume slicer using Fos for neuroimaging data sets. Emanuele will continue contribute on his spare time which of course small but I thought it would be good to having in him on board as he needs to add some new features in the application.

You can find the application in Fos/applications/spaghetti.py. A slicer is added as well as a new actor in fos/actor. I will try to port in the new fos version which will most likely be fos-pyside in the near future let me know if you want to help.

So Welcome Emanuele! and greetings to you all.

Best wishes,
Eleftherios

Ian Nimmo-Smith

unread,
Nov 11, 2011, 5:06:34 PM11/11/11
to fos-...@googlegroups.com
Welcome, Emanuele. And well done to Eleftherios and Emanuele!

Ian

On 11 November 2011 15:42, Eleftherios Garyfallidis

Eleftherios Garyfallidis

unread,
Nov 12, 2011, 3:16:57 AM11/12/11
to fos-...@googlegroups.com
No worries, I found it :-)

Eleftherios Garyfallidis

unread,
Nov 12, 2011, 5:02:23 AM11/12/11
to fos-...@googlegroups.com
Ha ha, sorry for the spam this was intended for Ian only. GGT!

Emanuele Olivetti

unread,
Nov 12, 2011, 12:45:55 PM11/12/11
to fos-...@googlegroups.com
Dear All,

Eleftherios came to visit our lab[0] over the last month and as part
of our collaboration we started to develop a tool for segmenting bundles
of interest within tractographies. Despite my negligible expertise in
3D graphics we managed to cook a minimalistc version of the tool which
was used and appreciated by our neuroanatomist. Hopefully more
neuroanatomists will start using it soon.

The logic of the interaction proposed by the application is presenting
summaries of the (too crowded) tractography and asking the user which
clusters to expand, in a recursive fashion. The tool leverages fast clustering
and Fos/pyglet which turned out to be very valuable ingredients.

The application is called "spaghetti" both for the visual analogy with the
tractography and for the spaghetti-code quality of the current implementation.
Nevertheless I am very proud of the current version which is indeed working
received positive feedback.

The future work in the short term is about refining the glitches and make this
minimalistic version more robust. The medium/long term plan is to design
a better GUI. At the moment the GUI reflects the emacs-like nature of one
of the developers ;-), so it is super simple but still efficient. If you are interested
in this tool and have ideas about a cool GUI, please do not hesitate to send
feedback / collaborate.

I will soon add some information to make spaghetti usable by others than
me and Eleftherios :-)

Best,

Emanuele

[0]: http://nilab.fbk.eu

Stephan Gerhard

unread,
Nov 14, 2011, 7:23:05 AM11/14/11
to fos-...@googlegroups.com
Hi Emanuele,

Welcome! And glad you could implement something useful with Fos.

I am looking forward to test the "spaghetti" app, a small datasets would help indeed.

I was also thinking about a slice viewer for fos-pyside, I saw you guys implemented something
using pyglet sprites - looking forward to test it.

Regarding the picking, I implemented in fos-pyside another very fast method using frame buffers
colors for object identity, as compared to ray-object intersections which is currently in Fos (and
which needs good spatial datastructures for large datasets, or nice clustering :)

Possibly for another thread  dicussion, we need to think how we want to handle keystroke-events.
One could envisage several models,e.g.
1) An actor contributes key-events to the window when added to the world (region).
2) We have specialized keyevents for particular applications that "assume" the existence of certain actors in the world
3) Key strokes are propagated
3a) to each actor, and the actor knows what to do with it. (downside: multiple actors do something on keystroke)
3b) We designate an "active" actor that only receives the keystrokes and changes its state.

In general, it would be nice to to override the semantics of particular keys too much.

Best,
Stephan

Eleftherios Garyfallidis

unread,
Nov 14, 2011, 7:17:52 PM11/14/11
to fos-...@googlegroups.com
Hi Stephan,

On Mon, Nov 14, 2011 at 12:23 PM, Stephan Gerhard <uni.des...@gmail.com> wrote:
Hi Emanuele,

Welcome! And glad you could implement something useful with Fos.

I am looking forward to test the "spaghetti" app, a small datasets would help indeed.

We will definitely put something small. We need to add a couple of extra things first. 

I was also thinking about a slice viewer for fos-pyside, I saw you guys implemented something
using pyglet sprites - looking forward to test it.

We did that basically because I already had some code for that and because we had a tight deadline. Some shading for the slicer would be super cool.

Regarding the picking, I implemented in fos-pyside another very fast method using frame buffers
colors for object identity, as compared to ray-object intersections which is currently in Fos (and
which needs good spatial datastructures for large datasets, or nice clustering :)

So if you have the same colours for different tracks will it still work? Is it possible to summarize the method?

Possibly for another thread  dicussion, we need to think how we want to handle keystroke-events.
One could envisage several models,e.g.
1) An actor contributes key-events to the window when added to the world (region).
2) We have specialized keyevents for particular applications that "assume" the existence of certain actors in the world
3) Key strokes are propagated
3a) to each actor, and the actor knows what to do with it. (downside: multiple actors do something on keystroke)
3b) We designate an "active" actor that only receives the keystrokes and changes its state.

Yes, we used 3a for spaghetti. It was fine for this application, but not sure in general.
 
In general, it would be nice to to override the semantics of particular keys too much.

On that note I finally found some time to have a look at OSG (Open Scene Graph) which seems it has implemented many super cool ideas.
I was also impressed that it is one of the very few engines (only 3) proposed by the official OpenGL website and that they have implemented it in a way that
would be fast to be used in python. I would suggest to have a look at it. There is a book available that it is well written. You can do shading programming with OSG 
and play with vertex arrays just fine.

I am thinking to put some time in order to make sure that it worths the effort and then wrap it using cython as the guys did for pyzmq. I have the feeling that it would
accelerate very much our development and that Fos will become super fast. But I will test it first and then report back to the list.

Towards Infinity and Beyond,
Eleftherios

p.s. Lets shake the universe!!! GGT!
Reply all
Reply to author
Forward
0 new messages