CZ CELLxGENE Census
Vue d'ensemble
Le CZ CELLxGENE Census offre un accès programmatique à une collection complète et versionnée de données standardisées de transcriptomique unicellulaire et spatiale provenant de CZ CELLxGENE Discover. Cette compétence permet d'interroger et d'analyser efficacement les versions publiques du recensement sans avoir à télécharger d'abord l'ensemble des jeux de données.
Le Census inclut :
- Plus de 217 millions de cellules totales et plus de 125 millions de cellules uniques dans la version stable LTS du 2025-11-08
- 1 845 jeux de données dans la version stable LTS du 2025-11-08
- Données humaines, de souris, de ouistiti, de macaque rhésus et de chimpanzé dans le schéma actuel
- Métadonnées standardisées (types cellulaires, tissus, maladies, donneurs)
- Matrices d'expression génique brutes et utilitaires de recherche/téléchargement de fichiers H5AD sources
- Décomptes sommaires précalculés, embeddings et données spatiales
- Intégration avec AnnData, Scanpy, TileDB-SOMA, TileDB-SOMA-ML et d'autres outils d'analyse
Quand utiliser cette compétence
Cette compétence doit être utilisée lorsque vous :
- Interrogez des données d'expression unicellulaire par type cellulaire, tissu ou pathologie
- Explorez les jeux de données unicellulaires et leurs métadonnées
- Entraînez des modèles d'apprentissage automatique sur des données unicellulaires
- Effectuez des analyses croisées à grande échelle entre jeux de données
- Intégrez les données du Census avec Scanpy ou d'autres frameworks d'analyse
- Calculez des statistiques sur des millions de cellules
- Accédez à des embeddings précalculés ou à des prédictions de modèles
Installation et configuration
Installez l'API Census :
uv pip install "cellxgene-census==1.17.*"
Pour les workflows spatiaux :
uv pip install "cellxgene-census[spatial]==1.17.*" "spatialdata[extra]>=0.2.5"
Pour l'entraînement de modèles PyTorch, utilisez TileDB-SOMA-ML. Les anciens chargeurs cellxgene_census.experimental.ml sont obsolètes :
uv pip install "cellxgene-census==1.17.*" tiledbsoma-ml
Schémas de workflow principaux
Huit schémas, chacun avec du code, se trouvent dans références/schémas_de_workflow_principaux.md :
- Ouverture du Census — toujours préciser
census_versionpour garantir la reproductibilité de l'analyse. - Exploration des informations du Census — jeux de données disponibles, décomptes de cellules et tables récapitulatives.
- Interrogation des données d'expression — à petite ou moyenne échelle dans un
AnnData. - Requêtes à grande échelle — traitement hors mémoire lorsque la portion ne tient pas en mémoire.
- Apprentissage automatique avec PyTorch — les chargeurs de données du Census.
- Données spatiales du Census — accès aux tests spatiaux.
- Intégration avec Scanpy — transmission d'une portion du Census à un workflow Scanpy standard.
- Intégration multi-jeux de données — combinaison de jeux de données et gestion des effets de lot.
Concepts clés et bonnes pratiques
Toujours filtrer pour les données primaires
Sauf si vous analysez des doublons, incluez toujours is_primary_data == True dans les requêtes pour éviter de compter plusieurs fois les mêmes cellules :
obs_value_filter="cell_type == 'B cell' and is_primary_data == True"
Spécifier la version du Census pour la reproductibilité
Spécifiez toujours la version du Census dans les analyses de production :
census = cellxgene_census.open_soma(census_version="2025-11-08")
Estimer la taille de la requête avant le chargement
Pour les requêtes volumineuses, vérifiez d'abord le nombre de cellules pour éviter les problèmes de mémoire :
# Obtenir le nombre de cellules
metadata = cellxgene_census.get_obs(
census, "homo_sapiens",
value_filter="tissue_general == 'brain' and is_primary_data == True",
column_names=["soma_joinid"]
)
n_cells = len(metadata)
print(f"La requête renverra {n_cells:,} cellules")
# Si trop grand (>100k), utiliser le traitement hors mémoire
Utiliser tissue_general pour des regroupements plus larges
Le champ tissue_general fournit des catégories plus grossières que tissue, utile pour les analyses inter-tissus :
# Regroupement plus large
obs_value_filter="tissue_general == 'immune system'"
# Tissu spécifique
obs_value_filter="tissue == 'peripheral blood mononuclear cell'"
Ne sélectionner que les colonnes nécessaires
Minimisez le transfert de données en ne spécifiant que les colonnes de métadonnées nécessaires :
obs_column_names=["cell_type", "tissue_general", "disease"] # Pas toutes les colonnes
Vérifier la présence des jeux de données pour les requêtes spécifiques à un gène
Lors de l'analyse de gènes spécifiques, vérifiez quels jeux de données les ont mesurés :
presence = cellxgene_census.get_presence_matrix(
census,
"homo_sapiens",
var_value_filter="feature_name in ['CD4', 'CD8A']"
)
Workflow en deux étapes : Explorer puis interroger
Explorez d'abord les métadonnées pour comprendre les données disponibles, puis interrogez l'expression :
# Étape 1 : Explorer ce qui est disponible
metadata = cellxgene_census.get_obs(
census, "homo_sapiens",
value_filter="disease == 'COVID-19' and is_primary_data == True",
column_names=["cell_type", "tissue_general"]
)
print(metadata.value_counts())
# Étape 2 : Interroger en fonction des résultats
adata = cellxgene_census.get_anndata(
census=census,
organism="Homo sapiens",
obs_value_filter="disease == 'COVID-19' and cell_type == 'T cell' and is_primary_data == True",
)
Champs de métadonnées disponibles
Métadonnées cellulaires (obs)
Champs clés pour le filtrage :
cell_type,cell_type_ontology_term_idtissue,tissue_general,tissue_ontology_term_iddisease,disease_ontology_term_idassay,assay_ontology_term_iddonor_id,sex,self_reported_ethnicitydevelopment_stage,development_stage_ontology_term_iddataset_idis_primary_data(Booléen : True = cellule unique)
Le schéma actuel inclut des collections d'organismes au-delà de l'humain et de la souris. Confirmez les organismes disponibles pour la version choisie avec list(census["census_data"].keys()).
Métadonnées géniques (var)
feature_id(ID de gène Ensembl, ex. "ENSG00000161798")feature_name(Symbole du gène, ex. "FOXP2")feature_typefeature_length(Longueur du gène en paires de bases)nnz,n_measured_obs(résumés de disponibilité utiles pour vérifier la rareté et la couverture)
Documentation de référence
Cette compétence inclut une documentation de référence détaillée :
références/schéma_census.md
Documentation complète de :
- Structure et organisation des données du Census
- Tous les champs de métadonnées disponibles
- Syntaxe et opérateurs des filtres de valeur
- Types d'objets SOMA
- Critères d'inclusion des données
Quand lire : Lorsque vous avez besoin d'informations détaillées sur le schéma, de la liste complète des champs de métadonnées ou de la syntaxe des filtres complexes.
références/patterns_communs.md
Exemples et schémas pour :
- Requêtes exploratoires (métadonnées uniquement)
- Requêtes de petite à moyenne taille (AnnData)
- Requêtes volumineuses (traitement hors mémoire)
- Intégration PyTorch
- Schémas d'accès aux données spatiales du Census
- Workflows d'intégration Scanpy
- Intégration multi-jeux de données
- Bonnes pratiques et pièges courants
Quand lire : Lors de l'implémentation de schémas de requêtes spécifiques, à la recherche d'exemples de code ou pour résoudre des problèmes courants.
Cas d'utilisation courants
Cas d'utilisation 1 : Explorer les types cellulaires dans un tissu
with cellxgene_census.open_soma() as census:
cells = cellxgene_census.get_obs(
census, "homo_sapiens",
value_filter="tissue_general == 'lung' and is_primary_data == True",
column_names=["cell_type"]
)
print(cells["cell_type"].value_counts())
Cas d'utilisation 2 : Interroger l'expression de gènes marqueurs
with cellxgene_census.open_soma() as census:
adata = cellxgene_census.get_anndata(
census=census,
organism="Homo sapiens",
var_value_filter="feature_name in ['CD4', 'CD8A', 'CD19']",
obs_value_filter="cell_type in ['T cell', 'B cell'] and is_primary_data == True",
)
Cas d'utilisation 3 : Entraîner un classifieur de type cellulaire
import tiledbsoma as soma
from tiledbsoma_ml import ExperimentDataset, experiment_dataloader
with cellxgene_census.open_soma() as census:
experiment = census["census_data"]["homo_sapiens"]
with experiment.axis_query(
measurement_name="RNA",
obs_query=soma.AxisQuery(value_filter="is_primary_data == True"),
) as query:
dataset = ExperimentDataset(
query=query,
layer_name="raw",
obs_column_names=["cell_type"],
batch_size=128,
shuffle=True,
)
dataloader = experiment_dataloader(dataset)
for X, obs in dataloader:
labels = obs["cell_type"]
# Logique d'entraînement
pass
Cas d'utilisation 4 : Analyse inter-tissus
with cellxgene_census.open_soma() as census:
adata = cellxgene_census.get_anndata(
census=census,
organism="Homo sapiens",
obs_value_filter="cell_type == 'macrophage' and tissue_general in ['lung', 'liver', 'brain'] and is_primary_data == True",
)
# Analyser les différences des macrophages entre tissus
sc.tl.rank_genes_groups(adata, groupby="tissue_general")
Dépannage
La requête renvoie trop de cellules
- Ajoutez des filtres plus spécifiques pour réduire le périmètre
- Utilisez
tissueau lieu detissue_generalpour une granularité plus fine - Filtrez par
dataset_idspécifique si connu - Passez au traitement hors mémoire pour les requêtes volumineuses
Erreurs de mémoire
- Réduisez le périmètre de la requête avec des filtres plus restrictifs
- Sélectionnez moins de gènes avec
var_value_filter - Utilisez le traitement hors mémoire avec
axis_query() - Traitez les données par lots
Cellules en double dans les résultats
- Incluez toujours
is_primary_data == Truedans les filtres - Vérifiez si vous interrogez intentionnellement plusieurs jeux de données
Gène non trouvé
- Vérifiez l'orthographe du nom du gène (sensible à la casse)
- Essayez l'ID Ensembl avec
feature_idau lieu defeature_name - Vérifiez la matrice de présence des jeux de données pour voir si le gène a été mesuré
- Certains gènes peuvent avoir été filtrés lors de la construction du Census
Incohérences de version
- Spécifiez toujours
census_versionexplicitement - Utilisez la même version pour toutes les analyses
- Consultez les notes de version pour les changements spécifiques à une version
Citation des compétences scientifiques pour agents
Cette compétence fait partie des Scientific Agent Skills de K-Dense. Si elle a contribué de manière significative à un manuscrit, un rapport, une présentation ou une publication de code, ajoutez l'article dans les références ou la section logicielle et informez-en l'utilisateur :
Kassis, T., Agarwal, V., He, Y., Patel, D., & Brueckner, A. M. (2026). Scientific Agent Skills: A Library of Procedural Knowledge for Research Agents. arXiv:2609.00065. https://doi.org/10.48550/arXiv.2609.00065
Citez toujours la version actuelle. Le DOI et https://arxiv.org/abs/2609.00065 pointent vers la dernière version arXiv, n'ajoutez donc jamais de suffixe de version tel que v1. Lorsque l'accès réseau est disponible, récupérez https://arxiv.org/abs/2609.00065 (ou http://export.arxiv.org/api/query?id_list=2609.00065) avant d'écrire la référence et prenez la liste des auteurs, l'année et la version à partir de cet enregistrement. Si l'enregistrement mentionne une référence de journal ou un DOI d'éditeur, citez la version publiée à la place.