Note: Please read “Configure a lab automation run” for more general information about configuring the lab automation run.
What is an input file config?
The input file config is the part of the run that allows a user to click “Generate”, which will result in an input file being generated. An input file is a CSV where each row represents an instruction for an instrument. For liquid handlers, each row represents a transfer operation: this means that each input file row specifies a source plate/container, transfer volume, usually a destination plate/container, along with other optional columns.
Benchling supports generating input files in a row/column format (i.e., files with rows + columns with column headers), such as the example below. The information used to populate the input file is looked up from the information entered into the run fields.
All of the data found in the input file must be able to be looked up starting from a run schema field. It can come directly from the fields or find deeper properties of the field value(s).
For example: It can start in an entity link field and then look up a schema field value of those entities, followed by the containers of those entities. It can start in an entity link field and look up the containers those samples are in, or it can start in a container link field and look up the samples found in those containers.
A run can have:
- No input file configs - If there is no input file required (e.g., for certain instruments or plate readers)
- One input file config - If only one input file is required for the run
- Multiple input file configs - If there are multiple input file formats that a given run needs to be able to generate.
Most use cases will either require zero or one input file configs.
The run schema fields must be saved first before configuring the automationInputFile.
Definitions within the input file config via UI
- Display Name: How the Input file configuration will appear when a Run is created
- Sources: the source look-up that will be used when configuring the actual file
- Destinations: the destination look-up that will be used when configuring the actual file
- Configuring the columns for the input file: Each column will be configuring look-ups accordingly to tell the rows of the input file what to look like
- Apply Transforms: Any OOTB transforms that is performed on the input file
- File name: What the file will be called based on a naming template
- File extension Controls the file extension for generated input files.
- Delimiter: Controls the delimiter for generated input files.
Definitions within the input file config via JSON
The configuration of the input file config will dictate the format of the input file that is ultimately generated. It is an object with the following properties:
-
columns: An array of strings, which are the column names that should be in the input file from left to right (top to bottom in the config).
-
sortColumns: An array of strings that’s a subset of columns. It can be left empty - if non-empty, the input file rows will be sorted by these columns.
-
name: The value to display in the UI (“pulling” in the example above)Use the same name in the outputFileConfig and the files will stack
-
rowConfigs: An array of RowConfig objects that dictate how the rows will be populated. This is where lookup steps are set up to look up information from the run fields, and where a plate layout can optionally be set up as well
-
destinationInfos: A map defining destination lookups to be shared across RowConfigs
-
delimiter: Single character, defaulting to (and hidden if set to) “,”. Controls the delimiter for generated input files.
-
fileExtension: A string defaulting to (and hidden if set to) “csv”. Controls the file extension for generated input files.
See the following articles for more information:
- Configure the Rows of the input file generator
- Configure the Sources of the input file generator
- Use a plate layout in the input file generator
-
Configure the Columns of the InputFileConfig
Tips for configuring the input file config
- Find an example input file for the desired run. This will be the easiest way to determine the required rows and columns
- Determine which columns of the input file require user inputted information. This will inform which fields you need to configure on the run. For example: If a column for “Volume to Transfer” should be inputted by the user at runtime, then there should be a float/integer run field that the user can enter at runtime, and the value can be looked up to fill out the column. If a column for “Source Plates” needs to be filled out with the barcodes of plates that the user enters, then there should be an inventory link run field where the user can add the plate barcodes, and those values can then be looked up to fill out the column