The Illumina NovaSeq 6000 Integration Package v2.5.0 supports the integration of Clarity LIMS to NovaSeq 6000 instruments.
This document describes the integration and includes information about the preconfigured protocols, steps, automations, installed components, configuration requirements, rules, and constraints.
The configuration provided in this integration has been established to support NovaSeq 6000 lab processes. Any configuration changes to protocols or workflows—including renaming protocols, steps, and fields—could break the process.
Prerequisites and Assumptions
It is assumed that samples enter the NovaSeq 6000 v2.3 workflow as normalized libraries. That is, before they are assigned to the workflow the following actions occur:
Samples have been accessioned into Clarity LIMS.
Samples have been run through QC and library prep.
Samples have been normalized, and the value is captured in a field called Normalized Molarity (nM).
Included for validation purposes only, this protocol models the library prep steps required to advance samples to the Run Format (NovaSeq 6000 v2.3) protocol.
The protocol contains a single step: NovaSeq Validation Library Prep (NovaSeq 6000 v2.3). At the end of this step, a routing script sends the samples to the first step of the NovaSeq 6000 v2.3 workflow, which is Define Run Format (NovaSeq 6000 v2.3).
Allows for the assignment of per sample values for Loading Workflow Type, Normalized Molarity, Flowcell Type, and Final Loading Concentration (pM).
Loading Workflow Type: Select from NovaSeq Standard or NovaSeq Xp.
Normalized Molarity: Enter a value for each sample.
Flowcell Type: Select from options S1, S2, S4, and SP.
Final Loading Concentration (pM): Select from the options 225 (PCR-free workflows) or 400 (Nano workflows). Alternatively, enter a different value.
Compares the Normalized Molarity value of each sample with the Minimum Molarity value.
Routing script sends samples to the NovaSeq Standard or NovaSeq Xp protocol, according to the selected Loading Workflow Type. Samples with Normalized Molarity less than Minimum Molarity are removed from the workflow.
Steps:
Define Run Format (NovaSeq 6000 v2.3)
Protocol 2: NovaSeq Standard (NovaSeq 6000 v2.3)
Purpose:
Samples are pooled and added to the library tube in preparation for the NovaSeq run. Sample sheet and run recipe files are generated.
Routing script sends library tube to the AUTOMATED - NovaSeq Run (NovaSeq 6000 v2.3) protocol.
Steps:
Make Bulk Pool for NovaSeq Standard (NovaSeq 6000 v2.3)
Dilute and Denature (NovaSeq 6000 v2.3)
Protocol 3: NovaSeq Xp (NovaSeq 6000 v2.3)
Purpose:
Samples are pooled and added to lanes on the NovaSeq flow cell. The flow cell type is determined by the option selected in the Define Run Format (NovaSeq 6000 v2.3) step. Sample sheet and run recipe files are generated.
Samples are queued for the AUTOMATED - NovaSeq Run (NovaSeq 6000 v2.3) protocol.
Steps:
Make Bulk Pool for NovaSeq Xp (NovaSeq 6000 v2.3)
Dilute, Denature & ExAmp (NovaSeq 6000 v2.3)
Load to Flowcell (NovaSeq 6000 v2.3)
Protocol 4: AUTOMATED - NovaSeq Run (NovaSeq6000 v2.3)
Purpose:
All samples complete the workflow by going through this protocol.
This protocol sets the Loading Workflow Type and allows you to choose the appropriate Flowcell Type and Final Loading Concentration(pM). At the end of the protocol, a routing script sends the normalized libraries to either the NovaSeq Standard (NovaSeq 6000 v2.3) or the NovaSeq Xp (NovaSeq 6000 v2.3) protocol.
This protocol contains one step: Define Run Format (NovaSeq 6000 v2.3).
Step 1: Define Run Format (NovaSeq 6000 v2.3)
Step input: NTP (normalized libraries)
Step output: None
Set Next Steps Automation
Automatically triggered on exit of the Record Details screen, this automation does the following actions:
Sets the next step for samples to REMOVE with
nextStep = ::REMOVE::
Calculates the Minimum Molarity using the following formula:
Checks Normalized Molarity value. For samples with no Normalized Molarity value (e.g., an empty value, not including 0), the automation generates an error message stating that the field cannot be empty:
if (!input.hasValue(::Normalized Molarity (nM)::)) { fail(::The Normalized Molarity cannot be empty.::) ; }
Compares the Normalized Molarity value of each sample with the Minimum Molarity value. If Normalized Molarity value is lower than the Minimum Molarity value, sets the Loading Workflow Type of the sample to [Remove from workflow] and records a message in the Warning field:
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:: }
At this point, there are two options:
Correct the Normalized Molarity value on the Record Details screen. Also, edit the Loading Workflow Type field and set it to NovaSeq Standard or NovaSeq Xp, as applicable.
Complete the protocol without correcting the Normalized Molarity value. In this case, those samples are removed from the workflow.
Routing Script Automation
Automatically triggered on exit of the step, this automation invokes the changeWorkflow script, which routes step inputs appropriately.
Samples with Loading Workflow Type field value of NovaSeq Standard are routed to the NovaSeq 6000 v2.3 workflow and queued for the Make Bulk Pool for NovaSeq Standard (NovaSeq 6000 v2.3) step.
Samples with Loading Workflow Type field value of NovaSeq Xp are routed to the NovaSeq 6000 v2.3 workflow and queued for the Make Bulk Pool for NovaSeq Xp (NovaSeq 6000 v2.3) step.
The default automation command line is as follows.
The following table provides field configuration details for the fields defined on the Define Run Format (NovaSeq 6000 v2.3) step.
Define Run Format (NovaSeq 6000 v2.3) Master Step Field Configuration
Global Fields
The following table lists the global fields that are configured to display on the Define Run Format (NovaSeq 6000 v2.3) step.
Global Field Configuration (Derived Sample)
Protocol 2: NovaSeq Standard (NovaSeq 6000 v2.3)
Samples are routed to this protocol if the Loading Workflow Type value is set to NovaSeq Standard. Samples are pooled and added to a library tube in preparation for the NovaSeq run.
At the end of this protocol, a routing script sends the library tube to the AUTOMATED - NovaSeq Run (NovaSeq 6000 v2.3) protocol.
This protocol contains two steps:
Make Bulk Pool for NovaSeq Standard (NovaSeq 6000 v2.3)
Dilute and Denature (NovaSeq 6000 v2.3)
Step 1: Make Bulk Pool for NovaSeq Standard (NovaSeq 6000 v2.3)
In this step, manually place libraries into a single pool. Resuspension buffer and reagents are added.
Step input: NTP (normalized libraries)
Step output: Bulk pool
The following automations are configured on the step (in the order they are triggered at run time).
Validate Inputs Flowcell Type and Single Pool Automation
Automatically triggered on exit of the Pooling screen, this automation checks the following information:
All samples in the pool have the same Flowcell Type assigned to them.
Due to the 4000-character limit, part of the script definition of Calculate Volumes has been moved into the Calculate Volumes Script field. If this part of the script needs to be modified, you can make the changes to the default value of the Calculate Volumes Script field. The parts of the script that were moved into the Calculate Volumes Script field are identified below.
Automatically triggered when the Calculate Volumes button on the Record Details screen is selected, this automation does the following actions:
Calculates the number of samples in the pool:
step.::Number of Samples in Pool:: = step.::Number of Samples in Pool:: + 1
Sets the value of the Bulk Pool Volume (ul) and PhiX Volume (ul) fields, based on the selected Flowcell Type. The following part of the automation is found in the Calculate Volumes Script field:
step.::PhiX Volume (ul):: = !step.hasValue(::% PhiX (2.5nM) Spike-In::) ? 0 : step.::% PhiX (2.5nM) Spike-In::;
if (input.::Flowcell Type:: == ::SP::) {
step.::Bulk Pool Volume (ul):: = step.::Number of Flowcells to Sequence:: * 100;
step.::PhiX Volume (ul):: *= 0.6
};
if (input.::Flowcell Type:: == ::S1::) {
step.::Bulk Pool Volume (ul):: = step.::Number of Flowcells to Sequence:: * 100;
step.::PhiX Volume (ul):: *= 0.6
};
if (input.::Flowcell Type:: == ::S2::) {
step.::Bulk Pool Volume (ul):: = step.::Number of Flowcells to Sequence:: * 150;
step.::PhiX Volume (ul):: *= 0.9
};
if (input.::Flowcell Type:: == ::S4::) {
step.::Bulk Pool Volume (ul):: = step.::Number of Flowcells to Sequence:: * 310;
step.::PhiX Volume (ul):: *= 1.9
};
if (step.::PhiX Volume (ul):: == 0) {
step.::PhiX Volume (ul):: = ::::
};
Calculates the Per Sample Volume (ul) to be added to the pool. The following part of the automation is found in the Calculate Volumes Script field:
If the smallest Per Sample Volume (ul) value is less than 5, Clarity LIMS automatically assigns a value of 5 to the Adjusted Per Sample Volume (ul) field.
Clarity LIMS then adjusts the Adjusted Per Sample Volume (ul) field value for all other samples in the batch, based on the ratio used to increase the lowest value to 5.
Calculates the Total Sample Volume (ul) field value:
Sets the Volume of Pool to Denature (ul) value and calculates NaOH Volume (ul) and Tris-HCl Volume (ul) values, based on the Flowcell Type:
step.::PhiX Volume (ul):: = !step.hasValue('% PhiX (2.5nM) Spike-In') ? 0 : step.'% PhiX (2.5nM) Spike-In';
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;
output.::Tris-HCl Volume (ul):: = 38;
}
if (input.::Flowcell Type:: == ::S4::) {
output.::Volume of Pool to Denature (ul):: = 310;
output.::NaOH Volume (ul):: = 77;
output.::Tris-HCl Volume (ul):: = 78;
}
Uses the NovaSeq_Standard_Bulk_Pool1.csv, NovaSeq_Standard_Bulk_Pool2.csv, and NovaSeq_Standard_Bulk_Pool3.csv template files to generate a single CSV file containing information about the pool and the samples it contains. The generated file is available for download on the Step Setup screen of the following step: Dilute and Denature (NovaSeq 6000 v2.3).
Resets the Total Sample Volume (ul) and Number of Samples in Pool field values so that the automation is idempotent:
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)'
Set Next Step Automation
Automatically triggered on exit of the Record Details screen, the following automation sets the next step for samples to ADVANCE, advancing them to the Dilute and Denature (NovaSeq 6000 v2.3) step in the protocol:
nextStep = ::ADVANCE::
Validate Unique Indexes Automation
Master Step Fields
The following table provides field configuration details for the fields defined on the Make Bulk Pool for NovaSeq Standard (NovaSeq 6000 v2.3) step.
Make Bulk Pool for NovaSeq Standard (NovaSeq 6000 v2.3) Master Step Field Configuration
Calculate Volumes Script
step.::PhiX Volume (ul):: = !step.hasValue(::% PhiX (2.5nM) Spike-In::) ? 0 : step.::% PhiX (2.5nM) Spike-In::; if (input.::Flowcell Type:: == ::SP::) { step.::Bulk Pool Volume (ul):: = step.::Number of Flowcells to Sequence:: * 100; step.::PhiX Volume (ul):: *= 0.6 }; if (input.::Flowcell Type:: == ::S1::) { step.::Bulk Pool Volume (ul):: = step.::Number of Flowcells to Sequence:: * 100; step.::PhiX Volume (ul):: *= 0.6 }; if (input.::Flowcell Type:: == ::S2::) { step.::Bulk Pool Volume (ul):: = step.::Number of Flowcells to Sequence:: * 150; step.::PhiX Volume (ul):: *= 0.9 }; if (input.::Flowcell Type:: == ::S4::) { step.::Bulk Pool Volume (ul):: = step.::Number of Flowcells to Sequence:: * 310; step.::PhiX Volume (ul):: *= 1.9 }; if (step.::PhiX Volume (ul):: == 0) { step.::PhiX Volume (ul):: = :::: }; 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::
Global Fields
The following table lists the global fields that are configured to display on the Make Bulk Pool for NovaSeq Standard (NovaSeq 6000 v2.3) step.
Global Field Configuration (Derived Sample)
Step 2: Dilute and Denature (NovaSeq 6000 v2.3)
In this step, pooled samples are denatured and diluted by the addition of NaOH, Tris-HCl, and Resuspension Buffer (RSB). Samples are manually placed into the library tube that is used in the NovaSeq run. In addition, this step generates the sample sheet file and the run recipe (*json file) needed to start the NovaSeq run. The step input is Bulk pool, and the step output is Library tube.
Validate Single Input Automation
Automatically triggered at the beginning of the step, the following automation checks that there is only one container input to the step:
script:validateSampleCount -min 1 -max 1
Validate Library Tube Barcode Automation
Automatically triggered on exit of the Placement screen, the following automation validates the library tube barcode to make sure it conforms to the barcode mask [A-Z]{2}[0-9]{7}-[A-Z]{3}:
if (!output.container.name.matches(::[A-Z]{2}[0-9]{7}-[A-Z]{3}::)){
fail(::Invalid Library Tube Barcode. Please verify and try again.::)
}
Generate Sample Sheet & Run Recipe Automation
Automatically triggered when a button on the Record Details screen is selected, this automation does the following actions:
Copies the Flowcell Type from the step input to the step output:
Validates the parameters entered on the Record Details screen:
Experiment Name can only contain alphanumeric, dash, or underscore characters. Spaces are not permitted.
When Workflow Type is No Index, Index Read 1 must be zero. For any other Workflow Type, Index Read 1 must be greater than zero.
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::+ ::.::)
}
}
When Paired End is True, Index Read 1 and Index Read 2 must be greater than zero.
When Paired End is False, Index Read 2 must be zero, Reverse Complement Workflow must be false, UMI - Read 2 Length must not have a value, and UMI - Read 2 Start from Cycle must not have a value.
if (step.::Paired End::.toBoolean()) {
if (step.::Read 1 Cycles:: == 0 || step.::Read 2 Cycles:: == 0) {
fail(::Read 1 Cycles and Read 2 Cycles must be greater than 0 if Paired End is True.::);
}
} else {
if (step.::Read 2 Cycles:: != 0) {
fail(::Read 2 Cycles must be 0 if Paired End is False.::);
}
if (step.hasValue(::UMI - Read 2 Length::) || step.hasValue(::UMI - Read 2 Start From Cycle::)) {
fail(::UMI - Read 2 Length and UMI - Read 2 Start From Cycle cannot be defined if Paired End is False.::);
}
}
Validates allowed read cycles to be not greater than 151 if the Flowcell Type is not SP.
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.::);
}
Validates allowed value for UMI - Read 1 Length, UMI - Read 2 Length, UMI - Read 1 From Cycle, UMI - Read 2 From Cycle.
if (step.hasValue(::UMI - Read 1 Length::) && !step.hasValue(::UMI - Read 1 Start From Cycle::)) {
fail(::UMI - Read 1 Start From Cycle must be greater than 0 if UMI - Read 1 Length is greater than 0.::);
}
if (!step.hasValue(::UMI - Read 1 Length::) && step.hasValue(::UMI - Read 1 Start From Cycle::)) {
fail(::UMI - Read 1 Length must be greater than 0 if UMI - Read 1 Start From Cycle is greater than 0.::);
}
if (step.hasValue(::UMI - Read 2 Length::) && !step.hasValue(::UMI - Read 2 Start From Cycle::)) {
fail(::UMI - Read 2 Start From Cycle must be greater than 0 if UMI - Read 2 Length is greater than 0.::);
}
if (!step.hasValue(::UMI - Read 2 Length::) && step.hasValue(::UMI - Read 2 Start From Cycle::)) {
fail(::UMI - Read 2 Length must be greater than 0 if UMI - Read 2 Start From Cycle is greater than 0.::);
}
if (!step.hasValue(::UMI - Read 1 Length::) && step.hasValue(::UMI - Read 2 Length::)) {
fail(::UMI - Read 1 Length must be greater than 0 if UMI - Read 2 Length is greater than 0.::);
}
if (!step.hasValue(::UMI - Read 1 Start From Cycle::) && step.hasValue(::UMI - Read 2 Start From Cycle::)) {
fail(::UMI - Read 1 Start From Cycle must be greater than 0 if UMI - Read 2 Start From Cycle is greater than 0.::);
}
Sets the next step for samples to REMOVE.
nextStep = ::REMOVE::
Generates the sample sheet and the run recipe file and attaches them to the step. For details on how the files are generated and their contents, refer to Sample Sheet and Run Recipe File Generation.
Prepare Files for NovaSeq Automation
Automatically triggered on exit of the Record Details screen, this automation invokes the copy_attachments_to_network_folder script, which is included in the novaseq-remote-extensions.jar file. This script places the generated sample sheet and run recipe (*json file) into the appropriate folder on the NAS, where the instrument uses them to start the run.
Automatically triggered on exit of the step, this automation invokes the changeWorkflow script, which routes step outputs to the NovaSeq 6000 v2.3 workflow, and queues them for the AUTOMATED - NovaSeq Run (NovaSeq 6000 v2.3) step.
The default automation command line is as follows.
The following table provides field configuration details fields defined on the Dilute and Denature (NovaSeq 6000 v2.3) step. These fields are required for sample sheet and JSON file generation.
Dilute and Denature (NovaSeq 6000 v2.3) Master Step Field Configuration
Global Step Fields
The following table lists the global step fields that are configured to display on the Dilute and Denature (NovaSeq 6000 v2.3) step.
Global Field Configuration (Derived Sample)
Protocol 3: NovaSeq Xp (NovaSeq 6000 v2.3)
Samples are routed to this protocol if the Loading Workflow Type value is set to NovaSeq Xp.
Samples are pooled and added to lanes on the NovaSeq flow cell type selected in the Define Run Format (NovaSeq 6000 v2.3) step.
At the end of the protocol, a routing script sends the flow cell to the AUTOMATED - NovaSeq Run (NovaSeq 6000 v2.3) protocol.
This protocol contains three steps:
Step 1: Make Bulk Pool for NovaSeq Xp (NovaSeq 6000 v2.3)
Automatically triggered when the Calculate Volumes button on the Record Details screen is selected, this automation:
Calculates the number of samples in the pool:
step.::Number of Samples in Pool:: = step.::Number of Samples in Pool:: + 1
Sets the value of the Bulk Pool Volume (ul) and PhiX Volume (ul) field, based on the selected Flowcell Type:
step.::PhiX Volume (ul):: = !step.hasValue(::% PhiX (0.25nM) Spike-In::) ? 0 : step.::% PhiX (0.25nM) Spike-In::;
if (input.::Flowcell Type:: == ::SP::) {
step.::Bulk Pool Volume (ul):: = step.'Number of Lanes to Sequence' * 18;
step.::PhiX Volume (ul):: *= 0.7;
}
if (input.::Flowcell Type:: == ::S1::) {
step.::Bulk Pool Volume (ul):: = step.'Number of Lanes to Sequence' * 18;
step.::PhiX Volume (ul):: *= 0.7;
}
if (input.::Flowcell Type:: == ::S2::) {
step.::Bulk Pool Volume (ul):: = step.'Number of Lanes to Sequence' * 22;
step.::PhiX Volume (ul):: *= 0.8;
}
if (input.::Flowcell Type:: == ::S4::) {
step.::Bulk Pool Volume (ul):: = step.'Number of Lanes to Sequence' * 30;
step.::PhiX Volume (ul):: *= 1.1;
}
if (step.::PhiX Volume (ul):: == 0) {
step.::PhiX Volume (ul):: = '';
}
Calculates the Per Sample Volume (ul) to be added to the pool:
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::
If the smallest Per Sample Volume (ul) value is less than 5, Clarity LIMS automatically assigns a value of 5 to the sample's Adjusted Per Sample Volume (ul) field.
Clarity LIMS then adjusts the Adjusted Per Sample Volume (ul) field value for all other samples in the batch, based on the ratio used to increase the lowest value to 5.
Calculates the Total Sample Volume (ul) field value:
Uses the NovaSeq_Xp_Bulk_Pool.csv and NovaSeq_Xp_Bulk_Pool2.csv template files to generate a single CSV file containing information about the bulk pool and the samples it contains. The generated file is available for download on the Step Setup screen of the following step—Dilute, Denature & ExAmp (NovaSeq 6000 v2.3).
Resets the Total Sample Volume (ul) and Number of Samples in Pool field values so that the automation is idempotent:
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)'
Set Next Step Automation
Automatically triggered on exit of the Record Details screen, this automation does the following actions:
Copies the Flowcell Type values from the step inputs to the step outputs.
Sets the next step for samples to ADVANCE, advancing them to the next step in the protocol:
In this step, pooled samples are denatured and diluted by the addition of DPX, NaOH, Tris-HCl, and RSB. Manually create working pools based on the number of lanes you want to sequence. The step input is Bulk pool and the step output is Working pool. Working pool is a variable number for how many working pools need to be created per bulk pool.
These automations are described in the order in which they are triggered at run time.
Validate Inputs Flowcell Type Automation
Automatically triggered at the beginning of the step, this automation invokes the validate_flowcell_for_input_pools script. This script does the following actions:
Checks the inputs to the step and validates that the Flowcell Type field has been set to a valid value (SP, S1, S2, or S4). The automation also checks that all inputs have the same value.
Validates that the number of outputs matches the number of lanes on the selected flow cell type. If validation fails, an error message state that the number of working pools does not match the number of lanes available on the flow cell.
Uses the NovaSeq_Xp_Working_Pool.csv and NovaSeq_Xp_Working_Pool2.csv template files to generate a single CSV file containing information about the DPX volume and the volume of BP Aliquot, Mastermix, NaOH, and Tris-HCI to add per working pool. The generated file is available for download on the Step Setup screen of the following step—Load to Flowcell (NovaSeq 6000 v2.3).
Set Next Step Automation
Automatically triggered on exit of the Record Details screen, this automation:
Copies the Flowcell Type values from the step inputs to the step outputs.
Sets the next step for samples to ADVANCE, advancing them to the next step in the protocol: