Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
    Kevin Mader
    @kmader
    so was working on a few other things today and a few students complained about mixing jupyter and imagej. So we made a binder-friendly scijava kernel, so you can start ImageJ notebooks online with a single click, but mayb someone already did this https://mybinder.org/v2/gh/4QuantOSS/scijava-jupyter-kernel/master?filepath=notebooks%2FImageJ.ipynb
    @ctrueden you can do all of your presentations in ImageJ directly using Jupyter, reveal.js, RISE, scijava-jupyter-kernel (http://mybinder.org/v2/gh/kmader/quantitative-big-imaging-2018/master?filepath=Lectures/01-Introduction.ipynb)
    Kyle I S Harrington
    @kephale
    @kmader indeed you'll find that @ctrueden setup binder (https://mybinder.org/v2/gh/imagej/tutorials/master) and somewhere had some RISE stuff floating around
    Kevin Mader
    @kmader
    ah cool! you have to add the binder-ready tag to the repo so people find it
    Kyle I S Harrington
    @kephale
    i'm still curious about a version of the scijava-jupyter-kernel that uses a minimal set of dependencies, there is( or maybe was at this point? ) an issue with clashing dependencies when you start importing things like imagej-ops that are directly linked into the kernel which makes it more or less not possible to run any of my code in them at the moment
    Kevin Mader
    @kmader
    that makes things trickier, I am really curious to see how well the imglib2-numpy bridge works, there could definitely be some interesting things to come out of that
    Hadrien Mary
    @hadim
    @ctrueden I just realized the SJJK version on Anaconda is 0.5.1 instead of 0.6.0.
    Do you want me to update it?
    Hadrien Mary
    @hadim
    @ctrueden let me know conda-forge/scijava-jupyter-kernel-feedstock#14 I can push the green button whenever you want. Also I could add it to the feedstock repo so you can release new versions yourself next time.
    Curtis Rueden
    @ctrueden
    Minimal SJJK with scijava grab still not available. Still planned. But right now we are focusing on calling ij from Python via pyjnius. See https://github.com/CellProfiler/notebooks
    Curtis Rueden
    @ctrueden
    @kephale I was able to wrap an entire net.imagej.ImageJ gateway as a python object. See the imagej pyjnius demo of the above repo.
    I guess that doesn't give you clojure though :-(
    If we make the system classpath customizable somehow it could alleviate some of the grab difficulties for now.
    Kyle I S Harrington
    @kephale
    yeah, i saw the ij<->python action which is cool and certainly deserves to be a higher priority anyway.
    yes, if i can get 1 or 2 jars on the classpath then my problems pretty much go away
    i had another hacked solution that worked without using grab
    via the pomegranate library that we use for dependency fetching in clojure land
    it isn't pressing right now, as it will be a big leap to switch to RISE-based presentations/demos
    (for me)
    Curtis Rueden
    @ctrueden
    @kmader If something is missing from github.com/imagej/tutorials to make it more binder friendly, a PR would be appreciated!
    Hadrien Mary
    @hadim
    @ctrueden any thoughts about the SJJK conda release?
    Curtis Rueden
    @ctrueden
    Not at a computer today so cannot check the status. Do you think it is ready to go? I cannot remember. If you think ready then go for it.
    Kevin Mader
    @kmader
    @ctrueden no, you can move environment.yml into a binder subfolder (some people prefer this so it's less confusing or likely to get picked up by another tool) but the main thing would be tagging it on github as binder-ready so people can see it as an easy to launch script
    getting http://www.imagejfx.net/ as a one-click launch / binder project seems like it would be pretty useful as well
    Hadrien Mary
    @hadim
    @ctrueden I am not really using SJJK those days so I'll wait for you to be able to have a look. All the builds are green on the conda side.
    Curtis Rueden
    @ctrueden
    @kmader I don't think anyone is working on imagejfx anymore, nor is there any plan to continue it to my knowledge. @cmongis would be able to say for sure though.
    Kevin Mader
    @kmader
    @ctrueden ah shame, it always looked very cool, are there any working projects for ImageJ web-frontends? the binder appmode lets you have interactive notebooks with javascript widgets. It would be a cool way for packaging specific analyses or macros as web-based tools (in this example we took nvidia's latest style transfer and turned it into a little app, https://mybinder.org/v2/gh/4QuantOSS/FastPhotoStyle/master?urlpath=%2Fapps%2Fnotebooks%2Fdemo_app.ipynb)
    Jan Eglinger
    @imagejan

    :point_up: 23. Februar 2018 20:23

    the main thing would be tagging it on github as binder-ready

    @kmader what do you mean by "tagging it as binder-ready"? The "launch binder" badge was added in December with imagej/tutorials@6ea704a

    Is there something else missing?

    Kevin Mader
    @kmader
    Jan Eglinger
    @imagejan
    @kmader @ctrueden alright, I added the binder-ready as a topic to https://github.com/imagej/tutorials
    Thanks for the pointer!
    Jan Eglinger
    @imagejan
    @hadim if it's just for testing, I would be willing to have a look at the SJJK release. How can I test it before it's released via conda? On the other hand, if you think it's alright, then merge it. Then I'll test it with the tutorials notebooks on binder.
    Hadrien Mary
    @hadim
    If you want to test it you can just clone conda-forge/scijava-jupyter-kernel-feedstock#14 and then build the repo with conda build: https://conda.io/docs/user-guide/tutorials/build-pkgs.html#building-and-installing
    Alison Walter
    @awalter17

    @kkangle I’m not 100% certain if this is where the NPE you asked me about earlier came from but its a possibility.

    So ij.display().createDisplay(...) calls a DisplayService, possibly DefaultDisplayService. Which finds a matching Display and calls display(...). If the matched Display is the DefaultImageDisplay then it calls this method. And then again assuming it matches the default you get this method, which if you trace you wind up here. It creates an ImgView with a null factory, such that later in your notebook when you try to create a copy via the factory you get an NPE.

    I'm making a lot of assumptions here ... so this may not be correct, but it seems promising?

    To get around this in the meantime you could try using imagej-ops to convert your RandomAccessibleInterval to an Img in the notebook? (provided you can call Ops from your notebook, and there is a converter for RAI to Img - you may need to create an Img from the RAI and then copy the data over ... I can't remember). But then you call ij.display().createDisplay(...) on this newly created Img, which has hopefully been made with a non-null factory.

    Hopefully that kind of made sense, feel free to let me know if you have any questions.

    Yang Liu
    @kkangle
    Thank you @awalter17. I have a feeling this is the problem. I’ll try to fix it, and let you know if it works, fingers crossed.😊
    Curtis Rueden
    @ctrueden
    @awalter17 Whoa, the DefaultDatasetService creates ImgView with null factory? Yuck! Gotta fix that.
    Thanks @imagejan and @hadim for testing SJJK.
    @kmader About frontends: my current thinking is that some day, there will be a JavaScript-based frontend using Electron, which ships a JVM and a Python interpreter (and whatever else the cool kids like at that point), and discovers all available functionality conforming to whatever frameworks. E.g. asks SciJava for its modules, asks Python for its modules assuming some Python-based discovery mechanism is developed by somebody, etc.
    We can do shared memory between Java and Python now, as well as between JS and Python. Presumably between JS and Java is doable. So part of this thing would be that images can be wrapped/adapted between silos.
    Curtis Rueden
    @ctrueden
    I'm going to a short hackathon in early May where we are going to start exploring JavaScript viewers that could eventually grow into something like that.
    Modular viewer components, just to start. Usable on the web, or as part of an application. And then we can build a framework around it that integrates as described above. It's a long road.
    I don't think JavaFX is the way to go, because it is still Java-centric. JavaScript UI is superior to JavaFX, wouldn't you say? Because people just keep building more and more awesome things in HTML5 + CSS + JS?
    Hadrien Mary
    @hadim
    I agree with you. Some kind of electron app that shio everything is probably the future for IJ UI.
    In that spirit I started to play with React to create a very basic tif viewer: https://github.com/hadim/tifviewer
    Curtis Rueden
    @ctrueden
    @kmader Thanks for sharing that introduction lecture. No SciJava in that one, right? At least, I didn't see any when paging through it. It's Python 3 so you'd have to use the imglyb stuff a la this notebook. This stuff is still pretty bleeding edge, unfortunately.
    As I said above, you can wrap all of ImageJ in Python now (see here) but various errors happen when digging down into various parts of ImageJ2/SciJava. We are investigating how to smooth out various rough edges.
    Anyway, that is a big honkin' introduction to the current status of biological image analysis!
    Must have been a lot of work to create.
    Curtis Rueden
    @ctrueden
    And I got sucked into reading that "Trouble at the lab" Economist article for at least 30 minutes. :-)
    Kevin Mader
    @kmader
    @ctrueden oh great it was more to just show the live coding + presentation ability, unfortunately no scijava, but we'll definitely add some in. definitely let me know what comes out of the hackathon. the js stuff does seem to be dominating the UI world and trying to keep up with react, vue, meteor, angular is a small headache, but can deliver really cool results. as my last bit of list spam, with webassembly and vue we could package some radiology ML code into entirely browser-based analysis (bit.ly/deepradnet), apparently transpiling java to webassembly doesn't work so well yet though