← Back to TracePrism project page
Supplementary technical material accompanying the TVCG submission "TracePrism: Extending Semantic Trace Topics to Iterative, Encoding-Aware Trace Partitioning." This page holds detail that is either too mechanical to belong in the main paper's page budget, or that a reviewer wanting to reproduce a result would need but a reader following the argument would not.
Expands the paper's §Approach, "Encoding library" (Table III) and the two parameter-definition paragraphs that follow it. The compressed version in the paper keeps only what is needed to read Table III; the full definitions, useful for anyone re-implementing a token family exactly, are here.
An encoding is a subset of the following ten token families, used in any combination. The plain activity token, max-gap tier, and case-attribute tier families are order-agnostic: each reduces a trace to a multiset of activities or to a small number of per-trace scalar summaries, independent of sequence position. The remaining families are order-sensitive: 2-grams, 3-grams, and gap-augmented 2-grams capture immediate or short-range transitions; lagged follow captures ordered-but-not-adjacent proximity; relative transition time is a per-transition norm. Attribute-augmented activity sits between the two groups: it names a specific position (the trace's final activity) but says nothing about what came before it.
| Family | Example token | Captures | Order-sensitive? |
|---|---|---|---|
| Activity token | act:Payment | Activity presence | No |
| 2-gram | Send→Payment | Immediate transition | Yes |
| 3-gram | Create→Send→Pay | Short subsequence | Yes |
| Lagged follow | Create~>Payment | Ordered proximity within a window | Yes |
| Temporal gap tier | gap:high | Waiting time before every event | Yes |
| Max-gap tier | maxgap:high | Longest wait in the trace | No |
| Gap-augmented transition | Send→Pay[late] | Transition plus its own timing | Yes |
| Relative transition time | early / on-time / late | Timing vs. that transition's own norm | Yes |
| Case-attribute tier | amount:high | Case characteristics | No |
| Attribute-augmented activity | Payment×amount:high | Final-activity–attribute conjunction | Anchored to final activity only |
A gap tier discretizes a waiting time into n bins — three by default, labeled low, mid, high — using quantile cutoffs computed live from every occurrence of that quantity in the current subset, never from a global or dataset-wide reference. This matters because the same absolute waiting time can be "high" in a fast-moving working set and "low" in a slow-moving one; the tiers describe a distribution's own shape, not an absolute duration threshold fixed in advance.
Send→Pay) can therefore contribute several distinct tokens, one per tier its instances fall into (Send→Pay[low], Send→Pay[high], etc.).Lagged follow bounds a number of intervening events rather than elapsed time. With a window of w (two by default), it tokenizes every ordered pair of activities at trace positions i<j with j−i≤w, so a longer-range dependency such as "eventually notified, then eventually paid" is captured even when other events intervene — at the cost of no longer naming a specific position in the trace.
Relative transition time departs from the tiering scheme entirely. For each transition type (the ordered activity pair itself), it computes the median gap over every occurrence of that type in the current subset, then labels a specific occurrence early, on-time, or late according to whether its own gap falls below 70%, within, or above 130% of that type's own median. This ±30% band is a fixed constant, not a sweep parameter, because it describes a transition's pace relative to itself, not relative to a subset-wide distribution — there is no obvious "current subset" analogue to sweep it against.
Case-attribute tiers use the same live-quantile scheme as temporal gap, computed only from the traces in the current subset that carry a non-missing value for that attribute. A trace missing the attribute contributes no token for that family, rather than a synthetic "missing" tier. This choice is deliberate: a synthetic missing-tier would let a handful of incomplete traces distort the tier boundaries computed for everyone else, and would risk the system reading "no data recorded" as if it were a value in its own right.
Attribute-augmented activity tokens face a mismatch that all three of our logs share: every case attribute is recorded once per case, not once per event, so there is no single activity a general-purpose implementation can privilege as "the" one to fuse an attribute with. The implementation anchors every such token to the trace's final activity — a choice that needs no dataset-specific rule, since every trace has exactly one final activity by construction — and tiers numeric attributes into three bins for this family regardless of what n the case-attribute-tier family itself is using in the same encoding.
Expands the paper's §System. The paper's compressed version keeps design rationale; this page keeps the full click-level description, useful for someone trying to reproduce a session interaction-by-interaction rather than only reading the design intent.
| Tab | Workflow stage | Task(s) | Primary interaction | Runs in |
|---|---|---|---|---|
| Data | 1, 4 | T1, T4 | inspect distributions; commit obvious groups | main thread |
| Encoding | 2 | T2 | score candidates against working set; set switches manually | main thread |
| K-sweep | 3 | T1, T3 | sweep K; read stability, elbow, silhouette | worker (NMF) |
| Topics | 4, 5 | T4–T6 | select a dominant-topic group; read S(G), O(G), fingerprint | main thread |
| Trace groups | 4, 5 | T4, T5 | sweep N over topic weights; brush a UMAP region | worker (UMAP) |
| Knowledge | 6 | T5, T7 | commit, reopen, browse, export | main thread |
| Log | — | (T7) | review the action record | main thread |
Supports T1 and, through rule-based groups, T4. Distribution plots over activities, durations, and case attributes are sortable and show exact counts on hover, so a first pass over a new working set is an overview-then-detail reading of the same population that the dataset table describes only in aggregate. A year-by-month heatmap of each trace's start and end date is part of this overview (see §4 below). Rule-based detection of exact-variant subsets that meet both a size and a purity threshold surfaces obvious groups directly in this view, each committed with one click. Every tab reads the same trace table, so a variant already claimed by an active knowledge-base entry is grayed out here rather than offered again — this is what keeps the set of unexplained traces consistent across tabs without the analyst tracking it by hand.
Supports T2. Every token family above is a switch the analyst can turn on or off. Pressing "Score candidates against working set" runs the candidate-encoding scorer against the current working set and highlights the combinations it favors, top row first. Hovering a highlighted combination shows the three quantities behind its ranking as a tooltip: sharp, the mean per-trace share of weight held by that trace's largest topic in a quick K=4 fit (higher meaning traces land confidently in one topic); NMI, the normalized mutual information between that fit's dominant-topic assignment and the outcome (higher meaning the topic structure aligns with what actually happened); and score, the equally weighted combination 0.5·sharp + 0.5·NMI used to order the rows. This lets the heuristic be checked rather than simply trusted. The analyst reads these suggestions and then sets the switches manually, rather than accepting a ranking outright. Once the encoding is set, the analyst either moves on to the K-sweep tab with the current working set, or selects a different subset to score instead — either everything not yet explained, or an earlier recorded group to revisit.
Supports T1 and T3. Dragging the sweep's range control re-fits NMF once per value of K in a worker, without blocking the interface. Four coordinated views update together: a topic-stability (Sankey) diagram tracking which topics split or merge between adjacent values of K; a reconstruction-error (elbow) curve; a silhouette curve; and a coverage curve, the share of the working set covered by topics currently passing the coherence filter. All are linked by more than adjacency — hovering a node, a flow band, or an embedding dot highlights the same topic everywhere, and hovering a point on the curves reports the exact reconstruction error, silhouette score, and coverage for that K. Three range sliders, on dominant-outcome share, structural coherence S(G), and outcome coherence O(G), sit above the diagram and can be dragged independently at any time; each drag re-tints which topics currently qualify without triggering any new computation, so the coherence threshold is something the analyst explores rather than a fixed cutoff. Clicking any node of the stability diagram opens the Topics tab at that K.
Supports T4, T5, and T6. Selecting a topic — from the stability diagram, a small-multiples overview, or a term–topic heatmap — drives every other panel in the tab at once: its directly-follows graph, its S(G) and O(G) readout, and its attribute fingerprint (where the group is large enough to support one) all update together. The small-multiples overview draws every topic in the current fit side by side, resizable by trace count or by NMF weight with a single toggle. The term–topic heatmap gives the same overview at the vocabulary level: clicking a topic's row re-sorts every column by that topic's own weights, clicking the MAX or SUM row instead sorts by importance across the whole fit, and hovering any cell reports its exact weight to three decimal places. Within a single topic's detail view, its directly-follows graph is drawn twice, once sized by raw transition count and once by NMF weight, colored by which of the two dominates: gold where weight exceeds count (distinctive of this topic), blue where count exceeds weight (common across many topics), gray where the two agree. When the round's encoding includes 3-grams, the same graph adds a dashed edge from the first to the third activity of a salient triple; the gap, timing, and attribute-augmented families have no equivalent mark yet and are read through the fingerprint and coherence scores instead.
Supports T4 and T5; implements the two group-formation mechanisms other than a dominant topic. For k-means over the topic-weight vectors, an N-sweep slider previews candidate cluster counts N=3…20 against a live silhouette curve — the same elbow-reading interaction as the K-sweep tab one stage earlier, so choosing a cluster count and choosing a topic count are the same gesture. For manual selection, a two-dimensional UMAP embedding of the same topic-weight vectors is directly brushable: the analyst can lasso an arbitrary region as a candidate group, for cases where neither a single dominant topic nor an automatic cluster isolates a coherent subset cleanly (an irregular shape, or a partial overlap between two topics). The embedding's neighborhood size, minimum distance, and spread are exposed as controls, and its random seed is displayed and held fixed so a brushed region can be reproduced (exact defaults in §5 below). Both mechanisms report S(G) and O(G) live as N or the brushed region changes.
Supports T5 and T7. Committed groups are shown two ways at once: a two-dimensional arrangement in which each entry is a pie glyph, sized by the square root of its trace count, sliced by its outcome mix, and positioned by a PCA projection of that entry's own activity-type profile, so behaviorally similar entries land near each other; and a summary table listing every entry's size, outcome mix, dominant-outcome share, and S(G)/O(G), sortable by any column. The two views are linked: hovering a pie shows that entry's full card as a tooltip and highlights its table row, and vice versa. Reopening (T7) is a single button on any card. It restores the exact working set and encoding under which the group was originally formed, and marks the entry inactive rather than deleting it, so its card, statistics, and place in the arrangement all remain visible after reopening. Every entry, active or reopened, can be exported as CSV together with per-trace provenance.
The only tab not tied to a specific task in its own right. It is a plain, chronologically ordered, timestamped list of every action taken in a session, with no filtering or aggregation. Its purpose is to make the provenance requirement checkable after the fact rather than only asserted: every number and figure in the paper's case studies is drawn directly from a session's log and knowledge-base export, not reconstructed from memory or from screenshots taken along the way.
Expands the paper's fingerprint-chip table, moved here in full per the round-2 revision plan; the paper keeps one or two examples folded into a figure caption instead of a standalone table.
| Attribute | Chip | Group | Reading |
|---|---|---|---|
| Notification type | absent 100% (+53pp) | Payment | Every trace lacks a recorded notification event, 53 points above the population share; this group's most distinctive attribute. |
| Trace length | 2 (0.5×) | Payment | Mean length is 2 actions, 0.5 population standard deviations from the mean; present, but not distinctive enough to be marked. |
| Duration | 10d (0.0×) | Payment | Duration matches the population almost exactly; shown, but carries no divergence at all. |
| Notification type | absent 100% (+53pp) | Send Fine | The same attribute recurs as most distinctive here too, since both variants end before a notification is confirmed. |
| Expense | 12.53 (1.5×) | Send Fine | Mean expense is 1.5 standard deviations above the population mean, the largest numeric effect on this card. |
| Creation year | peak 2000 | Send Fine | Cases concentrate around creation year 2000; a date facet reads as a peak in a distribution, not as a scalar effect size. |
Expands the paper's Case Studies subsection of the same name, compressed there to 2–3 sentences justifying the max-gap token choice per the round-2 revision plan.
Before any modeling round, the Data tab's start- and end-date distributions already show an asymmetry that shapes the encoding choices that follow. Start dates spread almost continuously across the log's thirteen-year span, with a mild rise in the summer months. End dates do not: they cluster into a handful of discrete bands, months in which a disproportionate share of cases close at once. A fine's creation date tracks when a violation occurs — an effectively continuous process; its closing date tracks periodic batch processing on the administrative side. If cases close in batches, the waiting time before a case's last event carries more information than the identity of that event, which is why round B's top-ranked encoding (Table VI of the paper) adds a max-gap tier over activities and 2-grams: the scoring mechanism independently favors exactly the token family this reading of the heatmap would suggest by inspection, on the one working set (3,131 traces) where the batch-closing pattern is concentrated enough to matter for the score. Every later round, on the much larger main remainder, is instead topped by the simpler activities-plus-2-grams combination, without a gap tier — consistent with the batch-closing signal being a property of that specific near-obvious subset rather than of the log as a whole.
New content, not adapted from any paper section — written to address Reviewer 3's and Reviewer 4's request for exact algorithmic and reproducibility detail (solver, initialization, iterations, seeds) that the paper's Methods section does not state. Everything below is read directly from the shipped implementation (compute_worker.js, embed_worker.js, script.js, index.html), not asserted from memory, so it is exact as of the commit this page accompanies.
umap-js v1.4.0, run inside a dedicated Web Worker.sharp = mean over traces of (largest topic weight ÷ sum of topic weights) at that K=4 fit.NMI = normalized mutual information between the K=4 fit's dominant-topic assignment and the outcome label, computed as 2·MI(T;Y) / (H(T) + H(Y)).score = 0.5·sharp + 0.5·NMI, the value used to rank the shortlist shown in the Encoding tab.New content, addressing Reviewer 3's supplementary-material checklist (source repository, license, frozen archive, dataset versions, hardware/browser specs).
| Item | Status |
|---|---|
| Live system URL | https://geoanalytics.net/TracePrism/ (this site) |
| Source repository | None separate from this site. The frozen archive below is the sole distribution of the source. |
| Open-source license | MIT. |
| Frozen archive | https://geoanalytics.net/TracePrism/demo.zip — the complete client-side source (HTML, JS, CSS, vendored dependencies), no server component. |
| Version used for the paper's numbers | Build 2026-08-10 11:23 UTC, per the build timestamp embedded in the shipped source. |
| Dataset versions, licenses, DOIs | Fines: 4TU DOI 10.4121/uuid:270fd440-1057-4fb9-89a9-b699b47990f5. Sepsis: 10.4121/uuid:915d2bfb-7e84-49ad-a286-dc35f063a460. BPI2013: 10.4121/uuid:500573e6-accc-4b0c-9576-aa5468b10cee. All three already linked from the project page. |
| Preprocessing / outcome-derivation scripts | None separate from the published source; preprocessing and outcome derivation run client-side as part of the same application, not as standalone scripts. |
| Complete session logs and knowledge-base exports | Published per case study (analysis_log.html, knowledge_report.html, knowledge_groups.csv, knowledge_traces.csv) — already live. |
| Hardware / browser / runtime measurements | The paper reports that every step completes in well under a minute on the largest log (Section VII) without a formal microbenchmark table; see the browser-compatibility testing below for the environments this was confirmed in. |
| Demo tested cross-browser | Firefox 140.13 (64-bit) and Chrome 151.0.7922.138 (Official Build, 64-bit), tested 2026-08-15. |