# Modification pipeline

The central workflow concept of OVITO is the so-called modification pipeline. It is a user-defined sequence of data manipulation operations (modifiers) which have been applied to the simulation data. The results of that processing pipeline are displayed on screen. OVITO provides various modifier types, each performing a specific basic task such as selecting, coloring, analyzing, or deleting particles. By combining these simple building blocks in a modification pipeline, the user can visualize and analyze the simulation data in a very flexible way.

This data pipeline architecture make it possible for you to retroactively change, delete, or amend applied editing actions. The program keeps a copy of the original simulation data in memory and, in addition, the complete list of modifiers applied during the program session. OVITO lets you change parameters of existing data operations, remove operations, or inserting new operations at arbitrary positions in the modification sequence. Upon any such change, the program immediately recalculates the effect and updates the realtime viewports to display the results. This type of non-destructive workflow can also be found in modern photo editing, 3D computer graphics, or scientific data analysis programs from other fields. In OVITO this approach allows you to combine various basic data operations (e.g. for selecting, filtering, transforming, or analyzing particles) to accomplish very complex analysis and visualization tasks.

## The pipeline editor

The modification pipeline editor

The pipeline editor, shown in the screenshot on the right, is the central place where you apply modifiers to the simulation data. It displays the current modification pipeline and lets you insert new modifiers, reorder them, or edit their parameters.

After importing a new simulation file in OVITO, the modification pipeline is initially empty, i.e, the imported data is displayed as is. The pipeline editor already contains two sections labeled Display and Input, which are always present. The Display section lists the visualization elements that are currently displayed in the viewports, e.g. the simulation box and the particles. If you select an element in the pipeline editor, a corresponding parameter panel is opened below the editor, which allows you to change the settings for the selected element.

Elements under the Input section represent the data imported from an external file, which enter the modification pipeline. More information will be given below.

Above the pipeline editor you find a drop-down box labeled "Add modification...", which lists the available modifiers that can be applied to the data. Picking an entry from that box inserts a new modifier into the modification pipeline. The new modifier will be inserted right above the currently selected pipeline item. Note that the modification pipeline is displayed in bottom-up order as indicated in the screenshot. That means the data source is located at the bottom, and the modifier at the top of the list is always executed last.

You can temporarily disable individual modifiers in the modification pipeline by unchecking the box next to them. To permanently remove a modifier from the pipeline, use the Delete Modifier button in the toolbar on the right. The up and down arrow buttons can be used to change the order of modifiers in the pipeline, or you can drag and drop modifiers directly within the list to rearrange them.

## The input section

The last section in the pipeline editor, which is labeled Input, represents the data source of the modification pipeline, i.e. the external simulation file. Selecting the filename entry opens a panel in the area below the pipeline editor that shows information regarding the loaded file and allows you to replace the input of the modification pipeline with data from a different file.

Depending on the contents of the loaded input file, the Input section lists additional sub-entries for various parts of the input dataset such as the simulation cell and the list of particle types.

## Display objects

So-called display objects are responsible for rendering the processed data that leaves the modification pipeline. The Display section of the pipeline editor lists these display objects. Particles, for example, are rendered by the Particles display object, which provides additional settings that allow you to control the appearance of particles. There's also a display object for the simulation cell, which allows you to change settings like the cell border color. If you add certain modifiers to the pipeline, for example the Create Bonds modifier, you may notice that additional entries appear under the Display section of the pipeline editor. That is because these modifiers produce new data elements and inject them into the modification pipeline. You can find the list of supported display objects here.

You can hide individual elements by unchecking the corresponding box in the pipeline editor. Then they will no longer be rendered in the viewports.

## Particle selection

OVITO provides several modifiers that allow to select a subset of particles (e.g. the Select particle types modifier). Other modifiers, when placed further down the modification pipeline, act only on the selected particles (e.g. the Delete selected particles modifier). OVITO stores the current selection state in a standard particle property called `Selection`. Its value is 1 for particle that are selected, and 0 otherwise. Particle whose `Selection` property is nonzero are rendered with a red color in OVITO's interactive viewports to indicate that they are currently selected. However, their normal display color is always used when rendering an output image.

Like any other particle property, the `Selection` property can be changed multiple times within a modification pipeline, for example to select a first group of particles, change their color using the Assign color modifier, then select another group of particles, and assign a different color to them using a second Assign color modifier. In other words, the selection property of a particle can have different values at different points along the modification pipeline. Which selection a modifiers sees depends on where it is placed in the modification pipeline. Note that some modifiers like the Assign color modifier clear the current selection by default to prevent the particles from being rendered in the red selection marker color (which would mask the particles' real color assigned by the modifier).