updated TiffWriter so that planes will no longer be split when using non-standard
SamplesPerPixel e.g. images with 2 or 4 samples per pixel. This will ensure the TiffData
elements represent the structure specified by the user. If users wish to split planes the
ChannelSeparator and bfconvert provide the means to do this explicitly

updated TiffWriter to use the correct logic for index checking when writing tiled images

fixed a ClassCastException when the NEW_SUBFILE_TYPE tag has a non-standard type
or count such that the value is not inlined

updated to also check the last IFD for an ImageJ comment in the scenario that the image has
been processed by other software

NRRD (Nearly Raw Raster Data)

added support for spacedirections and spaceunits fields added in version 4

Evotec/PerkinElmer Opera Flex

updated to read rather than calculate image offsets when a single tile is used

Bug fixes and improvements:

limited the number of exceptions in the Bio-Formats plugins exporter when an unsupported pixel
type is found

fake test images now allow for per-plane ExposureTime{X,Y,Z} and Position{X,Y,Z} keys in the INI file
(for further details see the documentation for Generating test images)

file patterns now have expanded support for multi-channel pyramids, allowing for the matching of
at least two channels rather than three, and the stitching of files containing a pyramid has also been fixed

prevented a potential infinite loop when a scene with a pyramid is missing

cellSens VSI

a new option has been added to throw an exception rather than logging a
warning if .ets file is missing. The option, cellsens.fail_on_missing_ets,
can be used via the MetadataOptions API, as a parameter in the command
line tools or via the Bio-Formats configuration dialog in ImageJ

MetaMorph Stack (STK)

fixed an error with HCS style datasets always returning the first plane
regardless of the requested index

updated to use stage labels starting with Scan to detect when a whole plate
is saved in a single .stk file

fixed a bug for ArrayIndexOutOfBoundsException when an image contains
a single Z plane

Gatan Digital Micrograph

added support for Z stacks and ROIs

fixed several bugs in tag parsing

PerkinElmer Operetta

ensure TIFF files exist before reading

JPEG

support added for images with more than Integer.MAX_VALUE pixels

Bug fixes and improvements:

JPEGTileDecoder

class now implements AutoCloseable to prevent resource leaks

Bio-Formats Plugin

improved performance when using options to concatenate multiple series together

TiffSaver

made performance improvements to prevent the writing of a new IFD for each tile,
resulting in significant file size reductions for images with a large quantity of tiles

a new options page has been added, detailing the usage of configurable format-specific
options for readers and writers. Links to the available options are also included under
the relevant supported formats

added support for DICOMDIR files, which allow multiple DICOM files in a
single directory to be opened as a single dataset

plane position values for values X, Y and Z are now being set in OME-XML

correctly read the physical size X and Y values based on the available
specification

Nikon NIS-Elements ND2

performance improvements based on reading chunkmap. Processing of the
chunkmap can be disabled via the MetadataOptions API using the boolean
option nativend2.chunkmap. For ImageJ users this option can be
accessed via a checkbox in the Nikon ND2 section of the Bio-Formats
configuration dialog
Plugins ‣ Bio-Formats ‣ Bio-Formats Plugins Configuration (thanks to Christian Sachs)

OME-TIFF

added an option to save an OME-TIFF dataset as a binary TIFF and
companion XML. This can be used via the bfconvert command line tool by
setting the value of option ometiff.companion to the name of the
companion file to use. For example bfconvert-optionometiff.companionoutputFile.companion.omeinputFile.tiffoutputFile.ome.tiff

CellVoyager

metadata fixes specifically the naming of plates. Additional refactoring
of the reader for general maintainability

Gatan Digital Micrograph

previously missing Image-Instrument reference has been added to OME-XML

TiffSaver

ensure open resources are closed under all possible scenarios

Zeiss CZI

improved performance of large uncompressed images. When tiles from a
large uncompressed image with no internal tiling are requested, only the
specific tile specified in the call to openBytes is read from disk,
instead of the entire image being read and then copied

Zeiss AxioVision ZVI (Zeiss Vision Image)

ensure that the bitsPerPixel field is always set to match the final
pixel type, and populate any channel colors that were parsed in the
metadata. The bits per pixel update should only affect uint16 or
int16 files where the acquisition bit depth is not a multiple of 8,
and the RGB channel count is greater than 1

Updated build system:

updated dependency for NetCDF to 4.3.22

updated copyright headers from 2016 to 2017 and reviewed and fixed any incorrect
header descriptions

documentation has been migrated to use .rst file format for Sphinx files

fix for a NullPointerException when exporting images that were not opened via
the Bio-Formats importer, and thus do not have a complete OMEXMLMetadata store

Java 1.9

fix compile and runtime errors to enable building with Java 1.9

ECAT7

update to add support for different versions of ECAT7 files (thanks to Torsten Stöter)

Updated build system:

updated dependency for ome-model in the POM to
version 5.4.0. This allows for improved ROI handling by enabling support for Shape
objects with Transform attributes. OME-XML schema version remains unchanged as
OME schema 2016-06

Documentation improvements:

new public sample files added for ECAT7 (thanks to Torsten Stöter)

new public sample files added for Leica LIF (thanks to Michael Goelzer)

fix for issue when exporting from an ImagePlus that represents signed
data. The pixel type will now remain unchanged as will the pixel values
which had previously been scaled incorrectly

Command line tools

fix for java.lang.IllegalArgumentException when using bfconvert via command line
with option set to only convert a single time-point, channel or Z section

Tiff writing

using TiffWriter to write tiled images now supports the writing of
BigTIFF datasets

File format fixes:

Applied Precision CellWorX

fix to now display the correct plate name and dimensions

NIFTI

a few fixes for problems with byte alignment when reading non-core
metadata from NIFTI headers

Leica LIF

added support for timestamps of LIF files created with LAS AF 3.1 or
newer. In the case of a halted acquisition only non-null timestamps are
stored in the OME metadata (thanks to Michael Goelzer)

the physical pixel height and width were incorrectly calculated by
dividing by the number of pixels. This has now been corrected to match
the official Leica LIF specification documents by dividing by the number
of pixels minus one (thanks to Michael Goelzer)

for backwards compatibility an option to preserve pre-5.3.3 physical sizes
has been added. This can be set either via command line tools, through
the API with the loci.formats.in.DynamicMetadataOptions class, or in the Bio-Formats
plugin configuration in ImageJ

Improvision TIFF

channel colors are now being read and if present set correctly in image metadata

MetaMorph

fix for java.lang.OutOfMemoryError exceptions when reading large Metamorph TIFF plates

Updated build system:

version history file added to MATLAB bundle as NEWS.rst

increased TiffWriter test coverage

added test coverage framework for command line tools including new ImageConverterTest

Documentation improvements:

improved documentation and new examples for using tiled writing

updated developer documentation for use of Bio-Formats as a Maven, Gradle
or Ivy dependency

documentation for Leica LIF bug fixes and use of backward compatibility options

fixed invalid IFD values when writing TIFF or OME-TIFF files with
Bio-Formats 5.3.0. This bug affected the writing of TIFF and OME-TIFF
via client code using loci.formats.TiffWriter, converting to a TIFF
or OME-TIFF using ‘bfconvert’ command line tool or exporting to TIFF or
OME-TIFF using ImageJ/FIJI Bio-Formats exporter.

updated the display command line utility to support passing key/value
options using showinf-option

added two options to the CZI reader to disable autostitching and exclude
pyramid file attachments. Added new checkboxes to the CZI configuration
interface of the ImageJ plugin to activate these options

Bug fixes/deprecations:

deprecated loci.formats.meta.MetadataConverter in favor of
ome.xml.meta.MetadataConverter

removed ome-poi component - now decoupled to the new
ome/ome-poi GitHub repository
and consumed as ‘org.openmicroscopy:ome-poi’ artifact from Maven Central

removed specification, xsd-fu and ome-xml components - now decoupled to the
new ome/ome-model GitHub repository
and consumed as ‘org.openmicroscopy:{specification,ome-xml}’
artifacts from Maven Central

cleaned up test-build to remove obsolete and decoupled components
and folders

simplified Travis build

POM repositories clean-up to reduce complexity and use Maven Central as the
first location to look for dependencies

now storing all versions in the top-level POM

updated build versioning from Maven by unified versioning strategy,
reviewing meta information stored in the manifests of each JAR and
introspecting this information in the FormatTools API to retrieve
version and revision numbers

improved slide support - slides are now detected as a complete
full-resolution image (instead of each tile being a separate series)
and pyramid sub-resolutions and label/overview images are also
detected

Zeiss LSM

fixed Plane population errors

Zeiss ZVI†

reworked image ordering calculation to allow for tiles

Top-level Bio-Formats API changes:

Java 1.7 is now the minimum supported version

the native-lib-loader dependency has been bumped to version 2.1.4

the xalan dependency has been bumped to version 2.7.2

all the ome.jxr classes have been deprecated to make clear that there is no
JPEG-XR support implemented in Bio-Formats as yet

the DataTools API has been extended to add a number of utility functions to:

account for decimal separators in different locales

parse a String into Double, Float, Integer etc

handle NumberFormatException thrown when parsing Unit tests

the Logging API has been updated to respect logging frameworks
(log4j/logback) initialized via a binding-specific configuration file and
to prevent DebugTools.enableLogging(String) from overriding initialized
logger levels (see Logging for more information)

helper methods have been added to FormatTools allowing a stage position to
be formatted from an input Double and an input unit

the Formats API has also been updated to add a new validate property to
MetadataOptions and support for MetadataOptions has been moved to
FormatHandler level to allow it to be used by both Readers and Writers

initial work on Reader discoverability
extended the ClassList API to allow the readers.txt configuration
file to be annotated using key/value pairs to mark optional Readers and
specify additional per-Reader options

Other general improvements include:

improved performance of getUsedFiles

fixes for FilePatternBlock, AxisGuesser, FilePattern

fixes for the detection of CSV pattern blocks by FilePatternBlock

bioformats_package.jar now includes bio-formats-tools as a
dependency so ImageConverter, ImageFaker and ImageInfo classes
are included in the bundle

the JACE C++ implementation has been decoupled as it does not function with
Java 1.8 (see legacy repo)

ImageJ fixes

to allow reader delegation when a legacy reader is enabled
but not working

to allow ROIs to be imported to the ImageJ ROI manager or added to a new
overlay

MATLAB fixes

improved integration with Octave (thanks to Carnë Draug)

added logging initialization

Command-line tools fixes

upgrade check no longer run when passing -version

common methods refactoring

showinf improvements to preload format

tiffcomment now warns that it requires an ImageDescription tag to be
present in the TIFF file

added many automated tests and improved FakeReader testing framework

documentation improvements include:

clarifying status of legacy Quicktime and ND2 readers

noting that the Gatan reader does not currently support stacks

more Java examples added to the developer documentation

new units page for developers

The Data Model version 2016-06 has been released to introduce
Folders,
and to simplify both the graphical aspects of the model and code generation.
Full details are available in the
OME Model and Formats Documentation.
OME-XML changes include:

Map is now a complexType rather than an element and MapPairs has been
dropped

extended enum metadata has been introduced to better support units

Shape and LightSource are now complexTypes rather than elements

BinData has been added to code generation to handle raw binary data

various code generation improvements to:

simplify and standardize the generation process

remove a number of hard-coded exceptional cases allowing for easier
maintenance and growth

The Bio-Formats C++ native implementation has been decoupled from
the Java codebase and will be released as
OME-Files C++ from now
on, with the exception of OME-XML which is still within Bio-Formats at present
(there is a plan to decouple both the Java and the C++ versions of OME-XML in
future).

The following components have had their licensing updated to Simplified
(2-clause) BSD:

fixed warnings being thrown for ImageJ and other non-FIJI users on Windows
(these warnings were triggered by the removal of the 3i Slidebook DLLs from
the source code repository in Bio-Formats 5.1.9 and should now only be
triggered when opening Slidebook files without the update site enabled -
http://www.openmicroscopy.org/info/slidebook)

a fix in the ImageJ plugin for files grouped using the “Dimensions” option

Now uses slf4j for logging rather than using log4j directly, enabling other
logging implementations to be used, for example when Bio-Formats is used as
a component in other software using a different logging system.