# Score components

Detailed scoring, a part of algorithm transparency,
is a breakdown of *similarity score* that is computed by SourceAFIS during matching for a pair of fingerprints.
Scoring is done separately for every pairing.
Pairing with the highest total score is selected as the best match.
Scoring for the best match is also recorded under separate `best-score`

key.

Key | MIME | Filename in ZIP |
---|---|---|

`score` | `application/cbor` | `047-score.cbor` |

`score` | `application/cbor` | `049-score.cbor` |

... skipped 56 files ... | ||

`score` | `application/cbor` | `163-score.cbor` |

`score` | `application/cbor` | `165-score.cbor` |

`best-score` | `application/cbor` | `167-best-score.cbor` |

## Format

Scoring is recorded as a CBOR-encoded object holding several fields.
Final similarity score is stored in `shapedScore`

field. Other fields describe intermediate scores that contribute to the final score.

`minutiaCount`

- Number of matched minutiae, regardless of correctness of minutia type or accuracy of angles and distances.`minutiaScore`

- Score assigned for`minutiaCount`

.`minutiaFractionInProbe`

- Fraction of probe minutiae that were successfully paired, including approximate matches like in`minutiaCount`

.`minutiaFractionInCandidate`

- Like`minutiaFractionInProbe`

but for candidate minutiae.`minutiaFraction`

- Average of`minutiaFractionInProbe`

and`minutiaFractionInCandidate`

.`minutiaFractionScore`

- Score assigned for`minutiaFraction`

.`supportingEdgeSum`

- Number of supporting edges in the pairing graph.`edgeCount`

- Number of edges in the pairing graph, including supporting edges. This value is actually one higher than that.`edgeScore`

- Score assigned for`edgeCount`

.`supportedMinutiaCount`

- Number of minutiae with at least one supporting edge in addition to edges in the pairing tree.`supportedMinutiaScore`

- Score assigned for`supportedMinutiaCount`

.`minutiaTypeHits`

- Number of matched minutia pairs where probe and candidate minutia have the same type (ending or bifurcation).`minutiaTypeScore`

- Score assigned for`minutiaTypeHits`

.`distanceErrorSum`

- Sum of distance errors, i.e. differences between probe and candidate edge length, for all edges in the pairing tree.`distanceAccuracySum`

- Like`distanceErrorSum`

but zero at maximum tolerated distance error and increasing towards exact match.`distanceAccuracyScore`

- Score derived from`distanceAccuracySum`

and`distanceErrorSum`

.`angleErrorSum`

- Sum of angle errors, i.e. differences between probe and candidate edge angles that are measured between reference/neighbor minutia direction and edge direction, for all edges in the pairing tree.`angleAccuracySum`

- Like`angleErrorSum`

but zero at maximum tolerated angle error and increasing towards exact match.`angleAccuracyScore`

- Score derived from`angleAccuracySum`

and`angleErrorSum`

.`totalScore`

- Total raw score computed by adding together above score components.`shapedScore`

- Final similarity score computed from`totalScore`

with the help of monotonic shaping function constructed in such a way as to make`shapedScore`

approximately correspond to FMR (false match rate) thresholds. Increase in`shapedScore`

by 10 points roughly corresponds to 10x lower FMR.

Example: `047-score.cbor`

```
{
"minutiaCount": 30,
"minutiaScore": 0.96,
"minutiaFractionInProbe": 0.6521739130434783,
"minutiaFractionInCandidate": 0.8108108108108109,
"minutiaFraction": 0.7314923619271445,
"minutiaFractionScore": 6.568801410105758,
"supportingEdgeSum": 284,
"edgeCount": 314,
"edgeScore": 83.21000000000001,
"supportedMinutiaCount": 30,
"supportedMinutiaScore": 5.79,
"minutiaTypeHits": 26,
"minutiaTypeScore": 16.354,
"distanceErrorSum": 265,
"distanceAccuracySum": 112,
"distanceAccuracyScore": 2.9411140583554376,
"angleErrorSum": 4.7496614,
"angleAccuracySum": 5.373248,
"angleAccuracyScore": 1.4809341198205948,
"totalScore": 117.3048495882818,
"shapedScore": 235.5580484154064
}
```