Skip to main content

Milume logo

milume

milume: a thinking surface for spatial omics.

You have a spatial dataset and a hunch. milume turns a notebook cell into a tactile, reactive surface where you can look at your tissue, select what catches your eye, and carry that selection straight into code. Cells, landmarks and measurements stay in plain AnnData / obs_names / geometry, so what you see on the surface is what you analyze next.

One call opens it:

import milume

w = milume.peek(adata, color="cell_type")

Draw selections and landmarks, color by category or gene, expand neighborhoods, and read everything back in Python. The name comes from mille (thousand, as in mille-feuille, layers) + lume (light).

Open in molab

Install

pip install milume

Migrate from spatial-rx

Note: Milume was formerly spatial-rx. The API is unchanged; only the names moved:

pip uninstall spatial-rx
pip install milume
import milume   # was: import spatial_rx

Alongside other viewers

Milume complements other viewers. Use milume to form intuition: layer images, cells, and transcripts in a notebook, select what stands out, and carry the selection straight into your analysis code. Use heavier viewers when you need to inspect in depth. Landmarks and selections round-trip as plain geometry and obs_names, so you can hand the same regions to any viewer.

From source:

uv sync --extra demo --group dev

milume.peek

milume surface

milume.peek(data, **kwargs) opens the surface on your data and returns a widget w you read results from.

import milume

w = milume.peek(adata, color="cell_type")   # AnnData with obsm["spatial"]
w = milume.peek(sdata, color="cell_type")   # SpatialData on disk: adds the 3D cube
Argument Meaning
data AnnData with obsm["spatial"], or a SpatialData
color obs column to color cells by
genes gene(s) to expose for coloring; limits the catalog on large matrices
spatial_key obsm key holding coordinates (default "spatial")
table, image, labels override what is inferred from a SpatialData
contrast_limits display range for the 3D image (default: its 1st to 99.5th percentile, from the coarsest pyramid level)

Other platforms

Read with spatialdata-io as usual. Xenium and Atera work with defaults (obsm["spatial"] is the cell position in global coordinates). CosMx puts FOV-local pixels in obsm["spatial"]; use global coordinates instead:

import spatialdata_io as sio
import milume

w = milume.peek(sio.cosmx(path), spatial_key="global")
  • From a SpatialData, the widget finds the table, the labels element it annotates, a 3D image on the same grid, and their µm frame (override with table=, image=, labels=; contrast_limits= for the image).
  • Press I (Inspect): the top toolbar turns into a dashed Inspect pill, hovering shows a live coarse preview of the tissue under the cursor, and a click places a 300 µm window; on release a full-resolution cube of it takes over the plot area, cells drawn as outlines colored like the map, with your landmarks on top. Shift+drag in the cube (or the Move tool) slides the window across the tissue; a plain drag orbits. The bottom bar holds the camera, Adjust (image and label display) and Cross-section (cuts). Esc closes the cube; Esc again, or ×, leaves Inspect. The side panels' peek tabs stay over the cube, so you can focus a category or Selection to color it.
  • Save window on the Inspect pill adds the window as an inspect selection, listed in the Selections panel with a thumbnail and named by its main category and size (e.g. Epithelial · 214); hover a row for its cell count and category mix, click it to reopen the window. Read the inspected cells back with w.get_obs_names(adata, "<inspect id>") or w.selections.
  • Hold Space to pan in any tool.

Read results back in Python:

Need Call
Cells in a selection w.get_obs_names(adata, selection_id), w.assign_obs_mask(adata, key, selection_id)
Landmarks as geometry landmarks_to_geodataframe(w.landmarks)
Measure against landmarks distances, composition, along_positions (+ write_obs)
Compare a subset with the tissue enrichment(adata, obs_names, obs_key=...)
XY vs 3D neighbors nearest_distances(adata, seeds, obs_key=...) (needs obsm["spatial"] x, y, z)
Map colors for other plots w.category_colors("cell_type")
Inspect window and cube cut w.inspect_cx, w.inspect_cy, w.inspect_size_um; w.volume_cut = x0, x1, y0, y1, z0, z1 µm (intersect X/Y with the window for the shown box)

Large expression matrices are sent sparse; pass genes= to limit the gene catalog.

Metadata

Release files for milume 1.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for milume 1.3.0
File Size Uploaded
milume-1.3.0.tar.gz 11.8 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for milume 1.3.0
File Interpreter ABI Platform
milume-1.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 13.2 MB

Release files / milume-1.3.0.tar.gz

Download URL milume-1.3.0.tar.gz
Size 11.8 MB
Tags Source
SHA-256 checksum
How to use checksums
b6859eab994af9248aff86105fe854a53d83fe3e12151f033261091d84c91f63
BLAKE2b-256 checksum
How to use checksums
f37f5173cd5865e3a9a6a8bd542edbd8eabe80e0a4a9bcb642882be86ec4849c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / milume-1.3.0-py3-none-any.whl

Download URL milume-1.3.0-py3-none-any.whl
Size 1.4 MB
Tags Python 3
SHA-256 checksum
How to use checksums
fed3c29d77c54cd5e6d4b9e25f0b4860cecd244ecf384c1151684bf16eb81033
BLAKE2b-256 checksum
How to use checksums
5c5754748566ec2cf0de64bb0f9c91644402064180f84085daeb0e9b3987327c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

1.3.5

2 release files

1.3.4

2 release files

1.3.3

2 release files

1.3.2

2 release files

1.3.1

2 release files

This release

1.3.0 This release

2 release files

1.2.0

2 release files

1.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page