starplast.slots
Biological-question slots and the policies that combine datasets which answer them.
The generated catalog is package data: the application can use it offline, while
scripts/generate_slot_table.py remains the editable source. A slot is not a filename pattern;
it is a question plus a condition, its candidate measurements, and an explicit combination policy.
Which species' table this is, read off its accessions. None if it cannot be told.
Deliberately derived rather than declared. A flag passed alongside the frame is a second thing that has to be kept true; the accessions are the thing itself.
The bridges a slot declares, if any.
One biological question and the measurements that can answer it.
Resolved values plus per-gene provenance for one slot.
The generated catalog, optionally restricted to Toxo or Pf.
Resolve a recipe key to its slot.
Raw numeric node columns matching a slot, in candidate order without duplicates.
The graph edge types a slot is filled by, if any.
Does this slot have data behind it -- in the node table, OR in the graph?
Both, and that is the whole reason this is a function rather than a line of whatever script
happens to be asking. A slot measured per PAIR -- co-expression, co-fitness, shared compartment,
crosslink MS -- is filled by an edge type in graph.npz and has no node column at all. Asking
declared_columns alone reports every one of them as empty, which is exactly what happened:
eight Toxoplasma slots were counted as unfilled and chased with downloads while their data was
already in the graph, and the coverage figure went out twice before anyone noticed.
graph is anything with a files list, which is what numpy.load gives back for an npz.
A slot measured per METABOLITE is filled by a column of the metabolite table, which is a third
place to look; tables maps a unit to its frame. Without it a metabolite slot reads as empty,
which was true until that table existed and is a lie afterwards -- the same failure the pair
slots had.
The one side table answering a slot, refusing to combine species for a host slot.
How many of an arm's feature slots have data, and which do not.
The single place this question is answered, so a viewer, a report and a census cannot disagree about it -- which they did, before this existed.
Every column declared by a slot, including categorical targets and metadata.
source_columns is intentionally numeric because it builds matrices. Leakage closure needs
the wider declaration: labels, confidence fields and numeric features all travel together.
Whether this table is the one this slot's organism is measured in.
Unknown counts as matching: a synthetic frame in a test carries no accessions, and refusing
those would make the guard a nuisance rather than a protection. What it must catch is the
definite mismatch -- a Pf_ slot against a table of TGME49_ rows.
Return one facet's path from broad group to the slot leaf.
A nested, JSON-safe tree whose leaves are slot keys.
There are three trees rather than a single misleading tree. A slot is a leaf in every facet; callers can therefore omit an assay class, a biological subject, or an experimental context without pretending those are the same grouping.
Slots below a hierarchy path, useful for selecting or omitting a whole class.
Slots that explicitly declare target as one of their outcomes.
All slots estimating the same target quantity, across assays or transfers.
Apply a slot's one, average, fill or separate policy.
source is one value per gene. For fill it is the exact candidate supplying that gene;
for policies that deliberately combine measurements it is a +-joined record of every
contributing candidate. This is provenance, not a feature, and is never placed in the matrix.