Markups

Markups json file format (.mrk.json)

All markups node types (fiducials, line, angle, curve, etc.) can be saved to and loaded from json files.

A simple example that specifies a markups fiducial list with 3 points that can be saved to a myexample.mrk.json file and loaded into Slicer:

{"@schema": "https://raw.githubusercontent.com/slicer/slicer/master/Modules/Loadable/Markups/Resources/Schema/markups-schema-v1.0.0.json#",
"markups": [{"type": "Fiducial", "coordinateSystem": "LPS", "controlPoints": [
    { "label": "F-1", "position": [-53.388409961685827, -73.33572796934868, 0.0] },
    { "label": "F-2", "position": [49.8682950191571, -88.58955938697324, 0.0] },
    { "label": "F-3", "position": [-25.22749042145594, 59.255268199233729, 0.0] }
]}]}

All elements and properties are specified in this JSON schema.

Markups fiducial point list file format (.fcsv)

The Markups Fiducial storage node uses a comma separated value file with a custom header to store the fiducials on disk. A simple example:

# Markups fiducial file version = 4.13
# CoordinateSystem = LPS
# columns = id,x,y,z,ow,ox,oy,oz,vis,sel,lock,label,desc,associatedNodeID
0,-19.906699999999987,13.9347,29.442970822281154,0,0,0,1,1,1,0,F-1,,
1,-7.3939,-76.94990495817181,17.552540297898375,0,0,0,1,1,1,0,F-2,,
2,81.73332450520303,-42.9415,9.625586614976527,0,0,0,1,1,1,0,F-3,,

File header:

  • Line 1: a comment line specifying the Slicer version that created the file

  • Line 2: a comment line specifying the coordinate system (CoordinateSystem = LPS or CoordinateSystem = RAS). In earlier versions of Slicer, numeric codes were used: RAS = 0, LPS = 1.

  • Line 3: a comment line explaining the fields in the csv (columns = id,x,y,z,ow,ox,oy,oz,vis,sel,lock,label,desc,associatedNodeID)

Each line after the header specifies a control point. Meaning of columns:

  • id: a string giving a unique id for this fiducial, usually based on the class name

  • x,y,z: the floating point coordinate of the fiducial point

  • ow,ox,oy,oz: the orientation quaternion of this fiducial, angle and axis, default 0,0,0,1 (or 0,0,0,0,0,0,1.0)

  • vis: the visibility flag for this fiducial, 0 or 1, default 1

  • sel: the selected flag for this fiducial, 0 or 1, default 1

  • lock: the locked flag for this fiducial, 0 or 1, default 0

  • label: the name for this fiducial, displayed beside the glyph, with quotes around it if there is a comma in the field

  • desc: a string description for this fiducial, optional

  • associatedNodeID = an id of a node in the scene with which the fiducial is associated, for example the volume or model on which the fiducial was placed, optional

Markups control points table file format (.csv, .tsv)

Markups control points can be imported from and exported to a table node that can be written to/read from standard comma (or tab) separated file format. A simple example:

label,l,p,s,defined,selected,visible,locked,description
F-1,-19.9067,13.9347,29.443,1,1,1,0,
F-2,-7.3939,-76.9499,17.5525,1,1,1,0,
F-3,81.7333,-42.9415,9.62559,1,1,1,0,

Definition of columns:

  • label: label that is displayed next to each control point

  • l, p, s: coordinate values in LPS coordinate system (in this case, l and a columns should not be used)

  • r, a, s: coordinate values in RAS coordinate system (in this case, r and a columns should not be used)

  • defined: 0 = the position of the point is not defined (coordinate values can be ignored; useful for creating templates); 1: the position is defined

  • selected: 0 = unselected; 1 = selected (the control point appears with different colors an may be used as additional input for analysis)

  • visible: 0 = hidden; 1 = visible

  • locked: 0 = the point can be interactively moved; 1 = the point position is locked

  • description: text providing additional information for the point

References

Examples

Examples for common operations on transform are provided in the script repository.