Soma IO

A reimplementation of the former AIMS IO system, more generic, with a data-structure-independent API.

C++ doc

Soma-IO relies on Carto base: C++ general usage library.

Soma-IO has specializations, or implementations for specific data structures, like volumes etc, in Carto Data, and may have in other libraries in the future. Such specializations are generally available through plugins.

See also the C++ docs for the IO system

IO system URLs

Options may be passed to the IO system through URL-like extensions to file names. The general syntax is similar to HTML requests:

filename?option=x&other_option=y

All software using the Soma-IO system support such syntax. For instance you may run Anatomist to read a part of an image:

anatomist my_mri.nii?ox=70&sx=100&oy=70&sy=150&oz=30&sz=100

The support for such options may depend on specific formats IO implementations. Some are generic to a data type (3D/4D volumes for instance), but may or may not be supported in a specific format.

Volume options

Option Type Explanation
ox, oy, oz, ot int Partial reading / writing origin in the volume on disk: correspond to the number of voxels to skip in x, y, z, t directions. x, y, z orientation is the coordinates system used in Soma-IO, currently fixed to the AIMS one (x: right->left, y: anterior->posterior, z: top->bottom). t is the time (4th) dimension.
Note that for writing, partial IO must be enabled through the "partial_writing" option.
sx, sy, sz, st int Partial reading / writing size of the volume to read, in voxels, in the same orientation as ox, oy, oz, ot.
partial_reading bool (int) Enable partial reading. Enabled by default
partial_writing bool (int) Enable partial writing in an existing, already allocated file.
resolution_level int For formats allowing multi-resolution images, such as OpenSlide, this parameter specifies the resolution level to be read.