Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Nov 10 22:12
    SarenT opened #139
  • Nov 09 15:13

    ctrueden on master

    Bump to next development cycle … (compare)

  • Nov 09 15:13

    ctrueden on TrackMate_-5.0.1

    [maven-release-plugin] prepare … (compare)

  • Nov 08 20:00
    etarena commented #613
  • Nov 08 12:35

    tinevez on master

    Fix important TrackMate bug in … Add an error message in case so… Add the possibility to save a d… and 1 more (compare)

  • Nov 08 09:17
    imagejan review_requested #366
  • Nov 08 09:17
    imagejan ready_for_review #366
  • Nov 08 09:17
    imagejan edited #366
  • Nov 08 09:14
    imagejan synchronize #366
  • Nov 08 09:14

    imagejan on delegate-converters

    Add test for AbstractDelegateCo… (compare)

  • Nov 08 08:02
    imagejan edited #366
  • Nov 08 08:00
    imagejan opened #366
  • Nov 07 16:12

    imagejan on delegate-converters

    Add abstract delegate converter… WIP: add test (compare)

  • Nov 06 19:11
    etarena commented #613
  • Nov 06 19:04
    etarena commented #613
  • Nov 06 18:59

    ctrueden on coloc

    WtKendallTau: allow for stable … Add test of SACA Co-authored-b… Convert SACA algorithm to ImgLi… and 1 more (compare)

  • Nov 06 17:19

    etarena on coloc

    Add SACA placeholder to Colocal… Add Shulei's original SACA code WtKendallTau allow for stable r… and 2 more (compare)

  • Nov 06 16:02
    etarena commented #613
  • Nov 06 16:01
    etarena commented #613
  • Nov 06 15:55
    etarena edited #613
tpietzsch
@tpietzsch
With the VolatileViews.wrapAsVolatile this idea was a bit weakened, because now you effectively add a volatile source directly (with nothing non-volatile on top of it)
It would be probably good, to
(1) make a way to expose adding SourceAndConverter in the vistools BdvFunctions, and
(2) make some version of VolatileViews.wrapAsVolatile that constructs a volatile view, creates appropriate RGBA converters, and then wraps it with the original RandomAccessible into a non-volatile/volatile SourceAndConverter pair. The code for all of these steps is there, it just needs to be reorganized and exposed...
Curtis Rueden
@ctrueden
I sometimes come across posts/comments/discussions like this one: "what would python integration offer that isn’t already taken care of by cupy/Numba/pytorch/tensorflow etc".
Would it make sense to, together with experts in Python-based scientific image processing, and possibly also C++ and/or JS, do some kind of more deliberate comparison of pros/cons of the ecosystems? It always feels like all the specialists are talking past each other to me—or speaking from places of ignorance w.r.t. the other available tools. I wonder if e.g. a detailed blog post with summary would keep a whole slew of people from reinventing wheels... or at least reinvent them in better and more impactful directions.
NicoKiaru
@NicoKiaru

Thanks @tpietzsch ! It seems that the method BdvFunctions.show(Source src); has also two limitations: (3) - the source is not wrapped into a volatile one; (4) - We cannot specify the number of timepoints.

(5) Another feature which would be nice is also the capability to create a viewer without any Source.

Do you think working on these three extra points would make sense ?

NicoKiaru
@NicoKiaru
Ah, I see that BdvFunctions can handle 4D Source. However I'm not sure it integrates very well with SpimDatastructures and plugins like BigStitcher.
tpietzsch
@tpietzsch
@NicoKiaru yes, it would make sense to work on those
NicoKiaru
@NicoKiaru
Hi @tpietzsch , I wanted to give a shot at these modifications. I've forked the repo, but I found this issue when launching the ExampleSpimData:
Exception in thread "main" java.lang.NoSuchMethodError: net.imglib2.cache.queue.BlockingFetchQueues.<init>(I)V
    at bdv.img.hdf5.Hdf5ImageLoader.open(Hdf5ImageLoader.java:215)
    at bdv.img.hdf5.Hdf5ImageLoader.<init>(Hdf5ImageLoader.java:166)
    at bdv.img.hdf5.Hdf5ImageLoader.<init>(Hdf5ImageLoader.java:152)
    at bdv.img.hdf5.Hdf5ImageLoader.<init>(Hdf5ImageLoader.java:147)
    at bdv.img.hdf5.XmlIoHdf5ImageLoader.fromXml(XmlIoHdf5ImageLoader.java:71)
    at bdv.img.hdf5.XmlIoHdf5ImageLoader.fromXml(XmlIoHdf5ImageLoader.java:50)
    at mpicbg.spim.data.generic.sequence.XmlIoAbstractSequenceDescription.fromXml(XmlIoAbstractSequenceDescription.java:111)
    at mpicbg.spim.data.generic.XmlIoAbstractSpimData.fromXml(XmlIoAbstractSpimData.java:153)
    at bdv.spimdata.XmlIoSpimDataMinimal.load(XmlIoSpimDataMinimal.java:86)
    at bdv.util.ExampleSpimData.main(ExampleSpimData.java:15)
Is it a problem of Java version ? Do you have any idea how I could solve this ?
Simple examples work however
Philipp Hanslovsky
@hanslovsky
@NicoKiaru that looks like version skew, probably between imglib2-cache and bdv-vistools
What versions of those are you using?
NicoKiaru
@NicoKiaru
Just forked the current version of bigdataviewer-vistools
My forked repo is here actually : https://github.com/BIOP/bigdataviewer-vistools
Philipp Hanslovsky
@hanslovsky
Idk if pom-scijava sets the imglib2-cache version to the latest release. You should probably double-check and then set the imglib2-cache version in your pom, if necessary.
NicoKiaru
@NicoKiaru
Will try, thanks! Tha latest version on scijava maven is <version>1.0.0-beta-14-SNAPSHOT</version>. Hope that's recent enough
NicoKiaru
@NicoKiaru
Ok, like this it works:
        <dependency>
            <groupId>sc.fiji</groupId>
            <artifactId>bigdataviewer-core</artifactId>
            <version>7.0.1-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>net.imglib2</groupId>
            <artifactId>imglib2</artifactId>
            <!--<version>5.8.1-SNAPSHOT</version>-->
        </dependency>
        <dependency>
            <groupId>net.imglib2</groupId>
            <artifactId>imglib2-cache</artifactId>
            <version>1.0.0-beta-14-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>net.imglib2</groupId>
            <artifactId>imglib2-realtransform</artifactId>
            <version>2.2.2-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>net.imglib2</groupId>
            <artifactId>imglib2-ui</artifactId>
            <version>2.0.1-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.scijava</groupId>
            <artifactId>ui-behaviour</artifactId>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
Thanks @hanslovsky !
Philipp Hanslovsky
@hanslovsky
:plus1:
NicoKiaru
@NicoKiaru
So I don't know if that's the place to share that, but I've made some modifications on BdvFunctions:
  • [a helper class to download and cache datasets for testing] (BIOP/bigdataviewer-vistools@a4e414c)
  • [a way to wrap Source when required and possible according to the functionVolatileViews.wrapAsVolatile] (BIOP/bigdataviewer-vistools@17eeeaa). There are issues, notably regarding the way the cache is handled I guess. It's working for my use case, but I'd like to hear from you regarding what should be improved. Maybe the whole approach is wrong.
Christian "Tischi" Tischer
@tischi
@tpietzsch @NicoKiaru Very interesting that SourceAndConverter can also return a Volatile version of itself! Given that's the case it seems to me to be the object of choice to work with for multi-resolution image analysis and display in imglib2 land. @hanslovsky Do you see any advantages of using your DataSource instead? https://github.com/saalfeldlab/paintera/blob/master/src/main/java/org/janelia/saalfeldlab/paintera/data/DataSource.java
tpietzsch
@tpietzsch
It seems to me that DataSource is more a version of Source instead of a replacement for SourceAndConverter. That is, you still need a Converter to display it.
to work with for multi-resolution image analysis and display
for display, yes
for image analysis probably not, because you will not care about converting to ARGB, and also not about volatile access
for that the non-volatile Source is enough
Philipp Hanslovsky
@hanslovsky
Yes, @tpietzsch is right. DataSource still requires a converter (which is part of a SourceState (not the same as in BDV) in Paintera).
tpietzsch
@tpietzsch
but in general, yes, if you want something for both display AND analysis, then SourceAndConverter is the thing
@hanslovsky same idea in BDV. BDV's SourceState< T > extends SourceAndConverter< T >
Philipp Hanslovsky
@hanslovsky
:plus1:
Christian "Tischi" Tischer
@tischi

@tpietzsch @hanslovsky Thanks! Sounds great! I could look into

(1) make a way to expose adding SourceAndConverter in the vistools BdvFunctions

unless someone else wants to do it?

@hanslovsky @bogovicj @tpietzsch Some other topic: I need to serve a TB sized volume EM data set via http, streaming it into Bdv. Currently I am using BigDataServer with bdv.h5 files. This works well, however our IT-department wants to store the data as S3. Is there something useable in terms of n5/S3 for Bdv?
Philipp Hanslovsky
@hanslovsky
John Bogovic
@bogovicj
:+1:
Christian "Tischi" Tischer
@tischi
@hanslovsky @bogovicj Thanks! Do you also have examples that writes a pyramid to n5-s3 from an RandomAccessibleInterval and reads it back, e.g., into a Source (CachedCellImg backed). Or something like that?
John Bogovic
@bogovicj
I don't, but @igorpisarev might
(he's away this week, though, maybe poke again on this topic next week if you haven't already made something work)
Philipp Hanslovsky
@hanslovsky
Using n5-aws-s3 should not be any different than any other N5Reader or N5Writer. Maybe n5-spark, n5-utils, n5-imglib2, or the paintera conversion helper have some inspiration for you.
John Bogovic
@bogovicj
yea, but the "other" stuff you do will be more involved (all the aws cli stuff) https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html#cli-quick-configuration
Philipp Hanslovsky
@hanslovsky
:plus1:
tpietzsch
@tpietzsch
bdv will soon have export to N5, just needs to be merged
is it 1 TB or many?
because for many TB, you will probably want to do it on a cluster. And for that @igorpisarev stuff might be perfect
Otherwise, if it is 1TB it might still be possible from Fiji/BDV locally
Christian "Tischi" Tischer
@tischi
Awesome that you have done the work for the Bdv! It is 8 TB if you naively load it into RAM, but since there are many black pixels, lossless compressed it is 2.5 TB. @tpietzsch would your code also support export to and reading from n5-aws-s3 or only to the standard file based n5?
Christian "Tischi" Tischer
@tischi
@bogovicj I guess I wait until Igor is back in case he already has some practical experience with aws-s3. And thanks for the pointers regarding the aws user guide. We would have the data stored locally, so I have to look at this with our IT guys.
NicoKiaru
@NicoKiaru
I have a hard time understanding the link between the SharedQueue beeing passed when using VolatileViews.wrapAsVolatile(final RandomAccessibleInterval< T > rai, final SharedQueue queue, final CacheHints hints ) and the CacheControl that I see a bit everywhere when Volatile type are involved. My main issue is to make a class that makes a VolatileSource from a non-volatile source (see here), but I don't know how to deal properly with the cache.
Christian "Tischi" Tischer
@tischi
Not sure that helps, but for me, when the RandomAccessibleInterval rai is backed by a CachedCellImg it was working fine automagically just using VolatileViews.wrapAsVolatile( rai ) without specifying any of the Queues and CacheHints..