CellMarker

lamindb provides access to the following public cell marker ontologies through bionty:

  1. CellMarker

Here we show how to access and search cell marker ontologies to standardize new data.

import bionty as bt
import pandas as pd
 connected lamindb: testuser1/test-public-ontologies

PublicOntology objects

Let us create a public ontology accessor with public(), which chooses a default public ontology source from Source. It’s a PublicOntology object, which you can think about as a public registry:

public = bt.CellMarker.public(organism="human")
public
PublicOntology
Entity: CellMarker
Organism: human
Source: cellmarker, 2.0
#terms: 15466

As for registries, you can export the ontology as a DataFrame:

df = public.to_dataframe()
df.head()
name synonyms gene_symbol ncbi_gene_id uniprotkb_id
0 A1BG A1BG 1 P04217
1 A2M A2M 3494 None
2 A2ML1 A2ML1 144568 A8K2U0
3 A4GALT A4GALT 53947 A0A0S2Z5J1
4 AADAC AADAC 13 P22760

Unlike registries, you can also export it as a Pronto object via public.ontology.

Look up terms

As for registries, terms can be looked up with auto-complete:

lookup = public.lookup()

The . accessor provides normalized terms (lower case, only contains alphanumeric characters and underscores):

lookup.immp1l
CellMarker(name='IMMP1L', synonyms='', gene_symbol='IMMP1L', ncbi_gene_id='196294', uniprotkb_id='Q96LU5')

To look up the exact original strings, convert the lookup object to dict and use the [] accessor:

lookup_dict = lookup.dict()
lookup_dict["IMMP1L"]
CellMarker(name='IMMP1L', synonyms='', gene_symbol='IMMP1L', ncbi_gene_id='196294', uniprotkb_id='Q96LU5')

Search terms

Search behaves in the same way as it does for registries:

public.search("CD4").head(5)
name synonyms gene_symbol ncbi_gene_id uniprotkb_id
1900 Cd4 CD4 920 B4DT49
1901 CD40 CD40 958 A0A0S2Z3C7
1905 CD40LG CD40LG 959 P29965
1908 CD46 CD46 4179 P15529
1907 Cd44 CD44 960 P16070

Search another field (default is .name):

public.search("CD4", field=public.gene_symbol).head(1)
name synonyms gene_symbol ncbi_gene_id uniprotkb_id
1900 Cd4 CD4 920 B4DT49

Standardize cell marker identifiers

Let us generate a DataFrame that stores a number of cell markers identifiers, some of which corrupted:

markers = pd.DataFrame(
    index=[
        "KI67",
        "CCR7",
        "CD14",
        "CD8",
        "CD45RA",
        "CD4",
        "CD3",
        "CD127a",
        "PD1",
        "Invalid-1",
        "Invalid-2",
        "CD66b",
        "Siglec8",
        "Time",
    ]
)

Now let’s check which cell markers can be found in the reference:

public.inspect(markers.index, public.name);
! 8 unique terms (57.10%) are not validated for name: 'KI67', 'CCR7', 'CD14', 'CD4', 'CD127a', 'Invalid-1', 'Invalid-2', 'Time'
   detected 4 unique terms with inconsistent casing/synonyms: KI67, CCR7, CD14, CD4
→  standardize terms via .standardize()

Logging suggests to map synonyms:

synonyms_mapper = public.standardize(markers.index, return_mapper=True)
synonyms_mapper
{'KI67': 'Ki67', 'CCR7': 'Ccr7', 'CD14': 'Cd14', 'CD4': 'Cd4'}

Let’s replace the synonyms with standardized names in the DataFrame:

markers.rename(index=synonyms_mapper, inplace=True)

The Time, Invalid-1 and Invalid-2 are non-marker channels which won’t be curated by cell marker:

public.inspect(markers.index, public.name);
! 4 unique terms (28.60%) are not validated for name: 'CD127a', 'Invalid-1', 'Invalid-2', 'Time'

We don’t find CD127a, let’s check in the lookup with auto-completion:

lookup = public.lookup()
lookup.cd127
CellMarker(name='CD127', synonyms='', gene_symbol='IL7R', ncbi_gene_id='3575', uniprotkb_id='P16871')

It should be cd127, we had a typo there with cd127a:

curated_df = markers.rename(index={"CD127a": lookup.cd127.name})

Optionally, search:

public.search("CD127a").head()
name synonyms gene_symbol ncbi_gene_id uniprotkb_id

Now we see that all cell marker candidates validate:

public.validate(curated_df.index, public.name);
! 3 unique terms (21.40%) are not validated: 'Invalid-1', 'Invalid-2', 'Time'

Ontology source versions

For any given entity, we can choose from a number of versions:

bt.Source.filter(entity="bionty.CellMarker").to_dataframe()
Hide code cell output
uid entity organism name version in_db currently_used description url md5 source_website is_locked created_at branch_id space_id created_by_id run_id dataframe_artifact_id
id
46 7bV5uJo3 bionty.CellMarker mouse cellmarker 2.0 False True CellMarker s3://bionty-assets/mouse_cellmarker_2.0_CellMa... None http://bio-bigdata.hrbmu.edu.cn/CellMarker False 2026-01-27 17:31:29.036000+00:00 1 1 3 None None
45 3kDh8qAX bionty.CellMarker human cellmarker 2.0 False True CellMarker s3://bionty-assets/human_cellmarker_2.0_CellMa... None http://bio-bigdata.hrbmu.edu.cn/CellMarker False 2026-01-27 17:31:29.036000+00:00 1 1 3 None None
# only lists the sources that are currently used
bt.Source.filter(entity="bionty.CellMarker", currently_used=True).to_dataframe()
uid entity organism name version in_db currently_used description url md5 source_website is_locked created_at branch_id space_id created_by_id run_id dataframe_artifact_id
id
46 7bV5uJo3 bionty.CellMarker mouse cellmarker 2.0 False True CellMarker s3://bionty-assets/mouse_cellmarker_2.0_CellMa... None http://bio-bigdata.hrbmu.edu.cn/CellMarker False 2026-01-27 17:31:29.036000+00:00 1 1 3 None None
45 3kDh8qAX bionty.CellMarker human cellmarker 2.0 False True CellMarker s3://bionty-assets/human_cellmarker_2.0_CellMa... None http://bio-bigdata.hrbmu.edu.cn/CellMarker False 2026-01-27 17:31:29.036000+00:00 1 1 3 None None

When instantiating a Bionty object, we can choose a source or version:

source = bt.Source.get(name="cellmarker", version="2.0", organism="human")
public = bt.CellMarker.public(source=source)
public
PublicOntology
Entity: CellMarker
Organism: human
Source: cellmarker, 2.0
#terms: 15466

The currently used ontologies can be displayed using:

bt.Source.filter(currently_used=True).to_dataframe()
Hide code cell output
uid entity organism name version in_db currently_used description url md5 source_website is_locked created_at branch_id space_id created_by_id run_id dataframe_artifact_id
id
67 5JnVODh4 BioSample all ncbi 2023-09 False True NCBI BioSample attributes s3://bionty-assets/df_all__ncbi__2023-09__BioS... None https://www.ncbi.nlm.nih.gov/biosample/docs/at... False 2026-01-27 17:31:29.036000+00:00 1 1 3 None None
66 7au3ZQrD bionty.Ethnicity human hancestro 2025-10-14 False True Human Ancestry Ontology http://purl.obolibrary.org/obo/hancestro/relea... None https://github.com/EBISPOT/hancestro False 2026-01-27 17:31:29.036000+00:00 1 1 3 None None
65 6na9vRls bionty.DevelopmentalStage mouse mmusdv 2025-01-23 False True Mouse Developmental Stages https://github.com/obophenotype/developmental-... None https://github.com/obophenotype/developmental-... False 2026-01-27 17:31:29.036000+00:00 1 1 3 None None
64 7JO1x6p1 bionty.DevelopmentalStage human hsapdv 2025-01-23 False True Human Developmental Stages https://github.com/obophenotype/developmental-... None https://github.com/obophenotype/developmental-... False 2026-01-27 17:31:29.036000+00:00 1 1 3 None None
62 ugaIoIlj Drug all dron 2024-08-05 False True Drug Ontology http://purl.obolibrary.org/obo/dron/releases/2... None https://bioportal.bioontology.org/ontologies/DRON False 2026-01-27 17:31:29.036000+00:00 1 1 3 None None
61 3rm9aOzL BFXPipeline all lamin 1.0.0 False True Bioinformatics Pipeline s3://bionty-assets/df_all__lamin__1.0.0__BFXpi... None https://lamin.ai False 2026-01-27 17:31:29.036000+00:00 1 1 3 None None
59 2UZHts8n bionty.Pathway all go 2025-10-10 False True Gene Ontology http://purl.obolibrary.org/obo/go/releases/202... None http://geneontology.org False 2026-01-27 17:31:29.036000+00:00 1 1 3 None None
57 h5EFbQNJ bionty.Phenotype human hp 2026-01-08 False True Human Phenotype Ontology https://github.com/obophenotype/human-phenotyp... None https://hpo.jax.org False 2026-01-27 17:31:29.036000+00:00 1 1 3 None None
56 2rMQe2ZH bionty.Phenotype all pato 2025-05-14 False True Phenotype And Trait Ontology http://purl.obolibrary.org/obo/pato/releases/2... None https://github.com/pato-ontology/pato False 2026-01-27 17:31:29.036000+00:00 1 1 3 None None
55 7DFdvM5S bionty.ExperimentalFactor all efo 3.85.0 False True The Experimental Factor Ontology http://www.ebi.ac.uk/efo/releases/v3.85.0/efo.owl None https://bioportal.bioontology.org/ontologies/EFO False 2026-01-27 17:31:29.036000+00:00 1 1 3 None None
53 5pzW1FWn bionty.Disease human doid 2025-12-23 False True Human Disease Ontology http://purl.obolibrary.org/obo/doid/releases/2... None https://disease-ontology.org False 2026-01-27 17:31:29.036000+00:00 1 1 3 None None
52 1gZ2spLp bionty.Disease all mondo 2026-01-06 False True Mondo Disease Ontology http://purl.obolibrary.org/obo/mondo/releases/... None https://mondo.monarchinitiative.org False 2026-01-27 17:31:29.036000+00:00 1 1 3 None None
51 2zRjWH6J bionty.Tissue all uberon 2025-12-04 False True Uberon multi-species anatomy ontology http://purl.obolibrary.org/obo/uberon/releases... None http://obophenotype.github.io/uberon False 2026-01-27 17:31:29.036000+00:00 1 1 3 None None
50 6Z0wRdof bionty.CellType all cl 2025-12-17 False True Cell Ontology http://purl.obolibrary.org/obo/cl/releases/202... None https://obophenotype.github.io/cell-ontology False 2026-01-27 17:31:29.036000+00:00 1 1 3 None None
47 5kJm0APo bionty.CellLine all cellosaurus 53.0 False True Cellosaurus s3://bionty-assets/df_all__cellosaurus__53.0__... None https://www.cellosaurus.org/ False 2026-01-27 17:31:29.036000+00:00 1 1 3 None None
46 7bV5uJo3 bionty.CellMarker mouse cellmarker 2.0 False True CellMarker s3://bionty-assets/mouse_cellmarker_2.0_CellMa... None http://bio-bigdata.hrbmu.edu.cn/CellMarker False 2026-01-27 17:31:29.036000+00:00 1 1 3 None None
45 3kDh8qAX bionty.CellMarker human cellmarker 2.0 False True CellMarker s3://bionty-assets/human_cellmarker_2.0_CellMa... None http://bio-bigdata.hrbmu.edu.cn/CellMarker False 2026-01-27 17:31:29.036000+00:00 1 1 3 None None
44 01RWXN2V bionty.Protein mouse uniprot 2024-03 False True Uniprot s3://bionty-assets/df_mouse__uniprot__2024-03_... None https://www.uniprot.org False 2026-01-27 17:31:29.036000+00:00 1 1 3 None None
43 3EYyGRYN bionty.Protein human uniprot 2024-03 False True Uniprot s3://bionty-assets/df_human__uniprot__2024-03_... None https://www.uniprot.org False 2026-01-27 17:31:29.036000+00:00 1 1 3 None None
42 7SwZGnr2 bionty.Gene saccharomyces cerevisiae ensembl release-114 False True Ensembl s3://bionty-assets/df_saccharomyces cerevisiae... None https://www.ensembl.org False 2026-01-27 17:31:29.036000+00:00 1 1 3 None None
41 2wv9SRzv bionty.Gene mouse ensembl release-114 False True Ensembl s3://bionty-assets/df_mouse__ensembl__release-... None https://www.ensembl.org False 2026-01-27 17:31:29.036000+00:00 1 1 3 None None
40 2w43l1YS bionty.Gene human ensembl release-114 False True Ensembl s3://bionty-assets/df_human__ensembl__release-... None https://www.ensembl.org False 2026-01-27 17:31:29.036000+00:00 1 1 3 None None
39 3wWO3xfZ bionty.Organism all ncbitaxon 2025-12-03 False True NCBItaxon Ontology http://purl.obolibrary.org/obo/ncbitaxon/2025-... None https://github.com/obophenotype/ncbitaxon False 2026-01-27 17:31:29.036000+00:00 1 1 3 None None
38 7GPHh16S bionty.Organism plants ensembl release-57 False True Ensembl https://ftp.ensemblgenomes.ebi.ac.uk/pub/plant... None https://www.ensembl.org False 2026-01-27 17:31:29.036000+00:00 1 1 3 None None
37 2PmTrc8x bionty.Organism metazoa ensembl release-57 False True Ensembl https://ftp.ensemblgenomes.ebi.ac.uk/pub/metaz... None https://www.ensembl.org False 2026-01-27 17:31:29.036000+00:00 1 1 3 None None
36 6s9nV6xh bionty.Organism fungi ensembl release-57 False True Ensembl https://ftp.ensemblgenomes.ebi.ac.uk/pub/fungi... None https://www.ensembl.org False 2026-01-27 17:31:29.036000+00:00 1 1 3 None None
35 6bbVUTCS bionty.Organism bacteria ensembl release-57 False True Ensembl https://ftp.ensemblgenomes.ebi.ac.uk/pub/bacte... None https://www.ensembl.org False 2026-01-27 17:31:29.036000+00:00 1 1 3 None None
34 6o9usTh3 bionty.Organism vertebrates ensembl release-114 False True Ensembl https://ftp.ensembl.org/pub/release-114/specie... None https://www.ensembl.org False 2026-01-27 17:31:29.036000+00:00 1 1 3 None None