Vol. 01 · No. 1 · Beta Edition
ObsInspector Workspace

Know your cell metadata before you analyze.

Every AnnData carries an obs table1 — one row per cell or sample, one column per label. The Obs Inspector node opens it up so you can browse each column, read its value counts and statistics, try a query against it, and make small, recorded edits — all without leaving Oreumics.

Table · Query · Column OpsPer-column summaryEdits logged as params
Oreumics — ObsInspector

obs columns · 12

leiden

categorical · 8 categories

cell_type

categorical · 6 categories

n_genes_by_counts

continuous · 201 – 5,942

pct_counts_mt

continuous · 0.0 – 4.9 %

total_counts

continuous · median 2,197

batch

categorical · 2 categories

leidencategorical

2,638 cells · 8 categories · 0 missing

0
599
1
486
2
455
3
402
4
325
5
211
6
156
7
4
  1. 01.obs is AnnData’s per-observation annotation table: one row per cell (n_obs), one column per label such as cell_type, sample, or n_genes_by_counts. ObsInspector never touches your expression matrix (X) — only the labels beside it. For bulk and methylation data the rows are samples rather than cells.
Three tabs, one table

Everything about a column, and a place to try questions.

Once the node has run, every column gets a summary: dtype, the number of unique values (NaN excluded), how many cells are missing, the most frequent values as a bar chart, summary statistics for numeric columns, and a sample of the actual values you’ll be grouping on.

Table View

The obs preview the node returned — 50 rows by default, up to 500. Search across text columns, sort by any column, hide the ones in the way.

Query

A pandas-style expression run against the upstream data: how many rows match, and a 200-row preview of them. Exploration only — it never subsets the workflow.

Column Ops

Drop, rename and convert dtype with multi-select pickers and a rename-pair editor. Apply saves the parameters; Apply & Run also re-runs the node.

Columns

6 columns · 2 selected
  • cell_typecategory5 uniq
  • samplecategory4 uniq
  • n_genes_by_countsint644,210 uniq
  • pct_counts_mtfloat649,994 uniq
  • leidencategory11 uniq
  • doublet_scorefloat6410,000 uniq

cell_type

dtype

category

n_unique

5

n_missing

0

value_counts · top 5

T cell
3,412
Monocyte
2,180
B cell
1,794
NK cell
1,203
Other
1,411

How many values to keep per column is the node’s value_counts_top_n (10 by default, 1–100). Numeric columns show min / max / mean-style statistics instead of a bar chart.

Table View

search text columnssort · hide columnsshowing 4 of 50 preview rows
cell_idcell_typesamplen_genes_by_countspct_counts_mt
AAAC-1T cellS12,4314.2
AAAG-1MonocyteS11,9886.7
AACC-1B cellS22,1043.1
AACT-1NK cellS21,7525.8
Ask before you subset

A query tab for “how many cells would that be?”

Type a pandas-style expression over the obs columns and press Run. The workspace evaluates it against the upstream node’s cached data and answers with the number of matching rows and a preview of up to 200 of them. It is exploration only: the workflow is not subset. When the expression is the one you want, put a Subset Data node after this one and use it there.

  • Needs the upstream node to have run — the query reads its cached data, not a re-computation.
  • A query can arrive pre-filled from an AI Chat conversation; edit it or Run to make it yours.
  • Copy the expression with one click to reuse it in Subset Data or a script.

Example queries

  • pct_counts_mt < 20
  • n_genes_by_counts > 500 and total_counts < 50000
  • leiden in ["0", "1", "2"]
  • sample == "patient_a" and cell_type != "doublet"
result1,203 matched
Light edits, recorded

Drop, rename, convert — and keep it reproducible.

Obs Inspector is for tidying labels, not rewriting data. The edits it allows are deliberately small, and each one is stored as a node parameter, so re-running the workflow reproduces exactly the same obs table. Targets that no longer exist are skipped and reported back rather than failing the run.

Drop

Remove columns you no longer need — leftover scores, scratch labels, stale batch keys — so the obs table stays legible downstream.

Rename

Give a column a human-readable name without a merge node or a scratch script. Pairs are edited one row at a time; the old key is replaced.

Convert dtype

Cast a column to category so plots and group-bys behave, or back to plain string when a label was over-eagerly categorized.

Applied on Run in a fixed order

  1. 1drop
  2. 2rename
  3. 3to_category
  4. 4to_string

Recorded as node params

{
  "drop_columns": ["doublet_score"],
  "rename_pairs": [{ "old": "leiden", "new": "cluster" }],
  "to_category": ["sample"],
  "to_string": []
}
  • Apply saves the parameters; Apply & Run saves and re-runs the node.
  • Deterministic — same params, same obs table.
  • Auditable — the edit lives on the node, not in a lost notebook cell.
  • Reversible — clear the param and re-run; the column comes back from upstream.

The node exposes 7 parameters in total; the ones above plus the preview and value-count limits. Full reference: Obs Inspector in the Input / Output nodes.

An Oreumics workspace

Sits beside QC, Figure Canvas, and Reports.

ObsInspector is one of Oreumics’ focused workspaces — a full-screen surface you open on top of the canvas for one job, then close. Use it right after loading, merging a sample sheet, or annotating, before you branch into clustering, DEG, or a report.

An Oreumics workspace — the Embedding Workspace, which opens over the canvas the same way ObsInspector does
Every Oreumics workspace shares one interface — the Embedding Workspace shown here opens the same way ObsInspector does.

Included with Beta Access

Read your obs table before you trust it.

Load an H5AD, drop in an Obs Inspector node, open the workspace, and get to know your cell metadata in a minute.