Skip to content

Datatypes

As you learned in Getting Started, brainlife.io Apps exchange data through datatypes. We are now going to cover datatypes in-depth in this section -- you can check out all of the brainlife.io datatpyes here.

The screenshot below shows you a datatype. Each datatype consists of a name, description, and a list of files that define the datatype's structure.

datatype

The example below shows the datatype definition for the neuro/life datatype

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{
    "name" : "neuro/life",
    "desc" : "LiFE Output (fe structure)",
    "files" : [ 
        {
            "id" : "fe",
            "filename" : "output_fe.mat",
            "desc" : "FE structure",
            "ext" : ".mat",
            "required" : true
        }, 
        {
            "id" : "life_results",
            "filename" : "life_results.json",
            "required" : true
        }, 
        {
            "id" : "tracts",
            "dirname" : "tracts",
            "required" : true
        }
    ]
}

In this example, the brainlife/app-life App generates a dataset with this datatype. Other Apps that want to use the neuro/life output can request to have the files made available to their Apps with the brainlife.io App registration form.

It is important to note that it is up to the developers to exchange the dataset to create well-documented file contents, and they should consider that thorough documentation benefits other brainlife.io users. App developers can discuss the structure of the datatype and what each file means in the #datatype channel of brainlife.io's Slack workspace.

Quick Note: While a datatype might sound similar to a BIDS specification, brainlife.io datatypes differ in that they:

  • Mainly concern data derivatives generated by Apps and are used only by Apps exchanging those datasets

  • Are only used within the brainlife.io platform and are not meant to become standards for a particular data format

  • Are defined by App developers involved in exchanging input/output datasets, not by brainlife.io platform developers

Datatype Tags

Sometimes you want to be more specific about the type of dataset for a particular datatype. For example, neuro/anat/t1w could be ACPC aligned or not and neuro/dwi could be single-shell or multi-shell. brainlife.io allows you to specify each datatype with datatype tags.

You should only use this tag to specify the information on datasets, not generalize it. For example, we don't have "multi-shell" datatype tags because neuro/dwi is by default "multi-shell" data. While it is normal to have different b-values in a dwi.bvals file, "single-shell" is a special case for the neuro/dwi datatype where b-values happens to all be the same number -- so we added the "single-shell" tag to describe it.

Since datatype tags add specificity, brainlife.io can correctly identify which datasets can be used for which Apps by examining a dataset's datatype tags and an App's input dataset tags. But do not confuse a datatype tag with dataset tag!

  • A datatype tag can only be set by the App developer. It is part of the datatype and cannot be modified once the dataset is created.

  • A dataset tag, on the other hand, is a tag that can be freely edited by any user, and it allows for easier searching or bulk processing of datasets.

Hint

If you ever have any questions about datatypes, just ask them in the #datatype channel in brainlife.io's Slack!

Comments