To add any asset other than a well array, click the ‘+’ icon on the Assets area, and select the item you want from the pop up menu.
Check ‘Available Deck Locations’ on the Status bar to make sure you are not adding more plates than there are deck locations. Reservoirs, the shaker module and the thermal modules do not take up deck locations.
If you need to use more plates, create user interaction steps to remove used items and add new ones at an appropriate point later in the protocol.
To delete any asset including a well array, select it and then click the bin icon for the Assets area.
Check the Errors list on the right of the screen in case deleting the asset has caused a problem in the loaded protocol.
9.3.1 Editing well arrays
To adjust the wells used in a well array, use the ‘Wells’ section of Properties, identifying your selection by rows and columns i.e., A1:E7. If you increase the number of wells, check that you still have sufficient volume of reagents, and sufficient tips loaded.
If you are using an array of 96 tips to pipette between a 96 well plate and 384 well plate, a tiling pattern can be used to define the well array asset for the 384 well plate. In this way a single quadrant of the 384 well plate can be defined as a well array asset.
Property | Form | Notes |
Name | Free text | |
Colour | Select from pop-up form | Use to differentiate reagents |
Starting volume per well (μL) | Numeric / Variable | 0.00 to maximum value for the well type |
Maximum volume per well (μL) | [auto filled, not editable] | Defined by the plate type selected |
Dead volume per well (μL) | [auto filled, not editable] | Defined by the plate type selected |
Array
Property | Form | Notes |
Plate | Select from dropdown list | Select from list of existing plate identifiers |
Wells | A1:H12 format | An array can be anything from a single well to a full plate |
Pattern | Select from form | All possible patterns are shown as unit cells |
Right click on a well array in the Assets panel to access the Split by Columns function, which divides the well array.
For ease of use, you can add a whole plate well array, then use this function to split it into multiple smaller arrays without needing to define them individually.
You can then choose to rename the new arrays or assign them distinct colors.
9.3.2 Editing lids
You can either load plates which are lidded or load lids ready for use in a later protocol step. When you remove a lid it will be placed in an empty deck location, so every time you place a lid on a plate you will free up a deck location.
Check 'Available Deck Locations' on the Status bar to check you have enough free space, as you use lids and plates. If you need to use more lids, create user interaction steps to remove used items and add new ones at an appropriate point later in the protocol.
When placing a lid on a plate, you are creating a stack. You can only use combinations of lids and plates which have a stack definition. Use Community to download stack definitions. If you cannot find what you need, contact reliance. You can continue designing with an undefined stack but you cannot run the protocol.
firefly software will warn you if you try to use a dispensing or pipetting step without removing a plate's lid first.
IMPORTANT: If you use Auto Deck Fill when you have an undefined stack in your protocol, collision detection would work based on the wrong stack definition so shouldn’t be trusted until this error is removed.
Download the stack definition before using Auto Deck Fill.
If your protocol places used lids on the shelves of firefly+, any condensate may drip and contaminate shelves or other labware. To avoid this, when you remove a lid from a plate, move it to a shelf protector.
Property | Form | Notes |
Name | Free text | |
Type | Select from a dropdown list | |
Deck location | Select from a dropdown list | If you select a location here, the plate will be placed there when you open the 'Deck' view. |
9.3.3 Editing EZL tip sets
You will need to load sufficient tip sets for the quantity of tips you will use. Check the Errors list to see if you need to adjust the quantities. As tip sets can only be loaded on the lower deck, you may not be able to load all the tips you will need at the start of the protocol. Remove used tip sets and replenish tips in a user interaction step, ensuring that the tip type of the fresh tips matches those of the tips that have been removed.
Property | Form | Notes |
Name | Free text | |
Format | Select from dropdown list | 96 or 384 tip set |
Tip type | Select from dropdown list | |
Use strips | Tick box | |
Strips | Numeric / Variable | Quantity of strips |
Working volume (μL) | [Auto filled] | This is defined by the tip type |
Deck location | Dropdown list | |
Barcode - enable prompt | Tick box | This is set up for scanning the barcode on the box |
NOTE: If you are using 16 tip strips, these have a gap between loaded strips and cannot be loaded as adjacent strips due to the strip tip adapter arrangement. Therefore you cannot address adjacent columns of a 384-well plate simultaneously as the EZL tip strips will have gaps when loaded into the adapter.
9.3.4 Editing ATL tip boxes
You will need to load sufficient tip boxes for the quantity of tips you will use. Check the Errors list to see if you need to adjust the quantities.
You can load several columns of ATL tips only, not the entire 12 or 24 columns. This enables you to carry out multiple pipetting steps with fresh tips for each, while still using the same tip box.
You will need to load an additional empty tip box for unloading used tips, unless it is acceptable to unload them back into a tip box which still contains unused tips. If you do this, firefly software will warn you about possible contamination, but the protocol will still run.
You can place ATL tip boxes on upper or lower deck locations.
There is no upper limit on quantity of tip boxes in use in one protocol.
Property | Form | Notes |
Name | Free text | |
Type | Select from dropdown list | 96 or 384 tips of differing types |
Available columns | Numeric / Variable | Quantity of columns to load and use |
Working volume (µL) | [Auto filled] | This is defined by the tip type |
Deck location | Dropdown list | You can use the upper or lower deck |
Barcode - enable prompt | Tick box | This is set up for scanning the barcode on the box |
9.3.5 Using variables
Wherever you see the variable symbol for a property, you can choose to use a variable set when the protocol is executed, in place of an absolute value.
- Select the Variables tab in the right panel.
- Click on Create Expression Variable
to create a new variable whose value you will define using firefly software. If you want to use values defined elsewhere, select to create a File Path Variable
- Name your variable.
- You can set an initial value for your variable, as shown below. If you do this, users executing
the protocol will see this value but will have the option to modify it, if they have permission
(basic users do not, by default).
If you select the
next to the Value column, you will open the Expression Builder, to define your variable.
Having defined your variable, you can use it repeatedly in the current protocol (it will not be visible to use in other protocols).
To use the variable, select next to the Property you want to set, and select the named variable as shown below.
Variables are always shown with a teal background in protocols.
You can use variables to set aspirate, dispense and mix volumes, in addition to starting and overfill volumes.
9.3.6 Using file path variables
You can use a file path variable to have variant files for File Fill, File Dispense or Incubate steps. Using this you can design e.g., variations of your PCR script such as 5 cycles, 10 cycles and 18 cycles, and choose the one to run in the Deck Loading Wizard, before you execute the firefly protocol. You can use this to test e.g., different ODTC protocols within the same firefly protocol instead of needing to write multiple variants of the firefly protocol, as shown in the example below.
When designing the protocol, associate one of your PCR scripts with a variable.
When you execute the protocol, because you had used a variable, not a fixed file name, you can use the Data Files option to select a different script, by clicking the File Path icon.
When you execute the protocol, because you had used a variable, not a fixed file name, you can use the Data Files option to select a different script, by clicking the File Path icon.
9.3.7 Designing a scalable protocol
You can make your protocol scalable by using a variable size well array, number of strip tips or volume of reagents in each reservoir.
Scaling EZL strip tips usage
1. Select the Variables tab and create a column variable with an initial value, as shown.
2. Select the ‘fx’ button on the tip set properties to open the Expression Builder (Strips)
3. Create an expression which replaces a fixed number of strip tips with your variable. This can be very simple, like the example shown above which just sets the number of strip tips used to match the number of well array columns.
Your variable now appears in the Strips property for the tip set.
Scaling ATL column usage
- Select the Variables tab and create a variable for the number of columns to use, with an initial value, as shown.
Select the 'fx' button on the tip set properties to open the Expression Builder (Available Columns). The default value is 12 for a 96 tip box or 24 for a 384 tip box.
Create an expression which replaces a fixed number of columns with your variable, or with a mathematical expression utilizing variables.
Your variable now appears in the Available Columns property for the tip box.
If you set your variable to 4 or more columns, you will see an error in your protocol, that the tip box must be placed on a tip box adapter before the tips can be loaded. Because of this change in behaviour, you may find it easier to create and save multiple protocol variants for different column numbers.
Scaling well arrays
1. Select the ‘fx’ button on the well array properties to open the Expression Builder (Wells)
2. Create an expression which replaces fixed values in a well array with your variables. This can be very simple, like the example shown above which just allows you to vary the number of columns when running the protocol.
Your variable now appears in the Wells property for the well array.
9.3.8 Editing syringes and reservoirs
When editing the reagents to be dispensed in a protocol, you will need to define Reservoirs for the materials. You can use the 'auto' dropdown to select a suitable reservoir based on the dispense volume or select the specific type.
You may find it more convenient to use multiple reservoirs for the same material if you are dispensing to a large quantity of wells, as parallel dispensing is faster. However, you will need more of your reagent, as you will always need the same additional volumes for the excess aspirate volume in the syringe and for the dead volume in the reservoir, irrespective of your dispense volume.
LDV reservoir | Standard reservoir | Large reservoir | |
Safeguard volume - volume that needs to remain in the tips during a dispense | 40μL | 40μL | 40μL |
Reservoir dead volume | 30μL | 195μL | 500μL |
Total | 70μL | 235μL | 540μL |
To add a new reagent, you will need to add a new Reservoirs Asset, then use the Reservoirs Property to select which Reservoir to use. If you select a reservoir which had been in use, it will be reassigned, and you will generate an error that the previous reagent is no longer loaded. Color coding your materials will make it easier to keep track of what is in use, particularly in long protocols.
The Assets shown above includes two reagents in reservoirs, the first uses two, the second uses one.
You can select to require barcodes for the reagents, the syringes or the reservoirs used. You will
need to specify the barcode format for reagents or reservoirs.
You do not need to specify the volume of reagent in a reservoir, it can be calculated by the firefly
software and then displayed in the setup instructions.
Use the Overfill volume if you know that you will want an excess of reagent in the reservoir e.g.,
because it will evaporate during protocol execution.
Property | Form | Notes |
Name | Free text | |
Color | Select from pop-up form | Use to differentiate reagents |
Reservoirs | Select one or more from the 6 positions | Unavailable reservoirs are grey, not white |
Syringe | Select from dropdown list | Standard or ULR (volume is the same) |
Reservoir | Select from dropdown list | Standard, high volume, LDV or auto |
Auto calculate starting volume? |
Tick box | |
Starting volume (µL) | Numeric / Variable | 0.00 to maximum value for the reservoir type. Only shown if auto calculate has not been ticked. |
Overfill volume (µL) | Numeric / Variable | |
Maximum volume (µL) | [auto filled, not editable] | This is set when the reservoir type is selected. |
Barcodes | ||
Reagent barcode | ||
Enable prompt | Tick box | |
Format | Regex | Use a regex to define the form of your barcode data |
Reservoir barcodes | ||
Enable prompt | Tick box | |
Combine prompts | Tick box | Show barcode fields together in protocol setup |
Format | Regex | Use a regex to define the form of your barcode data |
Syringe barcodes | ||
Enable prompt | Tick box | This is set up for scanning the barcode on the box |
Combine prompts | Tick box | Show barcode fields together in protocol setup |
9.3.9 Editing magnetic blocks
Magnetic blocks are simple, passive devices which require no configuration. You can use multiple magnetic blocks in a protocol.
You can only use magnetic block types which you have already installed, so if you cannot see the one you want to use, you look in the ‘Community’, ‘Labware’ section and download it.
Property Form | Form |
Name | Free text |
Type | Select type from dropdown list |
Deck location | Select from dropdown list |
9.3.10 Editing risers
Risers are simple, passive devices which require no configuration. They are used to lift shallow
plates so that heads dispensing to them do not collide with taller labware in adjacent deck
locations.
You can use multiple risers in a protocol. There are specific types for upper and lower deck use.
EZL lower deck risers are not compatible with the height of ATL tip boxes so do not use them on an ATL instrument.
You can only use riser types which you have already installed, so if you cannot see the one you
want to use, look in the 'Community', 'Labware' section and download it.
Property | Form |
Name | Free Text |
Type | Select type from dropdown list; check it is correct for the deck |
Deck Location | Select from dropdown list |
9.3.11 Editing thermal blocks
thermal blocks are used in conjunction with the plate thermal module, there are designs for use with 96 or 384 well plates. After they have been heated or cooled to the required temperature while located on the plate thermal module, they can be moved with a plate to e.g., the dispense head, to keep the plate warm or cool for longer.
You can use multiple thermal blocks simultaneously on firefly e.g., to cool both a source and destination plate.
Property | Form |
Name | Free text |
Type | Select type from dropdown list |
Location | Select from dropdown list |
9.3.12 Editing tip box adapters (ATL instruments only)
If you are going to load more than 3 columns of tips from an ATL tip box, it must be placed on a tip box adaptor, to support it. You can load the tip box and adapter together, at the start of the protocol, or move the tip box onto it later. You can use multiple tip box adapters simultaneously on firefly.
You do not need to use a tip box adapter when unloading ATL tips.
Property | Form |
Name | Free text |
Type | Select type from dropdown list |
Location | Select from dropdown list |
firefly grippers cannot move tip box adapters, so you will need to place the tip box adapter on the lower deck, where it will be used.
Tips can only be loaded onto the ATL head from the lower deck.
9.3.13 Using regexes to define barcode data
Depending on your plate and reagent suppliers, you may want firefly to recognize different strings of data as correct, when you read the item barcodes e.g., 05427ES-021 or STBB0728K9. You can also define your own data formats for reservoirs. If you are using SPT Labtech consumables, the correct barcode format is preloaded.
You do not have to use this functionality, to use the barcode reader. You can just record the barcode e.g., if you use reagents from multiple suppliers, and want to keep that flexibility. To do this, click the 'Barcode - Enable prompt' option but leave the Format field empty. To ensure that the correct items are loaded in firefly, you will need to define a regular expression (a 'regex') which corresponds to the expected combination of characters in the consumables barcodes. Write this in the Barcode Format field.
If the barcode then scanned does not match the pattern, it will not be accepted and may mean that you have picked up the wrong plate type or wrong reagent when running the protocol.
If you have not tried designing a regex before, there is a practical tutorial at https://regexone.com/lesson/introduction_abcs.
You can use the https://regex101.com/ website to test your regex and confirm it meets your
barcode format and parameters.