[ome-devel] Release of OME Files C++ 0.3.0

Roger Leigh rleigh at dundee.ac.uk
Tue Feb 14 12:39:21 GMT 2017


OME Files C++ 0.3.0
===================

OME Files is a reference implementation of the OME Data Model and
OME-TIFF file format for the storage and interchange of biological
imaging data and metadata.  It provides support for:

  • the OME Data Model (model objects, metadata store, XSL transforms
    and XML validation)
  • OME-TIFF reading
  • OME-TIFF writing

Changes in this release include:

  • updating the minimum C++ language standard to C++11 (from C++98)
  • adding support for TIFF compression
  • performance improvements for metadata reading and TIFF reading and
    writing
  • addition of the ome-model component, replacing bioformats' ome-xml
    (this is the data model specification and ome-xml library following
    decoupling from the Bio-Formats repository)

Downloads
---------

The software release is available at the OME Files C++ 0.3.0 download
page (http://downloads.openmicroscopy.org/ome-files-cpp/0.3.0/).  This
page includes links to the individual repositories and source
releases, as well as the documentation and binary builds of the
collection for several common platforms, including Windows, Linux and
MacOS X.

Upgrading from 0.2.3
--------------------

The main change is the switch to C++11.  No immediate source changes
are strictly required; the compatibility headers will continue to work
for now, however upgrading to the standard C++11 headers is highly
recommended to avoid future breakage.  Client code is free to use any
C++11 features of their choosing.  To update your code:

  • enable C++11 or later support for your compiler
    · MSVC users do not need to do anything (it doesn't have any
      special option)
    · GCC and Clang users need to add the "-std=c++11" or "-std=c++14"
      option (the most recent versions default to C++14 and don't need
      this)
    · CMake users can set CMAKE_CXX_STANDARD_REQUIRED=11 and
      CMAKE_CXX_STANDARD=14 to try C++14 and fall back to C++11 if
      C++14 is unavailable
  • replace <ome/compat/array.h> with <array> and use of
    ome::compat::array with std::array
  • replace <ome/compat/cstdint.h> with <cstdint>
  • replace <ome/compat/memory.h> with <memory> and use of
    ome::compat::shared_ptr with std::shared_ptr (likewise for related
    types and functions such as std::weak_ptr, std::make_shared and
    std::dynamic_pointer_cast)
  • replace <ome/compat/tuple.h> with <tuple> and use of
    ome::compat::tuple with std::tuple (likewise for related functions
    such as std::get)
  • the above compatibility headers, and their declared types in the
    ome::compat namespace still exist but are deprecated; they simply
    wrap the standard headers and types.
  • the deprecated headers will be removed for 0.4.0.

Changes since ome-files-cpp 0.2.3
---------------------------------

All components:

  • C++11 is now the minimum required language version, with C++14
    being used when available
  • enabled the use of a restricted number of C++11 features, including
    enum class, nullptr, initializer lists, range-based for loops and
    type traits
  • enabled the use of C++11 syntax changes including "<::" not being
    interpreted as a trigraph and ">>" being used to close nested
    templates instead of "> >"
  • additional features will be enabled in subsequent releases
  • Google Test (gtest) is no longer built separately in each source
    component; the latest gtest release now allows use as a
    conventional library
  • source releases are now made directly from git with "git archive";
    additional version metadata is no longer embedded in the source
    releases

OME Common:

  • Boost MPL size limits are now set with MSVC only; they are no
    longer required for other compilers with C++11
  • <ome/compat/array.h>, <ome/compat/cstdint.h>, <ome/compat/memory.h>
    and <ome/compat/tuple.h> are now deprecated in favor of the
    standard headers; they wrap the standard headers for backward
    compatibility but will be removed in the next breaking release

OME Model:

The first release of the ome-model components (specification, xsd-fu
and ome-xml) since decoupling from Bio-Formats.

  • sources use a Java maven source layout; this component is a dual
    language component building both C++ and Java libraries
  • specification OME-XML samples: Added ROI transform and mask samples
  • specification transforms: Corrected upgrade to preserve ROI
    transforms
  • AffineTransform: Initialized with the identity matrix when default
    constructed
  • migrated formats documentation from the ome-documentation
    repository, updated and integrated with cmake and maven builds
  • renamed toplevel project from ome-xml to ome-model; the library
    continues to be named ome-xml

OME Files:

  • added support for TIFF compression, exposing all compression
    algorithms supported by libtiff.  Deflate and LZW will work for all
    pixel types; JPEG support will be available if libtiff was compiled
    with support for libjpeg
  • OMETIFFReader now sets the interleaved property according to the
    TIFF PlanarConfiguration tag; previously it was set to false
    unconditionally
  • TIFF wrapper: Cache IFD offsets on reading; this speeds up reading
    by changing the complexity of indexed IFD access from O(n) to O(1)
  • OMETIFFWriter: Sets the interleaved property unconditionally, even
    when the samples per pixel count is 1; this is to ensure easy
    round-tripping of data between readers and writers using the same
    logical dimension ordering in the pixel buffer
  • all TIFF writers: Set a default strip size of 2^16 pixels, which is
    for example 64KiB for 8-bit greyscale data, or 192KiB for 8-bit RGB
    data; the previous default was to copy the Java behavior of one row
    per strip, which was much less efficient

OME QtWidgets:

  • no changes

Super-Build 0.3.0:

  • gtest: Build and install (into tool directory) like a regular
    package
  • renamed superbuild-install to stage
  • docs: Dropped PDF documentation; documented C++11 changes
  • added git-dir option to simplify building multiple repositories
    from git
  • Package changes:
    · boost 1.63: Updated package
    · ome-common 5.4.0: Updated package
    · ome-files 0.3.0: Updated package
    · ome-files-py: New experimental package (initial Python bindings
      for OME Files C++)
    · ome-model 5.5.0: New package (previously part of the Bio-Formats
      sources)
    · ome-qtwidgets 5.4.0: Updated package
    · png 1.6.28: Updated package
    · tiff 4.0.7: Updated package
    · zlib 1.2.10: Updated package

Future changes
--------------

Upcoming improvements include:

All components:

  • enabling of additional C++11 features following testing of compiler
    support and compatibility
  • further performance profiling and scalability improvements

OME XML:

  • support for the use of custom annotations with the OME-XML data
    model API
  • this generalized annotation support will also be used for existing
    annotations including Modulo and OriginalMetadata
  • improved and more comprehensive OME-XML and OME-TIFF samples
  • Improved documentation and code samples

OME Files:

  • improvements to automated integration testing of OME-TIFF files

Super-Build:

  • further improvements for building on Windows, including initial
    VS2017 support
  • updating of the set of platforms binary builds are provided for

You can find further information on which features will be included in
upcoming releases via the Trello board for version 0.3.1
(https://trello.com/b/nNwJHdpp/ome-files-0-3-1) and 0.4.0
(https://trello.com/b/WFYWCvoV/ome-files-0-4-0) (note that these are a
work in progress and are subject to change).

Errata
------

See the errata for this release
(https://www.openmicroscopy.org/site/support/ome-files-cpp/ome-cmake-superbuild/manual/html/errata.html).

Support
-------

For any problems or comments, please use the OME forums or mailing
lists (http://www.openmicroscopy.org/site/community).


Kind regards,
Roger Leigh

on behalf of the OME team

--
Dr Roger Leigh -- Open Microscopy Environment
Wellcome Trust Centre for Gene Regulation and Expression,
College of Life Sciences, University of Dundee, Dow Street,
Dundee DD1 5EH Scotland UK   Tel: (01382) 386364

The University of Dundee is a registered Scottish Charity, No: SC015096


More information about the ome-devel mailing list