Skip to main content

Mikro

Mikro is the Arkitekt go to solution for all things microscopy. It provides the datamodels and services for managing microscopy data, and connects a binary storage system built around S3 object store (in a standard deploylement powered Minio), with a relational database Postgres for metadata storage.

As an API first system, Mikro exposes a GraphQL API for all of its operations that can be used by any client. It also provides a web based admin UI for interacting with the system through a browser.

API Documentation

The Mikro API is completely interactively documentated using a GraphIQL Playground. You can head over to the API Explorer and select the mikro service, to explore the API and try out some queries. In order to use this you will however need to be logged in, and connected to an Arkitekt instance.

Open Mikro on Github

Schema

The Mikro schema is the core of the system. It defines the data models and relationships that are used to store and retrieve data. The schema is defined in GraphQL and provides the only interface to the system. You can use use the API Explorer to interact with this schema and try out some queries.

An excerpt of the Arkitekt Schema with some Metadata models that are attached to the images.

Storage

Mikro uses a binary storage system for storing the actual image data. This is done using a standard S3 object store, which is exposed through the Minio server. This allows for a scalable and distributed storage system that can be deployed in various configurations, e.g on a single machine, or in a distributed cluster.

Different storage configurations are possible, e.g. a single node, or a distributed cluster. The storage is exposed through a standard S3 API, and apps do not need to know about the underlying storage configuration.

When accessing data, a preflight request is made to the Mikro API, which then returns authenticated presigned urls or temporary credentials for accessing the data. This allows for a secure and scalable storage system, that can be deployed in various configurations.

Metadata

Mikro uses a relational database for storing metadata about the images. This allows for fast querying and filtering of images based on their metadata. The complete metadata is exposed through the GraphQL API, and can be used to filter and query images. YOu can however also use the Postgres database directly to query the metadata. If you are seeking to minimize the number of dependencies, you can also use the SQLite database which provides the same functionality, but is a single file database that does not require a separate database server.