Reads a completed [evaluate_gifts()] result against the cycles [gift_cycles()] derives, and reports for each whether the genome supports every member.
Value
A tibble with one row per cycle: `cycle_id`, `named_cycle`, `cycle_length`, `supported`, `status`, and `broken_at`, a comma-separated list of the members that are not complete.
Details
This never changes a call. A GIFT is complete or not on its own routes and markers, whether or not its neighbours are; inferring a capability's absence from a neighbour's absence is the opposite of what the composition model is for. `status` is therefore assembled from calls that were already made:
- `closed`
every member of the cycle is complete
- `open`
some but not all members are complete; `broken_at` names the members that are not
- `absent`
no member is complete
A `closed` cycle means the genome encodes at least one complete route for every segment of a ring in the composition graph. It does not mean the cycle carries flux, runs in the direction the name suggests, or is expressed. Two of the citric acid cycle's segments are curated as `interconversion` precisely because gifter cannot say which way they run.