Copying UDF Values from Source to Destination

How to copy the value of a UDF/custom field from source to destination (typically from the inputs of a process/step to the outputs) is a frequently asked question.

For example, suppose a process/step takes in libraries and tracks their normalization. In such a case, the input samples have a UDF/custom field that is used to track the library ID. Since the library ID changes, it is desirable for the output samples to also have this ID.

Solution

Use the API to gather the XML for the inputs, then copy the XML node relating to the UDF/custom field to the outputs.

Alternatively, use the out-of-the-box copyUDFs script, which Illumina provides as part of the NextGen Sequencing configuration.

Script

The copyUDFs script is available in the ngs-extensions.jar archive*, and can be called from the EPP / automation parameter string.

The archive file may be named differently, depending upon the version you are running.

Usage:

java -jar ngs-extensions.jar -u {username} -p {password} -i {processURI} \
script:copyUDFs -f <myUDF1>,<myUDF2>,<myUDF3>

Defining the UDF / custom field values

The UDF / custom field values to be copied are defined in the -f portion of the syntax. These values must be present on both the inputs and outputs of a process.

For example, suppose you wanted to use this script to copy the value of a UDF called Library ID:

  • The Library ID field must be defined on both inputs and outputs.

  • The -f flag is defined as follows:

    -f "Library ID"

To copy multiple UDF values from source to destination, list them in comma-separated form as part of the -f flag.

  • To copy Library ID and Organism from source to destination, use the following example:

    -f "Library ID", "Organism"

Last updated