Package picard.illumina

## Class ExtractIlluminaBarcodes

- java.lang.Object
- - picard.cmdline.CommandLineProgram
  - - picard.illumina.ExtractBarcodesProgram
    - - picard.illumina.ExtractIlluminaBarcodes

-     @DocumentedFeature
      public class ExtractIlluminaBarcodes
      extends ExtractBarcodesProgram

  Determine the barcode for each read in an Illumina lane. For each tile, a file is written to the basecalls directory of the form s_<lane>_<tile>_barcode.txt. An output file contains a line for each read in the tile, aligned with the regular basecall output The output file contains the following tab-separated columns: - read subsequence at barcode position - Y or N indicating if there was a barcode match - matched barcode sequence (empty if read did not match one of the barcodes). If there is no match but we're close to the threshold of calling it a match we output the barcode that would have been matched but in lower case - distance to best matching barcode, "mismatches" (*) - distance to second-best matching barcode, "mismatchesToSecondBest" (*) NOTE (*): Due to an optimization the reported mismatches & mismatchesToSecondBest values may be inaccurate as long as the conclusion (match vs. no-match) isn't affected. For example, reported mismatches and mismatchesToSecondBest may be smaller than their true value if mismatches is truly larger than MAX_MISMATCHES. Also, mismatchesToSecondBest might be smaller than its true value if its true value is greater than mismatches + MIN_MISMATCH_DELTA.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---
    `static class` | `ExtractIlluminaBarcodes.PerTileBarcodeExtractor` | Extracts barcodes and accumulates metrics for an entire tile.

  - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `List<String>` | `BARCODE` |
    `File` | `BARCODE_FILE` |
    `int` | `NUM_PROCESSORS` |
    `File` | `OUTPUT_DIR` |

    - ### Fields inherited from class picard.illumina.ExtractBarcodesProgram

      `BARCODE_COLUMN, BARCODE_NAME_COLUMN, BARCODE_PREFIXES, BARCODE_SEQUENCE_COLUMN, barcodeToMetrics, BASECALLS_DIR, bclQualityEvaluationStrategy, COMPRESS_OUTPUTS, DISTANCE_MODE, INPUT_PARAMS_FILE, inputReadStructure, LANE, LIBRARY_NAME_COLUMN, MAX_MISMATCHES, MAX_NO_CALLS, METRICS_FILE, MIN_MISMATCH_DELTA, MINIMUM_BASE_QUALITY, MINIMUM_QUALITY, noMatchMetric, READ_STRUCTURE`

    - ### Fields inherited from class picard.cmdline.CommandLineProgram

      `COMPRESSION_LEVEL, CREATE_INDEX, CREATE_MD5_FILE, GA4GH_CLIENT_SECRETS, MAX_ALLOWABLE_ONE_LINE_SUMMARY_LENGTH, MAX_RECORDS_IN_RAM, QUIET, REFERENCE_SEQUENCE, referenceSequence, specialArgumentsCollection, TMP_DIR, USE_JDK_DEFLATER, USE_JDK_INFLATER, VALIDATION_STRINGENCY, VERBOSITY`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `ExtractIlluminaBarcodes()` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `protected String[]` | `customCommandLineValidation()` | Parses all barcodes from input files and validates all barcodes are the same length and unique
    `protected int` | `doWork()` | Do the work after command line has been parsed.

    - ### Methods inherited from class picard.illumina.ExtractBarcodesProgram

      `collectErrorMessages, createBarcodeExtractor, finalizeMetrics, outputMetrics, parseInputFile`

    - ### Methods inherited from class picard.cmdline.CommandLineProgram

      `checkRInstallation, getCommandLine, getCommandLineParser, getCommandLineParserForArgs, getDefaultHeaders, getFaqLink, getMetricsFile, getPGRecord, getStandardUsagePreamble, getStandardUsagePreamble, getVersion, hasWebDocumentation, instanceMain, instanceMainWithExit, makeReferenceArgumentCollection, parseArgs, requiresReference, setDefaultHeaders, useLegacyParser`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### BARCODE_FILE

          @Argument(doc="Tab-delimited file of barcode sequences, barcode name and, optionally, library name.  Barcodes must be unique and all the same length.  Column headers must be \'barcode_sequence\' (or \'barcode_sequence_1\'), \'barcode_sequence_2\' (optional), \'barcode_name\', and \'library_name\'.",
                    mutex="BARCODE")
          public File BARCODE_FILE

    - #### BARCODE

          @Argument(doc="Barcode sequence.  These must be unique, and all the same length.  This cannot be used with reads that have more than one barcode; use BARCODE_FILE in that case. ",
                    mutex="BARCODE_FILE")
          public List<String> BARCODE

    - #### NUM_PROCESSORS

          @Argument(doc="Run this many PerTileBarcodeExtractors in parallel.  If NUM_PROCESSORS = 0, number of cores is automatically set to the number of cores available on the machine. If NUM_PROCESSORS < 0 then the number of cores used will be the number available on the machine less NUM_PROCESSORS.")
          public int NUM_PROCESSORS

    - #### OUTPUT_DIR

          @Argument(doc="Where to write _barcode.txt files.  By default, these are written to BASECALLS_DIR.",
                    optional=true)
          public File OUTPUT_DIR

  - ### Constructor Detail

    - #### ExtractIlluminaBarcodes

          public ExtractIlluminaBarcodes()

  - ### Method Detail

    - #### doWork

          protected int doWork()

      Description copied from class: `CommandLineProgram`
      Do the work after command line has been parsed. RuntimeException may be thrown by this method, and are reported appropriately.
      Specified by:
        `doWork` in class `CommandLineProgram`
      Returns:
        program exit status.

    - #### customCommandLineValidation

          protected String[] customCommandLineValidation()

      Description copied from class: `ExtractBarcodesProgram`
      Parses all barcodes from input files and validates all barcodes are the same length and unique
      Overrides:
        `customCommandLineValidation` in class `ExtractBarcodesProgram`
      Returns:
        null if command line is valid. If command line is invalid, returns an array of error message to be written to the appropriate place.