<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Phaedra 2 – In Depth</title>
    <link>/2.12.0/documentation/reference_docs/in_depth/</link>
    <description>Recent content in In Depth on Phaedra 2</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    
	  <atom:link href="/2.12.0/documentation/reference_docs/in_depth/index.xml" rel="self" type="application/rss+xml" />
    
    
      
        
      
    
    
    <item>
      <title>Documentation: Perform Plate Analysis</title>
      <link>/2.12.0/documentation/reference_docs/in_depth/plate_analysis/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/2.12.0/documentation/reference_docs/in_depth/plate_analysis/</guid>
      <description>
        
        
        &lt;h3 id=&#34;apply-plate-layout&#34;&gt;Apply Plate Layout&lt;/h3&gt;
&lt;p&gt;Before we can start with plate analysis we first need to create a project, an experiment and one or more plates.
How to set up/create a project and an experiment and how to add plates to the experiment you can go through the &lt;a href=&#34;https://www.phaedra.io/reference_docs/getting_started/project_setup/&#34;&gt;getting started tutorial&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;When we have set up a project and added experiments and plates to it, then we can start by applying a plate layout to a plate or plate(s).
To apply a plate layout to a specif late browse to the experiment view and click on the &lt;strong&gt;&amp;hellip;&lt;/strong&gt; icon of a specific plate in the experiment plate list section.
By clicking on the &lt;strong&gt;&amp;hellip;&lt;/strong&gt; icon, a plate action menu will appear.&lt;/p&gt;

&lt;figure&gt;
    &lt;img src=&#34;../img/plate_action_menu.png&#34; width=&#34;70%&#34; height=&#34;70%&#34;/&gt; 
&lt;/figure&gt;

&lt;p&gt;Next click on the &lt;strong&gt;Set Plate Layout&lt;/strong&gt; option.&lt;/p&gt;

&lt;figure&gt;
    &lt;img src=&#34;../img/apply_plate_layout.png&#34; width=&#34;70%&#34; height=&#34;70%&#34;/&gt; 
&lt;/figure&gt;

&lt;p&gt;After clicking &lt;strong&gt;Set Plate Layout&lt;/strong&gt; option, a &lt;strong&gt;Select Plate Layout&lt;/strong&gt; dialog should appear&lt;/p&gt;

&lt;figure&gt;
    &lt;img src=&#34;../img/set_plate_layout_dialog.png&#34; width=&#34;70%&#34; height=&#34;70%&#34;/&gt; 
&lt;/figure&gt;

&lt;p&gt;Within the dialog a prefiltered list (filtered on plate dimensions) will be shown. You can select one of the plate templates and apply it to the plate by clicking on &lt;strong&gt;LINK&lt;/strong&gt; button in the right lower corner of the dialog.&lt;/p&gt;

&lt;figure&gt;
    &lt;img src=&#34;../img/select_plate_layout_dialog.png&#34; width=&#34;70%&#34; height=&#34;70%&#34;/&gt; 
&lt;/figure&gt;

&lt;p&gt;Before applying the selected plate layout, you can also display a preview of the selected plate template by clicking on the &lt;strong&gt;SHOW QUICK VIEW&lt;/strong&gt; button.&lt;/p&gt;

&lt;figure&gt;
    &lt;img src=&#34;../img/select_plate_layout_dialog_quick_view.png&#34; width=&#34;70%&#34; height=&#34;70%&#34;/&gt; 
&lt;/figure&gt;

&lt;p&gt;Once the selected plate is linked with the selected plate layout a green check icon in the &lt;strong&gt;L&lt;/strong&gt; column of the plate list section for the selected plate will appear.&lt;/p&gt;

&lt;figure&gt;
    &lt;img src=&#34;../img/plate_linked_with_layout.png&#34; width=&#34;70%&#34; height=&#34;70%&#34;/&gt; 
&lt;/figure&gt;

&lt;h3 id=&#34;link-measurement&#34;&gt;Link Measurement&lt;/h3&gt;
&lt;p&gt;Next step is to link a specific measurement to the selected plate.
For this we need to browse to the plate view by clicking on a specific plate in the plate list section of the experiment view&lt;/p&gt;

&lt;figure&gt;
    &lt;img src=&#34;../img/plate_view.png&#34; width=&#34;70%&#34; height=&#34;70%&#34;/&gt; 
&lt;/figure&gt;

&lt;p&gt;In order to link the plate with a specific measurement browse to &lt;strong&gt;Measurements&lt;/strong&gt; tab in the plate overview section&lt;/p&gt;

&lt;figure&gt;
    &lt;img src=&#34;../img/plate_measurements_view.png&#34; width=&#34;70%&#34; height=&#34;70%&#34;/&gt; 
&lt;/figure&gt;

&lt;p&gt;Here we can link a measurement by clicking on the &lt;strong&gt;LINK MEASUREMENT&lt;/strong&gt; button in the right upper corner of the plate measurements section.
Click on the &lt;strong&gt;LINK MEASUREMENT&lt;/strong&gt; button and a &lt;strong&gt;Link Measurement&lt;/strong&gt; dialog will appear the show a prefiltered list (filtered on plate dimensions) of captured plate measurements.&lt;/p&gt;

&lt;figure&gt;
    &lt;img src=&#34;../img/plate_measurements_dialog.png&#34; width=&#34;70%&#34; height=&#34;70%&#34;/&gt; 
&lt;/figure&gt;

&lt;p&gt;Select a measurement and click on the &lt;strong&gt;LINK&lt;/strong&gt; button to link the selected measurement to the plate&lt;/p&gt;

&lt;figure&gt;
    &lt;img src=&#34;../img/plate_measurements_dialog_selected.png&#34; width=&#34;70%&#34; height=&#34;70%&#34;/&gt; 
&lt;/figure&gt;

&lt;p&gt;When the selected measurement is linked it will appear in the linked measurements list of the plate measurements section&lt;/p&gt;

&lt;figure&gt;
    &lt;img src=&#34;../img/plate_measurements_view_linked.png&#34; width=&#34;70%&#34; height=&#34;70%&#34;/&gt; 
&lt;/figure&gt;

&lt;p&gt;Now when we browse to the plate &lt;strong&gt;Heatmap&lt;/strong&gt; section tab we will be able to se a heatmap of the well columns of the selected measurements.&lt;/p&gt;

&lt;figure&gt;
    &lt;img src=&#34;../img/plate_heatmap_view.png&#34; width=&#34;70%&#34; height=&#34;70%&#34;/&gt; 
&lt;/figure&gt;

&lt;h3 id=&#34;recalculate-plate&#34;&gt;(Re)Calculate Plate&lt;/h3&gt;
&lt;p&gt;Under construction &amp;hellip;&lt;/p&gt;
&lt;h3 id=&#34;validateinvalidate-plate&#34;&gt;Validate/Invalidate Plate&lt;/h3&gt;
&lt;p&gt;Under construction &amp;hellip;&lt;/p&gt;
&lt;h3 id=&#34;approvedisapprove-plate&#34;&gt;Approve/Disapprove Plate&lt;/h3&gt;
&lt;p&gt;Under construction &amp;hellip;&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Documentation: Plate Layout Templates</title>
      <link>/2.12.0/documentation/reference_docs/in_depth/layout_templates/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/2.12.0/documentation/reference_docs/in_depth/layout_templates/</guid>
      <description>
        
        
        &lt;p&gt;A plate layout template defines how the plate looks like, for example a plate layout can define witch wells are marked as
control wells (high/low control) and which wells are marked as sample wells. Next to well type definition, the user can also
for every well set a substance type and number of even enter substance concentration. This plate layout templates can later be applied/linked
on existing plates as plate definition.&lt;/p&gt;

&lt;figure&gt;
    &lt;img src=&#34;../img/plate_layout_example.png&#34; width=&#34;80%&#34; height=&#34;80%&#34;/&gt; 
&lt;/figure&gt;

&lt;h3 id=&#34;create-a-template&#34;&gt;Create a template&lt;/h3&gt;
&lt;p&gt;To create a new plate layout template, go to the &lt;strong&gt;&lt;em&gt;Plate Layouts/New Template&amp;hellip;&lt;/em&gt;&lt;/strong&gt; menu item in the &lt;strong&gt;Phaedra Navigator&lt;/strong&gt;.&lt;/p&gt;

&lt;figure&gt;
    &lt;img src=&#34;../img/nav_plate_layouts.png&#34; width=&#34;20%&#34; height=&#34;20%&#34;/&gt; 
&lt;/figure&gt;

&lt;p&gt;A &lt;strong&gt;&lt;em&gt;New Template&lt;/em&gt;&lt;/strong&gt; form will appear:&lt;/p&gt;

&lt;figure&gt;
    &lt;img src=&#34;../img/new_plate_layout_form.png&#34; width=&#34;80%&#34; height=&#34;80%&#34;/&gt; 
&lt;/figure&gt;

&lt;ul&gt;
&lt;li&gt;Fill in the &lt;code&gt;Name&lt;/code&gt; for the plate template&lt;/li&gt;
&lt;li&gt;Fill in the &lt;code&gt;Description&lt;/code&gt; (optional) for the plate template&lt;/li&gt;
&lt;li&gt;Fill in the number of &lt;code&gt;Rows&lt;/code&gt; for the plate template&lt;/li&gt;
&lt;li&gt;Fill in the number of &lt;code&gt;Columns&lt;/code&gt; for the plate template&lt;/li&gt;
&lt;li&gt;Click &lt;img src=&#34;../img/save_button.png&#34; alt=&#34;&#34;&gt; button to create the plate layout and you be redirected to:&lt;/li&gt;
&lt;/ul&gt;

&lt;figure&gt;
    &lt;img src=&#34;../img/new_plate_layout_editor.png&#34; width=&#34;80%&#34; height=&#34;80%&#34;/&gt; 
&lt;/figure&gt;

&lt;p&gt;Initially you will see an empty plate template layout. To make it meaningful to use, you&amp;rsquo;ll need to update the plate
layout template.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;To skip wells (skipped wells are ignored) select the wells and click on &lt;img src=&#34;../img/skip_wells_check.png&#34; alt=&#34;&#34;&gt;&lt;/li&gt;
&lt;li&gt;Click &lt;img src=&#34;../img/save_button.png&#34; alt=&#34;&#34;&gt; button to save the plate layout template changes&lt;/li&gt;
&lt;/ul&gt;

&lt;figure&gt;
    &lt;img src=&#34;../img/plate_layout_skip_wells.png&#34; width=&#34;80%&#34; height=&#34;80%&#34;/&gt; 
&lt;/figure&gt;

&lt;ul&gt;
&lt;li&gt;To set the well types got to &lt;strong&gt;&lt;em&gt;Well Type&lt;/em&gt;&lt;/strong&gt; tab&lt;/li&gt;
&lt;li&gt;To set the well types, select the wells and select a well type from the input field and click &lt;img src=&#34;../img/apply_button.png&#34; alt=&#34;&#34;&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;figure&gt;
    &lt;img src=&#34;../img/plate_layout_well_types.png&#34; width=&#34;80%&#34; height=&#34;80%&#34;/&gt; 
&lt;/figure&gt;

&lt;ul&gt;
&lt;li&gt;Click &lt;img src=&#34;../img/save_button.png&#34; alt=&#34;&#34;&gt; button to save the plate layout template changes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;After defining the well type you might want to also set substance type and numbers for specific wells.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;To set the well substance types and numbers click on the &lt;strong&gt;&lt;em&gt;Substance&lt;/em&gt;&lt;/strong&gt; tab&lt;/li&gt;
&lt;/ul&gt;

&lt;figure&gt;
    &lt;img src=&#34;../img/plate_layout_substances.png&#34; width=&#34;80%&#34; height=&#34;80%&#34;/&gt; 
&lt;/figure&gt;

&lt;ul&gt;
&lt;li&gt;Select the wells you want to add substance type and name to&lt;/li&gt;
&lt;li&gt;Fill in the &lt;code&gt;Substance Type&lt;/code&gt; and click &lt;img src=&#34;../img/apply_button.png&#34; alt=&#34;&#34;&gt;&lt;/li&gt;
&lt;li&gt;Fill in the &lt;code&gt;Substance Name&lt;/code&gt; and click &lt;img src=&#34;../img/apply_button.png&#34; alt=&#34;&#34;&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The updated layout template view should look something like:&lt;/p&gt;

&lt;figure&gt;
    &lt;img src=&#34;../img/plate_layout_substances_example.png&#34; width=&#34;80%&#34; height=&#34;80%&#34;/&gt; 
&lt;/figure&gt;

&lt;ul&gt;
&lt;li&gt;Click &lt;img src=&#34;../img/save_button.png&#34; alt=&#34;&#34;&gt; button to save the plate layout template changes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Final step is to set the Substance concentrations for specific wells.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;To set the substance concentrations click on the &lt;strong&gt;&lt;em&gt;Concentration&lt;/em&gt;&lt;/strong&gt; tab&lt;/li&gt;
&lt;/ul&gt;

&lt;figure&gt;
    &lt;img src=&#34;../img/plate_layout_concentrations.png&#34; width=&#34;80%&#34; height=&#34;80%&#34;/&gt; 
&lt;/figure&gt;

&lt;p&gt;You will notice that the concentration values are by default set to 0.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;To set the concentrations select the wells you want to update&lt;/li&gt;
&lt;li&gt;Fill in the &lt;code&gt;Concentration&lt;/code&gt; value (in Molar (M)) and click &lt;img src=&#34;../img/apply_button.png&#34; alt=&#34;&#34;&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;figure&gt;
    &lt;img src=&#34;../img/plate_layout_concentrations_example.png&#34; width=&#34;80%&#34; height=&#34;80%&#34;/&gt; 
&lt;/figure&gt;

&lt;ul&gt;
&lt;li&gt;Click &lt;img src=&#34;../img/save_button.png&#34; alt=&#34;&#34;&gt; button to save the plate layout template changes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;After successfully completing all the above steps, you&amp;rsquo;ll have now created a plate layout template that can be linked to
any plate that matches the dimensions.&lt;/p&gt;
&lt;h3 id=&#34;create-a-template-from-a-json-file&#34;&gt;Create a template from a json file&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;Under construction!
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;viewing-a-template&#34;&gt;Viewing a template&lt;/h3&gt;
&lt;p&gt;In order to view details of a specific plate layout template navigate to the &lt;strong&gt;&lt;em&gt;Plate Layouts/Templates&lt;/em&gt;&lt;/strong&gt; menu item
in the &lt;strong&gt;Phaedra Navigator&lt;/strong&gt;.&lt;/p&gt;

&lt;figure&gt;
    &lt;img src=&#34;../img/nav_plate_layouts.png&#34; width=&#34;20%&#34; height=&#34;20%&#34;/&gt; 
&lt;/figure&gt;

&lt;p&gt;An overview table of all the plate layout templates will be displayed:&lt;/p&gt;

&lt;figure&gt;
    &lt;img src=&#34;../img/plate_layout_overview_table.png&#34; width=&#34;80%&#34; height=&#34;80%&#34;/&gt; 
&lt;/figure&gt;

&lt;ul&gt;
&lt;li&gt;To view the details of a specific plate layout template click on one of the rows (e.g. previously created)&lt;/li&gt;
&lt;li&gt;You&amp;rsquo;ll be navigated to the plate layout template details page:&lt;/li&gt;
&lt;/ul&gt;

&lt;figure&gt;
    &lt;img src=&#34;../img/plate_layout_example.png&#34; width=&#34;80%&#34; height=&#34;80%&#34;/&gt; 
&lt;/figure&gt;

&lt;h3 id=&#34;editing-a-template&#34;&gt;Editing a template&lt;/h3&gt;
&lt;p&gt;To Edit a existing template follow the steps from &lt;strong&gt;View Template&lt;/strong&gt; and &lt;strong&gt;Create Template&lt;/strong&gt; sections.&lt;/p&gt;
&lt;p&gt;Do not forget to click &lt;img src=&#34;../img/save_button.png&#34; alt=&#34;&#34;&gt; in order to save your changes!&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Documentation: Calculation Formulas</title>
      <link>/2.12.0/documentation/reference_docs/in_depth/calculation_formulas/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/2.12.0/documentation/reference_docs/in_depth/calculation_formulas/</guid>
      <description>
        
        
        &lt;p&gt;Calculation Formulas are the building blocks for defining &lt;strong&gt;features&lt;/strong&gt;, which in turn are the building blocks of &lt;strong&gt;protocols&lt;/strong&gt;.
One of the primary goals of Phaedra is to provide a flexible platform onto which diverse types of calculation can be defined and performed.
To this end, all calculations are modelled into &lt;strong&gt;formulas&lt;/strong&gt; that are clearly defined and controlled through a unique name and version number.
Making any kind of change to the formula will result in a new version being generated, and in protocols and resultsets you will always see which
version of a formula was used to obtain a calculation result.&lt;/p&gt;

&lt;figure&gt;
    &lt;img src=&#34;../img/formula_list.png&#34; width=&#34;70%&#34; height=&#34;70%&#34;/&gt; 
&lt;/figure&gt;

&lt;h2 id=&#34;the-formula-model&#34;&gt;The Formula Model&lt;/h2&gt;
&lt;p&gt;A Calculation Formula has several standard properties, such as a name, description and version number.
In addition, it has three settings that together define what kind of calculation the formula can perform.&lt;/p&gt;
&lt;h3 id=&#34;language&#34;&gt;Language&lt;/h3&gt;
&lt;p&gt;Is the programming language in which the formula is written.
Currently, two languages are supported: &lt;code&gt;R&lt;/code&gt; and &lt;code&gt;JavaStat&lt;/code&gt;. Future updates will bring support for additional languages
such as &lt;code&gt;Python&lt;/code&gt; and &lt;code&gt;JavaScript&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;scope&#34;&gt;Scope&lt;/h3&gt;
&lt;p&gt;This setting determines how many output values the formula is expected to return.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;PLATE&lt;/code&gt; indicates that the formula should return one value per whole plate. This scope is used in plate statistic formulas.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;WELL&lt;/code&gt; indicates that the formula should return one value per well. This scope is typically used in feature calculation formulas.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;formula&#34;&gt;Formula&lt;/h3&gt;
&lt;p&gt;The formula can be written in any one of the supported languages, and is expected to return one or multiple output values, depending
on the selected scope. The formula will automatically receive a number of input variables that it can use during its execution.&lt;/p&gt;
&lt;p&gt;The table below lists the input variables a formula will receive when configured in the &lt;code&gt;R&lt;/code&gt; language and &lt;code&gt;WELL&lt;/code&gt; scope:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Variable Name&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;input$wellNumbers&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Vector, length is the number of wells in the plate&lt;/td&gt;
&lt;td&gt;A vector of numeric values representing the well numbers.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;input$wellTypes&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Vector, length is the number of wells in the plate&lt;/td&gt;
&lt;td&gt;A vector of character values representing the well types.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;input$wellRows&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Vector, length is the number of wells in the plate&lt;/td&gt;
&lt;td&gt;A vector of numeric values representing the well row numbers.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;input$wellColumns&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Vector, length is the number of wells in the plate&lt;/td&gt;
&lt;td&gt;A vector of numeric values representing the well column numbers.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;input$wellStatus&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Vector, length is the number of wells in the plate&lt;/td&gt;
&lt;td&gt;A vector of numeric values representing the well status codes. If the value is &amp;lt;0, the well is rejected.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;input$lowWellType&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Character value&lt;/td&gt;
&lt;td&gt;The Low Control welltype code as defined in the protocol&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;input$highWellType&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Character value&lt;/td&gt;
&lt;td&gt;The High Control welltype code as defined in the protocol&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;em&gt;Note&lt;/em&gt;: all well-based vectors have the same order.&lt;/p&gt;
&lt;p&gt;In addition, if the formula is used for a feature in a protocol, it may define extra variables simply by referencing them from the &lt;code&gt;input&lt;/code&gt; object.
For example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-R&#34; data-lang=&#34;R&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# This formula computes a %EFFECT normalization using LC and HC controls&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;lcMedian&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;median&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;input&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;$&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;rawValue[input&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;$&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;wellStatus&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;input&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;$&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;wellTypes&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;LC&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;na.rm&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;TRUE&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;hcMedian&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;median&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;input&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;$&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;rawValue[input&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;$&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;wellStatus&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;input&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;$&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;wellTypes&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;HC&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;na.rm&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;TRUE&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;output&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;100&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;((&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;input&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;$&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;rawValue&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;lcMedian&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;hcMedian&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;lcMedian&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This formula uses several input variables such as &lt;code&gt;input$wellStatus&lt;/code&gt; and &lt;code&gt;input$wellTypes&lt;/code&gt;, but it also references a variable that is not defined in the table above: &lt;code&gt;input$rawValue&lt;/code&gt;.
When this formula is selected for use in a feature, a source for this &lt;code&gt;rawValue&lt;/code&gt; must be configured:&lt;/p&gt;

&lt;figure&gt;
    &lt;img src=&#34;../img/formula_civ.png&#34; width=&#34;50%&#34; height=&#34;50%&#34;/&gt; 
&lt;/figure&gt;

&lt;p&gt;Here, a measurement well column named &lt;code&gt;CellCount_AllRetained&lt;/code&gt; will be used to provide a vector of values for the &lt;code&gt;input$rawValue&lt;/code&gt; variable in the formula.
As you can see, the same formula can be used repeatedly in other features (even other protocols) to compute the same thing, but using other measurement columns or features as &lt;code&gt;rawValue&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;When using a measurement subwell column as the source, the variable will contain a list of vectors. Use the well number to index into the list and get a vector of values, one per cell.
For example, the expression &lt;code&gt;mean(input$rawValues[[5]])&lt;/code&gt; would return the mean value of all subwell items for well nr 5.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Documentation: Pipelines</title>
      <link>/2.12.0/documentation/reference_docs/in_depth/pipelines/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/2.12.0/documentation/reference_docs/in_depth/pipelines/</guid>
      <description>
        
        
        &lt;p&gt;Pipelines are a core concept in Phaedra, as they are the &amp;ldquo;glue&amp;rdquo; that bind data processing steps together in an automated fashion.
While they are entirely optional, and you can perform each step manually, you will save a lot of time and effort by using pipelines,
especially in large-volume projects or assays.&lt;/p&gt;
&lt;p&gt;But before a pipeline can be used, it must be set up correctly, a task which requires some knowledge about the Phaedra system and some careful configuration.
This section describes the more technical details of pipeline setup.&lt;/p&gt;
&lt;h2 id=&#34;the-pipeline-model&#34;&gt;The Pipeline Model&lt;/h2&gt;
&lt;p&gt;Pipelines have some evident properties such as a name, description, version number, etc. But at the heart of the pipeline model lies the &lt;strong&gt;definition&lt;/strong&gt;, which is
expressed as a JSON document.&lt;/p&gt;
&lt;p&gt;For more information about the JSON syntax, see:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.json.org/json-en.html&#34;&gt;https://www.json.org/json-en.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.w3schools.com/js/js_json_intro.asp&#34;&gt;https://www.w3schools.com/js/js_json_intro.asp&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The pipeline definition describes a series of &lt;strong&gt;steps&lt;/strong&gt;, where each step consists of a &lt;strong&gt;trigger&lt;/strong&gt; and an &lt;strong&gt;action&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;trigger&lt;/strong&gt; describes the event that should initiate the execution of the current step.&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;action&lt;/strong&gt; describes what should be done when the step gets executed.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;However, you&amp;rsquo;ll find that many steps actually omit the &lt;strong&gt;trigger&lt;/strong&gt; part. This is because most actions have an &lt;strong&gt;implicit trigger&lt;/strong&gt; that fires automatically
when the action is complete. The notable exception is the first step, which must always have an &lt;strong&gt;explicit trigger&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Consider the definition below:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;steps&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;trigger&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;MeasurementCaptured&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;config&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;pattern&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;.*Barcode1234.*&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;action&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;LinkPlateMeasurement&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;config&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;projectId&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;500&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;action&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;LinkPlateDefinition&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;config&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;My 8 x 12 Layout&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;action&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;CalculateProtocol&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;config&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;id&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;200&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The first step contains both a trigger (&lt;code&gt;MeasurementCaptured&lt;/code&gt;) and an action (&lt;code&gt;LinkPlateMeasurement&lt;/code&gt;).
This is pretty straightforward: whenever a new measurement is captured into Phaedra whose name matches the given pattern, a new &lt;strong&gt;pipeline execution&lt;/strong&gt; will begin for this pipeline.
The first thing that will happen in this execution, is that the new measurement will be linked to a plate in the project with ID 500. More details about the &lt;code&gt;LinkPlateMeasurement&lt;/code&gt; action
can be found further down in this document.&lt;/p&gt;
&lt;p&gt;The second step does not have an explicit trigger. This means that the step will be invoked automatically when the action of the previous step (&lt;code&gt;LinkPlateMeasurement&lt;/code&gt;) is completed.
At that moment, action &lt;code&gt;LinkPlateDefinition&lt;/code&gt; is invoked, taking the name of a layout definition (&lt;code&gt;My 8 x 12 Layout&lt;/code&gt;) as a parameter.&lt;/p&gt;
&lt;p&gt;The third and last step also uses an implicit trigger, and invokes the &lt;code&gt;CalculateProtocol&lt;/code&gt; action with protocol ID 200 as soon as the previous step&amp;rsquo;s &lt;code&gt;LinkPlateDefinition&lt;/code&gt; action is completed.&lt;/p&gt;
&lt;h2 id=&#34;pipeline-execution-variables&#34;&gt;Pipeline Execution Variables&lt;/h2&gt;
&lt;p&gt;During pipeline execution, variables are obtained and stored, to be passed on and used between the different steps of the pipeline.&lt;/p&gt;

&lt;figure&gt;
    &lt;img src=&#34;../img/pipeline_variables.png&#34; width=&#34;30%&#34; height=&#34;30%&#34;/&gt; 
&lt;/figure&gt;

&lt;p&gt;For example, the &lt;code&gt;MeasurementCaptured&lt;/code&gt; trigger will automatically capture two variables: &lt;code&gt;barcode&lt;/code&gt; and &lt;code&gt;measurementId&lt;/code&gt;, both obtained from the new measurement that was captured.
These variables are available to all subsequent triggers and actions of the pipeline, so that they can know which measurement is being dealt with.&lt;/p&gt;
&lt;p&gt;Similarly, the &lt;code&gt;LinkPlateMeasurement&lt;/code&gt; action will capture an additional variable &lt;code&gt;plateId&lt;/code&gt;, referencing the plate that the measurement was linked to.&lt;/p&gt;
&lt;h2 id=&#34;available-trigger-types&#34;&gt;Available Trigger Types&lt;/h2&gt;
&lt;p&gt;When designing a new pipeline, you can choose between several trigger types to start off pipeline execution.&lt;/p&gt;
&lt;h4 id=&#34;measurementcaptured&#34;&gt;MeasurementCaptured&lt;/h4&gt;
&lt;p&gt;This is a trigger that fires whenever a measurement gets captured by the Phaedra&amp;rsquo;s DataCapture system.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Configuration&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;pattern&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;A regular expression that will be matched to the source path of the captured measurement. If the pattern does not match, the trigger will not fire.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 id=&#34;event&#34;&gt;Event&lt;/h4&gt;
&lt;p&gt;This is a generic trigger that can fire whenever a Kafka event is received matching certain conditions. Please note that this is a more advanced trigger type.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Configuration&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;topic&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The name of the Kafka topic that should be listened to. Events from other topics will be ignore.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;key&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The key of the Kafka event that should fire the trigger. Events with a different key will be ignored.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;value&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The value that must match the Kafka message in order to fire the trigger.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;pattern&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;A regular expression that can be used instead of a literal value (see &lt;code&gt;value&lt;/code&gt; above) to match the Kafka message.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;selector&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;An optional JSON selector that can be used to select a substring of the Kafka message, if it is a JSON message.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;available-action-types&#34;&gt;Available Action Types&lt;/h3&gt;
&lt;p&gt;Below is a list of available action types you can choose from when building a pipeline. The same action type can be used repeatedly in a pipeline.&lt;/p&gt;
&lt;p&gt;Each action type will list, in addition to its available configuration settings, a list of required variables. These variables should be made available
by preceding steps. For example, using the &lt;code&gt;MeasurementCaptured&lt;/code&gt; trigger ensures the required variables for the &lt;code&gt;LinkPlateMeasurementAction&lt;/code&gt; action
will be available. If any required variables are not available at the time of execution, the execution will fail with an error message.&lt;/p&gt;
&lt;h4 id=&#34;linkplatemeasurementaction&#34;&gt;LinkPlateMeasurementAction&lt;/h4&gt;
&lt;p&gt;This action will link a measurement to a plate whose barcode matches the measurement&amp;rsquo;s.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Configuration&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;projectId&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The ID of the project to find a matching plate in to link with.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;experimentNamePattern&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;A regular expression that will be matched against the measurement source path and should contain at least one group, which captures the experiment name to use.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;experimentNamePatternGroup&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The number of the group in the &lt;code&gt;experimentNamePattern&lt;/code&gt; that captures the experiment name. Defaults to &lt;code&gt;1&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;createExperiment&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Set to &lt;code&gt;&amp;quot;true&amp;quot;&lt;/code&gt; to auto-create an experiment if no experiment is found that matches the experiment name (determined using &lt;code&gt;experimentNamePattern&lt;/code&gt;).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;createPlate&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Set to &lt;code&gt;&amp;quot;true&amp;quot;&lt;/code&gt; to auto-create a plate if no plate is found matching the measurement barcode in the target experiment.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Required Variables&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;barcode&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The barcode of the measurement, a plate with a matching barcode will be searched for.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;measurementId&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The ID of the measurement that will be linked to the plate.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 id=&#34;linkplatedefinitionaction&#34;&gt;LinkPlateDefinitionAction&lt;/h4&gt;
&lt;p&gt;This action will link a plate with a plate definition.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Configuration&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;source&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The source of the plate definition. Default value: &lt;code&gt;template&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;name&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The name that identifies the plate definition in its source.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Required Variables&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;plateId&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The ID of the plate the plate definition will be linked with.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 id=&#34;calculateprotocolaction&#34;&gt;CalculateProtocolAction&lt;/h4&gt;
&lt;p&gt;This action will execute a protocol on a plate.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Configuration&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;id&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The ID of the protocol that should be executed.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Required Variables&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;plateId&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The ID of the plate that should be calculated.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;measurementId&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The ID of the measurement that is linked to the plate and should be used for calculation.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

      </description>
    </item>
    
  </channel>
</rss>
