tinevez on branch-graph-v2
Fix javadoc errors. (compare)
tinevez on branch-graph-v2
Remove faulty JUnit test. It w… (compare)
tinevez on branch-graph-v2
Don't send navigation events to… (compare)
tinevez on branch-graph-v2-feature-colors
tinevez on branch-graph-v2
Have a set of basic feature per… (compare)
tinevez on branch-graph-v2
Regen the branch-graph before f… (compare)
tinevez on branch-graph-v2
Don't try to force the size of … Fix a bug in branch trackscheme… Merge branch 'branch-graph-v2' … (compare)
SharedQueue
is a CacheControl
SharedQueue
(hence the name)
SharedQueue(1)
for each source. I assume it's probably more efficient to create a single SharedQueue(x)
, indeed shared for all sources ? What value of x would be appropriate ? Should x be equal to the number of cpu cores ? Also, would it diminish the risk of getting a Java Heap Space issue ?
SharedQueue
would be better, however, 200 sources could become inefficient? If that is the case, I would implement an intermediate cached source that combines the 200 sources (you can do this with a simple Converter
over a Composite
). But that means that you would lose the sliders and stuff...
Regions.iterable(RAI<B>)
to retrieve those?
RandomAccessibleInterval<BooleanType>
, IterableRegion<BooleanType>
, PositionableIterableRegion<BooleanType>
into this sequence such that the Regions
methods that "add capabilities" (being iterable, positionable) can have appropriate result types."
Regions
methods exposing it. But I don't see them.
LocalizableIterableRegion
. Not Positionable
. Right? I think the latter is more complex.
IterableRegion
does have a localizingCursor
method.
IterableRegion
(similar to RAI and II) does not have a position. But it can give you accessors that do.
IterableRegion<T extends BooleanType<T>> extends IterableInterval<Void>
. So... the cursor()
method returns Cursor<Void>
. So that you can iterate the positions, but you can't access sample values because there is nothing to access (the backing region is just true
at those spots, always).
RealMaskRealInterval myMask = ...;
RandomAccessible<T> myImage = ...;
IterableInterval<T> myMaskedImage = Regions.sample(myMask, myImage);
Cursor<T> c = myMaskedImage.localizingCursor();
long[] pos = new long[c.numDimensions()];
while (c.hasNext()) {
T value = c.next();
c.localize(pos);
// and now we do something with the position and sample value
}
myMask
has to be a RealMaskRealInterval
, not a RealMask
. This is unfortunate. We could add a Regions.sample(RealMask, RandomAccessibleInterval)
that creates a RealMaskRealInterval
matching the bounds of the given RAI. I think?myMaskedImage
cannot be used with LoopBuilder
because LoopBuilder
only supports RAI images, not II images. So we have to use this clunkier cursor code, rather than a nice lambda. ¯\_(ツ)_/¯
RealMask
(not necessarily a RealMaskRealInterval
) and a RAI and you want to combine them.
RandomAccessible
and IntervalView
, see imagej-roi-course
@NicoKiaru I have the following workflow:
Source
) and view it in BDV.AffineTransform
using the manual transform UI of BDV*.xml
file that looks exactly as the original one that I opened, but I want a new <affine>...</affine>
content, reflecting the additional transform that I manually added in BDV.Do you know how to do this most efficiently? Do I have to construct a new SpimData
object from the TransformedSource
and then use XmlIoSpimData.save()
? If so, would you have code already to construct SpimData
from a single Source
and the path to the corresponding .h5 file? Or are there other ways to save such an .xml
file?
spimData.getViewRegistrations().getViewRegistration(timePoint,iViewSetup).preconcatenateTransform(myAffineTransform);
or spimData.getViewRegistrations().getViewRegistration(timePoint,iViewSetup).concatenateTransform(myAffineTransform);
, with myAffineTransform
being the transform retrieved from the TransformedSource
. Then you can resave the dataset. FYI, I also found a trick to update the spimData
when it's shown in the bdv (thanks to reflection to access a private method see https://github.com/BIOP/bigdataviewer_scijava/blob/master/src/main/java/ch/epfl/biop/bdv/scijava/command/spimdata/UpdateSpimDataDisplay.java)