[[AP_Decoding]]
=== AP Decoding

The _WSJT-X_ decoders for FT4, FT8, JT65, and QRA64 include optional
procedures that take advantage of naturally accumulating information
during a minimal QSO.  This _a priori_ (AP) information increases
sensitivity of the decoder by up to 4 dB, at the cost of a slightly
higher rate of false decodes.

For example: when you decide to answer a CQ, you already know your own
callsign and that of your potential QSO partner.  The software
therefore "`knows`" what might be expected for at least 57 message
bits (28 for each of two callsigns, 1 or more for message type) in the
next received message.  The decoder's task can thus be reduced to
determining the remaining 15 bits of the message and ensuring that the
resulting solution is consistent with the message's parity symbols.

AP decoding starts by setting AP bits to the hypothesized values, as
if they had been received correctly.  We then determine whether the
remaining message and parity bits are consistent with the hypothesized
AP bits, with a specified level of confidence.  Successful AP decodes
are labeled with an end-of-line indicator of the form `aP`, where `P`
is one of the single-digit AP decoding types listed in Table 1.  For
example, `a2` indicates that the successful decode used *MyCall* as
hypothetically known information.

[[FT8_AP_INFO_TABLE]]
.FT4 and FT8 AP information types
[width="50%",cols="h10,<m20",frame=topbot,options="header"]
|===============================================
|aP | Message components
|a1 | CQ   &#160; &#160;   ?   &#160; &#160;   ? 
|a2 | MyCall &#160; &#160; ?   &#160; &#160;   ? 
|a3 | MyCall DxCall &#160; &#160;  ? 
|a4 | MyCall DxCall RRR
|a5 | MyCall DxCall 73
|a6 | MyCall DxCall RR73
|===============================================

If a codeword is found that is judged to have high (but not
overwhelmingly high) probability of being correct, a `?` character is
appended when the decoded message is displayed.  To avoid misleading
spots of occasional false decodes, messages so marked are not
forwarded to {pskreporter}.

Table 2 lists the six possible QSO states that are tracked by the
_WSJT-X_ auto-sequencer, along with the type of AP decoding that would
be attempted in each state.

[[FT8_AP_DECODING_TYPES_TABLE]]
.FT4 and FT8 AP decoding types for each QSO state
[width="50%",cols="h10,<m20",frame=topbot,options="header"]
|===========================================
|State        |AP type
|CALLING STN  |   2, 3
|REPORT       |   2, 3
|ROGER_REPORT |   3, 4, 5, 6
|ROGERS       |   3, 4, 5, 6
|SIGNOFF      |   3, 1, 2
|CALLING CQ   |   1, 2
|===========================================

Decoding with _a priori_ information behaves slightly differently in
JT65.  Some details are provided in Tables 3 and 4.  Notations such as
`a63`, use a second digit to indicate the number of Rx intervals
averaged to obtain the decode.

[[JT65_AP_INFO_TABLE]]
.JT65 AP information types
[width="50%",cols="h10,<m20",frame=topbot,options="header"]
|===============================================
|aP | Message components
|a1 | CQ   &#160; &#160;   ?   &#160; &#160;   ? 
|a2 | MyCall &#160; &#160; ?   &#160; &#160;   ? 
|a3 | MyCall DxCall &#160; &#160;  ? 
|a4 | MyCall DxCall RRR
|a5 | MyCall DxCall 73
|a6 | MyCall DxCall DxGrid
|a7 | CQ     DxCall DxGrid
|===============================================

[[JT65_AP_DECODING_TYPES_TABLE]]
.JT65 AP decoding types for each QSO state
[width="50%",cols="h10,<m20",frame=topbot,options="header"]
|===========================================
|State        |AP type
|CALLING STN  |   2, 3, 6, 7
|REPORT       |   2, 3
|ROGER_REPORT |   3, 4, 5
|ROGERS       |   3, 4, 5
|SIGNOFF      |   2, 3, 4, 5
|CALLING CQ   |   1, 2, 6
|===========================================


[[Decoded_Lines]]
=== Decoded Lines

Displayed information accompanying decoded messages generally includes UTC,
signal-to-noise ratio in dB, time offset DT in seconds, and
audio frequency in Hz.  Some modes include additional information such
as frequency offset from nominal (DF), frequency drift (Drift or F1),
or distance (km or mi).

There may also be some cryptic characters with special meanings
summarized in the following Table:

[[DECODED_LINES_TABLE]]
.Notations used on decoded text lines
[width="50%",cols="h,3*^",frame=topbot,options="header"]
|===========================================
|Mode    |Mode character|Sync character|End of line information
|FT4     | +            |      | ? &#160; aP
|FT8     | ~            |      | ? &#160; aP
|JT4     | $            | *, # | f, fN, dCN
|JT9     | @            |      |
|JT65    | #            |      |
|JT65 VHF| #            | *, # | f, fN, dCN
|QRA64   | :            | *    | R
|ISCAT   |              | *    | M  N  C  T
|MSK144  | &            |      |
|===========================================
Sync character::
 `*` - Normal sync +
 `#` - Alternate sync

End of line information::
 `?` - Decoded with lower confidence +
 `a` - Decoded with aid of some a priori (AP) information +
 `C` - Confidence indicator [ISCAT and Deep Search; (0-9,*)] +
 `d` - Deep Search algorithm +
 `f` - Franke-Taylor or Fano algorithm +
 `M` - Message length (characters) +
 `N` - Number of Rx intervals or frames averaged +
 `P` - Number indicating type of AP information (Table 1, above) +
 `R` - Return code from QRA64 decoder +
 `T` - Length of analyzed region (s)

Table 6 below shows the meaning of the return codes R in QRA64 mode.

[[QRA64_AP_INFO_TABLE]]
.QRA64 AP return codes
[width="50%",cols="h10,<m20",frame=topbot,options="header"]
|===============================================
|rc | Message components
|0  | ?    &#160; &#160;   ?   &#160; &#160;   ?
|1  | CQ   &#160; &#160;   ?   &#160; &#160;   ? 
|2  | CQ   &#160; &#160;   ?   
|3  | MyCall   &#160; &#160;   ?   &#160; &#160;   ? 
|4  | MyCall   &#160; &#160;   ?  
|5  | MyCall DxCall &#160; &#160;   ?
|6  | ?    &#160; &#160;   DxCall   &#160; &#160;   ?
|7  | ?    &#160; &#160;   DxCall   
|8  | MyCall     DxCall DxGrid
|9  | CQ     DxCall &#160; &#160;   ?
|10 | CQ     DxCall 
|11 | CQ     DxCall DxGrid
|===============================================
