IOLink  IOL_v1.6.1_release
Features

IOLink capabilities, in summary.

Basic types

IOLink provides some elementary containers: Vector, VectorX, ArrayX, and VariantDataValue.

And also some basic types to handle data: Region, RegionX, DataType, and Uri.

Handle multi-dimensional images

IOLink is able to handle all kinds of image data: 2D, volumetric, multispectral, video, etc.

Handle DataFrames

IOLink is able to store 2-dimensional tables of rows and columns, like a spreadsheet.

Out of core support

Data don't need to be fully loaded in memory and can be accessed region by region from a file, in local or remote.

Simple to use

User code is significantly reduced when upgrading to IOLink. Readability is a core focus.

"How to store" has no impact on "How to access" for user

Users don't need to do specific conversion to read data, wherever data comes from and how it is encoded.

Improve safety

IOLink mechanisms should prevent users to do invalid operations. High-level methods are provided to support users in their data manipulation.

Thread-safety

Initially, IOLink was designed for multithreaded environments. However, thread safety mechanisms are not active by default to avoid performances issues with some customer uses.

Binary compatibility

In the same major version of IOLink, binary compatibility is ensured to avoid symbol conflicts in a same application, and enable object sharing between different versions.

Nevertheless, there are some possible issues with different versions of IOLink loaded by different components of a same application. See the DLL issue chapter.

Interoperability

IOLink images are interoperable with NumPy arrays (>= v1.17.4) for Python users, without memory duplication.

IOLink streams are interoperable with MemoryStreams instances (.NET) and RawIOBase interface (Python)

Multi-resolution access

IOLink provides an interface for multi-resolution images.