Annotations
JIPipe organizes data in tables that have a specific format:
Each table contains at least one column that contains the primary data of this row. The type of data allowed to be stored in this column is determined by this table (e.g., images, plots, ROI, ...)
A data table can have additional columns that contain text annotations
Tables also support annotations that contain any kind of other data. These data annotations are managed independently of the set of text annotations. This means that there can be a data and a text annotation column with the same name.

Text annotations
Text annotations can be created by a variety of nodes that are present in the Annotations category. A commonly used operator is the Add path to annotations node that annotates the file name or other path information to an existing path data.

In the node parameters you can freely name the text annotation.
Data annotations
Data can be annotated to other data via the Annotate with data node. The data annotation will then appear in a dedicated column.

In the node parameters you can freely name the data annotation.
Annotation propagation
A core concept of JIPipe is that annotations propagate through the pipeline unless they are manually removed.

An important aspect of annotation propagation is the behavior if multiple annotations with the same column name, but different values are merged.
Text annotation merge modes
- Merge ⭐
If there are multiple values, output a list containing both values in JSON format.
Input 1
Input 2
Result
A
B
["A", "B"]
C
["A", "B"]
["C", "[\"A\", \"B\"]
👉 Please note how for the second example, the existing JSON list was escaped into a string.
- Merge lists
Similar to merge, but can properly merge lists. Due to this behavior, more computational time is required.
Input 1
Input 2
Result
A
B
["A", "B"]
C
["A", "B"]
["C", "A", "B"]
- Skip existing
If a column already exists, ignore the new value.
Input 1
Input 2
Result
A
B
A
C
["A", "B"]
C
- Overwrite existing
If a column already exists, overwrite it with the new value
Input 1
Input 2
Result
A
B
B
C
["A", "B"]
["A", "B"]
- Discard
If a column already exists, completely delete all the annotation
Data annotation merge modes
- Merge tables ⭐
Merges the data annotations into a data table data annotation that contains all data annotations. Tables are not nested, but combined row-wise. Equivalent to "Merge lists" for text annotations.
- Merge
Multiple data annotations are merged into a data table data annotation. Tables are nested. Equivalent to "Merge" for text annotations.
- Skip existing
If a column already exists, ignore the new value.
- Overwrite existing
If a column already exists, overwrite it with the new value
- Discard
If a column already exists, completely delete all the annotation