Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • 13:46
    Sagnik700 edited #240
  • 13:45
    Sagnik700 opened #240
  • Dec 06 14:50
    gselzer synchronize #107
  • Dec 06 14:50

    gselzer on rebuild-X-to-datasetView-converters

    DatasetView.rebuild() in X->Dat… (compare)

  • Dec 06 13:17
    stefanhahmann synchronize #210
  • Dec 06 11:21
    stefanhahmann edited #220
  • Dec 06 11:20
    stefanhahmann opened #220
  • Dec 06 10:58
    stefanhahmann edited #219
  • Dec 06 10:54
    stefanhahmann opened #219
  • Dec 06 10:25
    stefanhahmann commented #218
  • Dec 06 10:01
    stefanhahmann edited #218
  • Dec 06 10:01
    stefanhahmann opened #218
  • Dec 06 09:41
    stefanhahmann edited #209
  • Dec 06 09:40
    stefanhahmann edited #215
  • Dec 06 09:35
    stefanhahmann edited #209
  • Dec 05 22:34
    gselzer review_requested #107
  • Dec 05 22:34
    gselzer labeled #107
  • Dec 05 22:34
    gselzer assigned #107
  • Dec 05 22:34
    gselzer opened #107
  • Dec 05 22:33

    gselzer on rebuild-X-to-datasetView-converters

    DatasetView.rebuild() in X->Dat… (compare)

John Bogovic
@bogovicj
👍
Jean-Yves Tinevez
@tinevez
👌
Nicolas Chiaruttini
@NicoKiaru
Quick question : what's the current status of bdv-cache and Java with versions > 8 ? (cf thread : https://forum.image.sc/t/conversation-with-the-openjdk-developers-about-javafx-and-unsafe/21901/12)
@tpietzsch
Philipp Hanslovsky
@hanslovsky
@NicoKiaru imglib2-cache has been updated for Java > 8 (imglib/imglib2-cache#11). Is that what you mean by bdv-cache?
Curtis Rueden
@ctrueden
@NicoKiaru Did you try it? Were there problems?
Nicolas Chiaruttini
@NicoKiaru
@ctrueden @hanslovsky Thank you ! And there's no problem, no worry ;-) I just wanted to know because in my mind this was still the blocking point to change the java version in FIJI
Jan Eglinger
@imagejan
@NicoKiaru thanks for this nice video on Bigdataviewer-Scijava!
I noticed your utils for displaying AffineTransforms, did you also create some IO plugins (i.e. saving a row-packed copy of the matrix to a file)?
I'd love to see utilities like AffineTransformDisplay in a small separate repository, independent of BDV. Maybe we can make imglib2-realtransform-utils? Or imagej-realtransform for both UI and IO of RealTransform/AffineTransforms?
Nicolas Chiaruttini
@NicoKiaru
Thanks @imagejan ! And thanks for your post in the repository. Indeed there are some mixed things in this repository because I did not want to complexify too much the testing. I wrote two things to handle transforms : a display in order to reuse pre-existing transformations (ui built with EasySwingDisplayViewer, see forum thread). And I wrote a converter from String to AffineTransform3D -> the toString() method of AffineTransform3D can be easily reconverted into an AffineTransform3D object.
Nicolas Chiaruttini
@NicoKiaru

I'd love to see utilities like AffineTransformDisplay in a small separate repository, independent of BDV. Maybe we can make imglib2-realtransform-utils? Or imagej-realtransform for both UI and IO of RealTransform/AffineTransforms?

Completely agree. So far there are two issues in the way I deal with the display and reuse of "custom"Java objects: 1 - if they do not override toString in a nice way, their names are ugly (already discussed, but it's not a big priority). 2 - It does not always make sense to have one window per object (for instance for AffineTransforms) -> It would be better to have a window which holds a list of all the objects of a certain class. That's more of a scijava-common discussion.

I noticed your utils for displaying AffineTransforms, did you also create some IO plugins (i.e. saving a row-packed copy of the matrix to a file)?
Nicolas Chiaruttini
@NicoKiaru
Forgot your question, but the answer is no
Christian Tischer
@tischi
@bogovicj Is there a way to add the bigWarp version with my changes via maven?
John Bogovic
@bogovicj
@tischi add to fiji?
Nicolas Chiaruttini
@NicoKiaru
Is there some documentation or some example of sciava.ui.behaviour 'chaining' ? I've seen this word somewhere in the documentation but I do not really understand what's its purpose and how it's supposed to be done. I've understood the concept of inputmap/actionmap but I do not grasp the difference with ui scijava behaviour(s). Also, are triggered actions of behaviour registered by scijava eventService by any chance ? @tpietzsch @tischi @haesleinhuepf
Curtis Rueden
@ctrueden
@NicoKiaru Unfortunately, scijava-behaviour and the scijava-common stack (EventService and org.scijava.input package) are completely separate. :cry:
Tobias Pietzsch
@tpietzsch
@ctrueden let’s talk about this during hackathon?
@NicoKiaru I’m on my phone. I’ll explain chaining later...
Nicolas Chiaruttini
@NicoKiaru
Absolutely no rush. Thank you @tpietzsch and @ctrueden
Curtis Rueden
@ctrueden
@tpietzsch Sounds good. @NicoKiaru Bridging them is probably quite doable with a scijava component depending on both and firing the right events in response to behaviour events. I'd be interested to know how this would be useful for you.
Nicolas Chiaruttini
@NicoKiaru
@ctrueden We are discussing to do some tools for bigdataviewers with @tischi and @haesleinhuepf . I have something which works and which relies heavily on scijava commands and parameters bigdataviewer_scijava. @tischi and @haesleinhuepf are going more with scijava-behaviour, and for now it's more of an exploratory work. Since we want to join forces, I wanted to keep my scijava layer compatible with ui.behaviour; potentially by catching triggered behaviour. One idea could be to add an additional scijava actionmap which catch/and or duplicate triggered behaviours/events to the scijava EventService ?
Curtis Rueden
@ctrueden
Yeah, exactly, an adapter layer. I'll speak with @tpietzsch about it later.
Christian Tischer
@tischi

@NicoKiaru @haesleinhuepf @ctrueden @tpietzsch

Here is a link to a example of one of the "bdv actions" (we are still looking for name...) that we would like to have: https://github.com/haesleinhuepf/bigdataviewer-playground/blob/d9262dcf0155ddc2d61ebd14f0de18c813ef65c6/src/main/java/sc/fiji/bdv/sources/read/SourceLoaderAndAdder.java#L11

Our current logic is that each action is a simple Runnable that they can be added to the bdv user interface, e.g. like this: https://github.com/haesleinhuepf/bigdataviewer-playground/blob/d9262dcf0155ddc2d61ebd14f0de18c813ef65c6/src/main/java/sc/fiji/bdv/sources/read/SourceLoaderAndAdder.java#L48

To me, an additional/alternative idea could be to wrap each such action into a Command. Maybe this is what Nico is doing/thinking? A potential advantage could be that the UI would be generated by the Context and one could get rid of the explicit call to Swing: https://github.com/haesleinhuepf/bigdataviewer-playground/blob/master/src/main/java/sc/fiji/bdv/sources/read/SourceLoaderAndAdder.java#L33

Tobias Pietzsch
@tpietzsch
@ctrueden @NicoKiaru I see two "adapter layers":
1) a MouseAndKeyHandler that takes low-level events of the scijava event bus (instead of being a AWT, JavaFX, etc) listener
and translates them into Actions/Behaviours
2) publishing Actions/Behaviours to the scijava event bus
(instead of directly acting on them)
Tobias Pietzsch
@tpietzsch
I'm not sure what the additional indirection of (2) adds, but we should definitely discuss this @ctrueden. Maybe @NicoKiaru could skype in?
Tobias Pietzsch
@tpietzsch
@NicoKiaru about the 'chaining'
This is very related to the inputmap/actionmap chaining in Swing
In Swing, a JComponent has an InputMap. Each InputMap can have a parent, and if a mapping for a given key is not found in the InputMap, it asks the parent.
Now, for BDV, I thought that this concept is nice for adding InputMap/ActionMap pairs with related actions to the viewer. For example one map with navigation shortcuts, then one map for bookmarking, and then each user extension could also create its own InputMap/ActionMap pair and just chain it to the existing maps.
Tobias Pietzsch
@tpietzsch
The slight complication with this is, that if you have a situation like this:
component --> map2 --> map1
and you want to add another one, it should look like this:
component --> map3 --> map2 --> map1
so you need to insert it between component and map2
The way this is resolved in ui-behaviours InputActionBindings is that there is a theInputMap/theActionMap pair that acts as an empty leaf map with exchangeable parents
So from the component side it always looks like
component --> theMap
and then internally the InputActionBindings maintains a list [map1, map2, ...] which is then assembled into a new chain whenever something changes. So
theMap --> map2 --> map1 becomes
theMap --> map3 --> map2 --> map1 when map3 is added.
Tobias Pietzsch
@tpietzsch
and the behaviours framework doesn't have to care about the Swing particulars (e.g. actually each Jcomponent has 3 different inputmaps for different situation, etc)
Having this already, InputActionBindings adds a few convenience features on top
For every map pair that you append to InputActionBindings you specify a unique name that then can be used to remove the map pair again
E.g., if map2 would have the name "bookmarking", then InputActionBindings.removeInputMap("bookmarking") would reassemble
theMap --> map3 --> map2 --> map1 to
theMap --> map3 --> map1
Finally, given that all maps have unique names, when you add a map you can specify a set of other maps to block.