# Cytomine apps
Cytomine apps let you create complete programs manipulating Cytomine data, run them from your computer and save results to Cytomine. Every execution is reported to Cytomine, with the parameters applied to the program. The results of each program execution can then be compared from the graphical interface. Last but not least, these apps can be plugged to Cytomine server and directly launched from the graphical interface on dedicated hardware.
In this guide many new concepts related to Cytomine app are used. We introduce them here.
# App, software, algorithm
A Cytomine app is a program, external to Cytomine but interacting with it through one of the API client libraries.
Apps have various purposes:
- Train an AI model from data on Cytomine
- Infer new annotations from a trained AI model
- Data mining
- Build complex statistical reports
- Create automated annotations using image processing techniques
- ...
A Cytomine app consists in:
- A set of input parameters. As any program, the app can take input parameters that influence its execution. For example: an image processing threshold.
- The source code. As any program, the app executes some source code influenced by the input parameters. The code uses a Cytomine API client library to manipulate Cytomine data.
- An execution environment with dependencies. As any program, the app could rely on existing libraries (such a deep learning library) and/or could only work with some operating systems. The Cytomine app is thus shipped with a valid execution environment.
In Cytomine HTTP API, Cytomine apps are called Software. The input parameters are called SoftwareParameter.
In Cytomine graphical interface, Cytomine apps are called Algorithms. The input parameters are called Algorithm parameters.
# Run, job, analysis
The execution of a Cytomine app is defined by:
- The launcher: the human user that decided to execute an app.
- The Cytomine app: the app that the launcher chooses to execute.
- The parameter values: the values that the launcher chooses for the app input parameters. For example, the image processing threshold is set to 0.5 for this execution.
Data, such as annotations, produced by the execution of the app with some parameters is reported to Cytomine. These data are referenced as owned (created) by the app execution, on the human user launcher behalf.
A Cytomine app run is a synonym for a Cytomine app execution. A Cytomine app can be run (or executed) multiple times with different parameter values.
In Cytomine HTTP API, Cytomine app executions are called Job. The parameters and their values are called JobParameter. Output data is owned by a UserJob.
In Cytomine graphical interface, Cytomine app executions are called Analysis. The parameters and their values are called Analysis parameters.