HelpDatabase Reference › Ancestry_RelationshipPredictions

Ancestry_RelationshipPredictions Table

The Ancestry_RelationshipPredictions table stores the detailed, ranked relationship predictions that A* generates for each DNA match. Where Ancestry_matchGroups.groupName records a single summary label for a match, this table preserves the full set of candidate relationships — each with its own kinship path and probability — so you can see every relationship A* considered, not just the top one.

Each row represents one predicted relationship for one match on one test kit. A single match typically has several rows: A* often returns multiple plausible relationships (for example a half-sibling vs. an aunt/uncle vs. a grandparent), and this table captures all of them.

Where it comes from: these predictions are read from the relationship data delivered with the match list, the same batch source that fills groupName, paternal, maternal, and percentDna on Ancestry_matchGroups. Close relatives are generally excluded because they already carry kinship codes, so this table mostly covers more distant matches.

Column Reference

ColumnTypeSourceDescription
Idint (PK)AutoAuto-incrementing primary key
testGuidstringRelationship dataThe test kit GUID (your kit) the prediction belongs to
matchGuidstringRelationship dataThe matched person’s GUID. Joins to Ancestry_matchGroups.matchGuid. Stored uppercased.
labelstringRelationship dataHuman-readable relationship label for this prediction (e.g., “1st cousin”, “half aunt or uncle”)
pathstringRelationship dataThe kinship path that produces this label — how the two people would be connected through shared ancestors
distributionProbabilityintRelationship dataThe probability A* assigns to this group of paths. Shared by every path within the same predicted kinship group.
predictionRankintRelationship dataZero-based rank of the kinship group as returned by A*. Rank 0 is the most likely group; all paths within that group share the same rank.
created_datestringAppDate the prediction rows were written (yyyy-MM-dd)
Relationship to groupName: the single label stored in Ancestry_matchGroups.groupName summarizes the top prediction for the match. This table keeps the full ranked list behind that summary, so you can review the alternatives A* weighed against each other.

How It’s Populated

Predictions are extracted while A* match-list relationship data is processed during a gather. For each match in the relationship data:

  1. Match-level fields are updated first. The match’s summary fields (groupName, paternal, maternal, percentDna) are written to Ancestry_matchGroups using that table’s preservation rules.
  2. Predicted kinship groups are read. A* returns a list of predicted kinship groups for the match. Each group has a distributionProbability and a list of paths to the match.
  3. One row per path. The application walks the groups in order. For each group it assigns the next predictionRank (starting at 0) and then creates one Ancestry_RelationshipPredictions row for every path in that group, copying the group’s distributionProbability and rank onto each path’s label and path.

Because the rank is assigned per group, all paths belonging to the same kinship group share one predictionRank and one distributionProbability. A match can therefore have several rows at the same rank (one per path) and additional rows at lower ranks for less likely groups.

Replace-on-Refresh Behavior

Unlike most A* tables, this table is not merged field-by-field. When a match’s predictions are written, the application first deletes every existing row for that testGuid + matchGuid pair (matched case-insensitively) and then inserts the fresh set:

  • Full replace per match. Each re-gather of a match’s relationship data wipes and rewrites that match’s predictions, so the rows always reflect A*’s latest answer rather than accumulating stale predictions.
  • Only written when predictions exist. If a match has no predicted kinship paths in the relationship data, no delete/insert is performed and any prior rows are left untouched.
  • Indexed by match. A non-unique index on (testGuid, matchGuid) supports fast lookup of all predictions for a given match.

Related Tables

  • Ancestry_matchGroups — the primary match table. Its groupName holds the summary relationship label that this table expands into the full ranked list. Join on matchGuid (and testGuid).
  • Ancestry_ICW — In-Common-With (shared match) pairs, another per-match relationship signal.
  • AncestryAncestorCouple — common ancestor couples shared between a kit and a match, the documentary counterpart to these predicted paths.