Overview
IGA NovaSeq Sequencing v2.1 contains preset protocols that support the setup of previously prepared libraries used with the NovaSeq instrument. These protocols can be used with the IGA Library Prep Automated v2.1 workflow. They also 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: Run Format (IGA)
Protocol Type = Library Prep
Next Steps Configuration
Step 1: Define Run Format (IGA)
Master Step Name = Define Run Format (IGA v2.1)
Automations
Register Sample & Register Step Started (IGA v2.1)Trigger Style = Automatic upon entry
Copy 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/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'"
Define Run Format - Assign Workflow and Flowcell Type to Samples & Set Next Steps to Remove from Workflow (IGA v2.1)Trigger Location = Record Details
Trigger Style = Automatic upon exit
Copy 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 'nextStep = ::REMOVE:: ; input.::Minimum Molarity (nM):: = (5 * input.::Final Loading Concentration (pM)::)/1000 ; if (!input.hasValue(::Normalized Molarity (nM)::)) { fail(::The Normalized Molarity cannot be empty.::) ; } else if (input.::Normalized Molarity (nM):: < input.::Minimum Molarity (nM)::) { input.::Warning:: = ::The Normalized Molarity is too low.:: ; input.::Loading Workflow Type:: = ::[Remove from workflow]:: ; } else { input.::Warning:: = ::n/a:: }' -log {compoundOutputFileLuid0}"
Define Run Format - Routing Script (IGA v2.1)Trigger Style = Automatic upon exit
Copy bash -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' && /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 'Loading Workflow Type' \
--FIELD_VALUE 'NovaSeq Standard' \
--WORKFLOW 'Illumina Genomics Architecture - NovaSeq Sequencing v2.1' \
--STEP 'Make Bulk Pool for NovaSeq Standard (IGA v2.1)' \
--INPUTS_OR_OUTPUTS 'INPUTS' \
\
--FIELD_NAME 'Loading Workflow Type' \
--FIELD_VALUE 'NovaSeq Xp' \
--WORKFLOW 'Illumina Genomics Architecture - NovaSeq Sequencing v2.1' \
--STEP 'Make Bulk Pool for NovaSeq Xp (IGA v2.1)' \
--INPUTS_OR_OUTPUTS 'INPUTS'"
Queue
Defaults
Sample Grouping = Group by Containers
Ice Bucket
Defaults
Sample Grouping = Group by Containers
Record Details
Step Data (Master Step Fields)
Step File Placeholders
Log file - Automatically attached
Sample Table (Table Columns - Global Fields)
Protocol 2: NovaSeq Standard
Protocol Type = Library Prep
Next Steps Configuration
Step 1: Make Bulk Pool for NovaSeq Standard
Master Step Name = Make Bulk Pool for NovaSeq Standard (IGA v2.1)
Aliquot Generation = Fixed, 1
Naming Convention = {PoolName}
Automations
Register Sample & Register Step Started (IGA v2.1)Trigger Style = Automatic upon entry
Copy 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/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'"
Pooling NovaSeq Standard - Show Warning Message (IGA v2.1)Trigger Location = Pooling
Trigger Style = Automatic upon entry
Copy bash -l -c "PYTHONPATH=/opt/gls/clarity/extensions/IGA_2.1 python3 \
/opt/gls/clarity/extensions/IGA_2.1/iga_novaseq/NovaSeq_pooling_warning.py \
-s {stepURI:v2} \
-u {username} \
-p {password} \
-l {compoundOutputFileLuid0}"
Validate Inputs Flowcell Type and Number of Pools (IGA v2.1)Trigger Location = Pooling
Trigger Style = Automatic upon exit
Copy bash -l -c "/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar script:validate_flowcell_for_input_pools -i {stepURI:v2} -u {username} -p {password} -l {compoundOutputFileLuid0} -validateSingleOutput false -poolType bulk \
&& PYTHONPATH=/opt/gls/clarity/extensions/IGA_2.1 python3 /opt/gls/clarity/extensions/IGA_2.1/iga_novaseq/validate_flowcell_pools.py -s {stepURI:v2} -u {username} -p {password} -l {compoundOutputFileLuid0}"
NovaSeq Make Bulk Pool - Output Plate BPP Barcode Check (Duplicates Allowed) (IGA v2.1)Trigger Location = Placement
Trigger Style = Automatic upon exit
Copy 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}-BPP:: ) ) {fail ( ::Invalid BPP Plate Barcode. This plate ID must be in the format LPxxxxxxx-BPP, where 'x' is a digit 0-9, e.g. LP1234567-BPP. Please verify and try again.:: ) }' -log {compoundOutputFileLuid0} \
&& PYTHONPATH=/opt/gls/clarity/extensions/IGA_2.1 python3 /opt/gls/clarity/extensions/IGA_2.1/iga_novaseq/validate_multiple_destination_plates.py -s {stepURI:v2} -u {username} -p {password} -l {compoundOutputFileLuid0}"
Make Bulk Pool NovaSeq Standard - Calculate Volumes and Generate Hamilton Input File (IGA v2.1)Trigger Location = Record Details
Trigger Style = Manual button
Copy 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} -t true -log {compoundOutputFileLuid0} \
script:evaluateDynamicExpression \
-h false \
-exp 'step.::Number of Samples in Pool:: = step.::Number of Samples in Pool:: + 1' \
script:evaluateDynamicExpression \
-h false \
-exp 'if ( input.::Flowcell Type:: == ::SP:: ) { step.::Bulk Pool Volume (ul):: = step.::Number of Flowcells to Sequence:: * 100 + 30 } ; if ( input.::Flowcell Type:: == ::S1:: ) { step.::Bulk Pool Volume (ul):: = step.::Number of Flowcells to Sequence:: * 100 + 30 } ; if ( input.::Flowcell Type:: == ::S2:: ) { step.::Bulk Pool Volume (ul):: = step.::Number of Flowcells to Sequence:: * 150 + 30 } ; if ( input.::Flowcell Type:: == ::S4:: ) { step.::Bulk Pool Volume (ul):: = step.::Number of Flowcells to Sequence:: * 310 + 30 } ; input.::Per Sample Volume (ul):: = 0' \
&& PYTHONPATH=/opt/gls/clarity/extensions/IGA_2.1 python3 \
/opt/gls/clarity/extensions/IGA_2.1/make_bpp/calculate_sample_volume.py \
-s {stepURI:v2} \
-u {username} \
-p {password} \
&& /opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar -i {stepURI:v2} -u {username} -p {password} -t true -log {compoundOutputFileLuid0} \
script:calculate_adjusted_per_sample_volume \
script:evaluateDynamicExpression \
-h false \
-exp 'step.::Total Sample Volume (ul):: = step.::Total Sample Volume (ul):: + input.::Adjusted Per Sample Volume (ul)::' \
script:evaluateDynamicExpression \
-h false \
-exp 'if (step.::Total Sample Volume (ul):: >= step.::Bulk Pool Volume (ul)::) {output.::RSB Volume (ul):: = 0} else {output.::RSB Volume (ul):: = step.::Bulk Pool Volume (ul):: - step.::Total Sample Volume (ul)::} ; output.::Flowcell Type:: = input.::Flowcell Type:: ; output.::Loading Workflow Type:: = input.::Loading Workflow Type:: ; if ( input.::Flowcell Type:: == ::SP:: ) { output.::Volume of Pool to Denature (ul):: = 100 ; output.::NaOH Volume (ul):: = 25 ; output.::Tris-HCl Volume (ul):: = 25 } ; if ( input.::Flowcell Type:: == ::S1:: ) { output.::Volume of Pool to Denature (ul):: = 100 ; output.::NaOH Volume (ul):: = 25 ; output.::Tris-HCl Volume (ul):: = 25 } ; if ( input.::Flowcell Type:: == ::S2:: ) {output.::Volume of Pool to Denature (ul):: = 150 ; output.::NaOH Volume (ul):: = 37.50 ; output.::Tris-HCl Volume (ul):: = 37.50 } ; ; if ( input.::Flowcell Type:: == ::S4:: ) { output.::Volume of Pool to Denature (ul):: = 310 ; output.::NaOH Volume (ul):: = 77.50 ; output.::Tris-HCl Volume (ul):: = 77.50 }' \
&& \
/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar \
-i {stepURI:v2} -u {username} -p {password} -t true -log {compoundOutputFileLuid0} \
script:evaluateDynamicExpression \
-h false \
-exp 'step.::Number of Samples in Pool:: = step.::Number of Samples in Pool:: - 1; step.::Total Sample Volume (ul):: = step.::Total Sample Volume (ul):: - input.::Adjusted Per Sample Volume (ul)::' \
&& \
/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 {compoundOutputFileLuid1} \
-t /opt/gls/clarity/extensions/IGA_2.1/hamilton_fast_prep/templatefiles/MakeBPFile_NovaSeq_template.csv \
-o Output_plate_name.csv \
-l {compoundOutputFileLuid2} && \
PYTHONPATH=/opt/gls/clarity/extensions/IGA_2.1 python3 \
/opt/gls/clarity/extensions/IGA_2.1/make_bpp/apply_multiple_bulk_pools.py \
-s {stepURI:v2} \
-u {username} \
-p {password} \
--min-volume {udf:Minimum Per Sample Volume (ul)} \
--selected-cf {udf:Apply Correction Factors} \
--hamilton-limsid {compoundOutputFileLuid1} \
--custom-cf-limsid {compoundOutputFileLuid4} \
-l {compoundOutputFileLuid5} "
Make Bulk Pool NovaSeq Standard - Validate Hamilton Output File Name if Present, Parse Instrument ID, Set Next Steps to Advance (IGA v2.1)Trigger Location = Record Details
Trigger Style = Automatic upon exit
Copy 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 'step.::Liquid Handling Instrument ID:: = ::::' -log {compoundOutputFileLuid0} \
&& \
/usr/bin/env python /opt/gls/clarity/extensions/IGA_2.1/iga_novaseq/01_NovaSeqStd_confirmPlateIDAndStoreInstrumentID_OptionalFile.py -u {username} -p {password} -s {stepURI} -f {compoundOutputFileLuid3} -i 'Liquid Handling 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 'if (!step.hasValue(::Liquid Handling Instrument ID::)) {step.::Liquid Handling Instrument ID:: = ::NO HAMILTON OUTPUT FILE UPLOADED:: } ; nextStep = ::ADVANCE::' -log {compoundOutputFileLuid0}"
Register Step Completed (IGA v2.1)Trigger Style = Automatic upon exit
Copy 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' && \
/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/pooling.groovy'"
Validate Unique Indexes (IGA v2.1)Trigger Location = Not Used
Copy 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:validateUniqueIndexes"
Queue
Defaults
Sample Grouping = Group by Containers
Ice Bucket
Defaults
Sample Grouping = Group by Containers
Pooling
Defaults
Sample Grouping = Group by Containers
Placement = Enabled
Defaults
Placement Pattern = Column
Record Details
Step Data (Master Step Fields)
Step File Placeholders
Calculation Log - Automatically attached
Hamilton Make Bulk Pool Input File - Automatically attached
Hamilton file log - Automatically attached
Hamilton Output File - Manually uploaded
Custom Correction Factors - Manually uploaded
Index Correction Log - Automatically attached
Sample Table (Table Columns - Global Fields)
Step 2: Dilute and Denature
Master Step Name = Dilute and Denature (IGA v2.1)
Derived Sample Generation = Fixed, 1
Naming Convention = {InputItemName}
Reagent Kits
Resuspension Buffer (RSB)
Automations
Validate Single Input (IGA v2.1)Trigger Style = Automatic upon entry
Copy 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:validateSampleCount -min 1 -max 1 && \
/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'"
Validate Library Tube Barcode (IGA v2.1)Trigger Location = Placement
Trigger Style = Automatic upon exit
Copy 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 -exp 'if (!output.container.name.matches( ::[A-Z]{2}[0-9]{7}-[A-Z]{3}:: ) ) {fail ( ::Invalid Library Tube Barcode. This must be in the format CCxxxxxxx-CCC, where 'x' is a digit 0-9 and 'C' is an uppercase letter, e.g. LP1234567-ABC. Please verify and try again.:: ) } ; output.::Flowcell Type:: = input.::Flowcell Type:: ; output.::Loading Workflow Type:: = input.::Loading Workflow Type::' -log {compoundOutputFileLuid1}"
Dilute and Denature NovaSeq Standard - Generate Hamilton Library Tube Input File, Validate Run Setup, and Generate SampleSheet (IGA v2.1)Trigger Location = Record Details
Trigger Style = Manual button
Copy 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 {compoundOutputFileLuid2} \
-t /opt/gls/clarity/extensions/IGA_2.1/hamilton_fast_prep/templatefiles/LoadToLibTubeFile_NovaSeqStd_template.csv \
-o Output_plate_name.csv \
-l {compoundOutputFileLuid3} && \
/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 'step.::Run Mode:: = input.::Flowcell Type:: ; if (!step.::Experiment Name::.matches(::[a-zA-Z0-9-_]+::)) { fail(::Experiment Name contains prohibited characters. Allowed characters are: a-z, A-Z, 0-9, -, and _::) }; if (step.::Workflow Type:: == ::No Index::) { if (step.::Index Read 1:: != 0) { fail(::Index Read 1 must be 0 if the Workflow Type is No Index.::) } } else { if (step.::Index Read 1:: == 0) { fail(::Index Read 1 must be greater than 0 if the Workflow Type is :: + step.::Workflow Type:: + ::.::) } }; if (step.::Paired End::.toBoolean() && step.::Read 2 Cycles:: == 0) { fail(::Read 2 Cycles must not be zero if it is Paired End read.::) }; if (step.::Workflow Type:: == ::Dual Index:: && step.::Index Read 2:: == 0) { fail(::Index Read 2 must not be zero if Workflow Type is Dual Index.::) }; if (step.::Workflow Type:: == ::No Index:: || step.::Workflow Type:: == ::Single Index::) { step.::Index Read 2:: = 0 }; if (!step.::Paired End::.toBoolean()) { step.::Read 2 Cycles:: = 0 }; if (input.::Flowcell Type::!=::SP:: && step.::Read 1 Cycles:: > 151) { fail(::Read 1 Cycles must not be larger than 151 if it is not SPrime Flowcell::) };if (input.::Flowcell Type::!=::SP:: && step.::Read 2 Cycles:: > 151) { fail(::Read 2 Cycles must not be larger than 151 if it is not SPrime Flowcell::) }; nextStep = ::REMOVE::' \
-log {compoundOutputFileLuid1} \
-t true \
&& if [[ '{udf:SampleSheet Version}' == 'V2' && '{udf:Enable Secondary Analysis}' == 'false' ]]; then \
templateFilename='/opt/gls/clarity/extensions/IGA_2.1/ss_converter_templates/NovaSeq_BCL2FASTQ_Samplesheet_Std_V2.csv'; \
else \
templateFilename='/opt/gls/clarity/extensions/IGA_2.1/ss_converter_templates/NovaSeq_BCL2FASTQ_Samplesheet_Std_V1.csv'; \
fi \
&& /opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/DriverFileGenerator.jar -i {stepURI:v2} -u {username} -p {password} \
script:driver_file_generator \
-t $templateFilename \
-o {compoundOutputFileLuid0}.csv \
-q true \
-destLIMSID {compoundOutputFileLuid0} \
-l {compoundOutputFileLuid1} \
&& if [[ '{udf:Enable Secondary Analysis}' == 'true' ]]; then \
PYTHONPATH=/opt/gls/clarity/extensions/IGA_2.1 python3 /opt/gls/clarity/extensions/IGA_2.1/ss_converter \
--input {compoundOutputFileLuid0}.csv \
--bssh-app {udf:BaseSpace App Slug} \
--stepURI {stepURI:v2} -u {username} -p {password} -q \
--destLIMSID {compoundOutputFileLuid0} 2>&1; \
fi && \
/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/DriverFileGenerator.jar \
-i {stepURI:v2} -u {username} -p {password} \
script:driver_file_generator \
-t /opt/gls/clarity/extensions/IGA_2.1/iga_novaseq/Biosample_Manifest.csv \
-o {compoundOutputFileLuid4}.csv \
-q true \
-destLIMSID {compoundOutputFileLuid4} \
-l {compoundOutputFileLuid1}"
Dilute and Denature NovaSeq Standard - Set Next Steps to Remove from Workflow (IGA v2.1)Trigger Location = Record Details
Trigger Style = Automatic upon exit
Copy 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 'step.::Liquid Handling Instrument ID:: = ::::' -log {compoundOutputFileLuid1} \
&& \
/usr/bin/env python /opt/gls/clarity/extensions/IGA_2.1/iga_novaseq/02_NovaSeqStd_confirmPlateIDAndStoreInstrumentID_OptionalFile_DiluteDenature.py -u {username} -p {password} -s {stepURI} -f {compoundOutputFileLuid4} -i 'Liquid Handling 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 'if (!step.hasValue(::Liquid Handling Instrument ID::)) {step.::Liquid Handling Instrument ID:: = ::NO HAMILTON OUTPUT FILE UPLOADED:: } ; nextStep = ::REMOVE::' -log {compoundOutputFileLuid1}"
Dilute and Denature NovaSeq Standard - Routing Script (IGA v2.1)Trigger Style = Automatic upon exit
Copy 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:v2} -l {compoundOutputFileLuid1} script:changeWorkflow \
\
--FIELD_NAME 'N/A' \
--FIELD_VALUE 'N/A' \
--WORKFLOW 'Illumina Genomics Architecture - NovaSeq Sequencing v2.1' \
--STEP 'AUTOMATED - NovaSeq Run (IGA v2.1)' \
--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'"
Queue
Defaults
Sample Grouping = Group by Containers
Ice Bucket
Defaults
Sample Grouping = Group by Containers
Placement = Enabled
Defaults
Sample Grouping = Group by Containers
Placement Pattern = Column
Record Details
Step Data (Master Step Fields)
Step File Placeholders
Sample Sheet - Automatically attached
Sample sheet Log File - Automatically attached
Hamilton Load to Library tube file - Automatically attached
Hamilton file log - Automatically attached
Biosample Manifest - Automatically attached
Sample Table (Table Columns - Global Fields)
Protocol 3: NovaSeq Xp
Protocol Type = Library Prep
Next Steps Configuration
Step 1: Make Bulk Pool for NovaSeq Xp
Master Step Name = Make Bulk Pool for NovaSeq Xp (IGA v2.1)
Aliquot Generation = Fixed, 1
Naming Convention = {PoolName}
Automations
Register Sample & Register Step Started (IGA v2.1)Trigger Style = Automatic upon entry
Copy 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/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'"
Validate Inputs Flowcell Type and Single Pool (IGA v2.1)Trigger Location = Pooling
Trigger Style = Automatic upon exit
Copy bash -l -c "/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar script:validate_flowcell_for_input_pools -i {stepURI:v2} -u {username} -p {password} -l {compoundOutputFileLuid0} -validateSingleOutput true -poolType bulk"
NovaSeq Make Bulk Pool - Output Plate BPP Barcode Check (Duplicates Allowed) (IGA v2.1)Trigger Location = Placement
Trigger Style = Automatic upon exit
Copy 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}-BPP:: ) ) {fail ( ::Invalid BPP Plate Barcode. This plate ID must be in the format LPxxxxxxx-BPP, where 'x' is a digit 0-9, e.g. LP1234567-BPP. Please verify and try again.:: ) }' -log {compoundOutputFileLuid0} \
&& PYTHONPATH=/opt/gls/clarity/extensions/IGA_2.1 python3 /opt/gls/clarity/extensions/IGA_2.1/iga_novaseq/validate_multiple_destination_plates.py -s {stepURI:v2} -u {username} -p {password} -l {compoundOutputFileLuid0}"
Make Bulk Pool NovaSeq Xp - Reset Loading Workflow Type and Flowcell Type (IGA v2.1)Trigger Location = Record Details
Trigger Style = Automatic upon entry
Copy 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 'output.::Loading Workflow Type:: = input.::Loading Workflow Type::; output.::Flowcell Type:: = input.::Flowcell Type::' -log {compoundOutputFileLuid0}"
Make Bulk Pool NovaSeq Xp - Calculate Volumes and Generate Hamilton Input File (IGA v2.1)Trigger Location = Record Details
Trigger Style = Manual button
Copy 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} -t true -log {compoundOutputFileLuid0} \
script:evaluateDynamicExpression \
-h false \
-exp 'step.::Number of Samples in Pool:: = step.::Number of Samples in Pool:: + 1' \
script:evaluateDynamicExpression \
-h false \
-exp 'if ( input.::Flowcell Type:: == ::SP:: ) { step.::Bulk Pool Volume (ul):: = step.::Number of Lanes to Sequence:: * 18+ 30 } ; if ( input.::Flowcell Type:: == ::S1:: ) { step.::Bulk Pool Volume (ul):: = step.::Number of Lanes to Sequence:: * 18+ 30 } ; if ( input.::Flowcell Type:: == ::S2:: ) { step.::Bulk Pool Volume (ul):: = step.::Number of Lanes to Sequence:: * 22 + 30 } ; if ( input.::Flowcell Type:: == ::S4:: ) { step.::Bulk Pool Volume (ul):: = step.::Number of Lanes to Sequence:: * 30 + 30 } ; input.::Per Sample Volume (ul):: = ( ( (input.::Final Loading Concentration (pM):: * 5 / 1000) / input.::Normalized Molarity (nM):: ) * step.::Bulk Pool Volume (ul):: ) / step.::Number of Samples in Pool::' \
script:calculate_adjusted_per_sample_volume \
script:evaluateDynamicExpression \
-h false \
-exp 'step.::Total Sample Volume (ul):: = step.::Total Sample Volume (ul):: + input.::Adjusted Per Sample Volume (ul)::' \
script:evaluateDynamicExpression \
-h false \
-exp 'if (step.::Total Sample Volume (ul):: >= step.::Bulk Pool Volume (ul)::) {output.::RSB Volume (ul):: = 0} else {output.::RSB Volume (ul):: = step.::Bulk Pool Volume (ul):: - step.::Total Sample Volume (ul)::} ; output.::Flowcell Type:: = input.::Flowcell Type:: ; output.::Loading Workflow Type:: = input.::Loading Workflow Type::' \
&& \
/opt/gls/clarity/bin/java -jar /opt/gls/clarity/extensions/ngs-common/v5/EPP/ngs-extensions.jar -i {stepURI:v2} -u {username} -p {password} -t true -log {compoundOutputFileLuid0} \
script:evaluateDynamicExpression \
-h false \
-exp 'step.::Number of Samples in Pool:: = step.::Number of Samples in Pool:: - 1; step.::Total Sample Volume (ul):: = step.::Total Sample Volume (ul):: - input.::Adjusted Per Sample Volume (ul)::' \
&& \
/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 {compoundOutputFileLuid1} \
-t /opt/gls/clarity/extensions/IGA_2.1/hamilton_fast_prep/templatefiles/MakeBPFile_NovaSeq_template.csv \
-o Output_plate_name.csv \
-l {compoundOutputFileLuid2} && \
PYTHONPATH=/opt/gls/clarity/extensions/IGA_2.1 python3 \
/opt/gls/clarity/extensions/IGA_2.1/make_bpp/apply_multiple_bulk_pools.py \
-s {stepURI:v2} \
-u {username} \
-p {password} \
--min-volume {udf:Minimum Per Sample Volume (ul)} \
--selected-cf {udf:Apply Correction Factors} \
--hamilton-limsid {compoundOutputFileLuid1} \
--custom-cf-limsid {compoundOutputFileLuid3} \
-l {compoundOutputFileLuid4} "
Set Flowcell Type and Next Step (IGA v2.1)Trigger Location = Record Details
Trigger Style = Automatic upon exit
Copy 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 'output.::Flowcell Type:: = input.::Flowcell Type:: ; nextStep = ::ADVANCE::' -log {compoundOutputFileLuid0}"
Register Step Completed (IGA v2.1)Trigger Style = Automatic upon exit
Copy 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' && \
/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/pooling.groovy'"
Validate Unique Indexes (IGA v2.1)Trigger Location = Not Used
Copy 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:validateUniqueIndexes"
Queue
Defaults
Sample Grouping = Group by Containers
Ice Bucket
Defaults
Sample Grouping = Group by Containers
Pooling
Defaults
Sample Grouping = Group by Containers
Placement = Enabled
Defaults
Placement Pattern = Column
Record Details
Step Data (Master Step Fields)
Step File Placeholders
Log - Automatically attached
Hamilton Make Bulk Pool Input File - Automatically attached
Hamilton Input File Generation Log - Automatically attached
Custom Correction Factors - Manually uploaded
Index Correction Log - Automatically attached
Sample Table
Sample Display Default = Expand
Table Columns - Global Fields
Step 2: Dilute, Denature & ExAmp