Skip to main content

What are plugins?

Most simply, a ChRIS plugin is a container image which has a command in the form

commandname [--optional-args values...] /path/to/inputs /path/to/outputs

For a more technical description, consult the spec: https://github.com/FNNDSC/CHRIS_docs/blob/master/specs/ChRIS_Plugins.adoc

Types of Plugins

There are three types of ChRIS plugins:

  • "ds" data synthesis plugins process input file to produce output files
  • "fs" feed synthesis plugins create data, without taking input files
  • "ts" topology synthesis plugins are special, they are directly associated with the ChRIS backend API itself

ds-type Plugins

ds plugins are the most common type of plugins. They process data from a directory of input files, writing outputs to a specified output directory.

programname [--option value...] inputdir/ outputdir/

For example, the ds plugin https://github.com/FNNDSC/pl-infantfs[pl-infantfs] takes in a NIFTI file as input, and in its output directory it creates brain segmentation and surface files.

fs-type Plugins

fs plugins create data in an output directory. They do not consume input files.

programname [--option value...] outputdir/

fs plugins either generate data or connect ChRIS to external sources. For example:

  • pl-create-tetra creates a sphere polygonal mesh in its output directory
  • rclone is used in a fs plugin to pull data from SFTP servers

ts-type Plugins

ts plugins are special cases which are not usually created by community developers. ts plugin functionality and some ts plugin parameters are hard-coded into the ChRIS backend directly.