# Spec BandedLocalAlignmentEnumerator
Banded enumeration of local alignments using the Waterman-Eggert algorithm.

Extends | LocalAlignmentEnumerator
All Extended | LocalAlignmentEnumerator
Defined in | <seqan/align.h>
Signature | `template <typename TScore> class LocalAlignmentEnumerator<TScore, Banded>;`

## Template Parameters

`TScore` | The Score type.

## Member Function Overview

- `LocalAlignmentEnumerator::LocalAlignmentEnumerator(scheme, upperDiag, lowerDiag[, cutoff]);`
  Constructor.

## Interface Function Overview

### Interface Functions Inherited From LocalAlignmentEnumerator

- `getScore`
- `nextLocalAlignment`

## Detailed Description

### Examples

Enumerate all alignments in the band between -3 and 0 into an Align object.

    SimpleScore scoringScheme(2, -1, -1, -2);
    LocalAlignmentEnumerator<SimpleScore, Banded> enumerator(scoringScheme, -3, 0, 5);

    Dna5String seqH = "CGAGAGAGACCGAGA";
    Dna5String seqV = "TTCTGAGATCCGTTTTT";

    Align<Dna5String> align;
    resize(rows(align), 2);
    assignSource(row(align), 0, seqH);
    assignSource(row(align), 1, seqV);

    int i = 0;
    while (nextLocalAlignment(align, enumerator))
    {
        std::cout << i << "-th alignment:\n";
        std::cout << align << "\n\n";
        std::cout << "score == " << getScore(enumerator) << "\n";
    }

## Member Functions Detail

### `LocalAlignmentEnumerator::LocalAlignmentEnumerator(scheme, upperDiag, lowerDiag[, cutoff]);`

Constructor.

#### Parameters

`scheme` | The Score object to use for the alignment score.
`upperDiag` | An `int` with the upper diagonal.
`lowerDiag` | An `int` with the lower diagonal.
`cutoff` | Alignments with scores `< cutoff` will be discarded (`int`, default 0).

#### Data Races

If not stated otherwise, concurrent invocation is not guaranteed to be thread-safe.

#### Dox Sources

    /*!
     * @class BandedLocalAlignmentEnumerator
     *
     * @extends LocalAlignmentEnumerator
     *
     * @headerfile <seqan/align.h>
     *
     * @brief Banded enumeration of local alignments using the Waterman-Eggert
     *        algorithm.
     *
     * @signature template <typename TScore> class LocalAlignmentEnumerator<TScore,
     *            Banded>;
     *
     * @tparam TScore The @link Score @endlink type.
     *
     * @section Examples
     *
     * Enumerate all alignments in the band between -3 and 0 into an @link Align
     * @endlink object.
     *
     * @code{.cpp}
     * SimpleScore scoringScheme(2, -1, -1, -2);
     * LocalAlignmentEnumerator<SimpleScore, Banded> enumerator(scoringScheme, -3, 0, 5);
     *
     * Dna5String seqH = "CGAGAGAGACCGAGA";
     * Dna5String seqV = "TTCTGAGATCCGTTTTT";
     *
     * Align<Dna5String> align;
     * resize(rows(align), 2);
     * assignSource(row(align), 0, seqH);
     * assignSource(row(align), 1, seqV);
     *
     * int i = 0;
     * while (nextLocalAlignment(align, enumerator))
     * {
     *     std::cout << i << "-th alignment:\n";
     *     std::cout << align << "\n\n";
     *     std::cout << "score == " << getScore(enumerator) << "\n";
     * }
     * @endcode
     *
     *
     * @fn BandedLocalAlignmentEnumerator::LocalAlignmentEnumerator
     *
     * @brief Constructor.
     *
     * @signature LocalAlignmentEnumerator::LocalAlignmentEnumerator(scheme,
     *            upperDiag, lowerDiag[, cutoff]);
     *
     * @param[in] scheme The @link Score @endlink object to use for the alignment
     *                   score.
     * @param[in] upperDiag An <tt>int</tt> with the upper diagonal.
     * @param[in] lowerDiag An <tt>int</tt> with the lower diagonal.
     * @param[in] cutoff Alignments with scores <tt>&lt; cutoff</tt> will be
     *                   discarded (<tt>int</tt>, default 0).
     */