# Class FMIndexConfig
A configuration object that determines the data types of certain fibres of the FMIndex.

Defined in | <seqan/index.h>
Signature | `template <[typename TSpec[, typename TLengthSum[, unsigned LEVELS[, unsigned WORDS_PER_BLOCK]]]]> struct FMIndexConfig;`

## Template Parameters

`TSpec` | The specializating type, defaults to `void`.
`TLengthSum` | The underlying type to store precomputed rank values, defaults to `size_t`. The type must hold a value equal to the length of the bit vector.
`LEVELS` | The number of levels of the rank dictionary, defaults to `1`.
`WORDS_PER_BLOCK` | Number of popcount operations per rank query, defaults to `0`. If set to 0, the number equals the size of the underlying alphabet type.

## Member Typedef Overview

- `typedef WaveletTree<TSpec, TConfig> Bwt;`
  The `Bwt` determines the type of the occurrence table. In the default FMIndexConfig object the type of `Bwt` is a wavelet tree (WaveletTree).
- `typedef Levels<TSpec, TConfig> Sentinels;`
  The `Sentinels` determines the type of the sentinels in the FMIndex. In the default FMIndexConfig object the type of `Sentinels` is a one level RankDictionary.

## Member Variable Overview

- `unsigned FMIndexConfig::SAMPLING`
  The sampling rate determines how many suffix array entries are represented with one entry in the CompressedSA.

## Member Typedef Detail

### `typedef WaveletTree<TSpec, TConfig> Bwt;`

The `Bwt` determines the type of the occurrence table. In the default FMIndexConfig object the type of `Bwt` is a wavelet tree (WaveletTree).

### `typedef Levels<TSpec, TConfig> Sentinels;`

The `Sentinels` determines the type of the sentinels in the FMIndex. In the default FMIndexConfig object the type of `Sentinels` is a one level RankDictionary.

## Member Variables Detail

### `unsigned FMIndexConfig::SAMPLING`

The sampling rate determines how many suffix array entries are represented with one entry in the CompressedSA.

#### Dox Sources

    /*!
     * @class FMIndexConfig
     *
     * @headerfile <seqan/index.h>
     *
     * @brief A configuration object that determines the data types of certain
     *        fibres of the @link FMIndex @endlink.
     *
     * @signature template <[typename TSpec[, typename TLengthSum[, unsigned
     *            LEVELS[, unsigned WORDS_PER_BLOCK]]]]> struct FMIndexConfig;
     *
     * @tparam TSpec The specializating type, defaults to <tt>void</tt>.
     * @tparam TLengthSum The underlying type to store precomputed rank values,
     *                    defaults to <tt>size_t</tt>. The type must hold a value
     *                    equal to the length of the bit vector.
     * @tparam LEVELS The number of levels of the rank dictionary, defaults to
     *                <tt>1</tt>.
     * @tparam WORDS_PER_BLOCK Number of popcount operations per rank query,
     *                         defaults to <tt>0</tt>. If set to 0, the number
     *                         equals the size of the underlying alphabet type.
     *
     * @typedef FMIndexConfig::Bwt
     *
     * @brief The <tt>Bwt</tt> determines the type of the occurrence table. In the
     *        default @link FMIndexConfig @endlink object the type of <tt>Bwt</tt>
     *        is a wavelet tree (@link WaveletTree @endlink).
     *
     * @signature typedef WaveletTree<TSpec, TConfig> Bwt;
     *
     * @typedef FMIndexConfig::Sentinels
     *
     * @brief The <tt>Sentinels</tt> determines the type of the sentinels in the
     *        @link FMIndex @endlink. In the default @link FMIndexConfig @endlink
     *        object the type of <tt>Sentinels</tt> is a one level @link
     *        RankDictionary @endlink.
     *
     * @signature typedef Levels<TSpec, TConfig> Sentinels;
     *
     * @var unsigned FMIndexConfig::SAMPLING;
     *
     * @brief The sampling rate determines how many suffix array entries are
     *        represented with one entry in the @link CompressedSA @endlink.
     */