AnnData _repr_html_ Visual Test

This page displays various AnnData configurations to visually verify the HTML representation.

1. Full AnnData (all features)

AnnData 100 obs × 50 vars
obs_names: 0, 1, 2, 3, 4, ..., 95, 96, 97, 98, 99
var_names: 0, 1, 2, 3, 4, ..., 45, 46, 47, 48, 49
X csr_matrix (100 × 50) float32 · 90.0% sparse (500 stored)
obs (5 columns) ?
batch
category (2)
n_counts
int64
cell_type
category (3)
string_col
str (!)
donor_id
str
var (3 columns) ?
gene_name
str
highly_variable
bool
mean_expression
float32
uns (11 items) ?
batch_colors
colors (2)
cell_type_colors
colors (3)
mismatched_colors
colors (1)
nested_adata
AnnData (10 × 5)
AnnData 10 obs × 5 vars
X ndarray (10 × 5) float64
obs (1 columns) ?
inner_col
int64
var (empty) ?
No entries
uns (empty) ?
No entries
obsm (empty) ?
No entries
varm (empty) ?
No entries
layers (empty) ?
No entries
obsp (empty) ?
No entries
varp (empty) ?
No entries
neighbors
dict
pca
dict
string_value
str
int_value
int
float_value
float
list_value
list
unserializable
CustomClass (!)
obsm (4 items) ?
X_pca
ndarray (100 × 50) float32
X_umap
ndarray (100 × 2) float32
X_tsne
ndarray (100 × 2) float32
cell_metadata
DataFrame (100 × 3)
varm (1 items) ?
PCs
ndarray (50 × 50) float32
layers (2 items) ?
raw
csr_matrix (100 × 50) float64
normalized
ndarray (100 × 50) float32
obsp (2 items) ?
distances
csr_matrix (100 × 100) float64
connectivities
csr_matrix (100 × 100) float64
varp (1 items) ?
gene_corr
csr_matrix (50 × 50) float64
anndata v0.13.0.dev115+g6f5e2223e ~89.6 KB

2. Empty AnnData

AnnData 0 obs × 0 vars
obs_names: empty
var_names: empty
X None
obs (empty) ?
No entries
var (empty) ?
No entries
uns (empty) ?
No entries
obsm (empty) ?
No entries
varm (empty) ?
No entries
layers (empty) ?
No entries
obsp (empty) ?
No entries
varp (empty) ?
No entries
anndata v0.13.0.dev115+g6f5e2223e ~16 B

3. Minimal AnnData (just X matrix)

AnnData 10 obs × 5 vars
obs_names: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
var_names: 0, 1, 2, 3, 4
X ndarray (10 × 5) float64
obs (empty) ?
No entries
var (empty) ?
No entries
uns (empty) ?
No entries
obsm (empty) ?
No entries
varm (empty) ?
No entries
layers (empty) ?
No entries
obsp (empty) ?
No entries
varp (empty) ?
No entries
anndata v0.13.0.dev115+g6f5e2223e ~663 B

4. AnnData View (subset)

AnnData 20 obs × 10 vars View
obs_names: 0, 1, 2, 3, 4, ..., 15, 16, 17, 18, 19
var_names: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
X csr_matrix (20 × 10) float32 · 90.0% sparse (20 stored)
obs (5 columns) ?
batch
category (2)
n_counts
int64
cell_type
category (3)
string_col
str (!)
donor_id
str
var (3 columns) ?
gene_name
str
highly_variable
bool
mean_expression
float32
uns (11 items) ?
batch_colors
colors (2)
cell_type_colors
colors (3)
mismatched_colors
colors (1)
nested_adata
AnnData (10 × 5)
AnnData 10 obs × 5 vars
X ndarray (10 × 5) float64
obs (1 columns) ?
inner_col
int64
var (empty) ?
No entries
uns (empty) ?
No entries
obsm (empty) ?
No entries
varm (empty) ?
No entries
layers (empty) ?
No entries
obsp (empty) ?
No entries
varp (empty) ?
No entries
neighbors
dict
pca
dict
string_value
str
int_value
int
float_value
float
list_value
list
unserializable
CustomClass (!)
obsm (4 items) ?
X_pca
ndarray (20 × 50) float32
X_umap
ndarray (20 × 2) float32
X_tsne
ndarray (20 × 2) float32
cell_metadata
DataFrame (20 × 3)
varm (1 items) ?
PCs
ndarray (10 × 50) float32
layers (2 items) ?
raw
csr_matrix (20 × 10) float64
normalized
ndarray (20 × 10) float32
obsp (2 items) ?
distances
csr_matrix (20 × 20) float64
connectivities
csr_matrix (20 × 20) float64
varp (1 items) ?
gene_corr
csr_matrix (10 × 10) float64
anndata v0.13.0.dev115+g6f5e2223e

5. Dense Matrix with Categories

AnnData 50 obs × 30 vars
obs_names: 0, 1, 2, 3, 4, ..., 45, 46, 47, 48, 49
var_names: 0, 1, 2, 3, 4, ..., 25, 26, 27, 28, 29
X ndarray (50 × 30) float32
obs (1 columns) ?
cluster
category (5)
var (empty) ?
No entries
uns (1 items) ?
cluster_colors
colors (5)
obsm (empty) ?
No entries
varm (empty) ?
No entries
layers (empty) ?
No entries
obsp (empty) ?
No entries
varp (empty) ?
No entries
anndata v0.13.0.dev115+g6f5e2223e ~9.0 KB

6. Many Columns (tests auto-folding)

AnnData 20 obs × 10 vars
obs_names: 0, 1, 2, 3, 4, ..., 15, 16, 17, 18, 19
var_names: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
X ndarray (20 × 10) float64
obs (15 columns) ?
column_0
int64
column_1
int64
column_2
int64
column_3
int64
column_4
int64
column_5
int64
column_6
int64
column_7
int64
column_8
int64
column_9
int64
column_10
int64
column_11
int64
column_12
int64
column_13
int64
column_14
int64
var (empty) ?
No entries
uns (empty) ?
No entries
obsm (12 items) ?
X_embedding_0
ndarray (20 × 2) float32
X_embedding_1
ndarray (20 × 2) float32
X_embedding_2
ndarray (20 × 2) float32
X_embedding_3
ndarray (20 × 2) float32
X_embedding_4
ndarray (20 × 2) float32
X_embedding_5
ndarray (20 × 2) float32
X_embedding_6
ndarray (20 × 2) float32
X_embedding_7
ndarray (20 × 2) float32
X_embedding_8
ndarray (20 × 2) float32
X_embedding_9
ndarray (20 × 2) float32
X_embedding_10
ndarray (20 × 2) float32
X_embedding_11
ndarray (20 × 2) float32
varm (empty) ?
No entries
layers (empty) ?
No entries
obsp (empty) ?
No entries
varp (empty) ?
No entries
anndata v0.13.0.dev115+g6f5e2223e ~8.2 KB

7. Special Characters (XSS/Unicode test)

AnnData 5 obs × 3 vars
obs_names: 0, 1, 2, 3, 4
var_names: 0, 1, 2
X ndarray (5 × 3) float64
obs (2 columns) ?
column<with>html
int64
column&ampersand
int64
var (empty) ?
No entries
uns (2 items) ?
key"with'quotes
str
unicode_日本語
str
obsm (empty) ?
No entries
varm (empty) ?
No entries
layers (empty) ?
No entries
obsp (empty) ?
No entries
varp (empty) ?
No entries
anndata v0.13.0.dev115+g6f5e2223e ~667 B

8. Dask Array (lazy/chunked)

AnnData 100 obs × 50 vars
obs_names: 0, 1, 2, 3, 4, ..., 95, 96, 97, 98, 99
var_names: 0, 1, 2, 3, 4, ..., 45, 46, 47, 48, 49
X dask.array (100 × 50) float64 · chunks=((10, 10, 10, 10, 10, 10, 10, 10, 10, 10), (50,))
obs (empty) ?
No entries
var (empty) ?
No entries
uns (empty) ?
No entries
obsm (empty) ?
No entries
varm (empty) ?
No entries
layers (empty) ?
No entries
obsp (empty) ?
No entries
varp (empty) ?
No entries
anndata v0.13.0.dev115+g6f5e2223e ~1.5 KB

9. Backed AnnData (H5AD file)

File path: /var/folders/h_/5f32jgps7yq4np44vpfbx4300000gn/T/tmpz4u4d34u.h5ad. Shows badge with format and status, plus file path.
AnnData 50 obs × 20 vars H5AD (Open) /var/folders/h_/5f32jgps7yq4np44vpfbx4300000gn/T/tmpz4u4d34u.h5ad
obs_names: 0, 1, 2, 3, 4, ..., 45, 46, 47, 48, 49
var_names: 0, 1, 2, 3, 4, ..., 15, 16, 17, 18, 19
X Dataset (50 × 20) float32 · on disk
obs (1 columns) ?
cluster
category (3)
var (1 columns) ?
gene_name
str
uns (empty) ?
No entries
obsm (empty) ?
No entries
varm (empty) ?
No entries
layers (empty) ?
No entries
obsp (empty) ?
No entries
varp (empty) ?
No entries
anndata v0.13.0.dev115+g6f5e2223e ~3.6 KB

10. Deeply Nested AnnData (tests max depth)

AnnData 20 obs × 10 vars
obs_names: 0, 1, 2, 3, 4, ..., 15, 16, 17, 18, 19
var_names: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
X ndarray (20 × 10) float64
obs (empty) ?
No entries
var (empty) ?
No entries
uns (1 items) ?
level1
AnnData (10 × 5)
AnnData 10 obs × 5 vars
X ndarray (10 × 5) float64
obs (empty) ?
No entries
var (empty) ?
No entries
uns (1 items) ?
level2
AnnData (5 × 3)
AnnData 5 obs × 3 vars
X ndarray (5 × 3) float64
obs (empty) ?
No entries
var (empty) ?
No entries
uns (1 items) ?
level3
AnnData (3 × 2)
obsm (empty) ?
No entries
varm (empty) ?
No entries
layers (empty) ?
No entries
obsp (empty) ?
No entries
varp (empty) ?
No entries
obsm (empty) ?
No entries
varm (empty) ?
No entries
layers (empty) ?
No entries
obsp (empty) ?
No entries
varp (empty) ?
No entries
obsm (empty) ?
No entries
varm (empty) ?
No entries
layers (empty) ?
No entries
obsp (empty) ?
No entries
varp (empty) ?
No entries
anndata v0.13.0.dev115+g6f5e2223e ~3.1 KB

11. Many Categories (tests truncation)

Default max_categories is 100; set to 20 here to test truncation. cell_type has 30 categories (shows 20 + '...+10'). Click ⋯ button to expand.
AnnData 100 obs × 10 vars
obs_names: 0, 1, 2, 3, 4, ..., 95, 96, 97, 98, 99
var_names: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
X ndarray (100 × 10) float64
obs (2 columns) ?
cell_type
category (30)
batch
category (20)
var (empty) ?
No entries
uns (2 items) ?
cell_type_colors
colors (30)
batch_colors
colors (20)
obsm (empty) ?
No entries
varm (empty) ?
No entries
layers (empty) ?
No entries
obsp (empty) ?
No entries
varp (empty) ?
No entries
anndata v0.13.0.dev115+g6f5e2223e ~14.5 KB

12. Uns Value Previews and Type Hints

Shows: (1) preview values for simple types, (2) 'analysis_history' with registered TypeFormatter (shows '3 runs · params: method=umap...'), (3) unregistered type hints show 'import X to enable' message.
AnnData 10 obs × 5 vars
obs_names: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
var_names: 0, 1, 2, 3, 4
X ndarray (10 × 5) float64
obs (empty) ?
No entries
var (empty) ?
No entries
uns (12 items) ?
string_param
str
long_string
str
int_param
int
float_param
float
bool_param
bool
none_param
NoneType
small_list
list
small_dict
dict
larger_dict
dict
analysis_history
analysis history
unregistered_data
dict
string_hint
str
obsm (empty) ?
No entries
varm (empty) ?
No entries
layers (empty) ?
No entries
obsp (empty) ?
No entries
varp (empty) ?
No entries
anndata v0.13.0.dev115+g6f5e2223e ~1.8 KB

13. No JavaScript (graceful degradation)

This example has script tags removed to simulate environments where JS is disabled. All content should be visible, sections should be expanded, category lists and DataFrame column lists should wrap naturally to multiple lines, and interactive buttons (fold icons, copy buttons, search, expand, wrap toggle) should be hidden. The obsm 'cell_measurements' DataFrame has 20 columns to test column list wrapping.
AnnData 30 obs × 15 vars
obs_names: 0, 1, 2, 3, 4, ..., 25, 26, 27, 28, 29
var_names: 0, 1, 2, 3, 4, ..., 10, 11, 12, 13, 14
X ndarray (30 × 15) float32
obs (9 columns) ?
group
category (3)
metric_0
float64
metric_1
float64
metric_2
float64
metric_3
float64
metric_4
float64
metric_5
float64
metric_6
float64
metric_7
float64
var (empty) ?
No entries
uns (1 items) ?
group_colors
colors (3)
obsm (2 items) ?
X_pca
ndarray (30 × 10) float32
cell_measurements
DataFrame (30 × 20)
varm (empty) ?
No entries
layers (1 items) ?
raw
ndarray (30 × 15) float32
obsp (empty) ?
No entries
varp (empty) ?
No entries
anndata v0.13.0.dev115+g6f5e2223e ~14.5 KB

14. Custom Sections (TreeData example)

Demonstrates how to add custom sections using SectionFormatter. This example uses TreeData to show 'obst' and 'vart' sections (scverse ecosystem PR). The 'obst' section appears after 'obsm' and 'vart' after 'varm'. Click the expand button (▸) to see an SVG tree visualization. Trees with >30 leaves show a text message instead of the full preview.
TreeData 24 obs × 45 vars TreeData
obs_names: cell_0, cell_1, cell_2, cell_3, cell_4, ..., cell_19, cell_20, cell_21, cell_22, cell_23
var_names: gene_0, gene_1, gene_2, gene_3, gene_4, ..., gene_40, gene_41, gene_42, gene_43, gene_44
X ndarray (24 × 45) float32
obs (1 columns) ?
cell_type
category (2)
var (1 columns) ?
gene_name
str
uns (1 items) ?
cell_type_colors
colors (2)
obsm (1 items) ?
X_pca
ndarray (24 × 10) float32
obst (1 items) ?
phylogeny
DiGraph (31 nodes, 24 leaves)
varm (empty) ?
No entries
vart (1 items) ?
gene_ontology
DiGraph (54 nodes, 45 leaves)
Tree with 45 leaves (too large to preview)
layers (1 items) ?
raw
ndarray (24 × 45) float32
obsp (empty) ?
No entries
varp (empty) ?
No entries
anndata v0.13.0.dev115+g6f5e2223e ~13.1 KB

15. Expandable DataFrame in obsm

When anndata.settings.repr_html_dataframe_expand = True, DataFrames in obsm/varm show an 'Expand' button. Click to see pandas _repr_html_() output (styled table with zebra striping and hover). Configure pandas display options: pd.set_option('display.max_rows', 10). Column names are shown in the rightmost column (meta column).
AnnData 30 obs × 10 vars
obs_names: 0, 1, 2, 3, 4, ..., 25, 26, 27, 28, 29
var_names: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
X ndarray (30 × 10) float32
obs (1 columns) ?
group
category (3)
var (empty) ?
No entries
uns (empty) ?
No entries
obsm (2 items) ?
spatial_metrics
DataFrame (30 × 12)
x_centroid y_centroid area perimeter circularity eccentricity solidity extent major_axis minor_axis orientation intensity_mean
0 38.680852 123.087451 431.498416 97.307680 0.273640 0.453990 0.556785 0.487265 8.674803 22.172009 119.144454 152.000899
1 109.098043 168.501428 443.046718 75.929251 0.487834 0.762447 0.845121 0.429985 18.987576 8.323940 135.211885 110.630200
2 201.227045 56.288086 98.326792 96.776147 0.082272 0.126002 0.795926 0.596911 40.072289 8.448481 135.696255 41.923410
3 102.370955 -87.981435 368.713043 43.974049 0.459584 0.196419 0.175123 0.999558 19.604679 28.900810 104.020400 29.728684
4 24.930860 198.706111 143.259774 27.836848 0.306463 0.951445 0.672765 0.769449 37.538482 0.308535 162.784759 139.407399
5 104.508847 -53.097090 401.320156 79.829320 0.822381 0.175492 0.220504 0.397866 6.274315 21.481499 147.133413 230.115323
6 14.488783 -33.513778 498.618950 32.625392 0.056979 0.567727 0.218208 0.827553 38.638571 21.187385 136.268661 87.709210
7 2.390304 34.233783 15.013003 29.938337 0.418607 0.579314 0.874072 0.170708 11.846666 18.680686 10.008994 186.915027
8 -35.141424 155.416042 448.682933 23.250599 0.458431 0.489624 0.249669 0.030464 33.869656 29.703265 1.238033 167.958646
9 156.341336 85.397598 311.315267 12.967898 0.725006 0.644745 0.263247 0.204448 28.289078 9.356383 38.240510 237.546503
10 -81.842867 41.486550 486.691310 25.646306 0.574288 0.229827 0.000653 0.340412 46.457236 10.199156 119.434247 209.350159
11 153.236772 46.328853 232.504759 35.531975 0.667212 0.552662 0.870669 0.510581 19.366126 2.368182 74.015548 144.484341
12 49.986412 4.351467 423.693965 67.399421 0.777049 0.372173 0.792595 0.615129 3.308259 13.283944 72.433127 167.542777
13 -139.930617 55.813951 31.197034 6.256484 0.862203 0.661667 0.627329 0.910606 0.957774 7.831456 159.225640 229.088549
14 36.764929 -252.956008 167.639525 21.050694 0.313875 0.141224 0.750266 0.509854 41.342928 10.301601 161.201313 101.877290
15 -210.002651 -29.660746 33.508269 80.902364 0.538023 0.570877 0.152049 0.501276 26.236782 25.037154 163.651548 83.332650
16 62.550802 24.132193 487.671567 14.692192 0.840108 0.185270 0.458324 0.050243 38.762203 28.064535 56.498054 2.756826
17 88.523148 -115.101408 408.486954 34.264515 0.989451 0.278643 0.351219 0.034912 11.721280 5.571992 124.390046 210.770524
18 -59.235596 38.632332 426.273711 86.465892 0.889519 0.218710 0.093777 0.551160 17.254187 11.175268 48.893973 204.250079
19 12.354770 -20.447122 468.982616 15.492531 0.371467 0.182838 0.486130 0.438179 1.505194 27.858917 34.309770 26.635902
20 195.415743 175.547570 42.551743 8.273684 0.195167 0.825711 0.920740 0.839180 48.074616 1.854254 33.233842 147.098632
21 -50.574670 157.301973 192.798796 48.453800 0.489393 0.285708 0.040059 0.160680 33.393395 2.770816 61.579372 118.315333
22 -105.890759 -46.580557 35.517445 30.241951 0.741641 0.927124 0.291461 0.024972 46.660254 4.883730 77.392372 30.270819
23 148.166340 -15.083771 105.396551 56.340836 0.492569 0.969927 0.207541 0.449039 13.274820 17.856385 149.570851 250.044898
24 196.258719 -7.394757 114.682889 80.380489 0.483181 0.571260 0.238147 0.237479 30.573181 4.514168 21.580397 54.747451
25 0.369567 -45.165948 234.553606 13.714849 0.838230 0.143001 0.908435 0.049614 33.924998 29.042291 132.286653 17.144716
26 101.146304 19.502498 134.281084 58.069908 0.361404 0.374548 0.468069 0.724598 15.877485 13.401436 95.661885 151.686082
27 134.147592 -75.828207 50.489053 50.550876 0.859795 0.797732 0.466299 0.111593 42.405462 15.045539 51.830162 188.411003
28 -74.248423 -113.061533 83.745545 14.407879 0.406805 0.367391 0.760576 0.608320 47.358073 7.399758 88.707525 8.273079
29 -48.530584 62.271122 73.637782 62.399849 0.328233 0.087017 0.154492 0.281050 44.242756 14.128808 53.989573 167.972998
X_pca
ndarray (30 × 5) float32
varm (empty) ?
No entries
layers (empty) ?
No entries
obsp (empty) ?
No entries
varp (empty) ?
No entries
anndata v0.13.0.dev115+g6f5e2223e ~7.6 KB

16. Very Long Field Names

Tests the dynamic field name column width calculation. The longest field name is 'this_is_an_extremely_long_column_name_that_should_test_the_max_width_setting' (77 chars). The name column width should expand to fit longer names but be capped by repr_html_max_field_width (default: 400px). Names exceeding the max width show an ellipsis (...) via CSS text-overflow; hover over truncated names to see the full name in a tooltip.
AnnData 20 obs × 10 vars
obs_names: 0, 1, 2, 3, 4, ..., 15, 16, 17, 18, 19
var_names: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
X ndarray (20 × 10) float32
obs (4 columns) ?
short
float64
this_is_a_moderately_long_column_name
float64
this_is_an_extremely_long_column_name_that_should_test_the_max_width_setting
float64
cell_type_annotation_from_automated_classifier_v2
category (2)
var (empty) ?
No entries
uns (1 items) ?
preprocessing_parameters_for_normalization_and_scaling
dict
obsm (1 items) ?
X_pca_computed_with_highly_variable_genes_batch_corrected
ndarray (20 × 5) float32
varm (empty) ?
No entries
layers (1 items) ?
raw_counts_before_any_preprocessing_steps
ndarray (20 × 10) float32
obsp (empty) ?
No entries
varp (empty) ?
No entries
anndata v0.13.0.dev115+g6f5e2223e ~3.8 KB

17. README Icon

When uns['README'] contains a string, a small ⓘ icon appears in the header. Click the icon to open a modal with the README content rendered as markdown. The modal supports: headers (h1-h4), bold/italic, code blocks, inline code, ordered lists (numbered), unordered lists (bulleted), links, tables, and blockquotes. Press Escape or click outside to close.
AnnData 50 obs × 20 vars
obs_names: 0, 1, 2, 3, 4, ..., 45, 46, 47, 48, 49
var_names: 0, 1, 2, 3, 4, ..., 15, 16, 17, 18, 19
X ndarray (50 × 20) float32
obs (1 columns) ?
cluster
category (5)
var (empty) ?
No entries
uns (2 items) ?
cluster_colors
colors (5)
README
str
obsm (1 items) ?
X_pca
ndarray (50 × 10) float32
varm (empty) ?
No entries
layers (empty) ?
No entries
obsp (empty) ?
No entries
varp (empty) ?
No entries
anndata v0.13.0.dev115+g6f5e2223e ~10.8 KB

18. README Icon in No-JS Mode

In no-JS mode, the README icon still appears but clicking it won't open a modal. Instead, **hover over the icon** to see the README content as a tooltip (browser's native title attribute). The tooltip shows the first 500 characters of the README.
AnnData 20 obs × 10 vars
obs_names: 0, 1, 2, 3, 4, ..., 15, 16, 17, 18, 19
var_names: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
X ndarray (20 × 10) float32
obs (1 columns) ?
batch
category (2)
var (empty) ?
No entries
uns (1 items) ?
README
str
obsm (empty) ?
No entries
varm (empty) ?
No entries
layers (empty) ?
No entries
obsp (empty) ?
No entries
varp (empty) ?
No entries
anndata v0.13.0.dev115+g6f5e2223e ~2.0 KB

19. MuData (Multimodal Data)

Demonstrates how MuData can reuse anndata's HTML repr machinery by simply registering a SectionFormatter for the .mod attribute. The mod section shows each modality as an expandable nested AnnData (click the arrow to expand). All standard sections (obs, var, obsm, varm, uns, etc.) work automatically. This example has 3 modalities: RNA (100×50), ATAC (100×30), and Protein (80×20).
MuData 100 obs × 100 vars MuData
obs_names: 0, 1, 2, 3, 4, ..., 95, 96, 97, 98, 99
var_names: 0, 1, 2, 3, 4, ..., 15, 16, 17, 18, 19
X None
mod (3 items) ?
rna
AnnData (100 × 50)
AnnData 100 obs × 50 vars
X ndarray (100 × 50) float32
obs (2 columns) ?
cell_type
category (3)
n_counts
int64
var (2 columns) ?
gene_name
str
highly_variable
bool
uns (1 items) ?
cell_type_colors
colors (3)
obsm (2 items) ?
X_pca
ndarray (100 × 10) float32
X_umap
ndarray (100 × 2) float32
varm (empty) ?
No entries
layers (1 items) ?
raw
ndarray (100 × 50) float32
obsp (empty) ?
No entries
varp (empty) ?
No entries
atac
AnnData (100 × 30)
AnnData 100 obs × 30 vars
X ndarray (100 × 30) float32
obs (2 columns) ?
peak_count
int64
tss_enrichment
float64
var (2 columns) ?
peak_name
str
chr
str (!)
uns (empty) ?
No entries
obsm (1 items) ?
X_lsi
ndarray (100 × 15) float32
varm (empty) ?
No entries
layers (empty) ?
No entries
obsp (empty) ?
No entries
varp (empty) ?
No entries
prot
AnnData (80 × 20)
AnnData 80 obs × 20 vars
X ndarray (80 × 20) float32
obs (1 columns) ?
protein_count
int64
var (2 columns) ?
protein_name
str
isotype_control
bool
uns (empty) ?
No entries
obsm (empty) ?
No entries
varm (empty) ?
No entries
layers (empty) ?
No entries
obsp (empty) ?
No entries
varp (empty) ?
No entries
obs (5 columns) ?
rna:cell_type
category (3)
rna:n_counts
int64
atac:peak_count
int64
atac:tss_enrichment
float64
prot:protein_count
float64
var (6 columns) ?
rna:gene_name
str (!)
rna:highly_variable
boolean
atac:peak_name
str (!)
atac:chr
str (!)
prot:protein_name
str (!)
prot:isotype_control
boolean
uns (2 items) ?
experiment
str
processing_date
str
obsm (3 items) ?
rna
ndarray (100 × 1) bool
atac
ndarray (100 × 1) bool
prot
ndarray (100 × 1) bool
varm (3 items) ?
rna
ndarray (100 × 1) bool
atac
ndarray (100 × 1) bool
prot
ndarray (100 × 1) bool
obsp (empty) ?
No entries
varp (empty) ?
No entries
anndata v0.13.0.dev115+g6f5e2223e ~16 B

20. Unified Accessor + Section (spatial_demo)

Demonstrates the unified accessor + section pattern. The @register_anndata_namespace decorator registers both the accessor (adata.spatial_demo) AND a section in the HTML repr. The accessor class defines _repr_section_(self, context) which returns a list of FormattedEntry objects. Optional class attributes: section_after (positioning), section_display_name, section_tooltip. This is the recommended pattern for external packages (SpatialData, MuData) to add both functionality and visualization.
AnnData 50 obs × 20 vars
obs_names: 0, 1, 2, 3, 4, ..., 45, 46, 47, 48, 49
var_names: 0, 1, 2, 3, 4, ..., 15, 16, 17, 18, 19
X ndarray (50 × 20) float32
obs (1 columns) ?
cluster
category (3)
var (empty) ?
No entries
uns (1 items) ?
_spatial_images
dict
obsm (1 items) ?
X_spatial
ndarray (50 × 2) float32
spatial (3 items)
hires
Image (1000, 1000, 3)
lowres
Image (200, 200, 3)
segmentation
Image (1000, 1000)
varm (empty) ?
No entries
layers (empty) ?
No entries
obsp (empty) ?
No entries
varp (empty) ?
No entries
anndata v0.13.0.dev115+g6f5e2223e ~7.5 KB