We are happy to announce the first stable release version of the ImgLib2 core library!
This release was a central goal of the recent hackathon at LOCI in Madison, during the week of October 13 - 17.
The ImgLib2 core library is now available on Maven Central, and the source code for all ImgLib2 projects is accessible on GitHub.
Like the SciJava and ImageJ2 projects, ImgLib2 releases now follow the semantic versioning scheme. Also, the project and git repository structure has changed. The main imglib repository has been split into multiple repositories, named consistently with the artifact names and java package prefixes. Projects are now coupled using non-SNAPSHOT versions, in order to achieve reproducible builds.
For further technical details on project structure, see the Architecture page.
Before coming out of beta, we have made several last-minute changes to the code:
- All
@Deprecated
methods and classes have been removed. - All metadata handling (formerly
imglib2-meta
subproject) is being moved into imagej-common. From ImgLib2 core, the classesAnnotatedSpace
,AbstractAnnotatedSpace
, andAxis
were moved to imagej-common. - The current ROI representation was not considered stable enough to be included in a release. The
net.imglib2.roi
andnet.imglib2.labeling
packages were moved to the new imglib2-roi subproject which will remain in beta for now. - The
net.imglib2.multithreading
package was moved to imglib2-algorithm and deprecated. - We merged work by Albert Cardona and Stephan Preibisch on “fractional” types. ImgLib2
NativeType
s map pixels into primitive arrays, where often the mapping is one-to-one. For example, anUnsignedByteType
pixel maps into one byte of a primitivebyte[]
array. With fractional types this mapping maybe non-integral, for exampleUnsigned12BitType
maps pixels into along[]
array, where each pixel occupies 12/64 longs. - Superfluous generic parameters were removed from
Projector<A,B>
interface which is now onlyProjector
. Projector implementations were fixed accordingly. - Several classes were renamed or moved to more suitable places:
Extended[Real]RandomAccessibleInterval
moved to thenet.imglib2.view
package.RandomAccessibleOnRealRandomAccessible
moved to thenet.imglib2.view
package.Binning
moved to thenet.imglib2.util
package.- The contents of package
net.imglib2.collection
(KDTree
etc.) moved to thenet.imglib2
package. net.imglib2.concatenate.Util
was renamed tonet.imglib2.concatenate.ConcatenateUtils
.Bounded
moved to thenet.imglib2.outofbounds
package.- The class
NearestNeighborInterpolator
from packagenet.imglib2.interpolation.neighborsearch
was renamed toNearestNeighborSearchInterpolator
(to avoid confusion with thenet.imglib2.interpolation.randomaccess.NearestNeighborInterpolator
class). - The
Pair
interface moved to thenet.imglib2.util
package.
- The
net.imglib2.util.Util
class was cleaned up:- Methods
getTypeFromRandomAccess()
andgetTypeFromRealRandomAccess()
were removed. We considered them too dangerous because theRandomAccess
may be pointing to invalid position. - Unused methods
setCoordinateRecursive()
andgetRecursiveCoordinates()
were removed. - Some variants of
computeLength()
andcomputeDistance()
were removed. Use methodsdistance()
andlength()
fromnet.imglib2.util.LinAlgHelpers
instead. - Methods
computeMedian()
,computeAverage()
, etc. were renamed tomedian()
,average()
, etc.
- Methods
- These unused classes were removed:
IterableIntervalSubsetT
Triple
RealPositionableFloorPositionable
RealPositionableRoundPositionable
ImgTranslationAdapter
- Packages
net.imglib2.img.constant
andnet.imglib2.sampler.special
were removed (ConstantImg
,ConstantRandomAccessible
, etc). Similar functionality can now be achieved through thenet.imglib2.util.ConstantUtils
class andViews
.
All ImgLib2 subprojects have been adapted to these changes and released (in some cases as new beta versions).
One thing still pending is to upload these new ImgLib2 releases to the ImageJ and Fiji update sites, making them available to users of ImageJ and Fiji. This change has been rather involved, since there is a lot of downstream code affected by the API changes. But we expect to make the new ImgLib2 available to users before the end of the calendar year. Stay tuned for further announcements!