Skip to content

Corpus catalogue

Every ambiscape analyze writes <session>/analysis/summary.json. The catalog command aggregates them across a whole corpus into one table, the cross-session view, built in milliseconds from cached summaries alone (no audio, no features).

ambiscape catalog CORPUS/ --sort diffuseness_median
#   10 sessions -> CORPUS/analysis/catalog.csv and catalog.md
#         0.90  stavanger-foyer
#         0.89  montpellier-airport
#         ...

catalog.csv is session-per-row for analysis (pandas, R); catalog.md is the transposed descriptor-per-row table for a consolidated report. Sessions come with different descriptor sets, from older caches or optional modules, handled by taking the union of keys and blanking where a session lacks one, so that a growing corpus never breaks the table.

Add --states (CLI) or include_states=True (collect) to expand each multi-state session into extra "<session>::<state>" rows drawn from its states.json, right after the pooled row, which gives the state-resolved corpus view in one table.

In a notebook

from ambiscape import catalog

col = catalog.collect("CORPUS/")            # {session: summary}
catalog.to_csv(col, "catalog.csv")
catalog.rank(col, "ndsi")                   # sessions by any descriptor
catalog.outliers(col, "azimuth_R", z=1.5)   # what stands out, as z-scores

rank returns (session, value) pairs sorted on any numeric descriptor; outliers flags sessions more than z standard deviations from the corpus mean, which is the cheap "which session is unusual, and on what axis" query.

Keep summaries current

The catalog reflects whatever is in each summary.json. After upgrading ambiscape, re-run analyze (or refresh the summaries) so every session carries the same descriptor set before cataloguing.