# Class BlastMatchField
A "meta" datastructure that contains information about members of BlastMatches

Defined in | seqan/blast.h
Signature | `template <typename TVoidSpec = void> struct BlastMatchField;`

## Template Parameters

`TVoidSpec` | An extra spec to prevent global inclusion of statics members (you can safely ignore this)

## Member Variable Overview

- `static_constexpr_const_std::array<char_const*,45> BlastMatchField::columnLabels[]`
  An array of CStrings representing the column label of each possible field; for the legacyFormat, use legacyColumnLabels instead.
- `static_constexpr_std::array<Enum_const,12> BlastMatchField::defaults`
  An std::array of BlastMatchField::Enum indicating the fields that are default
- `static_constexpr_const_std::array<char_const*,45> BlastMatchField::descriptions[]`
  An array of CStrings representing the human-readable descriptions of each field
- `static_constexpr_const_std::array<bool,45> BlastMatchField::implemented[]`
  An array of bools revealing whether the Blast I/O module supports printing this field
- `static_constexpr_char_const_*_const BlastMatchField::legacyColumnLabels`
  A single CString representing the column labels of the legacyFormat.
- `static_constexpr_const_std::array<char_const*,45> BlastMatchField::optionLabels[]`
  An array of CStrings representing the command line parameter name of each field

## Detailed Description

This data structure conveniently gives access to all possible fields used in BLAST-compatabile tabular output formats. BlastMatchField::Enum is needed to specify a custom field composition for a BlastIOContext.

The member variables offer the correct labels for the tabular formats' I/O and strings to interact with the user on the command line.

Please note that for the legacyFormat (legacyFormat) specifying or reading custom fields is not supported and the columnsLabels will always be printed as legacyColumnLabels.

### Table overview

# | Enum | optionLabels | columnLabels | descriptions | implemented
--- | --- | --- | --- | --- | ---
0 | STD | std | query id, subject id, % identity, alignment length, mismatches, gap opens, q. start, q. end, s. start, s. end, evalue, bit score | Default 12 columns (Query Seq-id, Subject Seq-id, Percentage of identical matches, Alignment length, Number of mismatches, Number of gap openings, Start of alignment in query, End of alignment in query, Start of alignment in subject, End of alignment in subject, Expect value, Bit score) | ☑
1 | Q_SEQ_ID | qseqid | query id | Query Seq-id | ☑
2 | Q_GI | qgi | query gi | Query GI | ☐
3 | Q_ACC | qacc | query acc. | Query accesion | ☐
4 | Q_ACCVER | qaccver | query acc.ver | Query accesion.version | ☐
5 | Q_LEN | qlen | query length | Query sequence length | ☑
6 | S_SEQ_ID | sseqid | subject id | Subject Seq-id | ☑
7 | S_ALL_SEQ_ID | sallseqid | subject ids | All subject Seq-id(s), separated by a ';' | ☐
8 | S_GI | sgi | subject gi | Subject GI | ☐
9 | S_ALL_GI | sallgi | subject gis | All subject GIs | ☐
10 | S_ACC | sacc | subject acc. | Subject accession | ☐
11 | S_ACCVER | saccver | subject acc.ver | Subject accession.version | ☐
12 | S_ALLACC | sallacc | subject accs. | All subject accessions | ☐
13 | S_LEN | slen | subject length | Subject sequence length | ☑
14 | Q_START | qstart | q. start | Start of alignment in query | ☑
15 | Q_END | qend | q. end | End of alignment in query | ☑
16 | S_START | sstart | s. start | Start of alignment in subject | ☑
17 | S_END | send | s. end | End of alignment in subject | ☑
18 | Q_SEQ | qseq | query seq | Aligned part of query sequence | ☐
19 | S_SEQ | sseq | subject seq | Aligned part of subject sequence | ☐
20 | E_VALUE | evalue | evalue | Expect value | ☑
21 | BIT_SCORE | bitscore | bit score | Bit score | ☑
22 | SCORE | score | score | Raw score | ☑
23 | LENGTH | length | alignment length | Alignment length | ☑
24 | P_IDENT | pident | % identity | Percentage of identical matches | ☑
25 | N_IDENT | nident | identical | Number of identical matches | ☑
26 | MISMATCH | mismatch | mismatches | Number of mismatches | ☑
27 | POSITIVE | positive | positives | Number of positive-scoring matches | ☑
28 | GAP_OPEN | gapopen | gap opens | Number of gap openings | ☑
29 | GAPS | gaps | gaps | Total number of gaps | ☑
30 | P_POS | ppos | % positives | Percentage of positive-scoring matches | ☑
31 | FRAMES | frames | query/sbjct frames | Query and subject frames separated by a '/' | ☑
32 | Q_FRAME | qframe | query frame | Query frame | ☑
33 | S_FRAME | sframe | sbjct frame | Subject frame | ☑
34 | BTOP | btop | BTOP | Blast traceback operations (BTOP) | ☐
35 | S_TAX_IDS | staxids | subject tax ids | unique Subject Taxonomy ID(s), separated by a ';' (in numerical order) | ☐
36 | S_SCI_NAMES | sscinames | subject sci names | unique Subject Scientific Name(s), separated by a ';' | ☐
37 | S_COM_NAMES | scomnames | subject com names | unique Subject Common Name(s), separated by a ';' | ☐
38 | S_BLAST_NAMES | sblastnames | subject blast names | unique Subject Blast Name(s), separated by a ';' (in alphabetical order) | ☐
39 | S_S_KINGDOMS | sskingdoms | subject super kingdoms | unique Subject Super Kingdom(s), separated by a ';' (in alphabetical order) | ☐
40 | S_TITLE | stitle | subject title | Subject Title | ☐
41 | S_ALL_TITLES | salltitles | subject titles | All Subject Title(s), separated by a '<>' | ☐
42 | S_STRAND | sstrand | subject strand | Subject Strand | ☐
43 | Q_COV_S | qcovs | % subject coverage | Query Coverage Per Subject | ☐
45 | Q_COV_HSP | qcovhsp | % hsp coverage | Query Coverage Per HSP | ☐

More fields will likely be implemented in the future.

## Member Variables Detail

### `static_constexpr_const_std::array<char_const*,45> BlastMatchField::columnLabels[]`

An array of CStrings representing the column label of each possible field; for the legacyFormat, use legacyColumnLabels instead.

### `static_constexpr_std::array<Enum_const,12> BlastMatchField::defaults`

An std::array of BlastMatchField::Enum indicating the fields that are default

    static constexpr std::array<Enum const, 12> defaults
    {
        {
            Enum::Q_SEQ_ID,
            Enum::S_SEQ_ID,
            Enum::P_IDENT,
            Enum::LENGTH,
            Enum::MISMATCH,
            Enum::GAP_OPEN,
            Enum::Q_START,
            Enum::Q_END,
            Enum::S_START,
            Enum::S_END,
            Enum::E_VALUE,
            Enum::BIT_SCORE
        }
    };

### `static_constexpr_const_std::array<char_const*,45> BlastMatchField::descriptions[]`

An array of CStrings representing the human-readable descriptions of each field

### `static_constexpr_const_std::array<bool,45> BlastMatchField::implemented[]`

An array of bools revealing whether the Blast I/O module supports printing this field

### `static_constexpr_char_const_*_const BlastMatchField::legacyColumnLabels`

A single CString representing the column labels of the legacyFormat.

### `static_constexpr_const_std::array<char_const*,45> BlastMatchField::optionLabels[]`

An array of CStrings representing the command line parameter name of each field

#### Dox Sources

    /*!
     * @class BlastMatchField BlastMatchField
     *
     * @headerfile seqan/blast.h
     *
     * @brief A "meta" datastructure that contains information about members of
     *        @link BlastMatch @endlinkes
     *
     * @signature template <typename TVoidSpec = void> struct BlastMatchField;
     *
     * @tparam TVoidSpec An extra spec to prevent global inclusion of statics
     *                   members (you can safely ignore this)
     *
     * This data structure conveniently gives access to all possible fields used in
     * BLAST-compatabile tabular output formats. @link BlastMatchField::Enum
     * @endlink is needed to specify a custom field composition for a @link
     * BlastIOContext @endlink.
     *
     * The member variables offer the correct labels for the tabular formats' I/O
     * and strings to interact with the user on the command line.
     *
     * Please note that for the legacyFormat (@link BlastIOContext::legacyFormat
     * @endlink) specifying or reading custom fields is not supported and the
     * columnsLabels will always be printed as @link
     * BlastMatchField::legacyColumnLabels @endlink.
     *
     * <h3>Table overview</h3>
     *
     * @endhtmlonly
     * <span style="font-size:90%"><table>
     * <tr><th>#</th><th>Enum</th><th>optionLabels</th><th>columnLabels</th><th>descriptions</th><th>implemented</th></tr>
     * <tr><td>0</td><td>STD</td><td>std</td><td>query id, subject id, % identity, alignment length, mismatches, gap opens, q. start, q. end, s. start, s. end, evalue, bit score</td><td>Default 12 columns (Query Seq-id, Subject Seq-id, Percentage of identical matches, Alignment length, Number of mismatches, Number of gap openings, Start of alignment in query, End of alignment in query, Start of alignment in subject, End of alignment in subject, Expect value, Bit score)</td><td>&#9745;</td></tr>
     * <tr><td>1</td><td>Q_SEQ_ID</td><td>qseqid</td><td>query id</td><td>Query Seq-id</td><td>&#9745;</td></tr>
     * <tr><td>2</td><td>Q_GI</td><td>qgi</td><td>query gi</td><td>Query GI</td><td>&#9744;</td></tr>
     * <tr><td>3</td><td>Q_ACC</td><td>qacc</td><td>query acc.</td><td>Query accesion</td><td>&#9744;</td></tr>
     * <tr><td>4</td><td>Q_ACCVER</td><td>qaccver</td><td>query acc.ver</td><td>Query accesion.version</td><td>&#9744;</td></tr>
     * <tr><td>5</td><td>Q_LEN</td><td>qlen</td><td>query length</td><td>Query sequence length</td><td>&#9745;</td></tr>
     * <tr><td>6</td><td>S_SEQ_ID</td><td>sseqid</td><td>subject id</td><td>Subject Seq-id</td><td>&#9745;</td></tr>
     * <tr><td>7</td><td>S_ALL_SEQ_ID</td><td>sallseqid</td><td>subject ids</td><td>All subject Seq-id(s), separated by a ';'</td><td>&#9744;</td></tr>
     * <tr><td>8</td><td>S_GI</td><td>sgi</td><td>subject gi</td><td>Subject GI</td><td>&#9744;</td></tr>
     * <tr><td>9</td><td>S_ALL_GI</td><td>sallgi</td><td>subject gis</td><td>All subject GIs</td><td>&#9744;</td></tr>
     * <tr><td>10</td><td>S_ACC</td><td>sacc</td><td>subject acc.</td><td>Subject accession</td><td>&#9744;</td></tr>
     * <tr><td>11</td><td>S_ACCVER</td><td>saccver</td><td>subject acc.ver</td><td>Subject accession.version</td><td>&#9744;</td></tr>
     * <tr><td>12</td><td>S_ALLACC</td><td>sallacc</td><td>subject accs.</td><td>All subject accessions</td><td>&#9744;</td></tr>
     * <tr><td>13</td><td>S_LEN</td><td>slen</td><td>subject length</td><td>Subject sequence length</td><td>&#9745;</td></tr>
     * <tr><td>14</td><td>Q_START</td><td>qstart</td><td>q. start</td><td>Start of alignment in query</td><td>&#9745;</td></tr>
     * <tr><td>15</td><td>Q_END</td><td>qend</td><td>q. end</td><td>End of alignment in query</td><td>&#9745;</td></tr>
     * <tr><td>16</td><td>S_START</td><td>sstart</td><td>s. start</td><td>Start of alignment in subject</td><td>&#9745;</td></tr>
     * <tr><td>17</td><td>S_END</td><td>send</td><td>s. end</td><td>End of alignment in subject</td><td>&#9745;</td></tr>
     * <tr><td>18</td><td>Q_SEQ</td><td>qseq</td><td>query seq</td><td>Aligned part of query sequence</td><td>&#9744;</td></tr>
     * <tr><td>19</td><td>S_SEQ</td><td>sseq</td><td>subject seq</td><td>Aligned part of subject sequence</td><td>&#9744;</td></tr>
     * <tr><td>20</td><td>E_VALUE</td><td>evalue</td><td>evalue</td><td>Expect value</td><td>&#9745;</td></tr>
     * <tr><td>21</td><td>BIT_SCORE</td><td>bitscore</td><td>bit score</td><td>Bit score</td><td>&#9745;</td></tr>
     * <tr><td>22</td><td>SCORE</td><td>score</td><td>score</td><td>Raw score</td><td>&#9745;</td></tr>
     * <tr><td>23</td><td>LENGTH</td><td>length</td><td>alignment length</td><td>Alignment length</td><td>&#9745;</td></tr>
     * <tr><td>24</td><td>P_IDENT</td><td>pident</td><td>% identity</td><td>Percentage of identical matches</td><td>&#9745;</td></tr>
     * <tr><td>25</td><td>N_IDENT</td><td>nident</td><td>identical</td><td>Number of identical matches</td><td>&#9745;</td></tr>
     * <tr><td>26</td><td>MISMATCH</td><td>mismatch</td><td>mismatches</td><td>Number of mismatches</td><td>&#9745;</td></tr>
     * <tr><td>27</td><td>POSITIVE</td><td>positive</td><td>positives</td><td>Number of positive-scoring matches</td><td>&#9745;</td></tr>
     * <tr><td>28</td><td>GAP_OPEN</td><td>gapopen</td><td>gap opens</td><td>Number of gap openings</td><td>&#9745;</td></tr>
     * <tr><td>29</td><td>GAPS</td><td>gaps</td><td>gaps</td><td>Total number of gaps</td><td>&#9745;</td></tr>
     * <tr><td>30</td><td>P_POS</td><td>ppos</td><td>% positives</td><td>Percentage of positive-scoring matches</td><td>&#9745;</td></tr>
     * <tr><td>31</td><td>FRAMES</td><td>frames</td><td>query/sbjct frames</td><td>Query and subject frames separated by a '/'</td><td>&#9745;</td></tr>
     * <tr><td>32</td><td>Q_FRAME</td><td>qframe</td><td>query frame</td><td>Query frame</td><td>&#9745;</td></tr>
     * <tr><td>33</td><td>S_FRAME</td><td>sframe</td><td>sbjct frame</td><td>Subject frame</td><td>&#9745;</td></tr>
     * <tr><td>34</td><td>BTOP</td><td>btop</td><td>BTOP</td><td>Blast traceback operations (BTOP)</td><td>&#9744;</td></tr>
     * <tr><td>35</td><td>S_TAX_IDS</td><td>staxids</td><td>subject tax ids</td><td>unique Subject Taxonomy ID(s), separated by a ';' (in numerical order)</td><td>&#9744;</td></tr>
     * <tr><td>36</td><td>S_SCI_NAMES</td><td>sscinames</td><td>subject sci names</td><td>unique Subject Scientific Name(s), separated by a ';'</td><td>&#9744;</td></tr>
     * <tr><td>37</td><td>S_COM_NAMES</td><td>scomnames</td><td>subject com names</td><td>unique Subject Common Name(s), separated by a ';'</td><td>&#9744;</td></tr>
     * <tr><td>38</td><td>S_BLAST_NAMES</td><td>sblastnames</td><td>subject blast names</td><td>unique Subject Blast Name(s), separated by a ';' (in alphabetical order)</td><td>&#9744;</td></tr>
     * <tr><td>39</td><td>S_S_KINGDOMS</td><td>sskingdoms</td><td>subject super kingdoms</td><td>unique Subject Super Kingdom(s), separated by a ';' (in alphabetical order)</td><td>&#9744;</td></tr>
     * <tr><td>40</td><td>S_TITLE</td><td>stitle</td><td>subject title</td><td>Subject Title</td><td>&#9744;</td></tr>
     * <tr><td>41</td><td>S_ALL_TITLES</td><td>salltitles</td><td>subject titles</td><td>All Subject Title(s), separated by a '<>'</td><td>&#9744;</td></tr>
     * <tr><td>42</td><td>S_STRAND</td><td>sstrand</td><td>subject strand</td><td>Subject Strand</td><td>&#9744;</td></tr>
     * <tr><td>43</td><td>Q_COV_S</td><td>qcovs</td><td>% subject coverage</td><td>Query Coverage Per Subject</td><td>&#9744;</td></tr>
     * <tr><td>45</td><td>Q_COV_HSP</td><td>qcovhsp</td><td>% hsp coverage</td><td>Query Coverage Per HSP</td><td>&#9744;</td></tr>
     * </table></span>
     * @endhtmlonly
     *
     *
     * More fields will likely be implemented in the future.
     *
     * @var static_constexpr_std::array<Enum_const,12> BlastMatchField::defaults;
     *
     * @brief An std::array of @link BlastMatchField::Enum @endlink indicating the
     *        fields that are default
     *
     * @code{.cpp}
     * static constexpr std::array<Enum const, 12> defaults
     * {
     *     {
     *         Enum::Q_SEQ_ID,
     *         Enum::S_SEQ_ID,
     *         Enum::P_IDENT,
     *         Enum::LENGTH,
     *         Enum::MISMATCH,
     *         Enum::GAP_OPEN,
     *         Enum::Q_START,
     *         Enum::Q_END,
     *         Enum::S_START,
     *         Enum::S_END,
     *         Enum::E_VALUE,
     *         Enum::BIT_SCORE
     *     }
     * };
     * @endcode
     *
     *
     * @var static_constexpr_const_std::array<char_const*,45> BlastMatchField::optio
     *                                                        nLabels[];
     *
     * @brief An array of CStrings representing the command line parameter name of
     *        each field
     *
     * @var static_constexpr_char_const_*_const BlastMatchField::legacyColumnLabels;
     *
     * @brief A single CString representing the <b>column labels</b> of the @link
     *        BlastIOContext::legacyFormat @endlink.
     *
     * @var static_constexpr_const_std::array<char_const*,45> BlastMatchField::colum
     *                                                        nLabels[];
     *
     * @brief An array of CStrings representing the <b>column label</b> of each
     *        possible field; for the @link BlastIOContext::legacyFormat @endlink,
     *        use @link BlastMatchField::legacyColumnLabels @endlink instead.
     *
     * @var static_constexpr_const_std::array<char_const*,45> BlastMatchField::descr
     *                                                        iptions[];
     *
     * @brief An array of CStrings representing the human-readable descriptions of
     *        each field
     *
     * @var static_constexpr_const_std::array<bool,45> BlastMatchField::implemented[
     *                                                 ];
     *
     * @brief An array of bools revealing whether the Blast I/O module supports
     *        printing this field
     */