ChRIS plugins are the essence of ChRIS: they do the actual scientific data processing.
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 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 pl-infantfs takes in a NIFTI file as input, and in its output directory it creates brain segmentation and surface files.
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 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.