A step-by-step case study of one analysis session in TracePrism, kept as a supplementary reference alongside the TVCG submission and as teaching material for students learning the tool and the underlying method.
IC_then_NC and NC_then_IC (see the final section).
STEP 0Stage 1 (Overview) always summarizes whatever is currently in the "remaining" working set — at the very start of a session, that is the whole log. Sepsis Cases is a much smaller, denser dataset than the Road Traffic Fines log used in the companion case study: 1,050 traces, only 16 distinct activities, median length 13 events, and five outcomes rather than four — NC_only 66.7% (no ICU admission ever), no_admission 22.9% (released without any ward admission at all), IC_then_NC 5.9% (ICU, later stepped down to a normal-care ward), NC_then_IC 3.6% (normal-care ward, later escalated to ICU), and IC_only 1.0%. Unlike the Fines log's clean numeric fields, Sepsis carries a rich set of clinical case attributes recorded at ER triage: four numeric lab values (CRP, leucocyte count, lactic acid, age band) and eight boolean SIRS/triage criteria (infection suspected, organ dysfunction, hypotension, hypoxia, and the four individual SIRS criteria plus their 2-or-more summary flag). A dataset note also warns that only the gaps between events are real — absolute calendar dates were randomized per case for anonymization — so the date heatmaps are not informative here the way they were for Fines.
NC_only (66.7%).ER Registration → ER Triage → ER Sepsis Triage, 35 traces, 100% no_admission — patients whose case ended at triage with no further care activities recorded at all.STEP 1Sepsis has only one common short trace variant clearing the ≥20-occurrence bar for an "obvious group": the three-activity sequence ER Registration → ER Triage → ER Sepsis Triage, with no further activity recorded — 35 traces, 100% pure no_admission. This was committed immediately, for the same reason the two exit-ramp variants were committed first in the Fines case study: it is a free, zero-modeling win, and removing it up front narrows what Step 2's topic model has to explain. This step does not depend on any encoding choice, so it is identical to the earlier (buggy) run of this session.
no_admission) plus its attribute fingerprint — several boolean triage criteria read false in 97–100% of this group's traces, each far above the working-set baseline (+57 to +81 percentage points).STEP 2With the obvious group removed, the encoding recommender was run against the remaining 1,015 traces — and this time its recommendation was actually applied, not just displayed. The top-ranked candidate was activities + 2-grams + attribute-augmented activity (sharp 0.819, NMI 0.305, score 0.562), clearly ahead of plain activities + 2-grams alone and ahead of encodings that add the numeric/boolean facets as separate columns instead of fusing them into the activity vocabulary. The attribute-augmented activity switch was turned on to match.
activities + 2-grams + attribute-augmented activity ranks first (score 0.562), ahead of encodings that add the numeric/boolean facets as separate columns (score 0.467) or that skip the attribute facet entirely (score lower still). This time the recommended switch was actually turned on before the K-sweep below.A K-sweep from K=3 to K=20 was run and several candidate K's were compared under a dominant-outcome-share ≥ 0.85 (and n ≥ 10) rule; coverage rose steadily with K, from 740 of 1,015 traces at K=8 up to 785 at K=18 — the widest K tried and the one taken forward, since it maximized how many traces cleared the purity bar without any sign of the qualifying topics fragmenting into noise.
At K=18, thirteen of the eighteen topics cleared the purity bar and were committed: two large NC_only-dominant topics (T0, 241 traces, 98.8% pure; T1, 204 traces, 97.1% pure), one large no_admission-dominant topic (T2, 87 traces, 97.7% pure), and ten smaller topics ranging 87.5–100% pure across both outcomes (T5, T7, T9, T10, T11, T12, T13, T14, T15, T17; 14–41 traces each). Five topics stayed below the bar and were left for later rounds — T3, T4, T6, T8, and T16 — most notably T8 (70 traces), a mixed IC_then_NC-leaning topic at only 62.9% purity.
Release A×InfectionSuspected:true) rather than plain activity n-grams — visibly different from an activities-only fit.(S 3.7× · O 0.93) — two numbers computed against whatever population the group was drawn from at commit time:
S 3.7× means its 241 traces were, on average, roughly three and a half times as behaviorally similar to each other as an arbitrary 241-trace sample of the 1,015-trace remainder would have been. (The Step 1 obvious group shows S – instead of a number: no topic fit existed yet when it was committed, so there is no topic-weight space to measure similarity in.)O 1.00 reflects its 100% purity exactly. T0's O 0.93 is close to that ceiling, consistent with its 98.8% purity.T0's fingerprint panel also carries real chips this time — infection suspected true 100% (+19pp), IV infusion required true 93% (+17pp), SIRS: heart rate true 93% (+16pp), plus two more attributes reading well below their working-set baseline. That is a direct, visible consequence of the encoding fix above: with attribute-augmented activity actually switched on, these same attributes are fused into the tokens NMF fits topics on, so a topic like T0 that the model separates out cleanly is, unsurprisingly, also legible in terms of those attributes. (In the earlier, unfixed run — where this facet was silently never applied — the equivalent topic showed no attribute divergence at all, since nothing in its encoding could have produced one.)
STEP 3The 230 traces left after Step 2 were re-scored. This round's own top-ranked candidate was, perhaps surprisingly, simpler than what was already active — plain activities alone (sharp 0.592, NMI 0.492, score 0.542) outranked every richer candidate at this quick-probe stage. Rather than strip out facets that had already proven useful in Step 2, the existing activities + 2-grams + attribute-augmented activity encoding was kept active; the fix applied in this session turns on whatever a round's scorer newly recommends, but does not retroactively remove facets a prior round already switched on. This is a judgment call worth flagging explicitly rather than leaving implicit.
activities (score 0.542) — the existing richer encoding from Step 2 was kept rather than narrowed.A K-sweep (K=3–20) was compared across candidate K's under the same ≥0.80 purity / n≥8 rule; coverage peaked at K=8 (70 of 230 traces across two qualifying topics), ahead of every other K tried (25–69 traces).
At K=8, two topics cleared the bar: T1 (25 traces, 96% no_admission) and T2 (45 traces, 82.2% NC_only, with small IC_only/NC_then_IC/IC_then_NC tails). The other six topics stayed mixed, ranging 53.5–75% purity.
false 96–100% of the time (up to +81pp over baseline) — the same “low-acuity, uneventful triage” signature as the Step 1 obvious group, just arrived at through topic modeling on a much narrower remainder. Committed to knowledge.STEP 4The 160 traces left after Step 3 were re-scored; the top-ranked candidate reverted to activities + 2-grams + attribute-augmented activity (sharp 0.767, NMI 0.324, score 0.545) — the same encoding already active, so nothing changed. A K-sweep (K=2–8) was compared under the same ≥0.80 / n≥6 rule this round, and the result was thin: K=2 through K=6 produced zero qualifying topics at any size, and K=7 and K=8 each produced exactly one, covering only 7 of the 160 traces (4.4%) — a sharp drop from every previous round.
At K=7, only T6 — a small, 7-trace topic (86% NC_only) — cleared the bar; the other six topics ranged 40–75% purity, including two sizeable but thoroughly mixed IC_then_NC-leaning topics (T2, 37 traces, 51.4%; T3, 32 traces, 62.5%) that no K in this sweep managed to resolve further. T6 is small enough (n=7) that its outcome-coherence badge could not be computed reliably and the app's own knowledge card shows no S/O figure for it at all — an honest "too small to score" rather than a suppressed one.
STEP 5With Step 4 yielding almost nothing, the session switched from topic purity to Stage 5's embedding + clustering approach on the 153-trace residue, the same decision point used in the Fines case study and in Step 5 of the earlier (buggy) run of this session. Topics were refit at K=6 purely as a feature space (not evaluated for purity in their own right), then UMAP-embedded and clustered with k-means swept across N=5–12, each time recording every cluster's size and outcome-homogeneity under a ≥0.80 / n≥6 rule.
Coverage under the purity rule was zero at N=5–7, then jumped to 42 of 153 traces (27.5%) at N=8 across three qualifying clusters — the best result in the sweep, ahead of every larger N tried (22–32 traces). N=8 was taken forward and re-fit directly (rather than read off the sweep) before committing.
The three qualifying clusters were committed directly from the cluster table. Notably, one of them — 13 traces, 84.6% IC_then_NC — is the first and only committed group across all four rounds whose dominant outcome is an escalation outcome rather than NC_only or no_admission; its fingerprint shows a distinctive profile (SIRS: respiratory rate true 92%, +35pp; IV infusion required true 100%, +24pp; a specific diagnosis code 54%, +48pp) that the topic-modeling rounds never isolated on their own.
Table 1 lists every group committed during the session, in commit order, with its size, share of the full dataset, dominant outcome, and provenance.
| # | Description | n | % of dataset | Dominant outcome | Purity | S · O | Source / step |
|---|---|---|---|---|---|---|---|
| 0 | Obvious group: ER Registration → ER Triage → ER Sepsis Triage | 35 | 3.3% | no_admission | 100% | – · 1.00 | obvious group (Step 1) |
| 1 | Topic T0-dominant (K=18) | 241 | 23.0% | NC_only | 98.8% | 3.7× · 0.93 | topic (Step 2) |
| 2 | Topic T1-dominant (K=18) | 204 | 19.4% | NC_only | 97.1% | 3.7× · 0.84 | topic (Step 2) |
| 3 | Topic T2-dominant (K=18) | 87 | 8.3% | no_admission | 97.7% | 4.1× · 0.88 | topic (Step 2) |
| 4 | Topic T5-dominant (K=18) | 41 | 3.9% | no_admission | 90.2% | 4.4× · 0.65 | topic (Step 2) |
| 5 | Topic T7-dominant (K=18) | 42 | 4.0% | NC_only | 95.2% | 4.1× · 0.76 | topic (Step 2) |
| 6 | Topic T9-dominant (K=18) | 24 | 2.3% | no_admission | 87.5% | 4.4× · 0.50 | topic (Step 2) |
| 7 | Topic T10-dominant (K=18) | 33 | 3.1% | NC_only | 87.9% | 3.2× · 0.52 | topic (Step 2) |
| 8 | Topic T11-dominant (K=18) | 14 | 1.3% | no_admission | 100% | 4.5× · 1.00 | topic (Step 2) |
| 9 | Topic T12-dominant (K=18) | 27 | 2.6% | NC_only | 92.6% | 4.1× · 0.66 | topic (Step 2) |
| 10 | Topic T13-dominant (K=18) | 18 | 1.7% | NC_only | 100% | 4.4× · 1.00 | topic (Step 2) |
| 11 | Topic T14-dominant (K=18) | 14 | 1.3% | NC_only | 92.9% | 3.8× · 0.72 | topic (Step 2) |
| 12 | Topic T15-dominant (K=18) | 26 | 2.5% | NC_only | 96.2% | 3.7× · 0.82 | topic (Step 2) |
| 13 | Topic T17-dominant (K=18) | 14 | 1.3% | NC_only | 100% | 4.5× · 1.00 | topic (Step 2) |
| 14 | Topic T1-dominant (K=8) | 25 | 2.4% | no_admission | 96% | 3.3× · 0.88 | topic (Step 3) |
| 15 | Topic T2-dominant (K=8) | 45 | 4.3% | NC_only | 82.2% | 3.1× · 0.54 | topic (Step 3) |
| 16 | Topic T6-dominant (K=7) | 7 | 0.7% | NC_only | 85.7% | too small to score | topic (Step 4) |
| 17 | Homogeneous cluster: T1-dominant (N=8, K=6) | 14 | 1.3% | no_admission | 85.7% | 2.5× · 0.72 | k-means cluster (Step 5) |
| 18 | Homogeneous cluster: T2-dominant (N=8, K=6) | 13 | 1.2% | IC_then_NC | 84.6% | 2.4× · 0.70 | k-means cluster (Step 5) |
| 19 | Homogeneous cluster: T0-dominant (N=8, K=6) | 15 | 1.4% | NC_only | 80% | 2.3× · 0.56 | k-means cluster (Step 5) |
| Total interpreted | 939 | 89.4% | |||||
Table 2 breaks down the 111-trace residue by outcome, compared against its share of the whole dataset.
| Outcome | n in residue | % of residue | % of that outcome dataset-wide left unexplained |
|---|---|---|---|
| IC_then_NC | 35 | 31.5% | 35 of 62 (56.5%) |
| NC_only | 34 | 30.6% | 34 of 700 (4.9%) |
| NC_then_IC | 26 | 23.4% | 26 of 38 (68.4%) |
| no_admission | 11 | 9.9% | 11 of 240 (4.6%) |
| IC_only | 5 | 4.5% | 5 of 10 (50.0%) |
NC_then_IC (3.6% dataset-wide) and IC_then_NC (5.9%) — remain the least-captured in relative terms: 68.4% of all NC_then_IC traces and 56.5% of all IC_then_NC traces are still in the residue, alongside half of the rare IC_only outcome. This is a real improvement over the earlier (buggy) run of this session, which left 72.6% of IC_then_NC and 90.0% of IC_only unexplained — the corrected encoding, and in particular Step 5's escalation-dominant cluster (Table 1, row 18), captured meaningfully more of the escalation traces than the flawed run managed. Even so, no round's topic modeling ever produced a group dominated by an escalation outcome; only Step 5's clustering did, once. Escalation and ICU-involving trajectories in this log remain the hardest structure to carve out cleanly — a substantive finding about the dataset, not just a stopping point.