# IGA Library Prep Automated v3.0

## Overview

IGA Library Prep Automated v3.0 contains preset protocols that support the preparation of samples and libraries used for sequencing. These protocols can be used with the NovaSeq X Series Sequencing v2.0 workflow (which is installed separately). The protocols provide the following functions:

* File-based integration with the Hamilton robots that are used for liquid handling steps.
* Automated calculation of sample and buffer volumes.
* Automated calculation or display of reagents.
* When required, automatic step transition.

## Protocol 1: Sample Selection (IGA v3.0)

Protocol Type = Sample Prep

**Next Steps Configuration**

<figure><img src="/files/deQfxck3VmRw4XRq07jq" alt=""><figcaption></figcaption></figure>

* Step(s):
  * 1: Select Samples (IGA v3.0)
    * Assign Next Step = Automatic

### Step 1: Select Samples (IGA v3.0)

* Master Step Name = Sample Selection (IGA v3.0)
* Step Type = No Outputs

{% hint style="info" %}
The version of Sample Selection (IGA) master step name may be different depending on the version of IPP installed.
{% endhint %}

#### Automations

<figure><img src="/files/ySaIEaT6uQEw9dj5O2Ih" alt=""><figcaption></figcaption></figure>

<details>

<summary>Validate Sample Attributes (IGA v3.0)</summary>

* Trigger Location = Step
* Trigger Style = Automatic upon entry

{% code overflow="wrap" %}

```markup
bash -l -c "/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar -i {stepURI:v2:http} -u {username} -p {password} -t false -h false script:evaluateDynamicExpression \
-exp 'if (! submittedSample.hasValue(::Sample Type::)) { \
    fail(::Sample Type must be non-empty. Please update :: + submittedSample.::name::); \
}; \
acceptedSampleTypes = [::Genomic DNA::, ::Saliva::, ::Blood::]; \
if (! acceptedSampleTypes.contains(submittedSample.::Sample Type::)) { \
  fail(::Invalid Sample Type found for :: + submittedSample.::name:: + ::. Must be one of :: + acceptedSampleTypes.join(::, ::)); \
}; \
if (! submittedSample.hasValue(::Submitted Sample Labware Type::)) { \
    fail(::Submitted Sample Labware Type must be non-empty. Please update :: + submittedSample.::name::); \
}; \
acceptedSampleLabwareTypes = [::gDNA::, ::Saliva::, ::Blood1.3::, ::Blood2.7::, ::Blood7.5::, ::Blood10::]; \
if (! acceptedSampleLabwareTypes.contains(submittedSample.::Submitted Sample Labware Type::)) { \
  fail(::Invalid Submitted Sample Labware Type found for :: + submittedSample.::name:: + ::. Must be one of :: + acceptedSampleLabwareTypes.join(::, ::)); \
}; \
if (! submittedSample.hasValue(::Units::)) { \
    fail(::Units must be non-empty. Please update :: + submittedSample.::name::); \
}; \
if (submittedSample.::Sample Type:: == ::Genomic DNA:: && ! submittedSample.hasValue(::Sample Conc.::)) { \
    fail(::Sample Conc. must be non-empty for Genomic DNA samples. Please update :: + submittedSample.::name::); \
};' -log {compoundOutputFileLuid0} && \
/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/unified-product-analytics/automation/unified-product-analytics-automation.jar script:executeUPAAutomationScript -i {stepURI:v2} -u {username} -p {password} -l {compoundOutputFileLuid0} -s 'com/illumina/upa/scripts/common/register_sample.groovy' && /opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/unified-product-analytics/automation/unified-product-analytics-automation.jar script:executeUPAAutomationScript -i {stepURI:v2} -u {username} -p {password} -l {compoundOutputFileLuid0} -s 'com/illumina/upa/scripts/common/step_started.groovy'"
```

{% endcode %}

</details>

<details>

<summary>Sample Selection - Set Library prep method and Next steps (IGA v3.0)</summary>

* Trigger Location = Record Details
* Trigger Style = Automatic upon exit

{% code overflow="wrap" %}

```markup
bash -l -c "/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar -i {stepURI:v2} -u {username} -p {password} script:evaluateDynamicExpression -t false -h false -exp 'submittedSample.::Library Prep Method:: = step.::Library Prep Method::' -log {compoundOutputFileLuid0} && /opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar -i {stepURI:v2} -u {username} -p {password} script:evaluateDynamicExpression -t false -h false -exp 'if (submittedSample.::Sample Type:: == ::Genomic DNA:: && input.container.node.type[0].@name == ::96 well plate::) {nextStep = ::REMOVE::} else nextStep = ::ADVANCE::' -log {compoundOutputFileLuid0}"
```

{% endcode %}

</details>

<details>

<summary>Sample Selection - Route plated gDNA (IGA v3.0)</summary>

* Trigger Location = Step
* Trigger Style = Automatic upon exit

{% code overflow="wrap" %}

```markup
bash -c "/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar -i {stepURI:v2} -u {username} -p {password} script:evaluateDynamicExpression -t false -h false -exp 'if (submittedSample.::Sample Type:: == ::Genomic DNA::) {if (input.container.node.type[0].@name == ::96 well plate:: && step.::Library Prep Method:: == ::Illumina DNA PCR-Free:: ) {input.::Submitted Sample Type:: = submittedSample.::Sample Type:: + ::_Illumina DNA PCR-Free::} ; if (input.container.node.type[0].@name == ::96 well plate:: && step.::Library Prep Method:: == ::Illumina DNA with Enrichment::) {input.::Submitted Sample Type:: = submittedSample.::Sample Type:: + ::_Illumina DNA with Enrichment::}}' -log {compoundOutputFileLuid0} && /opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar -u {username} -p {password} -i {stepURI:v2} -l {compoundOutputFileLuid0} script:changeWorkflow \
\
--FIELD_NAME 'Submitted Sample Type' \
--FIELD_VALUE 'Genomic DNA_Illumina DNA PCR-Free' \
--WORKFLOW 'IGA LibraryPrep Automated (IGA v3.0)' \
--STEP 'DNA Batching PCR-Free (IGA v3.0)' \
--INPUTS_OR_OUTPUTS 'INPUTS' \
\
--FIELD_NAME 'Submitted Sample Type' \
--FIELD_VALUE 'Genomic DNA_Illumina DNA with Enrichment' \
--WORKFLOW 'IGA LibraryPrep Automated (IGA v3.0)' \
--STEP 'DNA Batching with Enrichment (IGA v3.0)' \
--INPUTS_OR_OUTPUTS 'INPUTS' \
&& /opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/unified-product-analytics/automation/unified-product-analytics-automation.jar script:executeUPAAutomationScript -i {stepURI:v2} -u {username} -p {password} -l {compoundOutputFileLuid0} -s 'com/illumina/upa/scripts/common/step_completed.groovy'"
```

{% endcode %}

> ℹ The actual version of workflow(s) and/or step(s) used in the automation script may be different depending on the version of IPP installed.

</details>

#### Queue

* Defaults
  * Sample Grouping = Group by Containers
  * Well Sort Order = Row
* Sample Table (Column Headers)

  | **Category**   | **Field Name**      | **Field Type** | **Options** | **Additional Options and Dropdown Items** |
  | -------------- | ------------------- | -------------- | ----------- | ----------------------------------------- |
  | Container      | Container Name      | Built-in       |             |                                           |
  | Container      | LIMS ID (Container) | Built-in       |             |                                           |
  | Container      | Well                | Built-in       |             |                                           |
  | Derived Sample | Sample Name         | Built-in       |             |                                           |
  | Derived Sample | Waiting             | Built-in       |             |                                           |
  | Project        | Project Name        | Built-in       |             |                                           |

#### Ice Bucket

* Defaults
  * Sample Grouping = Group by Containers
  * Well Sort Order = Row
* Sample Table (Column Headers)

  | **Category**   | **Field Name**      | **Field Type** | **Options** | **Additional Options and Dropdown Items** |
  | -------------- | ------------------- | -------------- | ----------- | ----------------------------------------- |
  | Container      | Container Name      | Built-in       |             |                                           |
  | Container      | LIMS ID (Container) | Built-in       |             |                                           |
  | Container      | Well                | Built-in       |             |                                           |
  | Derived Sample | Sample Name         | Built-in       |             |                                           |
  | Derived Sample | Waiting             | Built-in       |             |                                           |
  | Project        | Project Name        | Built-in       |             |                                           |

#### Record Details

* Step Data (Master Step Fields)

  | **Field Name**                              | **Field Type** | **Options**    | **Additional Options and Dropdown Items**                                                                  |
  | ------------------------------------------- | -------------- | -------------- | ---------------------------------------------------------------------------------------------------------- |
  | IGA WF Build Version                        | Text           | Read Only      | Default = 3.0.0.5-SNAPSHOT                                                                                 |
  | Library Prep Method                         | Text Dropdown  | Required Field | <p>Presets</p><ul><li>Illumina DNA PCR-Free</li><li>Illumina DNA with Enrichment</li></ul>                 |
  | Quick reference checklist: Sample Selection | Multiline Text | Read Only      | <p>Default =<br>User tasks for this page:<br>- Select Library Prep Method above<br>- Select Next Steps</p> |
* Sample Table
  * Sample Display Default = Collapse
  * Well Sort Order = Column
  * Table Columns - Global Fields

    | **Category**   | **Field Name** | **Field Type** | **Options** | **Additional Options and Dropdown Items** |
    | -------------- | -------------- | -------------- | ----------- | ----------------------------------------- |
    | Derived Sample | Sample Name    | Built-in       |             |                                           |

## Protocol 2: Sample Plating (IGA v3.0)

Protocol Type = Sample Prep

**Next Steps Configuration**

<figure><img src="/files/LZJIYvy8FGRLV1DGvBAm" alt=""><figcaption></figcaption></figure>

* Step(s):
  * 1: Plate Samples (IGA v3.0)
    * Assign Next Step = Automatic

### Step 1: Plate Samples (IGA v3.0)

* Master Step Name = Sample Plating (IGA v3.0)
* Step Type = Standard
* Derived Sample Generation = Variable, 3
* Naming Convention = {InputItemName}

{% hint style="info" %}
The version of Sample Plating (IGA) master step name may be different depending on the version of IPP installed.
{% endhint %}

#### Automations

<figure><img src="/files/GYkSCNdndLoYfI7PHSsz" alt=""><figcaption></figcaption></figure>

<details>

<summary>Sample Plating &#x26; Extraction - Validate Single Sample Type and Library Prep Method (IGA v3.0)</summary>

* Trigger Location = Step
* Trigger Style = Automatic upon entry

{% code overflow="wrap" %}

```markup
bash -l -c "/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar \
-i {stepURI:v2:http} \
-u {username} \
-p {password} \
script:evaluateDynamicExpression \
-t false \
-h false \
-exp 'if (!step.hasValue(::Step Sample Type::)) {step.::Step Sample Type:: = submittedSample.::Sample Type:: + :: [:: + submittedSample.::Library Prep Method:: + ::]::} else {if ( step.::Step Sample Type:: != submittedSample.::Sample Type:: + :: [:: + submittedSample.::Library Prep Method:: + ::]:: ) { fail(::Samples must be of the same type and marked for same library prep method::) }}' \
-log {compoundOutputFileLuid1} \
&& /opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/unified-product-analytics/automation/unified-product-analytics-automation.jar script:executeUPAAutomationScript -i {stepURI:v2} -u {username} -p {password} -l {compoundOutputFileLuid1} -s 'com/illumina/upa/scripts/common/step_started.groovy'"
```

{% endcode %}

</details>

<details>

<summary>Placement Reminder (IGA v3.0)</summary>

* Trigger Location = Placement
* Trigger Style = Automatic upon entry

{% code overflow="wrap" %}

```markup
bash -l -c "/usr/bin/env python3 /opt/gls/clarity/extensions/IGA_3.0/iga_helpers/pop_up_msg.py -s {stepURI} -u {username} -p {password} -w 'OK' --message 'Please place all samples starting from position A:1, do not leave any gaps.'"
```

{% endcode %}

</details>

<details>

<summary>Sample Plating - Sample Placement SAM Plate Barcode Uniqueness Check (IGA v3.0)</summary>

* Trigger Location = Placement
* Trigger Style = Automatic upon exit

{% code overflow="wrap" %}

```markup
bash -l -c "/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar -i {stepURI:v2:http} -u {username} -p {password} script:evaluateDynamicExpression -exp 'if ( !output.container.name.matches( ::LP[0-9]{7}-SAM:: ) ) {fail ( ::Invalid SAM Plate Barcode format. This plate ID must be in the format LPxxxxxxx-SAM, where 'x' is a digit 0-9, e.g. LP1234567-SAM. Please verify and try again.:: ) }' -log {compoundOutputFileLuid1} && \
/usr/bin/env python3 /opt/gls/clarity/extensions/IGA_3.0/hamilton_fast_prep/01_A_CFP_Batching_defaultContainerCheck.py -u {username} -p {password} -s {stepURI} && \
/usr/bin/env python3 /opt/gls/clarity/extensions/IGA_3.0/hamilton_fast_prep/validate_sample_placement.py -u {username} -p {password} -s {stepURI}"
```

{% endcode %}

</details>

<details>

<summary>Sample Plating - Set Transfer Volume &#x26; Create LHR Input File (IGA v3.0)</summary>

* Trigger Location = Record Details
* Trigger Style = Manual button

{% code overflow="wrap" %}

```markup
bash -l -c "/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar \
-i {stepURI:v2:http} \
-u {username} \
-p {password} \
script:evaluateDynamicExpression \
-t false \
-h false \
-exp 'if (submittedSample.::Sample Type:: == ::Blood::) {output.::Transfer Volume (ul):: = 30} ;  if (submittedSample.::Sample Type:: == ::Saliva::) {output.::Transfer Volume (ul):: = 60}; if (submittedSample.::Sample Type:: == ::Genomic DNA::) {output.::Transfer Volume (ul):: = 45}' \
-log {compoundOutputFileLuid1} &&
/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/DriverFileGenerator.jar \
script:driver_file_generator \
-i {stepURI:v2} \
-u {username} \
-p {password} \
-q true \
-destLIMSID {compoundOutputFileLuid0} \
-t /opt/gls/clarity/extensions/IGA_3.0/hamilton_fast_prep/templatefiles/PlatingInputFile_template.csv \
-o Output_plate_name.csv \
-l {compoundOutputFileLuid1}"
```

{% endcode %}

</details>

<details>

<summary>Sample Plating - LHR Output Plate Barcode Check, Store Instrument ID &#x26; Set Next Steps to Remove from Workflow before Custom Routing (IGA v3.0)</summary>

* Trigger Location = Record Details
* Trigger Style = Automatic upon exit

{% code overflow="wrap" %}

```markup
bash -l -c "/usr/bin/env python3 /opt/gls/clarity/extensions/IGA_3.0/hamilton_fast_prep/01_CFP_Batching_confirmPlateIDAndStoreInstrumentID.py -u {username} -p {password} -s {stepURI} -f {compoundOutputFileLuid2} -i 'LHR Instrument ID' && /opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar \
-i {stepURI} \
-u {username} \
-p {password} \
script:evaluateDynamicExpression \
-t false \
-h false \
-exp 'nextStep = ::REMOVE:: ' \
-log {compoundOutputFileLuid1}"
```

{% endcode %}

</details>

<details>

<summary>Sample Plating - Route samples (IGA v3.0)</summary>

* Trigger Location = Step
* Trigger Style = Automatic upon exit

{% code overflow="wrap" %}

```markup
bash -l -c "/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar \
-i {stepURI:v2:http} \
-u {username} \
-p {password} \
script:evaluateDynamicExpression \
-t false \
-h false \
-exp 'if (submittedSample.::Library Prep Method::.toLowerCase().contains(::enrichment::)) {output.::Submitted Sample Type:: = submittedSample.::Sample Type:: + ::_Illumina DNA with Enrichment:: } else if (submittedSample.::Library Prep Method::.contains(::PCR-Free::)) {output.::Submitted Sample Type:: = submittedSample.::Sample Type:: + ::_Illumina DNA PCR-Free::}' \
-log {compoundOutputFileLuid1} \
&& /opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar -u {username} -p {password} -i {stepURI:v2} -l {compoundOutputFileLuid0} script:changeWorkflow \
\
--FIELD_NAME 'Submitted Sample Type' \
--FIELD_VALUE 'Blood_Illumina DNA PCR-Free' \
--WORKFLOW 'IGA LibraryPrep Automated (IGA v3.0)' \
--STEP 'DNA Extraction - Blood (IGA v3.0)' \
--INPUTS_OR_OUTPUTS 'OUTPUTS' \
\
--FIELD_NAME 'Submitted Sample Type' \
--FIELD_VALUE 'Saliva_Illumina DNA PCR-Free' \
--WORKFLOW 'IGA LibraryPrep Automated (IGA v3.0)' \
--STEP 'DNA Extraction - Saliva (IGA v3.0)' \
--INPUTS_OR_OUTPUTS 'OUTPUTS' \
\
--FIELD_NAME 'Submitted Sample Type' \
--FIELD_VALUE 'Genomic DNA_Illumina DNA PCR-Free' \
--WORKFLOW 'IGA LibraryPrep Automated (IGA v3.0)' \
--STEP 'DNA Batching PCR-Free (IGA v3.0)' \
--INPUTS_OR_OUTPUTS 'OUTPUTS' \
\
--FIELD_NAME 'Submitted Sample Type' \
--FIELD_VALUE 'Blood_Illumina DNA with Enrichment' \
--WORKFLOW 'IGA LibraryPrep Automated (IGA v3.0)' \
--STEP 'DNA Extraction - Blood (IGA v3.0)' \
--INPUTS_OR_OUTPUTS 'OUTPUTS' \
\
--FIELD_NAME 'Submitted Sample Type' \
--FIELD_VALUE 'Saliva_Illumina DNA with Enrichment' \
--WORKFLOW 'IGA LibraryPrep Automated (IGA v3.0)' \
--STEP 'DNA Extraction - Saliva (IGA v3.0)' \
--INPUTS_OR_OUTPUTS 'OUTPUTS' \
\
--FIELD_NAME 'Submitted Sample Type' \
--FIELD_VALUE 'Genomic DNA_Illumina DNA with Enrichment' \
--WORKFLOW 'IGA LibraryPrep Automated (IGA v3.0)' \
--STEP 'DNA Batching with Enrichment (IGA v3.0)' \
--INPUTS_OR_OUTPUTS 'OUTPUTS' \
&& /opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/unified-product-analytics/automation/unified-product-analytics-automation.jar script:executeUPAAutomationScript -i {stepURI:v2} -u {username} -p {password} -l {compoundOutputFileLuid1} -s 'com/illumina/upa/scripts/common/step_completed.groovy'"
```

{% endcode %}

> ℹ The actual version of workflow(s) and/or step(s) used in the automation script may be different depending on the version of IPP installed.

</details>

#### Queue

* Defaults
  * Sample Grouping = Group by Projects
  * Well Sort Order = Column
* Sample Table (Column Headers)

  | **Category**   | **Field Name** | **Field Type** | **Options** | **Additional Options and Dropdown Items** |
  | -------------- | -------------- | -------------- | ----------- | ----------------------------------------- |
  | Derived Sample | Waiting        | Built-in       |             |                                           |

#### Ice Bucket

* Defaults
  * Sample Grouping = Group by Projects
  * Well Sort Order = Column

#### Placement = Enabled

* Defaults
  * Sample Grouping = Group by Projects
  * Well Sort Order = Column
  * Placement Pattern = Column
* Destination Containers
  * 96 well plate

#### Record Details

* Step Data (Master Step Fields)

  | **Field Name**                                          | **Field Type** | **Options** | **Additional Options and Dropdown Items**                                                                |
  | ------------------------------------------------------- | -------------- | ----------- | -------------------------------------------------------------------------------------------------------- |
  | LHR Instrument ID                                       | Text           | Read Only   |                                                                                                          |
  | Quick reference checklist: Sample Plating. i) pre LHR   | Multiline Text | Read Only   | <p>Default =<br>User tasks for this page:<br>- Select blue 'Run' button<br>- Download LHR Input File</p> |
  | Quick reference checklist: Sample Plating. ii) post LHR | Multiline Text | Read Only   | <p>Default =<br>User tasks continued:<br>- Upload resulting LHR Output File<br>- Select Next Steps</p>   |
  | Step Sample Type                                        | Text           | Read Only   |                                                                                                          |
* Sample Table
  * Sample Display Default = Expand
  * Well Sort Order = Column
  * Table Columns - Global Fields

    | **Category**   | **Field Name**        | **Field Type** | **Options** | **Additional Options and Dropdown Items** |
    | -------------- | --------------------- | -------------- | ----------- | ----------------------------------------- |
    | Container      | Container Name        | Built-in       |             |                                           |
    | Container      | LIMS ID (Container)   | Built-in       |             |                                           |
    | Container      | Well                  | Built-in       |             |                                           |
    | Derived Sample | Sample Name           | Built-in       |             |                                           |
    | Derived Sample | Submitted Sample Type | Text           | Read Only   |                                           |
    | Derived Sample | Transfer Volume (ul)  | Numeric        |             |                                           |

## Protocol 3: Blood Extraction (IGA v3.0)

Protocol Type = Sample Prep

**Next Steps Configuration**

<figure><img src="/files/4kib5fTfqAxJo1BYJs9g" alt=""><figcaption></figcaption></figure>

* Step(s):
  * 1: DNA Extraction - Blood (IGA v3.0)
    * Assign Next Step = Automatic

### Step 1: DNA Extraction - Blood (IGA v3.0)

* Master Step Name = DNA Extraction - Blood (IGA v3.0)
* Step Type = Standard
* Derived Sample Generation = Fixed, 1
* Naming Convention = {InputItemName}

{% hint style="info" %}
The version of DNA Extraction - Blood (IGA) master step name may be different depending on the version of IPP installed.
{% endhint %}

#### Automations

<figure><img src="/files/B5bwgduL5bPiIBfzJ2GY" alt=""><figcaption></figcaption></figure>

<details>

<summary>Sample Plating &#x26; Extraction - Validate Single Sample Type and Library Prep Method (IGA v3.0)</summary>

* Trigger Location = Step
* Trigger Style = Automatic upon entry

{% code overflow="wrap" %}

```markup
bash -l -c "/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar \
-i {stepURI:v2:http} \
-u {username} \
-p {password} \
script:evaluateDynamicExpression \
-t false \
-h false \
-exp 'if (!step.hasValue(::Step Sample Type::)) {step.::Step Sample Type:: = submittedSample.::Sample Type:: + :: [:: + submittedSample.::Library Prep Method:: + ::]::} else {if ( step.::Step Sample Type:: != submittedSample.::Sample Type:: + :: [:: + submittedSample.::Library Prep Method:: + ::]:: ) { fail(::Samples must be of the same type and marked for same library prep method::) }}' \
-log {compoundOutputFileLuid1} \
&& /opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/unified-product-analytics/automation/unified-product-analytics-automation.jar script:executeUPAAutomationScript -i {stepURI:v2} -u {username} -p {password} -l {compoundOutputFileLuid1} -s 'com/illumina/upa/scripts/common/step_started.groovy'"
```

{% endcode %}

</details>

<details>

<summary>Extraction - Sample Placement EDP Plate Barcode Uniqueness Check (IGA v3.0)</summary>

* Trigger Location = Placement
* Trigger Style = Automatic upon exit

{% code overflow="wrap" %}

```markup
bash -l -c "/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar -i {stepURI:v2:http} -u {username} -p {password} script:evaluateDynamicExpression -exp 'if ( !output.container.name.matches( ::LP[0-9]{7}-EDP:: ) ) {fail ( ::Update: Invalid EDP (Extracted DNA Plate) barcode format. This plate ID must be in the format LPxxxxxxx-EDP, where 'x' is a digit 0-9, e.g. LP1234567-EDP. Please verify and try again.:: ) }' -log {compoundOutputFileLuid1} && /usr/bin/env python3 /opt/gls/clarity/extensions/IGA_3.0/hamilton_fast_prep/01_A_CFP_Batching_defaultContainerCheck.py -u {username} -p {password} -s {stepURI}"
```

{% endcode %}

</details>

<details>

<summary>Extraction - Count Samples &#x26; Create LHR Input File (IGA v3.0)</summary>

* Trigger Location = Record Details
* Trigger Style = Automatic upon entry

{% code overflow="wrap" %}

```markup
bash -l -c "/usr/bin/env python3 /opt/gls/clarity/extensions/IGA_3.0/hamilton_fast_prep/countSamples.py -u {username} -p {password} -s {stepURI} -f 'Sample Count' \
&& \
/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/DriverFileGenerator.jar \
script:driver_file_generator \
-i {stepURI:v2} \
-u {username} \
-p {password} \
-q true \
-destLIMSID {compoundOutputFileLuid0} \
-t /opt/gls/clarity/extensions/IGA_3.0/hamilton_fast_prep/templatefiles/ExtractionInputFile_template.csv \
-o Output_plate_name.csv \
-l {compoundOutputFileLuid1}"
```

{% endcode %}

</details>

<details>

<summary>Extraction - Check LHR Output File Barcode &#x26; Parse Reagent Info &#x26; Check for Missing Barcodes &#x26; Set Next Steps to Remove from Workflow (IGA v3.0)</summary>

* Trigger Location = Record Details
* Trigger Style = Automatic upon exit

{% code overflow="wrap" %}

```markup
bash -l -c "/usr/bin/env python3 /opt/gls/clarity/extensions/IGA_3.0/hamilton_fast_prep/01_CFP_Batching_confirmPlateIDAndStoreInstrumentID.py -u {username} -p {password} -s {stepURI} -f {compoundOutputFileLuid2} -i  'LHR Instrument ID' \
&& \
/usr/bin/env python3 /opt/gls/clarity/extensions/IGA_3.0/hamilton_fast_prep/02_ReagentParsing.py -u {username} -p {password} -s {stepURI} -f {compoundOutputFileLuid2} -m /opt/gls/clarity/extensions/IGA_3.0/hamilton_fast_prep/reagent_parsing/fieldmap_extraction.csv \
&& \
/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar \
-i {stepURI:v2:http} \
-u {username} \
-p {password} \
script:evaluateDynamicExpression \
-t false \
-h false \
-exp ' if (!step.hasValue (::MLB::) || !step.hasValue(::ProK::)) { fail(::Please scan barcodes for MLB and ProK before proceeding.::) } ; if (submittedSample.::Sample Type:: == ::Blood:: || submittedSample.::Sample Type:: == ::Saliva::) { nextStep = ::REMOVE:: }' \
-log {compoundOutputFileLuid1}"
```

{% endcode %}

</details>

<details>

<summary>Extraction - Routing (IGA v3.0)</summary>

* Trigger Location = Step
* Trigger Style = Automatic upon exit

{% code overflow="wrap" %}

```markup
bash -l -c "/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar \
-i {stepURI:v2:http} \
-u {username} \
-p {password} \
script:evaluateDynamicExpression \
-t false \
-h false \
-exp 'if (submittedSample.::Library Prep Method::.toLowerCase().contains(::enrichment::)) { output.::Submitted Sample Type:: = submittedSample.::Sample Type:: + ::_Illumina DNA with Enrichment:: } else if (submittedSample.::Library Prep Method::.contains(::PCR-Free::)) {output.::Submitted Sample Type:: = submittedSample.::Sample Type:: + ::_Illumina DNA PCR-Free::}' \
-log {compoundOutputFileLuid1} \
&& /opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar -u {username} -p {password} -i {stepURI:v2} -l {compoundOutputFileLuid0} script:changeWorkflow \
\
--FIELD_NAME 'Submitted Sample Type' \
--FIELD_VALUE 'Blood_Illumina DNA PCR-Free' \
--WORKFLOW 'IGA LibraryPrep Automated (IGA v3.0)' \
--STEP 'DNA Batching PCR-Free (IGA v3.0)' \
--INPUTS_OR_OUTPUTS 'OUTPUTS' \
\
--FIELD_NAME 'Submitted Sample Type' \
--FIELD_VALUE 'Saliva_Illumina DNA PCR-Free' \
--WORKFLOW 'IGA LibraryPrep Automated (IGA v3.0)' \
--STEP 'DNA Batching PCR-Free (IGA v3.0)' \
--INPUTS_OR_OUTPUTS 'OUTPUTS' \
\
--FIELD_NAME 'Submitted Sample Type' \
--FIELD_VALUE 'Genomic DNA_Illumina DNA PCR-Free' \
--WORKFLOW 'IGA LibraryPrep Automated (IGA v3.0)' \
--STEP 'DNA Batching PCR-Free (IGA v3.0)' \
--INPUTS_OR_OUTPUTS 'OUTPUTS' \
\
--FIELD_NAME 'Submitted Sample Type' \
--FIELD_VALUE 'Blood_Illumina DNA with Enrichment' \
--WORKFLOW 'IGA LibraryPrep Automated (IGA v3.0)' \
--STEP 'DNA Batching with Enrichment (IGA v3.0)' \
--INPUTS_OR_OUTPUTS 'OUTPUTS' \
\
--FIELD_NAME 'Submitted Sample Type' \
--FIELD_VALUE 'Saliva_Illumina DNA with Enrichment' \
--WORKFLOW 'IGA LibraryPrep Automated (IGA v3.0)' \
--STEP 'DNA Batching with Enrichment (IGA v3.0)' \
--INPUTS_OR_OUTPUTS 'OUTPUTS' \
\
--FIELD_NAME 'Submitted Sample Type' \
--FIELD_VALUE 'Genomic DNA_Illumina DNA with Enrichment' \
--WORKFLOW 'IGA LibraryPrep Automated (IGA v3.0)' \
--STEP 'DNA Batching with Enrichment (IGA v3.0)' \
--INPUTS_OR_OUTPUTS 'OUTPUTS' \
&& /opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/unified-product-analytics/automation/unified-product-analytics-automation.jar script:executeUPAAutomationScript -i {stepURI:v2} -u {username} -p {password} -l {compoundOutputFileLuid1} -s 'com/illumina/upa/scripts/common/step_completed.groovy'"
```

{% endcode %}

> ℹ The actual version of workflow(s) and/or step(s) used in the automation script may be different depending on the version of IPP installed.

</details>

#### Queue

* Defaults
  * Sample Grouping = Group by Containers
  * Well Sort Order = Column
* Sample Table (Column Headers)

  | **Category**   | **Field Name** | **Field Type** | **Options** | **Additional Options and Dropdown Items** |
  | -------------- | -------------- | -------------- | ----------- | ----------------------------------------- |
  | Derived Sample | Waiting        | Built-in       |             |                                           |

#### Ice Bucket

* Defaults
  * Sample Grouping = Group by Containers
  * Well Sort Order = Column

#### Placement = Enabled

* Defaults
  * Sample Grouping = Group by Containers
  * Well Sort Order = Column
  * Placement Pattern = Column
* Destination Containers
  * 96 well plate

#### Record Details

* Step Data (Master Step Fields)

  | **Field Name**                                                  | **Field Type** | **Options** | **Additional Options and Dropdown Items**                                                                                                                                                                                             |
  | --------------------------------------------------------------- | -------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
  | Ethanol                                                         | Text           |             |                                                                                                                                                                                                                                       |
  | ITB                                                             | Text           |             |                                                                                                                                                                                                                                       |
  | LHR Instrument ID                                               | Text           | Read Only   |                                                                                                                                                                                                                                       |
  | MLB                                                             | Text           |             |                                                                                                                                                                                                                                       |
  | ProK                                                            | Text           |             |                                                                                                                                                                                                                                       |
  | Quick reference checklist: DNA Extraction - Blood. i) pre LHR   | Multiline Text | Read Only   | <p>Default =<br>User tasks for this page:<br>- Download LHR Input File<br>- Enter reagent lots for MLB and ProK (not scanned by LHR as loaded as a mastermix)</p>                                                                     |
  | Quick reference checklist: DNA Extraction - Blood. ii) post LHR | Multiline Text | Read Only   | <p>Default =<br>User tasks continued:<br>- After running Extraction on the liquid handler, upload the resulting LHR Output File<br>- Select Next Steps (RSB, ITB and Ethanol lots will populate automatically on the next screen)</p> |
  | RSB                                                             | Text           |             |                                                                                                                                                                                                                                       |
  | Sample Count                                                    | Numeric        | Read Only   | Default = 0                                                                                                                                                                                                                           |
  | Step Sample Type                                                | Text           | Read Only   |                                                                                                                                                                                                                                       |
* Sample Table
  * Sample Display Default = Collapse
  * Well Sort Order = Column
  * Table Columns - Global Fields

    | **Category**   | **Field Name**        | **Field Type** | **Options** | **Additional Options and Dropdown Items** |
    | -------------- | --------------------- | -------------- | ----------- | ----------------------------------------- |
    | Container      | Container             | Built-in       |             |                                           |
    | Container      | Container Name        | Built-in       |             |                                           |
    | Container      | LIMS ID (Container)   | Built-in       |             |                                           |
    | Container      | Well                  | Built-in       |             |                                           |
    | Derived Sample | Sample Name           | Built-in       |             |                                           |
    | Derived Sample | Submitted Sample Type | Text           | Read Only   |                                           |
    | Project        | Project Name          | Built-in       |             |                                           |

## Protocol 4: Saliva Extraction (IGA v3.0)

Protocol Type = Sample Prep

**Next Steps Configuration**

<figure><img src="/files/PcZfE4A36G9AyG9mokOr" alt=""><figcaption></figcaption></figure>

* Step(s):
  * 1: DNA Extraction - Saliva (IGA v3.0)
    * Assign Next Step = Automatic

### Step 1: DNA Extraction - Saliva (IGA v3.0)

* Master Step Name = DNA Extraction - Saliva (IGA v3.0)
* Step Type = Standard
* Derived Sample Generation = Fixed, 1
* Naming Convention = {InputItemName}

{% hint style="info" %}
The version of DNA Extraction - Saliva (IGA) master step name may be different depending on the version of IPP installed.
{% endhint %}

#### Automations

<figure><img src="/files/UiMAlayBKVcEV0WSiVrY" alt=""><figcaption></figcaption></figure>

<details>

<summary>Sample Plating &#x26; Extraction - Validate Single Sample Type and Library Prep Method (IGA v3.0)</summary>

* Trigger Location = Step
* Trigger Style = Automatic upon entry

{% code overflow="wrap" %}

```markup
bash -l -c "/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar \
-i {stepURI:v2:http} \
-u {username} \
-p {password} \
script:evaluateDynamicExpression \
-t false \
-h false \
-exp 'if (!step.hasValue(::Step Sample Type::)) {step.::Step Sample Type:: = submittedSample.::Sample Type:: + :: [:: + submittedSample.::Library Prep Method:: + ::]::} else {if ( step.::Step Sample Type:: != submittedSample.::Sample Type:: + :: [:: + submittedSample.::Library Prep Method:: + ::]:: ) { fail(::Samples must be of the same type and marked for same library prep method::) }}' \
-log {compoundOutputFileLuid1} \
&& /opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/unified-product-analytics/automation/unified-product-analytics-automation.jar script:executeUPAAutomationScript -i {stepURI:v2} -u {username} -p {password} -l {compoundOutputFileLuid1} -s 'com/illumina/upa/scripts/common/step_started.groovy'"
```

{% endcode %}

</details>

<details>

<summary>Extraction - Sample Placement EDP Plate Barcode Uniqueness Check (IGA v3.0)</summary>

* Trigger Location = Placement
* Trigger Style = Automatic upon exit

{% code overflow="wrap" %}

```markup
bash -l -c "/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar -i {stepURI:v2:http} -u {username} -p {password} script:evaluateDynamicExpression -exp 'if ( !output.container.name.matches( ::LP[0-9]{7}-EDP:: ) ) {fail ( ::Update: Invalid EDP (Extracted DNA Plate) barcode format. This plate ID must be in the format LPxxxxxxx-EDP, where 'x' is a digit 0-9, e.g. LP1234567-EDP. Please verify and try again.:: ) }' -log {compoundOutputFileLuid1} && /usr/bin/env python3 /opt/gls/clarity/extensions/IGA_3.0/hamilton_fast_prep/01_A_CFP_Batching_defaultContainerCheck.py -u {username} -p {password} -s {stepURI}"
```

{% endcode %}

</details>

<details>

<summary>Extraction - Count Samples &#x26; Create LHR Input File (IGA v3.0)</summary>

* Trigger Location = Record Details
* Trigger Style = Automatic upon entry

{% code overflow="wrap" %}

```markup
bash -l -c "/usr/bin/env python3 /opt/gls/clarity/extensions/IGA_3.0/hamilton_fast_prep/countSamples.py -u {username} -p {password} -s {stepURI} -f 'Sample Count' \
&& \
/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/DriverFileGenerator.jar \
script:driver_file_generator \
-i {stepURI:v2} \
-u {username} \
-p {password} \
-q true \
-destLIMSID {compoundOutputFileLuid0} \
-t /opt/gls/clarity/extensions/IGA_3.0/hamilton_fast_prep/templatefiles/ExtractionInputFile_template.csv \
-o Output_plate_name.csv \
-l {compoundOutputFileLuid1}"
```

{% endcode %}

</details>

<details>

<summary>Extraction - Check LHR Output File Barcode &#x26; Parse Reagent Info &#x26; Check for Missing Barcodes &#x26; Set Next Steps to Remove from Workflow (IGA v3.0)</summary>

* Trigger Location = Record Details
* Trigger Style = Automatic upon exit

{% code overflow="wrap" %}

```markup
bash -l -c "/usr/bin/env python3 /opt/gls/clarity/extensions/IGA_3.0/hamilton_fast_prep/01_CFP_Batching_confirmPlateIDAndStoreInstrumentID.py -u {username} -p {password} -s {stepURI} -f {compoundOutputFileLuid2} -i  'LHR Instrument ID' \
&& \
/usr/bin/env python3 /opt/gls/clarity/extensions/IGA_3.0/hamilton_fast_prep/02_ReagentParsing.py -u {username} -p {password} -s {stepURI} -f {compoundOutputFileLuid2} -m /opt/gls/clarity/extensions/IGA_3.0/hamilton_fast_prep/reagent_parsing/fieldmap_extraction.csv \
&& \
/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar \
-i {stepURI:v2:http} \
-u {username} \
-p {password} \
script:evaluateDynamicExpression \
-t false \
-h false \
-exp ' if (!step.hasValue (::MLB::) || !step.hasValue(::ProK::)) { fail(::Please scan barcodes for MLB and ProK before proceeding.::) } ; if (submittedSample.::Sample Type:: == ::Blood:: || submittedSample.::Sample Type:: == ::Saliva::) { nextStep = ::REMOVE:: }' \
-log {compoundOutputFileLuid1}"
```

{% endcode %}

</details>

<details>

<summary>Extraction - Routing (IGA v3.0)</summary>

* Trigger Location = Step
* Trigger Style = Automatic upon exit

{% code overflow="wrap" %}

```markup
bash -l -c "/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar \
-i {stepURI:v2:http} \
-u {username} \
-p {password} \
script:evaluateDynamicExpression \
-t false \
-h false \
-exp 'if (submittedSample.::Library Prep Method::.toLowerCase().contains(::enrichment::)) { output.::Submitted Sample Type:: = submittedSample.::Sample Type:: + ::_Illumina DNA with Enrichment:: } else if (submittedSample.::Library Prep Method::.contains(::PCR-Free::)) {output.::Submitted Sample Type:: = submittedSample.::Sample Type:: + ::_Illumina DNA PCR-Free::}' \
-log {compoundOutputFileLuid1} \
&& /opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar -u {username} -p {password} -i {stepURI:v2} -l {compoundOutputFileLuid0} script:changeWorkflow \
\
--FIELD_NAME 'Submitted Sample Type' \
--FIELD_VALUE 'Blood_Illumina DNA PCR-Free' \
--WORKFLOW 'IGA LibraryPrep Automated (IGA v3.0)' \
--STEP 'DNA Batching PCR-Free (IGA v3.0)' \
--INPUTS_OR_OUTPUTS 'OUTPUTS' \
\
--FIELD_NAME 'Submitted Sample Type' \
--FIELD_VALUE 'Saliva_Illumina DNA PCR-Free' \
--WORKFLOW 'IGA LibraryPrep Automated (IGA v3.0)' \
--STEP 'DNA Batching PCR-Free (IGA v3.0)' \
--INPUTS_OR_OUTPUTS 'OUTPUTS' \
\
--FIELD_NAME 'Submitted Sample Type' \
--FIELD_VALUE 'Genomic DNA_Illumina DNA PCR-Free' \
--WORKFLOW 'IGA LibraryPrep Automated (IGA v3.0)' \
--STEP 'DNA Batching PCR-Free (IGA v3.0)' \
--INPUTS_OR_OUTPUTS 'OUTPUTS' \
\
--FIELD_NAME 'Submitted Sample Type' \
--FIELD_VALUE 'Blood_Illumina DNA with Enrichment' \
--WORKFLOW 'IGA LibraryPrep Automated (IGA v3.0)' \
--STEP 'DNA Batching with Enrichment (IGA v3.0)' \
--INPUTS_OR_OUTPUTS 'OUTPUTS' \
\
--FIELD_NAME 'Submitted Sample Type' \
--FIELD_VALUE 'Saliva_Illumina DNA with Enrichment' \
--WORKFLOW 'IGA LibraryPrep Automated (IGA v3.0)' \
--STEP 'DNA Batching with Enrichment (IGA v3.0)' \
--INPUTS_OR_OUTPUTS 'OUTPUTS' \
\
--FIELD_NAME 'Submitted Sample Type' \
--FIELD_VALUE 'Genomic DNA_Illumina DNA with Enrichment' \
--WORKFLOW 'IGA LibraryPrep Automated (IGA v3.0)' \
--STEP 'DNA Batching with Enrichment (IGA v3.0)' \
--INPUTS_OR_OUTPUTS 'OUTPUTS' \
&& /opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/unified-product-analytics/automation/unified-product-analytics-automation.jar script:executeUPAAutomationScript -i {stepURI:v2} -u {username} -p {password} -l {compoundOutputFileLuid1} -s 'com/illumina/upa/scripts/common/step_completed.groovy'"
```

{% endcode %}

> ℹ The actual version of workflow(s) and/or step(s) used in the automation script may be different depending on the version of IPP installed.

</details>

#### Queue

* Defaults
  * Sample Grouping = Group by Containers
  * Well Sort Order = Column
* Sample Table (Column Headers)

  | **Category**   | **Field Name** | **Field Type** | **Options** | **Additional Options and Dropdown Items** |
  | -------------- | -------------- | -------------- | ----------- | ----------------------------------------- |
  | Derived Sample | Waiting        | Built-in       |             |                                           |

#### Ice Bucket

* Defaults
  * Sample Grouping = Group by Containers
  * Well Sort Order = Column

#### Placement = Enabled

* Defaults
  * Sample Grouping = Group by Containers
  * Well Sort Order = Column
  * Placement Pattern = Column
* Destination Containers
  * 96 well plate

#### Record Details

* Step Data (Master Step Fields)

  | **Field Name**                                                   | **Field Type** | **Options** | **Additional Options and Dropdown Items**                                                                                                                                                                                             |
  | ---------------------------------------------------------------- | -------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
  | Ethanol                                                          | Text           |             |                                                                                                                                                                                                                                       |
  | ITB                                                              | Text           |             |                                                                                                                                                                                                                                       |
  | LHR Instrument ID                                                | Text           |             |                                                                                                                                                                                                                                       |
  | MLB                                                              | Text           |             |                                                                                                                                                                                                                                       |
  | ProK                                                             | Text           |             |                                                                                                                                                                                                                                       |
  | Quick reference checklist: DNA Extraction - Saliva. i) pre LHR   | Multiline Text | Read Only   | <p>Default =<br>User tasks for this page:<br>- Download LHR Input File<br>- Enter reagent lots for MLK and ProK (not scanned by LHR as loaded as a mastermix)</p>                                                                     |
  | Quick reference checklist: DNA Extraction - Saliva. ii) post LHR | Multiline Text | Read Only   | <p>Default =<br>User tasks continued:<br>- After running Extraction on the liquid handler, upload the resulting LHR Output File<br>- Select Next Steps (RSB, ITB and Ethanol lots will populate automatically on the next screen)</p> |
  | RSB                                                              | Text           |             |                                                                                                                                                                                                                                       |
  | Sample Count                                                     | Numeric        | Read Only   | Default = 0                                                                                                                                                                                                                           |
  | Step Sample Type                                                 | Text           | Read Only   |                                                                                                                                                                                                                                       |
* Sample Table
  * Sample Display Default = Collapse
  * Well Sort Order = Row
  * Table Columns - Global Fields

    | **Category**   | **Field Name**        | **Field Type** | **Options** | **Additional Options and Dropdown Items** |
    | -------------- | --------------------- | -------------- | ----------- | ----------------------------------------- |
    | Container      | Container             | Built-in       |             |                                           |
    | Container      | Container Name        | Built-in       |             |                                           |
    | Container      | LIMS ID (Container)   | Built-in       |             |                                           |
    | Container      | Well                  | Built-in       |             |                                           |
    | Derived Sample | Sample Name           | Built-in       |             |                                           |
    | Derived Sample | Submitted Sample Type | Text           | Read Only   |                                           |
    | Project        | Project Name          | Built-in       |             |                                           |

## Protocol 5: Illumina DNA PCR-Free (IGA v3.0)

Protocol Type = Library Prep

**Next Steps Configuration**

<figure><img src="/files/rqebqybbI5a6QJFeOCUp" alt=""><figcaption></figcaption></figure>

* Step(s):
  * 1: DNA Batching PCR-Free (IGA v3.0)
    * Start Next Step = Manual
    * Assign Next Step = Manual
  * 2: Indexing Planning PCR-Free (IGA v3.0)
    * Start Next Step = Manual
    * Assign Next Step = Manual
  * 3: Library Prep - Indexing PCR-Free (IGA v3.0)
    * Assign Next Step = Automatic

| **Step** | **To Step 1** | **To Step 2** | **To Step 3** |
| -------- | ------------- | ------------- | ------------- |
| 1        |               | ✓             | ❌             |
| 2        |               |               | ✓             |
| 3        |               |               |               |

### Step 1: DNA Batching PCR-Free (IGA v3.0)

* Master Step Name = DNA Batching NFPF (IGA v3.0)
* Step Type = Standard
* Derived Sample Generation = Fixed, 1
* Naming Convention = {InputItemName}\_DNA

{% hint style="info" %}
The version of DNA Batching NFPF (IGA) master step name may be different depending on the version of IPP installed.
{% endhint %}

#### Automations

<figure><img src="/files/QmYifZYQI3zLfGj2cAQM" alt=""><figcaption></figcaption></figure>

<details>

<summary>DNA Batching PF - Set Final Volume and Validate Sample Type Combination (IGA v3.0)</summary>

* Trigger Location = Step
* Trigger Style = Automatic upon entry

{% code overflow="wrap" %}

```markup
bash -l -c "/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar \
-i {stepURI:v2:http} \
-u {username} \
-p {password} \
script:evaluateDynamicExpression \
-t false \
-h false \
-exp 'if (submittedSample.::Sample Type:: == ::Genomic DNA::) {step.::Batching Well Volume (uL):: = 40} ; if (submittedSample.::Sample Type:: == ::Blood::) {step.::Batching Well Volume (uL):: = 40} ; if (submittedSample.::Sample Type:: == ::Saliva::) {step.::Batching Well Volume (uL):: = 40}' \
-log {compoundOutputFileLuid1} \
&& \
/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar -i {stepURI:v2:http} -u {username} \
-p {password} script:evaluateDynamicExpression \
-t false -h false -exp \
'String matchTargetGDNA = ::genomic dna:: ; \
String submittedSampleType = submittedSample.::Sample Type:: + :: [:: + submittedSample.::Library Prep Method:: + ::] | :: ; \
if (!step.hasValue(::Step Sample Type::)) { \
    step.::Step Sample Type:: = submittedSampleType; \
} else { \
    String stepType = step.::Step Sample Type:: ; \
    String smpType = submittedSampleType.toLowerCase(); \
    stepType = stepType.toLowerCase(); \
    if ( (stepType.contains(matchTargetGDNA) && !smpType.contains(matchTargetGDNA)) || (!stepType.contains(matchTargetGDNA) && smpType.contains(matchTargetGDNA)) ) { \
        fail(::Genomic DNA samples can only be plated together and not combined with any other sample type!::); \
    }; \
    if ( (stepType.contains(::blood::) && smpType.contains(::saliva::)) || (stepType.contains(::saliva::) && smpType.contains(::blood::)) ) { \
        step.::Step Sample Type:: = ::Blood + Saliva:: + :: [:: + submittedSample.::Library Prep Method:: + ::]:: ; \
    }; \
}' \
 -log {compoundOutputFileLuid1} \
&& /opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/unified-product-analytics/automation/unified-product-analytics-automation.jar script:executeUPAAutomationScript -i {stepURI:v2} -u {username} -p {password} -l {compoundOutputFileLuid1} -s 'com/illumina/upa/scripts/common/step_started.groovy'"
```

{% endcode %}

</details>

<details>

<summary>Placement Reminder (IGA v3.0)</summary>

* Trigger Location = Placement
* Trigger Style = Automatic upon entry

{% code overflow="wrap" %}

```markup
bash -l -c "/usr/bin/env python3 /opt/gls/clarity/extensions/IGA_3.0/iga_helpers/pop_up_msg.py -s {stepURI} -u {username} -p {password} -w 'OK' --message 'Please place all samples starting from position A:1, do not leave any gaps.'"
```

{% endcode %}

</details>

<details>

<summary>DNA Batching - Sample Placement DNA Plate Barcode Uniqueness Check (IGA v3.0)</summary>

* Trigger Location = Placement
* Trigger Style = Automatic upon exit

{% code overflow="wrap" %}

```markup
bash -l -c "/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar -i {stepURI:v2:http} -u {username} -p {password} script:evaluateDynamicExpression -exp 'if ( !output.container.name.matches( ::LP[0-9]{7}-DNA:: ) ) {fail ( ::Invalid DNA plate barcode format. This plate ID must be in the format LPxxxxxxx-DNA, where 'x' is a digit 0-9, e.g. LP1234567-DNA. Please verify and try again.:: ) }' -log {compoundOutputFileLuid1} && \
/usr/bin/env python3 /opt/gls/clarity/extensions/IGA_3.0/hamilton_fast_prep/01_A_CFP_Batching_defaultContainerCheck.py -u {username} -p {password} -s {stepURI} && \
/usr/bin/env python3 /opt/gls/clarity/extensions/IGA_3.0/hamilton_fast_prep/validate_sample_placement.py -u {username} -p {password} -s {stepURI}"
```

{% endcode %}

</details>

<details>

<summary>DNA Batching PF - Generate LHR Input File (IGA v3.0)</summary>

* Trigger Location = Record Details
* Trigger Style = Manual button

{% code overflow="wrap" %}

```markup
bash -l -c "/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar \
-i {stepURI:v2:http} \
-u {username} \
-p {password} \
script:evaluateDynamicExpression \
-t false \
-h false \
-exp 'output.::Warnings:: = :::: ; if ( submittedSample.hasValue (::Sample Conc.::) ) {        output.::Sample Needed (uL):: = (step.::DNA (ng) required for tagmentation:: * step.::Batching Well Volume (uL)::) / (25 * submittedSample.::Sample Conc.::) ; \
if ( output.::Sample Needed (uL):: > step.::Batching Well Volume (uL):: ) { output.::Sample Needed (uL):: =
 step.::Batching Well Volume (uL):: ; output.::Warnings:: = ::Low concentration - Sample Vol set to total volume::} ; if (output.::Sample Needed (uL):: < 2.0 )
{ output.::Sample Needed (uL):: = 2.0 ; output.::Warnings:: = ::High concentration - Sample Vol set to 2ul:: } ; output.::Diluent Volume (uL):: =
step.::Batching Well Volume (uL):: - output.::Sample Needed (uL):: ; output.::Initial Input DNA (ng)::  = output.::Sample Needed (uL):: * submittedSample.::Sample Conc.::} \
else \
{output.::Sample Needed (uL):: = 40 ; output.::Warnings:: = ::No Sample Conc. provided, setting Sample vol. to 40ul:: ; output.::Diluent Volume (uL):: = 0}; if (submittedSample.::Sample Type:: == ::Blood:: || submittedSample.::Sample Type:: == ::Saliva::) { output.::Sample Needed (uL):: = step.::Batching Well Volume (uL)::; output.::Diluent Volume (uL):: = 0 }' \
-log {compoundOutputFileLuid1} &&
/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/DriverFileGenerator.jar \
script:driver_file_generator \
-i {stepURI:v2} \
-u {username} \
-p {password} \
-q true \
-destLIMSID {compoundOutputFileLuid0} \
-t /opt/gls/clarity/extensions/IGA_3.0/hamilton_fast_prep/templatefiles/BatchingInputFile_template.csv \
-o Output_plate_name.csv \
-l {compoundOutputFileLuid1}"
```

{% endcode %}

</details>

<details>

<summary>DNA Batching - Check LHR Output File Barcode, Store Instrument ID, Set Next Steps to Advance (IGA v3.0)</summary>

* Trigger Location = Record Details
* Trigger Style = Automatic upon exit

{% code overflow="wrap" %}

```markup
bash -l -c "/usr/bin/env python3 /opt/gls/clarity/extensions/IGA_3.0/hamilton_fast_prep/01_CFP_Batching_confirmPlateIDAndStoreInstrumentID.py -u {username} -p {password} -s {stepURI} -f {compoundOutputFileLuid2} -i 'LHR Instrument ID' \
&& \
/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar -i {stepURI:v2} -u {username} -p {password} script:evaluateDynamicExpression -t false -h false -exp 'nextStep = ::ADVANCE::' -log {compoundOutputFileLuid1}"
```

{% endcode %}

</details>

<details>

<summary>Register Step Completed (IGA v3.0)</summary>

* Trigger Location = Step
* Trigger Style = Automatic upon exit

{% code overflow="wrap" %}

```markup
bash -l -c "/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/unified-product-analytics/automation/unified-product-analytics-automation.jar script:executeUPAAutomationScript -i {stepURI:v2} -u {username} -p {password} -l {compoundOutputFileLuid1} -s 'com/illumina/upa/scripts/common/step_completed.groovy'"
```

{% endcode %}

</details>

#### Queue

* Defaults
  * Sample Grouping = Group by Containers
  * Well Sort Order = Row
* Sample Table (Column Headers)

  | **Category**   | **Field Name**      | **Field Type** | **Options** | **Additional Options and Dropdown Items** |
  | -------------- | ------------------- | -------------- | ----------- | ----------------------------------------- |
  | Container      | Container Name      | Built-in       |             |                                           |
  | Container      | LIMS ID (Container) | Built-in       |             |                                           |
  | Container      | Well                | Built-in       |             |                                           |
  | Derived Sample | Sample Name         | Built-in       |             |                                           |
  | Derived Sample | Waiting             | Built-in       |             |                                           |
  | Project        | Project Name        | Built-in       |             |                                           |

#### Ice Bucket

* Defaults
  * Sample Grouping = Group by Containers
  * Well Sort Order = Row
* Sample Table (Column Headers)

  | **Category**   | **Field Name**      | **Field Type** | **Options** | **Additional Options and Dropdown Items** |
  | -------------- | ------------------- | -------------- | ----------- | ----------------------------------------- |
  | Container      | Container Name      | Built-in       |             |                                           |
  | Container      | LIMS ID (Container) | Built-in       |             |                                           |
  | Container      | Well                | Built-in       |             |                                           |
  | Derived Sample | Sample Name         | Built-in       |             |                                           |
  | Derived Sample | Waiting             | Built-in       |             |                                           |
  | Project        | Project Name        | Built-in       |             |                                           |

#### Placement = Enabled

* Defaults
  * Sample Grouping = Group by Containers
  * Well Sort Order = Column
  * Placement Pattern = Column
* Destination Containers
  * 96 well plate

#### Record Details

* Step Data (Master Step Fields)

  | **Field Name**                                             | **Field Type** | **Options**    | **Additional Options and Dropdown Items**                                                                                                                                                                                                                                                            |
  | ---------------------------------------------------------- | -------------- | -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
  | Batching Well Volume (uL)                                  | Numeric        | Required Field | Default = 40                                                                                                                                                                                                                                                                                         |
  | DNA (ng) required for tagmentation                         | Numeric        | Required Field | Default = 350                                                                                                                                                                                                                                                                                        |
  | LHR Instrument ID                                          | Text           | Read Only      |                                                                                                                                                                                                                                                                                                      |
  | Notes:                                                     | Multiline Text | Read Only      | <p>Default =<br>- DNA (ng) required for tagmentation is 300-2000 ng.<br>- A fixed 25uL is aliquoted from the total volume of 40uL (default) to carry out Library Prep and subsequent steps.</p>                                                                                                      |
  | Quick reference checklist: DNA Batching IDPF. i) pre LHR   | Multiline Text | Read Only      | <p>Default =<br>User tasks for this page:<br>- For gDNA samples, enter library prep Input Amount (ng). NB: this field is ignored for samples which arrived as raw blood or saliva, as a set volume is transferred<br>- 'Run' DNA Batching PF automation, and download resulting 'LHR Input File'</p> |
  | Quick reference checklist: DNA Batching IDPF. ii) post LHR | Multiline Text | Read Only      | <p>Default =<br>User tasks continued:<br>- Upload resulting 'LHR Output File'<br>- Select 'Next Steps'</p>                                                                                                                                                                                           |
* Sample Table
  * Sample Display Default = Collapse
  * Well Sort Order = Column
  * Table Columns - Global Fields

    | **Category**   | **Field Name**         | **Field Type** | **Options** | **Additional Options and Dropdown Items** |
    | -------------- | ---------------------- | -------------- | ----------- | ----------------------------------------- |
    | Container      | Container Name         | Built-in       |             |                                           |
    | Container      | LIMS ID (Container)    | Built-in       |             |                                           |
    | Container      | Well                   | Built-in       |             |                                           |
    | Derived Sample | Diluent Volume (uL)    | Numeric        |             | Decimal Places Displayed = 1              |
    | Derived Sample | Initial Input DNA (ng) | Numeric        |             |                                           |
    | Derived Sample | Sample Name            | Built-in       |             |                                           |
    | Derived Sample | Sample Needed (uL)     | Numeric        |             | Decimal Places Displayed = 1              |
    | Derived Sample | Warnings               | Text           | Read Only   |                                           |
    | Project        | Project Name           | Built-in       |             |                                           |

### Step 2: Indexing Planning PCR-Free (IGA v3.0)

* Master Step Name = Indexing Planning (IGA v3.0)
* Step Type = No Outputs

{% hint style="info" %}
The version of Indexing Planning (IGA) master step name may be different depending on the version of IPP installed.
{% endhint %}

#### Automations

<figure><img src="/files/Q5k6IkMIqTMf77gmdTA4" alt=""><figcaption></figcaption></figure>

<details>

<summary>Register Step Started (IGA v3.0)</summary>

* Trigger Location = Step
* Trigger Style = Automatic upon entry

{% code overflow="wrap" %}

```markup
bash -l -c "/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/unified-product-analytics/automation/unified-product-analytics-automation.jar script:executeUPAAutomationScript -i {stepURI:v2} -u {username} -p {password} -l {compoundOutputFileLuid0} -s 'com/illumina/upa/scripts/common/step_started.groovy'"
```

{% endcode %}

</details>

<details>

<summary>Indexing Planning - Validate and Check for Duplicates of Index Plate Barcode, Validate Indexing Offset, and Set Next Steps (IGA v3.0)</summary>

* Trigger Location = Record Details
* Trigger Style = Automatic upon exit

{% code overflow="wrap" %}

```markup
bash -l -c "/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar -i {stepURI:v2:http} -u {username} -p {password} -h true script:evaluateDynamicExpression -exp 'if (((96 - (8 * (int)step.::LHR Indexing Offset Column::)) + 8) < step.node.::input-output-maps::.::input-output-map::.input.size()) { fail(::The column offset will not yield enough indexes for the number of samples! Please increase the number of available indexes by changing the offset.::) }' -log {compoundOutputFileLuid0} && \
/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar -i {stepURI:v2:http} -u {username} -p {password} -h true script:evaluateDynamicExpression -exp 'if ( !step.::Index Plate Barcode::.matches( ::UD[A-D]{1}+[0-9]{11}$:: ) ) { fail ( ::Invalid Index Plate Barcode. This plate ID must be in the format of UD{A/B/C/D} followed by 11-digit number xxxxxxxxxxx; e.g. UDA12345678912. Please verify and try again.:: ) }' -log {compoundOutputFileLuid0} && \
/usr/bin/env python3 /opt/gls/clarity/extensions/IGA_3.0/hamilton_fast_prep/05_reusedIndexPlateWarning.py -u {username} -p {password} -s {stepURI} -f 'Index Plate Barcode' -v '{udf:Index Plate Barcode}' -t 'Indexing Planning (IGA v3.0)' && \
/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar -i {stepURI:v2:http} -u {username} -p {password} script:evaluateDynamicExpression -exp 'input.::INTERNALFIELD_IndexPlanning_Metadata:: = step.::Index Plate Barcode:: + ::_:: + (int) step.::LHR Indexing Offset Column::' -log {compoundOutputFileLuid0} && \
/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar -i {stepURI:v2:http} -u {username} -p {password} script:evaluateDynamicExpression -exp 'nextStep = ::ADVANCE::'   -log {compoundOutputFileLuid0}"
```

{% endcode %}

> ℹ The actual version of workflow(s) and/or step(s) used in the automation script may be different depending on the version of IPP installed.

</details>

<details>

<summary>Register Step Completed (IGA v3.0)</summary>

* Trigger Location = Step
* Trigger Style = Automatic upon exit

{% code overflow="wrap" %}

```markup
bash -l -c "/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/unified-product-analytics/automation/unified-product-analytics-automation.jar script:executeUPAAutomationScript -i {stepURI:v2} -u {username} -p {password} -l {compoundOutputFileLuid0} -s 'com/illumina/upa/scripts/common/step_completed.groovy'"
```

{% endcode %}

</details>

#### Queue

* Defaults
  * Sample Grouping = Group by Containers
  * Well Sort Order = Column
* Sample Table (Column Headers)

  | **Category**   | **Field Name**      | **Field Type** | **Options** | **Additional Options and Dropdown Items** |
  | -------------- | ------------------- | -------------- | ----------- | ----------------------------------------- |
  | Container      | Container Name      | Built-in       |             |                                           |
  | Container      | LIMS ID (Container) | Built-in       |             |                                           |
  | Container      | Well                | Built-in       |             |                                           |
  | Derived Sample | Sample Name         | Built-in       |             |                                           |
  | Derived Sample | Waiting             | Built-in       |             |                                           |
  | Project        | Project Name        | Built-in       |             |                                           |

#### Ice Bucket

* Defaults
  * Sample Grouping = Group by Containers
  * Well Sort Order = Column
* Sample Table (Column Headers)

  | **Category**   | **Field Name**      | **Field Type** | **Options** | **Additional Options and Dropdown Items** |
  | -------------- | ------------------- | -------------- | ----------- | ----------------------------------------- |
  | Container      | Container Name      | Built-in       |             |                                           |
  | Container      | LIMS ID (Container) | Built-in       |             |                                           |
  | Container      | Well                | Built-in       |             |                                           |
  | Derived Sample | Sample Name         | Built-in       |             |                                           |
  | Derived Sample | Waiting             | Built-in       |             |                                           |
  | Project        | Project Name        | Built-in       |             |                                           |

#### Record Details

* Step Data (Master Step Fields)

  | **Field Name**                               | **Field Type** | **Options**    | **Additional Options and Dropdown Items**                                                                                                                                |
  | -------------------------------------------- | -------------- | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
  | Index Plate Barcode                          | Text           | Required Field |                                                                                                                                                                          |
  | LHR Indexing Offset Column                   | Numeric        |                | Default = 1                                                                                                                                                              |
  | Quick reference checklist: Indexing Planning | Multiline Text | Read Only      | <p>Default =<br>User tasks for this page:<br>- Scan in Indexing Plate Barcode and set the LHR Indexing Offset column (required start column)<br>- Click 'Next Steps'</p> |
* Sample Table
  * Sample Display Default = Collapse
  * Well Sort Order = Column
  * Table Columns - Global Fields

    | **Category**   | **Field Name**                         | **Field Type** | **Options** | **Additional Options and Dropdown Items** |
    | -------------- | -------------------------------------- | -------------- | ----------- | ----------------------------------------- |
    | Container      | Container Name                         | Built-in       |             |                                           |
    | Container      | LIMS ID (Container)                    | Built-in       |             |                                           |
    | Container      | Well                                   | Built-in       |             |                                           |
    | Derived Sample | INTERNALFIELD\_IndexPlanning\_Metadata | Text           |             |                                           |
    | Derived Sample | Sample Name                            | Built-in       |             |                                           |
    | Project        | Project Name                           | Built-in       |             |                                           |

### Step 3: Library Prep - Indexing PCR-Free (IGA v3.0)

* Master Step Name = Indexing NFPF (IGA v3.0)
* Step Type = Add Labels
* Derived Sample Generation = Fixed, 1
* Naming Convention = {SubmittedSampleName}

{% hint style="info" %}
The version of Indexing NFPF (IGA) master step name may be different depending on the version of IPP installed.
{% endhint %}

#### Automations

<figure><img src="/files/lHhWkTq8bhUTOXfC1mhA" alt=""><figcaption></figcaption></figure>

<details>

<summary>Indexing - Custom Indexing with LHR Offsets and Dynamic Index Category Discovery (IGA v3.0)</summary>

* Trigger Location = Add Labels
* Trigger Style = Automatic upon entry

{% code overflow="wrap" %}

```markup
bash -l -c "/usr/bin/env python3 /opt/gls/clarity/extensions/IGA_3.0/hamilton_fast_prep/04_B_autoAssignIndexesFromIndexPlanning.py -u {username} -p {password} -s {stepURI} \
&& /usr/bin/env python3 /opt/gls/clarity/extensions/IGA_3.0/hamilton_fast_prep/04_B_storeIndexSetSetting.py -u {username} -p {password} -s {stepURI}  -n 'Index Set A/B/C/D' \
&& /opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar -i {stepURI:v2} -u {username} -p {password} -log {compoundOutputFileLuid1} \
  script:evaluateDynamicExpression \
  -exp 'submittedSample.::INTERNALFIELD_IndexPlanning_Metadata:: = input.::INTERNALFIELD_IndexPlanning_Metadata::' -t true \
"
```

{% endcode %}

</details>

<details>

<summary>Library Prep - Indexing PF - Route Samples to Sequencing Platform Selection with Automatic Workflow Detection (IGA v3.0)</summary>

* Trigger Location = Step
* Trigger Style = Automatic upon exit

{% code overflow="wrap" %}

```markup
bash -l -c "/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar -u {username} -p {password} -i {stepURI} -l {compoundOutputFileLuid1} script:changeWorkflow \
--FIELD_NAME 'N/A' \
--FIELD_VALUE 'N/A' \
--WORKFLOW 'IGA LibraryPrep Automated (IGA v3.0)' \
--STEP 'Select Sequencing Platform (IGA v3.0)' \
--INPUTS_OR_OUTPUTS 'OUTPUTS' \
&& /opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/unified-product-analytics/automation/unified-product-analytics-automation.jar script:executeUPAAutomationScript -i {stepURI:v2} -u {username} -p {password} -l {compoundOutputFileLuid1} -s 'com/illumina/upa/scripts/common/step_completed.groovy'"
```

{% endcode %}

> ℹ The actual version of workflow(s) and/or step(s) used in the automation script may be different depending on the version of IPP installed.

</details>

<details>

<summary>Indexing - Validate Index Category and Index Plate Barcode (IGA v3.0)</summary>

* Trigger Location = Step
* Trigger Style = Automatic upon entry

{% code overflow="wrap" %}

```markup
bash -l -c "/usr/bin/env python3 /opt/gls/clarity/extensions/IGA_3.0/hamilton_fast_prep/04_A_checkIndexPlateBarcodeWithCategory_UD.py -u {username} -p {password} -s {stepURI} \
&& /opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/unified-product-analytics/automation/unified-product-analytics-automation.jar script:executeUPAAutomationScript -i {stepURI:v2} -u {username} -p {password} -l {compoundOutputFileLuid1} -s 'com/illumina/upa/scripts/common/step_started.groovy'"
```

{% endcode %}

</details>

<details>

<summary>Library Prep - Indexing PF - Check for Valid, Unique LIB Plate Barcode &#x26; Match with LHR Output File &#x26; Parse Reagent Info &#x26; Set Next Steps to Remove from Workflow &#x26; Quant. Warning (IGA v3.0)</summary>

* Trigger Location = Record Details
* Trigger Style = Automatic upon exit

{% code overflow="wrap" %}

```markup
bash -l -c "/usr/bin/env python3 /opt/gls/clarity/extensions/IGA_3.0/hamilton_fast_prep/01_CFP_Batching_confirmPlateIDAndStoreInstrumentID.py -u {username} -p {password} -s {stepURI} -f {compoundOutputFileLuid2} -i 'LHR Instrument ID' && /usr/bin/env python3 /opt/gls/clarity/extensions/IGA_3.0/hamilton_fast_prep/02_ReagentParsing.py -u {username} -p {password} -s {stepURI} -f {compoundOutputFileLuid2} -m /opt/gls/clarity/extensions/IGA_3.0/hamilton_fast_prep/reagent_parsing/fieldmap_libprep.csv && /opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar -i {stepURI:v2} -u {username} -p {password} script:evaluateDynamicExpression -exp 'nextStep = ::REMOVE::' -log {compoundOutputFileLuid1} && \
/usr/bin/env python3 /opt/gls/clarity/extensions/IGA_3.0/iga_helpers/pop_up_msg.py -s {stepURI} -u {username} -p {password} -w 'WARNING' --message 'This protocol recommends performing a pooled quant. (per prep) at this stage. Please quant. and update the Normalized Molarity (nM) across all samples in the table below before proceeding.'"
```

{% endcode %}

</details>

#### Queue

* Defaults
  * Sample Grouping = Group by Containers
  * Well Sort Order = Column
* Sample Table (Column Headers)

  | **Category**   | **Field Name**                         | **Field Type** | **Options** | **Additional Options and Dropdown Items** |
  | -------------- | -------------------------------------- | -------------- | ----------- | ----------------------------------------- |
  | Container      | Container Name                         | Built-in       |             |                                           |
  | Container      | Well                                   | Built-in       |             |                                           |
  | Derived Sample | INTERNALFIELD\_IndexPlanning\_Metadata | Text           |             |                                           |
  | Derived Sample | Sample Name                            | Built-in       |             |                                           |
  | Derived Sample | Waiting                                | Built-in       |             |                                           |
  | Project        | Project Name                           | Built-in       |             |                                           |

#### Ice Bucket

* Defaults
  * Sample Grouping = Group by Containers
  * Well Sort Order = Column
* Sample Table (Column Headers)

  | **Category**   | **Field Name**                         | **Field Type** | **Options** | **Additional Options and Dropdown Items** |
  | -------------- | -------------------------------------- | -------------- | ----------- | ----------------------------------------- |
  | Container      | Container Name                         | Built-in       |             |                                           |
  | Container      | Well                                   | Built-in       |             |                                           |
  | Derived Sample | INTERNALFIELD\_IndexPlanning\_Metadata | Text           |             |                                           |
  | Derived Sample | Sample Name                            | Built-in       |             |                                           |
  | Derived Sample | Waiting                                | Built-in       |             |                                           |
  | Project        | Project Name                           | Built-in       |             |                                           |

#### Add Labels

* Label Groups
  * Illumina DNA-RNA UD Indexes Set A Tagmentation
  * Illumina DNA-RNA UD Indexes Set B Tagmentation
  * Illumina DNA-RNA UD Indexes Set C Tagmentation
  * Illumina DNA-RNA UD Indexes Set D Tagmentation

#### Record Details

* Step Data (Master Step Fields)

  | **Field Name**                                             | **Field Type** | **Options**                                        | **Additional Options and Dropdown Items**                                                                                                                                                                         |
  | ---------------------------------------------------------- | -------------- | -------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
  | Adapter                                                    | Text           | <ul><li>Required Field</li><li>Read Only</li></ul> | Default = CTGTCTCTTATACACATCT                                                                                                                                                                                     |
  | Adapter Read 2                                             | Text           | <ul><li>Required Field</li><li>Read Only</li></ul> | Default = CTGTCTCTTATACACATCT                                                                                                                                                                                     |
  | BLT-PF                                                     | Text           |                                                    |                                                                                                                                                                                                                   |
  | ELM-T                                                      | Text           |                                                    |                                                                                                                                                                                                                   |
  | HP3                                                        | Text           |                                                    |                                                                                                                                                                                                                   |
  | Index Plate Barcode (read from input samples)              | Text           | Read Only                                          |                                                                                                                                                                                                                   |
  | Index Plate Offset (read from input samples)               | Text           | Read Only                                          |                                                                                                                                                                                                                   |
  | IPB                                                        | Text           |                                                    |                                                                                                                                                                                                                   |
  | LHR Instrument ID                                          | Text           | Read Only                                          |                                                                                                                                                                                                                   |
  | Library Plate Barcode                                      | Text           | Required Field                                     |                                                                                                                                                                                                                   |
  | Quick reference checklist: Library Prep IDPF. i) pre LHR   | Multiline Text | Read Only                                          | <p>Default =<br>User tasks for this page:<br>- Above, scan in the 'Library Plate Barcode' to be used<br>- Click blue button to 'Run' the Library Prep automation, and download the resulting 'LHR Input File'</p> |
  | Quick reference checklist: Library Prep IDPF. ii) post LHR | Multiline Text | Read Only                                          | <p>Default =<br>User tasks continued:<br>- Upload resulting 'LHR Output File'<br>- Perform a pooled quant for the prep, and apply the yield 'Normalized Molarity (nM)' to all samples<br>- Click 'Next Steps'</p> |
  | RSB                                                        | Text           |                                                    |                                                                                                                                                                                                                   |
  | Sample Count                                               | Numeric        | Read Only                                          | <ul><li>Default = 0</li><li>Decimal Places Displayed = 0</li></ul>                                                                                                                                                |
  | ST2                                                        | Text           |                                                    |                                                                                                                                                                                                                   |
  | TB1                                                        | Text           |                                                    |                                                                                                                                                                                                                   |
  | TWB                                                        | Text           |                                                    |                                                                                                                                                                                                                   |
* Sample Table
  * Sample Display Default = Collapse
  * Well Sort Order = Column
  * Table Columns - Global Fields

    | **Category**   | **Field Name**           | **Field Type** | **Options** | **Additional Options and Dropdown Items** |
    | -------------- | ------------------------ | -------------- | ----------- | ----------------------------------------- |
    | Container      | Container                | Built-in       |             |                                           |
    | Container      | Container Name           | Built-in       |             |                                           |
    | Container      | LIMS ID (Container)      | Built-in       |             |                                           |
    | Container      | Well                     | Built-in       |             |                                           |
    | Derived Sample | Normalized Molarity (nM) | Numeric        |             | Decimal Places Displayed = 2              |
    | Derived Sample | Sample Name              | Built-in       |             |                                           |

## Protocol 6: Illumina DNA with Enrichment (IGA v3.0)

Protocol Type = Sample Prep

**Next Steps Configuration**

<figure><img src="/files/Y763O3uGzoBK0fI286Zk" alt=""><figcaption></figcaption></figure>

* Step(s):
  * 1: DNA Batching with Enrichment (IGA v3.0)
    * Start Next Step = Manual
    * Assign Next Step = Manual
  * 2: Indexing Planning with Enrichment (IGA v3.0)
    * Start Next Step = Manual
    * Assign Next Step = Manual
  * 3: Library Prep - Indexing with Enrichment (IGA v3.0)
    * Start Next Step = Manual
    * Assign Next Step = Manual
  * 4: Library Prep - Pre-Capture Pooling with Enrichment (IGA v3.0)
    * Start Next Step = Manual
    * Assign Next Step = Manual
  * 5: Library Prep - Capture and Wash with Enrichment (IGA v3.0)
    * Start Next Step = Manual
    * Assign Next Step = Manual
  * 6: Post-Capture Pool QC with Enrichment (IGA v3.0)
    * Assign Next Step = Automatic

| **Step** | **To Step 1** | **To Step 2** | **To Step 3** | **To Step 4** | **To Step 5** | **To Step 6** |
| -------- | ------------- | ------------- | ------------- | ------------- | ------------- | ------------- |
| 1        |               | ✓             | ❌             | ❌             | ❌             | ❌             |
| 2        |               |               | ✓             | ❌             | ❌             | ❌             |
| 3        |               |               |               | ✓             | ❌             | ❌             |
| 4        |               |               |               |               | ✓             | ❌             |
| 5        |               |               |               |               |               | ✓             |
| 6        |               |               |               |               |               |               |

### Step 1: DNA Batching with Enrichment (IGA v3.0)

* Master Step Name = DNA Batching NFE (IGA v3.0)
* Step Type = Standard
* Derived Sample Generation = Fixed, 1
* Naming Convention = {InputItemName}\_DNA

{% hint style="info" %}
The version of DNA Batching NFE (IGA) master step name may be different depending on the version of IPP installed.
{% endhint %}

#### Automations

<details>

<summary>DNA Batching Enrichment - Set Final Volume (IGA v3.0)</summary>

* Trigger Location = Step
* Trigger Style = Automatic upon entry

{% code overflow="wrap" %}

```markup
bash -l -c "/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar \
-i {stepURI:v2:http} \
-u {username} \
-p {password} \
script:evaluateDynamicExpression \
-t false \
-h false \
-exp 'step.::Batching Well Volume (uL):: = 45' \
-log {compoundOutputFileLuid1} \
&& /opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/unified-product-analytics/automation/unified-product-analytics-automation.jar script:executeUPAAutomationScript -i {stepURI:v2} -u {username} -p {password} -l {compoundOutputFileLuid1} -s 'com/illumina/upa/scripts/common/step_started.groovy'"
```

{% endcode %}

</details>

<details>

<summary>Placement Reminder (IGA v3.0)</summary>

* Trigger Location = Placement
* Trigger Style = Automatic upon entry

{% code overflow="wrap" %}

```markup
bash -l -c "/usr/bin/env python3 /opt/gls/clarity/extensions/IGA_3.0/iga_helpers/pop_up_msg.py -s {stepURI} -u {username} -p {password} -w 'OK' --message 'Please place all samples starting from position A:1, do not leave any gaps.'"
```

{% endcode %}

</details>

<details>

<summary>DNA Batching - Sample Placement DNA Plate Barcode Uniqueness Check (IGA v3.0)</summary>

* Trigger Location = Placement
* Trigger Style = Automatic upon exit

{% code overflow="wrap" %}

```markup
bash -l -c "/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar -i {stepURI:v2:http} -u {username} -p {password} script:evaluateDynamicExpression -exp 'if ( !output.container.name.matches( ::LP[0-9]{7}-DNA:: ) ) {fail ( ::Invalid DNA plate barcode format. This plate ID must be in the format LPxxxxxxx-DNA, where 'x' is a digit 0-9, e.g. LP1234567-DNA. Please verify and try again.:: ) }' -log {compoundOutputFileLuid1} && \
/usr/bin/env python3 /opt/gls/clarity/extensions/IGA_3.0/hamilton_fast_prep/01_A_CFP_Batching_defaultContainerCheck.py -u {username} -p {password} -s {stepURI} && \
/usr/bin/env python3 /opt/gls/clarity/extensions/IGA_3.0/hamilton_fast_prep/validate_sample_placement.py -u {username} -p {password} -s {stepURI}"
```

{% endcode %}

</details>

<details>

<summary>DNA Batching Enrichment - Generate LHR Input File (IGA v3.0)</summary>

* Trigger Location = Record Details
* Trigger Style = Manual button

{% code overflow="wrap" %}

```markup
bash -l -c "/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar \
-i {stepURI:v2:http} \
-u {username} \
-p {password} \
script:evaluateDynamicExpression \
-t false \
-h false \
-exp 'output.::Warnings:: = :::: ; if ( submittedSample.hasValue (::Sample Conc.::) ) {output.::Sample Needed (uL):: = (step.::DNA (ng) required for tagmentation:: * step.::Batching Well Volume (uL)::) / (30 * submittedSample.::Sample Conc.::) ; \
if ( output.::Sample Needed (uL):: > step.::Batching Well Volume (uL):: ) { output.::Sample Needed (uL):: =
 step.::Batching Well Volume (uL):: ; output.::Warnings:: = ::Low concentration - Sample Vol set to total volume::} ; if (output.::Sample Needed (uL):: < 2.0 )
{ output.::Sample Needed (uL):: = 2.0 ; output.::Warnings:: = ::High concentration - Sample Vol set to 2ul:: } ; output.::Diluent Volume (uL):: =
step.::Batching Well Volume (uL):: - output.::Sample Needed (uL):: ; output.::Initial Input DNA (ng)::  = output.::Sample Needed (uL):: * submittedSample.::Sample Conc.::} \
else \
{output.::Sample Needed (uL):: = 40 ; output.::Warnings:: = ::No Sample Conc. provided, setting Sample vol. to 40ul:: ; output.::Diluent Volume (uL):: = 0}; if (submittedSample.::Sample Type:: == ::Blood:: || submittedSample.::Sample Type:: == ::Saliva::) { output.::Sample Needed (uL):: = step.::Batching Well Volume (uL)::; output.::Diluent Volume (uL):: = 0 }' \
-log {compoundOutputFileLuid1} &&
/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/DriverFileGenerator.jar \
script:driver_file_generator \
-i {stepURI:v2} \
-u {username} \
-p {password} \
-q true \
-destLIMSID {compoundOutputFileLuid0} \
-t /opt/gls/clarity/extensions/IGA_3.0/hamilton_fast_prep/templatefiles/BatchingInputFile_template.csv \
-o Output_plate_name.csv \
-l {compoundOutputFileLuid1}"
```

{% endcode %}

</details>

<details>

<summary>DNA Batching - Check LHR Output File Barcode, Store Instrument ID, Set Next Steps to Advance (IGA v3.0)</summary>

* Trigger Location = Record Details
* Trigger Style = Automatic upon exit

{% code overflow="wrap" %}

```markup
bash -l -c "/usr/bin/env python3 /opt/gls/clarity/extensions/IGA_3.0/hamilton_fast_prep/01_CFP_Batching_confirmPlateIDAndStoreInstrumentID.py -u {username} -p {password} -s {stepURI} -f {compoundOutputFileLuid2} -i 'LHR Instrument ID' \
&& \
/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar -i {stepURI:v2} -u {username} -p {password} script:evaluateDynamicExpression -t false -h false -exp 'nextStep = ::ADVANCE::' -log {compoundOutputFileLuid1}"
```

{% endcode %}

</details>

<details>

<summary>Register Step Completed (IGA v3.0)</summary>

* Trigger Location = Step
* Trigger Style = Automatic upon exit

{% code overflow="wrap" %}

```markup
bash -l -c "/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/unified-product-analytics/automation/unified-product-analytics-automation.jar script:executeUPAAutomationScript -i {stepURI:v2} -u {username} -p {password} -l {compoundOutputFileLuid1} -s 'com/illumina/upa/scripts/common/step_completed.groovy'"
```

{% endcode %}

</details>

#### Queue

* Defaults
  * Sample Grouping = Group by Containers
  * Well Sort Order = Row
* Sample Table (Column Headers)

  | **Category**   | **Field Name**      | **Field Type** | **Options** | **Additional Options and Dropdown Items** |
  | -------------- | ------------------- | -------------- | ----------- | ----------------------------------------- |
  | Container      | Container Name      | Built-in       |             |                                           |
  | Container      | LIMS ID (Container) | Built-in       |             |                                           |
  | Container      | Well                | Built-in       |             |                                           |
  | Derived Sample | Sample Name         | Built-in       |             |                                           |
  | Derived Sample | Waiting             | Built-in       |             |                                           |
  | Project        | Project Name        | Built-in       |             |                                           |

#### Ice Bucket

* Defaults
  * Sample Grouping = Group by Containers
  * Well Sort Order = Row
* Sample Table (Column Headers)

  | **Category**   | **Field Name**      | **Field Type** | **Options** | **Additional Options and Dropdown Items** |
  | -------------- | ------------------- | -------------- | ----------- | ----------------------------------------- |
  | Container      | Container Name      | Built-in       |             |                                           |
  | Container      | LIMS ID (Container) | Built-in       |             |                                           |
  | Container      | Well                | Built-in       |             |                                           |
  | Derived Sample | Sample Name         | Built-in       |             |                                           |
  | Derived Sample | Waiting             | Built-in       |             |                                           |
  | Project        | Project Name        | Built-in       |             |                                           |

#### Placement = Enabled

* Defaults
  * Sample Grouping = Group by Containers
  * Well Sort Order = Row
  * Placement Pattern = Column
* Destination Containers
  * 96 well plate

#### Record Details

* Step Data (Master Step Fields)

  | **Field Name**                                            | **Field Type** | **Options**    | **Additional Options and Dropdown Items**                                                                                                                                                                                                                                                                    |
  | --------------------------------------------------------- | -------------- | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
  | Batching Well Volume (uL)                                 | Numeric        | Required Field | Default = 45                                                                                                                                                                                                                                                                                                 |
  | DNA (ng) required for tagmentation                        | Numeric        | Required Field | Default = 450                                                                                                                                                                                                                                                                                                |
  | LHR Instrument ID                                         | Text           | Read Only      |                                                                                                                                                                                                                                                                                                              |
  | Notes:                                                    | Multiline Text | Read Only      | <p>Default =<br>- DNA (ng) required for tagmentation is 50-1000 ng.<br>- A fixed 30uL is aliquoted from the total volume of 45uL (default) to carry out Library Prep and subsequent steps.</p>                                                                                                               |
  | Quick reference checklist i): DNA Batching IDE, pre LHR   | Multiline Text | Read Only      | <p>Default =<br>User tasks for this page:<br>- For gDNA samples, enter library prep Input Amount (ng). NB: this field is ignored for samples which arrived as raw blood or saliva, as a set volume is transferred<br>- 'Run' DNA Batching Enrichment automation, and download resulting 'LHR Input File'</p> |
  | Quick reference checklist ii): DNA Batching IDE, post LHR | Multiline Text | Read Only      | <p>Default =<br>User tasks continued:<br>- Upload resulting 'LHR Output File'<br>- Select 'Next Steps'</p>                                                                                                                                                                                                   |
* Sample Table
  * Sample Display Default = Collapse
  * Well Sort Order = Row
  * Table Columns - Global Fields

    | **Category**   | **Field Name**         | **Field Type** | **Options** | **Additional Options and Dropdown Items** |
    | -------------- | ---------------------- | -------------- | ----------- | ----------------------------------------- |
    | Container      | Container Name         | Built-in       |             |                                           |
    | Container      | LIMS ID (Container)    | Built-in       |             |                                           |
    | Container      | Well                   | Built-in       |             |                                           |
    | Derived Sample | Diluent Volume (uL)    | Numeric        |             | Decimal Places Displayed = 1              |
    | Derived Sample | Initial Input DNA (ng) | Numeric        |             |                                           |
    | Derived Sample | Sample Name            | Built-in       |             |                                           |
    | Derived Sample | Sample Needed (uL)     | Numeric        |             | Decimal Places Displayed = 1              |
    | Derived Sample | Warnings               | Text           | Read Only   |                                           |
    | Project        | Project Name           | Built-in       |             |                                           |

### Step 2: Indexing Planning with Enrichment (IGA v3.0)

* Master Step Name = Indexing Planning (IGA v3.0)
* Step Type = No Outputs

{% hint style="info" %}
The version of Indexing Planning (IGA) master step name may be different depending on the version of IPP installed.
{% endhint %}

#### Automations

<figure><img src="/files/q2T4G3JpjY2SgF8R6QvQ" alt=""><figcaption></figcaption></figure>

<details>

<summary>Register Step Started (IGA v3.0)</summary>

* Trigger Location = Step
* Trigger Style = Automatic upon entry

{% code overflow="wrap" %}

```markup
bash -l -c "/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/unified-product-analytics/automation/unified-product-analytics-automation.jar script:executeUPAAutomationScript -i {stepURI:v2} -u {username} -p {password} -l {compoundOutputFileLuid0} -s 'com/illumina/upa/scripts/common/step_started.groovy'"
```

{% endcode %}

</details>

<details>

<summary>Indexing Planning - Validate and Check for Duplicates of Index Plate Barcode, Validate Indexing Offset, and Set Next Steps (IGA v3.0)</summary>

* Trigger Location = Record Details
* Trigger Style = Automatic upon exit

{% code overflow="wrap" %}

```markup
bash -l -c "/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar -i {stepURI:v2:http} -u {username} -p {password} -h true script:evaluateDynamicExpression -exp 'if (((96 - (8 * (int)step.::LHR Indexing Offset Column::)) + 8) < step.node.::input-output-maps::.::input-output-map::.input.size()) { fail(::The column offset will not yield enough indexes for the number of samples! Please increase the number of available indexes by changing the offset.::) }' -log {compoundOutputFileLuid0} && \
/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar -i {stepURI:v2:http} -u {username} -p {password} -h true script:evaluateDynamicExpression -exp 'if ( !step.::Index Plate Barcode::.matches( ::UD[A-D]{1}+[0-9]{11}$:: ) ) { fail ( ::Invalid Index Plate Barcode. This plate ID must be in the format of UD{A/B/C/D} followed by 11-digit number xxxxxxxxxxx; e.g. UDA12345678912. Please verify and try again.:: ) }' -log {compoundOutputFileLuid0} && \
/usr/bin/env python3 /opt/gls/clarity/extensions/IGA_3.0/hamilton_fast_prep/05_reusedIndexPlateWarning.py -u {username} -p {password} -s {stepURI} -f 'Index Plate Barcode' -v '{udf:Index Plate Barcode}' -t 'Indexing Planning (IGA v3.0)' && \
/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar -i {stepURI:v2:http} -u {username} -p {password} script:evaluateDynamicExpression -exp 'input.::INTERNALFIELD_IndexPlanning_Metadata:: = step.::Index Plate Barcode:: + ::_:: + (int) step.::LHR Indexing Offset Column::' -log {compoundOutputFileLuid0} && \
/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar -i {stepURI:v2:http} -u {username} -p {password} script:evaluateDynamicExpression -exp 'nextStep = ::ADVANCE::'   -log {compoundOutputFileLuid0}"
```

{% endcode %}

> ℹ The actual version of workflow(s) and/or step(s) used in the automation script may be different depending on the version of IPP installed.

</details>

<details>

<summary>Register Step Completed (IGA v3.0)</summary>

* Trigger Location = Step
* Trigger Style = Automatic upon exit

{% code overflow="wrap" %}

```markup
bash -l -c "/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/unified-product-analytics/automation/unified-product-analytics-automation.jar script:executeUPAAutomationScript -i {stepURI:v2} -u {username} -p {password} -l {compoundOutputFileLuid0} -s 'com/illumina/upa/scripts/common/step_completed.groovy'"
```

{% endcode %}

</details>

#### Queue

* Defaults
  * Sample Grouping = Group by Containers
  * Well Sort Order = Row
* Sample Table (Column Headers)

  | **Category**   | **Field Name**      | **Field Type** | **Options** | **Additional Options and Dropdown Items** |
  | -------------- | ------------------- | -------------- | ----------- | ----------------------------------------- |
  | Container      | Container Name      | Built-in       |             |                                           |
  | Container      | LIMS ID (Container) | Built-in       |             |                                           |
  | Container      | Well                | Built-in       |             |                                           |
  | Derived Sample | Sample Name         | Built-in       |             |                                           |
  | Derived Sample | Waiting             | Built-in       |             |                                           |
  | Project        | Project Name        | Built-in       |             |                                           |

#### Ice Bucket

* Defaults
  * Sample Grouping = Group by Containers
  * Well Sort Order = Row
* Sample Table (Column Headers)

  | **Category**   | **Field Name**      | **Field Type** | **Options** | **Additional Options and Dropdown Items** |
  | -------------- | ------------------- | -------------- | ----------- | ----------------------------------------- |
  | Container      | Container Name      | Built-in       |             |                                           |
  | Container      | LIMS ID (Container) | Built-in       |             |                                           |
  | Container      | Well                | Built-in       |             |                                           |
  | Derived Sample | Sample Name         | Built-in       |             |                                           |
  | Derived Sample | Waiting             | Built-in       |             |                                           |
  | Project        | Project Name        | Built-in       |             |                                           |

#### Record Details

* Step Data (Master Step Fields)

  | **Field Name**                               | **Field Type** | **Options**    | **Additional Options and Dropdown Items**                                                                                                                                |
  | -------------------------------------------- | -------------- | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
  | Index Plate Barcode                          | Text           | Required Field |                                                                                                                                                                          |
  | LHR Indexing Offset Column                   | Numeric        |                | Default = 1                                                                                                                                                              |
  | Quick reference checklist: Indexing Planning | Multiline Text | Read Only      | <p>Default =<br>User tasks for this page:<br>- Scan in Indexing Plate Barcode and set the LHR Indexing Offset column (required start column)<br>- Click 'Next Steps'</p> |
* Sample Table
  * Sample Display Default = Collapse
  * Well Sort Order = Row
  * Table Columns - Global Fields

    | **Category**   | **Field Name**                         | **Field Type** | **Options** | **Additional Options and Dropdown Items** |
    | -------------- | -------------------------------------- | -------------- | ----------- | ----------------------------------------- |
    | Derived Sample | INTERNALFIELD\_IndexPlanning\_Metadata | Text           |             |                                           |
    | Derived Sample | Sample Name                            | Built-in       |             |                                           |

### Step 3: Library Prep - Indexing with Enrichment (IGA v3.0)

* Master Step Name = Indexing NFE (IGA v3.0)
* Step Type = Add Labels
* Derived Sample Generation = Fixed, 1
* Naming Convention = {SubmittedSampleName}

{% hint style="info" %}
The version of Indexing NFE (IGA) master step name may be different depending on the version of IPP installed.
{% endhint %}

#### Automations

<figure><img src="/files/DM9fYMhGsHHa4FyKLvO3" alt=""><figcaption></figcaption></figure>

<details>

<summary>Indexing - Custom Indexing with LHR Offsets and Dynamic Index Category Discovery (IGA v3.0)</summary>

* Trigger Location = Add Labels
* Trigger Style = Automatic upon entry

{% code overflow="wrap" %}

```markup
bash -l -c "/usr/bin/env python3 /opt/gls/clarity/extensions/IGA_3.0/hamilton_fast_prep/04_B_autoAssignIndexesFromIndexPlanning.py -u {username} -p {password} -s {stepURI} \
&& /usr/bin/env python3 /opt/gls/clarity/extensions/IGA_3.0/hamilton_fast_prep/04_B_storeIndexSetSetting.py -u {username} -p {password} -s {stepURI}  -n 'Index Set A/B/C/D' \
&& /opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar -i {stepURI:v2} -u {username} -p {password} -log {compoundOutputFileLuid1} \
  script:evaluateDynamicExpression \
  -exp 'submittedSample.::INTERNALFIELD_IndexPlanning_Metadata:: = input.::INTERNALFIELD_IndexPlanning_Metadata::' -t true \
"
```

{% endcode %}

</details>

<details>

<summary>Indexing - Validate Index Category and Index Plate Barcode (IGA v3.0)</summary>

* Trigger Location = Step
* Trigger Style = Automatic upon entry

{% code overflow="wrap" %}

```markup
bash -l -c "/usr/bin/env python3 /opt/gls/clarity/extensions/IGA_3.0/hamilton_fast_prep/04_A_checkIndexPlateBarcodeWithCategory_UD.py -u {username} -p {password} -s {stepURI} \
&& /opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/unified-product-analytics/automation/unified-product-analytics-automation.jar script:executeUPAAutomationScript -i {stepURI:v2} -u {username} -p {password} -l {compoundOutputFileLuid1} -s 'com/illumina/upa/scripts/common/step_started.groovy'"
```

{% endcode %}

</details>

<details>

<summary>Library Prep - Indexing Enrichment - Copy Indexing Metadata to Outputs &#x26; Set Next Steps to Advance (IGA v3.0)</summary>

* Trigger Location = Record Details
* Trigger Style = Automatic upon exit

{% code overflow="wrap" %}

```markup
bash -l -c "/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar \
-i {stepURI:v2:http} \
-u {username} \
-p {password} \
script:evaluateDynamicExpression \
-t false \
-h false \
-exp 'tkns = input.::INTERNALFIELD_IndexPlanning_Metadata::.split(::_::); step.::Index Plate Barcode (read from input samples):: = tkns[0]; step.::Index Plate Offset (read from input samples):: = tkns[1]; output.::INTERNALFIELD_IndexPlanning_Metadata:: = input.::INTERNALFIELD_IndexPlanning_Metadata:: ; nextStep = ::ADVANCE::' \
-log {compoundOutputFileLuid0}"
```

{% endcode %}

</details>

#### Queue

* Defaults
  * Sample Grouping = Group by Containers
  * Well Sort Order = Row
* Sample Table (Column Headers)

  | **Category**   | **Field Name**      | **Field Type** | **Options** | **Additional Options and Dropdown Items** |
  | -------------- | ------------------- | -------------- | ----------- | ----------------------------------------- |
  | Container      | Container Name      | Built-in       |             |                                           |
  | Container      | LIMS ID (Container) | Built-in       |             |                                           |
  | Container      | Well                | Built-in       |             |                                           |
  | Derived Sample | Sample Name         | Built-in       |             |                                           |
  | Derived Sample | Waiting             | Built-in       |             |                                           |
  | Project        | Project Name        | Built-in       |             |                                           |

#### Ice Bucket

* Defaults
  * Sample Grouping = Group by Containers
  * Well Sort Order = Row
* Sample Table (Column Headers)

  | **Category**   | **Field Name**      | **Field Type** | **Options** | **Additional Options and Dropdown Items** |
  | -------------- | ------------------- | -------------- | ----------- | ----------------------------------------- |
  | Container      | Container Name      | Built-in       |             |                                           |
  | Container      | LIMS ID (Container) | Built-in       |             |                                           |
  | Container      | Well                | Built-in       |             |                                           |
  | Derived Sample | Sample Name         | Built-in       |             |                                           |
  | Derived Sample | Waiting             | Built-in       |             |                                           |
  | Project        | Project Name        | Built-in       |             |                                           |

#### Add Labels

* Label Groups
  * Illumina DNA-RNA UD Indexes Set A Tagmentation
  * Illumina DNA-RNA UD Indexes Set B Tagmentation
  * Illumina DNA-RNA UD Indexes Set C Tagmentation
  * Illumina DNA-RNA UD Indexes Set D Tagmentation

#### Record Details

* Step Data (Master Step Fields)

  | **Field Name**                                | **Field Type** | **Options** | **Additional Options and Dropdown Items**                                            |
  | --------------------------------------------- | -------------- | ----------- | ------------------------------------------------------------------------------------ |
  | Index Plate Barcode (read from input samples) | Text           | Read Only   |                                                                                      |
  | Index Plate Offset (read from input samples)  | Text           | Read Only   |                                                                                      |
  | Quick reference checklist: Library Prep IDE.  | Multiline Text | Read Only   | <p>Default =<br>User tasks for this step:<br>- No user tasks, click 'Next Steps'</p> |
* Sample Table
  * Sample Display Default = Collapse
  * Well Sort Order = Row
  * Table Columns - Global Fields

    | **Category**   | **Field Name**                         | **Field Type** | **Options** | **Additional Options and Dropdown Items** |
    | -------------- | -------------------------------------- | -------------- | ----------- | ----------------------------------------- |
    | Derived Sample | INTERNALFIELD\_IndexPlanning\_Metadata | Text           |             |                                           |
    | Derived Sample | Sample Name                            | Built-in       |             |                                           |

### Step 4: Library Prep - Pre-Capture Pooling with Enrichment (IGA v3.0)

* Master Step Name = Library Prep NFE - Pool Libraries (IGA v3.0)
* Step Type = Pooling
* Aliquot Generation = Fixed, 1
* Naming Convention = {PoolName}

{% hint style="info" %}
The version of Library Prep NFE - Pool Libraries (IGA) master step name may be different depending on the version of IPP installed.
{% endhint %}

#### Automations

<figure><img src="/files/56PeGxGmxxVszFVDxoVL" alt=""><figcaption></figcaption></figure>

<details>

<summary>Register Step Started (IGA v3.0)</summary>

* Trigger Location = Step
* Trigger Style = Automatic upon entry

{% code overflow="wrap" %}

```markup
bash -l -c "/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/unified-product-analytics/automation/unified-product-analytics-automation.jar script:executeUPAAutomationScript -i {stepURI:v2} -u {username} -p {password} -l {compoundOutputFileLuid1} -s 'com/illumina/upa/scripts/common/step_started.groovy'"
```

{% endcode %}

</details>

<details>

<summary>Library Prep - Pooling Enrichment - Validate Pool Sizes (IGA v3.0)</summary>

* Trigger Location = Pooling
* Trigger Style = Automatic upon exit

{% code overflow="wrap" %}

```markup
bash -l -c "/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar \
-i {stepURI:v2:http} \
-u {username} \
-p {password} \
script:evaluateDynamicExpression \
-t false \
-h false \
-exp 'if (!output.hasValue(::Number of Samples in Pool::)) { output.::Number of Samples in Pool:: = 0; }; output.::Number of Samples in Pool::++; if (output.::Number of Samples in Pool:: > 12) { fail(::Pools cannot contain more than 12 samples each.::) }' \
-log {compoundOutputFileLuid1}"
```

{% endcode %}

</details>

<details>

<summary>Library Prep - Pooling Enrichment - Sample Placement PCPP Plate Barcode Uniqueness Check (IGA v3.0)</summary>

* Trigger Location = Placement
* Trigger Style = Automatic upon exit

{% code overflow="wrap" %}

```markup
bash -l -c "/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar -i {stepURI:v2:http} -u {username} -p {password} script:evaluateDynamicExpression -exp 'if ( !output.container.name.matches( ::LP[0-9]{7}-PCPP:: ) ) {fail ( ::Invalid PCPP (Pre-Capture Pool Plate) barcode format. This plate ID must be in the format LPxxxxxxx-PCPP, where 'x' is a digit 0-9, e.g. LP1234567-PCPP. Please verify and try again.:: ) }' -log {compoundOutputFileLuid1} && /usr/bin/env python3 /opt/gls/clarity/extensions/IGA_3.0/hamilton_fast_prep/01_A_CFP_Batching_defaultContainerCheck.py -u {username} -p {password} -s {stepURI}"
```

{% endcode %}

</details>

<details>

<summary>Library Prep - Pooling Enrichment - Create LHR Input File (IGA v3.0)</summary>

* Trigger Location = Record Details
* Trigger Style = Manual button

{% code overflow="wrap" %}

```markup
bash -l -c "/usr/bin/env python3 /opt/gls/clarity/extensions/IGA_3.0/hamilton_fast_prep/countSamplesInPools.py -u {username} -p {password} -s {stepURI} -f 'Sample Count' && /opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar \
-i {stepURI:v2:http} \
-u {username} \
-p {password} \
script:evaluateDynamicExpression \
-t true \
-h false \
-exp 'tkns = input.::INTERNALFIELD_IndexPlanning_Metadata::.split(::_::); step.::Index Plate Barcode (read from input samples):: = tkns[0]; step.::Index Plate Offset (read from input samples):: = tkns[1]; ' \
-log {compoundOutputFileLuid1} \ && \
/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar \
-i {stepURI:v2:http} \
-u {username} \
-p {password} \
script:evaluateDynamicExpression \
-t true \
-h false \
-exp 'output.::Sample Needed (uL):: = 5.0 * output.::Number of Samples in Pool:: ; if (output.::Number of Samples in Pool:: >= 6) {output.::Diluent Volume (uL):: = 0} else {output.::Diluent Volume (uL):: = 30.0 - output.::Sample Needed (uL):: } ; ' \
-log {compoundOutputFileLuid1} \
&& /opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/DriverFileGenerator.jar \
script:driver_file_generator \
-i {stepURI:v2} \
-u {username} \
-p {password} \
-q true \
-destLIMSID {compoundOutputFileLuid0} \
-t /opt/gls/clarity/extensions/IGA_3.0/hamilton_fast_prep/templatefiles/LibInputFile_NFE_template_withoffsets.csv \
-o Output_plate_name.csv \
-l {compoundOutputFileLuid1}"
```

{% endcode %}

</details>

<details>

<summary>Library Prep - Pooling Enrichment - Validate LHR Output File Name, Parse Reagents &#x26; Set Next Steps to Advance (IGA v3.0)</summary>

* Trigger Location = Record Details
* Trigger Style = Automatic upon exit

{% code overflow="wrap" %}

```markup
bash -l -c "/usr/bin/env python3 /opt/gls/clarity/extensions/IGA_3.0/hamilton_fast_prep/01_CFP_Batching_confirmPlateIDAndStoreInstrumentID.py -u {username} -p {password} -s {stepURI} -f {compoundOutputFileLuid2} -i 'LHR Instrument ID' && /usr/bin/env python3 /opt/gls/clarity/extensions/IGA_3.0/hamilton_fast_prep/02_ReagentParsing.py -u {username} -p {password} -s {stepURI} -f {compoundOutputFileLuid2} -m /opt/gls/clarity/extensions/IGA_3.0/hamilton_fast_prep/reagent_parsing/fieldmap_precap_pooling.csv && /opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar -i {stepURI:v2} -u {username} -p {password} script:evaluateDynamicExpression -exp 'nextStep = ::ADVANCE::' -log {compoundOutputFileLuid1}"
```

{% endcode %}

</details>

<details>

<summary>Register Step Completed (IGA v3.0)</summary>

* Trigger Location = Step
* Trigger Style = Automatic upon exit

{% code overflow="wrap" %}

```markup
bash -l -c "/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/unified-product-analytics/automation/unified-product-analytics-automation.jar script:executeUPAAutomationScript -i {stepURI:v2} -u {username} -p {password} -l {compoundOutputFileLuid1} -s 'com/illumina/upa/scripts/common/step_completed.groovy'"
```

{% endcode %}

</details>

#### Queue

* Defaults
  * Sample Grouping = Group by Containers
  * Well Sort Order = Row
* Sample Table (Column Headers)

  | **Category**   | **Field Name**      | **Field Type** | **Options** | **Additional Options and Dropdown Items** |
  | -------------- | ------------------- | -------------- | ----------- | ----------------------------------------- |
  | Container      | Container Name      | Built-in       |             |                                           |
  | Container      | LIMS ID (Container) | Built-in       |             |                                           |
  | Container      | Well                | Built-in       |             |                                           |
  | Derived Sample | Sample Name         | Built-in       |             |                                           |
  | Derived Sample | Waiting             | Built-in       |             |                                           |
  | Project        | Project Name        | Built-in       |             |                                           |

#### Ice Bucket

* Defaults
  * Sample Grouping = Group by Containers
  * Well Sort Order = Row
* Sample Table (Column Headers)

  | **Category**   | **Field Name**      | **Field Type** | **Options** | **Additional Options and Dropdown Items** |
  | -------------- | ------------------- | -------------- | ----------- | ----------------------------------------- |
  | Container      | Container Name      | Built-in       |             |                                           |
  | Container      | LIMS ID (Container) | Built-in       |             |                                           |
  | Container      | Well                | Built-in       |             |                                           |
  | Derived Sample | Sample Name         | Built-in       |             |                                           |
  | Derived Sample | Waiting             | Built-in       |             |                                           |
  | Project        | Project Name        | Built-in       |             |                                           |

#### Pooling

* Label Uniqueness = On
* Defaults
  * Sample Grouping = Group by Containers
  * Well Sort Order = Row

#### Placement = Enabled

* Defaults
  * Well Sort Order = Row
  * Placement Pattern = Column
* Destination Containers
  * 96 well plate

#### Record Details

* Step Data (Master Step Fields)

  | **Field Name**                                                              | **Field Type** | **Options**                                        | **Additional Options and Dropdown Items**                                                                                                                       |
  | --------------------------------------------------------------------------- | -------------- | -------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
  | Adapter                                                                     | Text           | <ul><li>Required Field</li><li>Read Only</li></ul> | Default = CTGTCTCTTATACACATCT                                                                                                                                   |
  | Adapter Read 2                                                              | Text           | <ul><li>Required Field</li><li>Read Only</li></ul> | Default = CTGTCTCTTATACACATCT                                                                                                                                   |
  | eBLT                                                                        | Text           |                                                    |                                                                                                                                                                 |
  | EPM                                                                         | Text           |                                                    |                                                                                                                                                                 |
  | Index Plate Barcode (read from input samples)                               | Text           | Read Only                                          |                                                                                                                                                                 |
  | Index Plate Offset (read from input samples)                                | Text           | Read Only                                          |                                                                                                                                                                 |
  | LHR Instrument ID                                                           | Text           | Read Only                                          |                                                                                                                                                                 |
  | Quick reference checklist: Library Prep IDE - pool libraries. i) pre LHR.   | Multiline Text | Read Only                                          | <p>Default =<br>User tasks for this page:<br>- 'Run' Library Prep Pooling automation<br>- Download resulting LHR Input File</p>                                 |
  | Quick reference checklist: Library Prep IDE - pool libraries. ii) post LHR. | Multiline Text | Read Only                                          | <p>Default =<br>User tasks continued:<br>- After running the Prep method on the Liquid Handler, upload resulting LHR Output File<br>- Click on 'Next Steps'</p> |
  | RSB                                                                         | Text           |                                                    |                                                                                                                                                                 |
  | Sample Count                                                                | Numeric        | Read Only                                          | Default = 0                                                                                                                                                     |
  | SPB                                                                         | Text           |                                                    |                                                                                                                                                                 |
  | ST2                                                                         | Text           |                                                    |                                                                                                                                                                 |
  | TB1                                                                         | Text           |                                                    |                                                                                                                                                                 |
  | Total Pool Volume (ul)                                                      | Numeric        |                                                    | Default = 30                                                                                                                                                    |
  | TWB                                                                         | Text           |                                                    |                                                                                                                                                                 |
* Sample Table
  * Sample Display Default = Collapse
  * Well Sort Order = Row
  * Table Columns - Global Fields

    | **Category**   | **Field Name**            | **Field Type** | **Options** | **Additional Options and Dropdown Items** |
    | -------------- | ------------------------- | -------------- | ----------- | ----------------------------------------- |
    | Derived Sample | Diluent Volume (uL)       | Numeric        |             | Decimal Places Displayed = 1              |
    | Derived Sample | Number of Samples in Pool | Numeric        |             | Default = 0                               |
    | Derived Sample | Sample Name               | Built-in       |             |                                           |
    | Derived Sample | Sample Needed (uL)        | Numeric        |             | Decimal Places Displayed = 1              |

### Step 5: Library Prep - Capture and Wash with Enrichment (IGA v3.0)

* Master Step Name = Capture and Wash NFE (IGA v3.0)
* Step Type = Standard
* Derived Sample Generation = Fixed, 1
* Naming Convention = {InputItemName}

{% hint style="info" %}
The version of Capture and Wash NFE (IGA) master step name may be different depending on the version of IPP installed.
{% endhint %}

#### Automations

<figure><img src="/files/PJN9RjO1oJPZuMx90uQ8" alt=""><figcaption></figcaption></figure>

<details>

<summary>Register Step Started (IGA v3.0)</summary>

* Trigger Location = Step
* Trigger Style = Automatic upon entry

{% code overflow="wrap" %}

```markup
bash -l -c "/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/unified-product-analytics/automation/unified-product-analytics-automation.jar script:executeUPAAutomationScript -i {stepURI:v2} -u {username} -p {password} -l {compoundOutputFileLuid1} -s 'com/illumina/upa/scripts/common/step_started.groovy'"
```

{% endcode %}

</details>

<details>

<summary>Capture and Wash Enrichment - Sample Placement LIB Plate Barcode Uniqueness Check &#x26; Update Pool Count (IGA v3.0)</summary>

* Trigger Location = Placement
* Trigger Style = Automatic upon exit

{% code overflow="wrap" %}

```markup
bash -l -c "/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar -i {stepURI:v2:http} -u {username} -p {password} script:evaluateDynamicExpression -exp 'if ( !output.container.name.matches( ::LP[0-9]{7}-LIB:: ) ) {fail ( ::Invalid LIB plate barcode format. This plate ID must be in the format LPxxxxxxx-LIB, where 'x' is a digit 0-9, e.g. LP1234567-LIB. Please verify and try again.:: ) }' -log {compoundOutputFileLuid1} && /usr/bin/env python3 /opt/gls/clarity/extensions/IGA_3.0/hamilton_fast_prep/01_A_CFP_Batching_defaultContainerCheck.py -u {username} -p {password} -s {stepURI} && \
/usr/bin/env python3 /opt/gls/clarity/extensions/IGA_3.0/hamilton_fast_prep/countSamples.py -u {username} -p {password} -s {stepURI} -f 'Pool Count'"
```

{% endcode %}

</details>

<details>

<summary>Capture and Wash Enrichment - Create LHR Input File (IGA v3.0)</summary>

* Trigger Location = Record Details
* Trigger Style = Manual button

{% code overflow="wrap" %}

```markup
bash -l -c "/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/DriverFileGenerator.jar \
script:driver_file_generator \
-i {stepURI:v2} \
-u {username} \
-p {password} \
-q true \
-destLIMSID {compoundOutputFileLuid0} \
-t /opt/gls/clarity/extensions/IGA_3.0/hamilton_fast_prep/templatefiles/CaptureWashInputFile_template.csv \
-o Output_plate_name.csv \
-l {compoundOutputFileLuid1}"
```

{% endcode %}

</details>

<details>

<summary>Capture and Wash Enrichment - Validate LHR Output File Name, Parse Reagents &#x26; Set Next Steps to Advance (IGA v3.0)</summary>

* Trigger Location = Record Details
* Trigger Style = Automatic upon exit

{% code overflow="wrap" %}

```markup
bash -l -c "/usr/bin/env python3 /opt/gls/clarity/extensions/IGA_3.0/hamilton_fast_prep/01_CFP_Batching_confirmPlateIDAndStoreInstrumentID.py -u {username} -p {password} -s {stepURI} -f {compoundOutputFileLuid2} -i 'LHR Instrument ID' && /usr/bin/env python3 /opt/gls/clarity/extensions/IGA_3.0/hamilton_fast_prep/02_ReagentParsing.py -u {username} -p {password} -s {stepURI} -f {compoundOutputFileLuid2} -m /opt/gls/clarity/extensions/IGA_3.0/hamilton_fast_prep/reagent_parsing/fieldmap_captureandwash.csv && /opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar -i {stepURI:v2} -u {username} -p {password} script:evaluateDynamicExpression -exp 'nextStep = ::ADVANCE::' -log {compoundOutputFileLuid1}"
```

{% endcode %}

</details>

<details>

<summary>Register Step Completed (IGA v3.0)</summary>

* Trigger Location = Step
* Trigger Style = Automatic upon exit

{% code overflow="wrap" %}

```markup
bash -l -c "/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/unified-product-analytics/automation/unified-product-analytics-automation.jar script:executeUPAAutomationScript -i {stepURI:v2} -u {username} -p {password} -l {compoundOutputFileLuid1} -s 'com/illumina/upa/scripts/common/step_completed.groovy'"
```

{% endcode %}

</details>

#### Queue

* Defaults
  * Sample Grouping = Group by Containers
  * Well Sort Order = Row
* Sample Table (Column Headers)

  | **Category**   | **Field Name**      | **Field Type** | **Options** | **Additional Options and Dropdown Items** |
  | -------------- | ------------------- | -------------- | ----------- | ----------------------------------------- |
  | Container      | Container Name      | Built-in       |             |                                           |
  | Container      | LIMS ID (Container) | Built-in       |             |                                           |
  | Container      | Well                | Built-in       |             |                                           |
  | Derived Sample | Sample Name         | Built-in       |             |                                           |
  | Derived Sample | Waiting             | Built-in       |             |                                           |
  | Project        | Project Name        | Built-in       |             |                                           |

#### Ice Bucket

* Defaults
  * Sample Grouping = Group by Containers
  * Well Sort Order = Row
* Sample Table (Column Headers)

  | **Category**   | **Field Name**      | **Field Type** | **Options** | **Additional Options and Dropdown Items** |
  | -------------- | ------------------- | -------------- | ----------- | ----------------------------------------- |
  | Container      | Container Name      | Built-in       |             |                                           |
  | Container      | LIMS ID (Container) | Built-in       |             |                                           |
  | Container      | Well                | Built-in       |             |                                           |
  | Derived Sample | Sample Name         | Built-in       |             |                                           |
  | Derived Sample | Waiting             | Built-in       |             |                                           |
  | Project        | Project Name        | Built-in       |             |                                           |

#### Placement = Enabled

* Defaults
  * Sample Grouping = Group by Containers
  * Well Sort Order = Row
  * Placement Pattern = Same Shape
* Destination Containers
  * 96 well plate

#### Record Details

* Step Data (Master Step Fields)

  | **Field Name**                                                | **Field Type** | **Options** | **Additional Options and Dropdown Items**                                                                                                                     |
  | ------------------------------------------------------------- | -------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
  | EE1                                                           | Text           |             |                                                                                                                                                               |
  | EEW                                                           | Text           |             |                                                                                                                                                               |
  | EHB2                                                          | Text           |             |                                                                                                                                                               |
  | EPM                                                           | Text           |             |                                                                                                                                                               |
  | ET2                                                           | Text           |             |                                                                                                                                                               |
  | HP3                                                           | Text           |             |                                                                                                                                                               |
  | LHR Instrument ID                                             | Text           | Read Only   |                                                                                                                                                               |
  | Pool Count                                                    | Numeric        | Read Only   | Default = 0                                                                                                                                                   |
  | PPC                                                           | Text           |             |                                                                                                                                                               |
  | Probes                                                        | Text           |             |                                                                                                                                                               |
  | Quick reference checklist: Capture and Wash IDE. i) pre LHR   | Multiline Text | Read Only   | <p>Default =<br>User tasks for this page:<br>- 'Run' Capture and Wash automation<br>- Download resulting LHR Input File</p>                                   |
  | Quick reference checklist: Capture and Wash IDE. ii) post LHR | Multiline Text | Read Only   | <p>Default =<br>User tasks continued:<br>- After running Capture and Wash on the liquid handler, upload resulting LHR Output File<br>- Click 'Next Steps'</p> |
* Sample Table
  * Sample Display Default = Collapse
  * Well Sort Order = Row
  * Table Columns - Global Fields

    | **Category**   | **Field Name**      | **Field Type** | **Options** | **Additional Options and Dropdown Items** |
    | -------------- | ------------------- | -------------- | ----------- | ----------------------------------------- |
    | Container      | Container Name      | Built-in       |             |                                           |
    | Container      | LIMS ID (Container) | Built-in       |             |                                           |
    | Container      | Well                | Built-in       |             |                                           |
    | Derived Sample | Sample Name         | Built-in       |             |                                           |
    | Project        | Project Name        | Built-in       |             |                                           |

### Step 6: Post-Capture Pool QC with Enrichment (IGA v3.0)

* Master Step Name = Generic Pool QC NFE (IGA v3.0)
* Step Type = Standard QC
* Measurement Generation = Fixed, 1
* Naming Convention = {InputItemName}

{% hint style="info" %}
The version of Generic Pool QC NFE (IGA) master step name may be different depending on the version of IPP installed.
{% endhint %}

#### Automations

<figure><img src="/files/vJbJzFUjJODhDnQdKusS" alt=""><figcaption></figcaption></figure>

<details>

<summary>Register Step Started (IGA v3.0)</summary>

* Trigger Location = Step
* Trigger Style = Automatic upon entry

{% code overflow="wrap" %}

```markup
bash -l -c "/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/unified-product-analytics/automation/unified-product-analytics-automation.jar script:executeUPAAutomationScript -i {stepURI:v2} -u {username} -p {password} -l {compoundOutputFileLuid1} -s 'com/illumina/upa/scripts/common/step_started.groovy'"
```

{% endcode %}

</details>

<details>

<summary>Pool QC - Generic - Enrichment - Copy Normalized Molarity from Output to Input, Copy QC Value to Inputs &#x26; Set QC Passed Sample Next Steps to Remove from Workflow (IGA v3.0)</summary>

* Trigger Location = Record Details
* Trigger Style = Automatic upon exit

{% code overflow="wrap" %}

```markup
bash -l -c "/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar -i {stepURI:v2} -u {username} -p {password} script:evaluateDynamicExpression -t false -h false -exp 'if (!output.hasValue(::Normalized Molarity (nM)::)) { fail(::Please set/check Normalized Molarity (nM) field values manually on each sample, or set up this step to parse this value from QC instrument output to automatically set QC pass/fail flags.::) } else { input.::Normalized Molarity (nM):: = output.::Normalized Molarity (nM):: }; input.::INTERNALFIELD_QCValue_forRouting:: = output.QC ; output.::INTERNALFIELD_QCValue_forRouting:: = output.QC ; if (output.QC == true) { nextStep = ::REMOVE:: }' -log {compoundOutputFileLuid1}"
```

{% endcode %}

</details>

<details>

<summary>Pool QC - Generic - Enrichment - Route QC Passed Samples to Sequencing Platform Selection (IGA v3.0)</summary>

* Trigger Location = Step
* Trigger Style = Automatic upon exit

{% code overflow="wrap" %}

```markup
bash -l -c "/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar -u {username} -p {password} -i {stepURI} -l {compoundOutputFileLuid0} script:changeWorkflow \
--FIELD_NAME 'INTERNALFIELD_QCValue_forRouting' \
--FIELD_VALUE 'true' \
--WORKFLOW 'IGA LibraryPrep Automated (IGA v3.0)' \
--STEP 'Select Sequencing Platform (IGA v3.0)' \
--INPUTS_OR_OUTPUTS 'INPUTS' \
&& /opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/unified-product-analytics/automation/unified-product-analytics-automation.jar script:executeUPAAutomationScript -i {stepURI:v2} -u {username} -p {password} -l {compoundOutputFileLuid1} -s 'com/illumina/upa/scripts/common/step_completed.groovy'"
```

{% endcode %}

> ℹ The actual version of workflow(s) and/or step(s) used in the automation script may be different depending on the version of IPP installed.

</details>

#### Queue

* Defaults
  * Sample Grouping = Group by Containers
  * Well Sort Order = Row
* Sample Table (Column Headers)

  | **Category**   | **Field Name**      | **Field Type** | **Options** | **Additional Options and Dropdown Items** |
  | -------------- | ------------------- | -------------- | ----------- | ----------------------------------------- |
  | Container      | Container Name      | Built-in       |             |                                           |
  | Container      | LIMS ID (Container) | Built-in       |             |                                           |
  | Container      | Well                | Built-in       |             |                                           |
  | Derived Sample | Sample Name         | Built-in       |             |                                           |
  | Derived Sample | Waiting             | Built-in       |             |                                           |
  | Project        | Project Name        | Built-in       |             |                                           |

#### Ice Bucket

* Defaults
  * Sample Grouping = Group by Containers
  * Well Sort Order = Row
* Sample Table (Column Headers)

  | **Category**   | **Field Name**      | **Field Type** | **Options** | **Additional Options and Dropdown Items** |
  | -------------- | ------------------- | -------------- | ----------- | ----------------------------------------- |
  | Container      | Container Name      | Built-in       |             |                                           |
  | Container      | LIMS ID (Container) | Built-in       |             |                                           |
  | Container      | Well                | Built-in       |             |                                           |
  | Derived Sample | Sample Name         | Built-in       |             |                                           |
  | Derived Sample | Waiting             | Built-in       |             |                                           |
  | Project        | Project Name        | Built-in       |             |                                           |

#### Record Details

* Step Data (Master Step Fields)

  | **Field Name**                          | **Field Type** | **Options** | **Additional Options and Dropdown Items**                                                                                                                                                                                                   |
  | --------------------------------------- | -------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
  | Quick reference checklist: Pool QC IDE. | Multiline Text | Read Only   | <p>Default =<br>User tasks for this page:<br>- After running QC on the pools, upload a QC instrument result file, or input Normalized Molarity (nM) and QC flags below<br>- For any QC fails, assign next steps<br>- Click 'Next Steps'</p> |
* Sample Table
  * Enable QC Flags = Yes
  * Sample Display Default = Expand
  * Well Sort Order = Row
  * Table Columns - Global Fields

    | **Category**   | **Field Name**                     | **Field Type** | **Options** | **Additional Options and Dropdown Items** |
    | -------------- | ---------------------------------- | -------------- | ----------- | ----------------------------------------- |
    | Container      | Container Name                     | Built-in       |             |                                           |
    | Container      | LIMS ID (Container)                | Built-in       |             |                                           |
    | Container      | Well                               | Built-in       |             |                                           |
    | Derived Sample | INTERNALFIELD\_QCValue\_forRouting | Text           |             |                                           |
    | Derived Sample | Normalized Molarity (nM)           | Numeric        |             | Decimal Places Displayed = 2              |
    | Derived Sample | Sample Name                        | Built-in       |             |                                           |
    | Measurement    | INTERNALFIELD\_QCValue\_forRouting | Text           | Read Only   |                                           |
    | Measurement    | Normalized Molarity (nM)           | Numeric        |             | Decimal Places Displayed = 2              |
    | Project        | Project Name                       | Built-in       |             |                                           |

## Protocol 7: Sequencing Platform Selection (IGA v3.0)

Protocol Type = Sample Prep

**Next Steps Configuration**

<figure><img src="/files/BOmG1QBhVIOt3t7iG3ix" alt=""><figcaption></figcaption></figure>

* Step(s):
  * 1: Select Sequencing Platform (IGA v3.0)
    * Assign Next Step = Automatic

### Step 1: Select Sequencing Platform (IGA v3.0)

* Master Step Name = Sequencing Platform Selection (IGA v3.0)
* Step Type = No Outputs

{% hint style="info" %}
The version of Sequencing Platform Selection (IGA) master step name may be different depending on the version of IPP installed.
{% endhint %}

#### Automations

<figure><img src="/files/RJxLveOwjh3MClwLliPe" alt=""><figcaption></figcaption></figure>

<details>

<summary>Register Step Started (IGA v3.0)</summary>

* Trigger Location = Step
* Trigger Style = Automatic upon entry

{% code overflow="wrap" %}

```markup
bash -l -c "/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/unified-product-analytics/automation/unified-product-analytics-automation.jar script:executeUPAAutomationScript -i {stepURI:v2} -u {username} -p {password} -l {compoundOutputFileLuid0} -s 'com/illumina/upa/scripts/common/step_started.groovy'"
```

{% endcode %}

</details>

<details>

<summary>Sequencing Platform Selection - Copy Instrument Type to Analyte &#x26; Set Next Steps to Remove from Workflow (IGA v3.0)</summary>

* Trigger Location = Record Details
* Trigger Style = Automatic upon exit

{% code overflow="wrap" %}

```markup
bash -l -c "/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar -i {stepURI:v2} -u {username} -p {password} script:evaluateDynamicExpression -t false -h false -exp 'input.::Sequencing Platform:: = step.::Sequencing Platform:: ; nextStep = ::REMOVE::' -log {compoundOutputFileLuid0}"
```

{% endcode %}

</details>

<details>

<summary>Sequencing Platform Selection - Route to Sequencing Workflow by Type (IGA v3.0)</summary>

* Trigger Location = Step
* Trigger Style = Automatic upon exit

{% code overflow="wrap" %}

```markup
bash -l -c "
/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar -u {username} -p {password} -i {stepURI} -l {compoundOutputFileLuid0} script:changeWorkflow \
--FIELD_NAME 'Sequencing Platform' \
--FIELD_VALUE 'NovaSeq X IGA' \
--WORKFLOW 'NovaSeq X Series v2.0' \
--STEP 'Assign Analysis Configuration Template (NovaSeq X Series Sequencing v2.0)' \
--INPUTS_OR_OUTPUTS 'INPUTS' \
\
--FIELD_NAME 'Sequencing Platform' \
--FIELD_VALUE 'NovaSeq 6K IGA' \
--WORKFLOW 'Illumina Genomics Architecture - NovaSeq Sequencing v3.0' \
--STEP 'Define Run Format (IGA v3.0)' \
--INPUTS_OR_OUTPUTS 'INPUTS' \
\
--FIELD_NAME 'Sequencing Platform' \
--FIELD_VALUE 'NextSeq 1000/2000 v2.3' \
--WORKFLOW 'NextSeq 1000/2000 Sequencing v2.3' \
--STEP 'Library Pooling and Dilution (NextSeq 1000/2000 Sequencing v2.3)' \
--INPUTS_OR_OUTPUTS 'INPUTS' \
\
&& /opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/unified-product-analytics/automation/unified-product-analytics-automation.jar script:executeUPAAutomationScript -i {stepURI:v2} -u {username} -p {password} -l {compoundOutputFileLuid1} -s 'com/illumina/upa/scripts/common/step_completed.groovy'"
```

{% endcode %}

> ℹ The actual version of workflow(s) and/or step(s) used in the automation script may be different depending on the version of IPP installed.

</details>

#### Queue

* Defaults
  * Sample Grouping = Group by Containers
  * Well Sort Order = Column
* Sample Table (Column Headers)

  | **Category**   | **Field Name**      | **Field Type** | **Options** | **Additional Options and Dropdown Items** |
  | -------------- | ------------------- | -------------- | ----------- | ----------------------------------------- |
  | Container      | Container Name      | Built-in       |             |                                           |
  | Container      | LIMS ID (Container) | Built-in       |             |                                           |
  | Container      | Well                | Built-in       |             |                                           |
  | Derived Sample | Sample Name         | Built-in       |             |                                           |
  | Derived Sample | Waiting             | Built-in       |             |                                           |
  | Project        | Project Name        | Built-in       |             |                                           |

#### Ice Bucket

* Defaults
  * Sample Grouping = Group by Containers
  * Well Sort Order = Column
* Sample Table (Column Headers)

  | **Category**   | **Field Name**      | **Field Type** | **Options** | **Additional Options and Dropdown Items** |
  | -------------- | ------------------- | -------------- | ----------- | ----------------------------------------- |
  | Container      | Container Name      | Built-in       |             |                                           |
  | Container      | LIMS ID (Container) | Built-in       |             |                                           |
  | Container      | Well                | Built-in       |             |                                           |
  | Derived Sample | Sample Name         | Built-in       |             |                                           |
  | Derived Sample | Waiting             | Built-in       |             |                                           |
  | Project        | Project Name        | Built-in       |             |                                           |

#### Record Details

* Step Data (Master Step Fields)

  | **Field Name**                                           | **Field Type** | **Options**    | **Additional Options and Dropdown Items**                                                                                                 |
  | -------------------------------------------------------- | -------------- | -------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
  | Quick reference checklist: Sequencing Platform Selection | Multiline Text | Read Only      | <p>Default =<br>User tasks for this step:<br>- No actions for this page! The step serves to route all samples to the NovaSeq workflow</p> |
  | Sequencing Platform                                      | Text Dropdown  | Required Field | <p>Presets</p><ul><li>NovaSeq X IGA</li><li>NovaSeq 6K IGA</li></ul>                                                                      |
* Sample Table
  * Sample Display Default = Collapse
  * Well Sort Order = Column
  * Table Columns - Global Fields

    | **Category**   | **Field Name**      | **Field Type** | **Options** | **Additional Options and Dropdown Items** |
    | -------------- | ------------------- | -------------- | ----------- | ----------------------------------------- |
    | Container      | Container Name      | Built-in       |             |                                           |
    | Container      | LIMS ID (Container) | Built-in       |             |                                           |
    | Container      | Well                | Built-in       |             |                                           |
    | Derived Sample | Sample Name         | Built-in       |             |                                           |
    | Derived Sample | Sequencing Platform | Text           |             |                                           |
    | Project        | Project Name        | Built-in       |             |                                           |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://help.claritylims.illumina.com/applications/iga/iga-v3.0/iga-library-prep-automated-v3.0.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
