From faeb5f9cf069033015785d4f85afb870b2c662ac Mon Sep 17 00:00:00 2001 From: Emanuele Bezzi Date: Fri, 12 May 2023 10:30:54 -0400 Subject: [PATCH 1/2] Add docsite version number from the library version --- .../notebooks/api_demo/census_gget_demo.ipynb | 2126 ++++++++--------- docs/conf.py | 4 +- 2 files changed, 1066 insertions(+), 1064 deletions(-) diff --git a/api/python/notebooks/api_demo/census_gget_demo.ipynb b/api/python/notebooks/api_demo/census_gget_demo.ipynb index aecff474d..eff4c43f4 100644 --- a/api/python/notebooks/api_demo/census_gget_demo.ipynb +++ b/api/python/notebooks/api_demo/census_gget_demo.ipynb @@ -1,1087 +1,1087 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "id": "view-in-github", - "colab_type": "text" - }, - "source": [ - "\"Open" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "YkHzXhTHvXUc" - }, - "source": [ - "# Querying data using the gget cellxgene module\n", - "\n", - "*By Laura Luebbert, lauraluebbert@caltech.edu.*\n", - "\n", - "[gget](https://github.com/pachterlab/gget) is a free, open-source command-line tool and Python package that enables efficient querying of genomic databases. gget consists of a collection of separate but interoperable modules, each designed to facilitate one type of database querying in a single line of code.\n", - "\n", - "The [gget cellxgene](https://pachterlab.github.io/gget/cellxgene.html) module builds on the [CZ CELLxGENE Discover Census](https://chanzuckerberg.github.io/cellxgene-census/) to query data from [CZ CELLxGENE Discover](https://cellxgene.cziscience.com/). This notebook briefly introduces the [gget cellxgene](https://pachterlab.github.io/gget/cellxgene.html) module by providing one simple example for each supported query type.\n", - "\n", - "If you use gget cellxgene in a publication, please [cite gget](https://pachterlab.github.io/gget/cite.html) in addition to [citing CZ CELLxGENE](https://cellxgene.cziscience.com/docs/08__Cite%20cellxgene%20in%20your%20publications).\n", - "\n", - "**Contents** \n", - "1. Install gget.\n", - "2. Fetch an [AnnData](https://anndata.readthedocs.io/en/latest/) object by selecting gene(s), tissue(s) and cell type(s).\n", - "3. Plot a dot plot similar to those shown on the CZ CELLxGENE Discover [Gene Expression](https://cellxgene.cziscience.com/gene-expression).\n", - "4. Fetch only cell metadata (corresponds to AnnData.obs).\n", - "5. Use [gget cellxgene](https://pachterlab.github.io/gget/cellxgene.html) from the command line." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "gaPshWPxwzo9" - }, - "source": [ - "## Install gget" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "id": "bKTgv7hCQxS1" - }, - "outputs": [], - "source": [ - "# The cellxgene module was added to gget in release 0.25.6\n", - "!pip install -q gget >=0.25.6\n", - "import gget" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "f4hLtaBPToWG", - "outputId": "0ada6679-f2f2-4fd5-9a4d-b3db101c3081" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Help on function cellxgene in module gget.gget_cellxgene:\n", - "\n", - "cellxgene(species='homo_sapiens', gene=None, ensembl=False, column_names=['dataset_id', 'assay', 'suspension_type', 'sex', 'tissue_general', 'tissue', 'cell_type'], meta_only=False, tissue=None, cell_type=None, development_stage=None, disease=None, sex=None, is_primary_data=True, dataset_id=None, tissue_general_ontology_term_id=None, tissue_general=None, assay_ontology_term_id=None, assay=None, cell_type_ontology_term_id=None, development_stage_ontology_term_id=None, disease_ontology_term_id=None, donor_id=None, self_reported_ethnicity_ontology_term_id=None, self_reported_ethnicity=None, sex_ontology_term_id=None, suspension_type=None, tissue_ontology_term_id=None, verbose=True, out=None)\n", - " Query data from CZ CELLxGENE Discover (https://cellxgene.cziscience.com/) using the\n", - " CZ CELLxGENE Discover Census (https://github.com/chanzuckerberg/cellxgene-census).\n", - " \n", - " NOTE: Querying large datasets requires a large amount of RAM. Use the cell metadata attributes\n", - " to define the (sub)dataset of interest.\n", - " The CZ CELLxGENE Discover Census recommends >16 GB of memory and a >5 Mbps internet connection.\n", - " \n", - " General args:\n", - " - species Choice of 'homo_sapiens' or 'mus_musculus'. Default: 'homo_sapiens'.\n", - " - gene Str or list of gene name(s) or Ensembl ID(s), e.g. ['ACE2', 'SLC5A1'] or ['ENSG00000130234', 'ENSG00000100170']. Default: None.\n", - " NOTE: Set ensembl=True when providing Ensembl ID(s) instead of gene name(s).\n", - " See https://cellxgene.cziscience.com/gene-expression for examples of available genes.\n", - " - ensembl True/False (default: False). Set to True when genes are provided as Ensembl IDs.\n", - " - column_names List of metadata columns to return (stored in AnnData.obs when meta_only=False).\n", - " Default: [\"dataset_id\", \"assay\", \"suspension_type\", \"sex\", \"tissue_general\", \"tissue\", \"cell_type\"]\n", - " For more options see: https://api.cellxgene.cziscience.com/curation/ui/#/ -> Schemas -> dataset\n", - " - meta_only True/False (default: False). If True, returns only metadata dataframe (corresponds to AnnData.obs).\n", - " - verbose True/False whether to print progress information. Default True.\n", - " - out If provided, saves the generated AnnData h5ad (or csv when meta_only=True) file with the specified path. Default: None.\n", - " \n", - " Cell metadata attributes:\n", - " - tissue Str or list of tissue(s), e.g. ['lung', 'blood']. Default: None.\n", - " See https://cellxgene.cziscience.com/gene-expression for examples of available tissues.\n", - " - cell_type Str or list of celltype(s), e.g. ['mucus secreting cell', 'neuroendocrine cell']. Default: None.\n", - " See https://cellxgene.cziscience.com/gene-expression and select a tissue to see examples of available celltypes.\n", - " - development_stage Str or list of development stage(s). Default: None.\n", - " - disease Str or list of disease(s). Default: None.\n", - " - sex Str or list of sex(es), e.g. 'female'. Default: None.\n", - " - is_primary_data True/False (default: True). If True, returns only the canonical instance of the cellular observation.\n", - " This is commonly set to False for meta-analyses reusing data or for secondary views of data.\n", - " - dataset_id Str or list of CELLxGENE dataset ID(s). Default: None.\n", - " - tissue_general_ontology_term_id Str or list of high-level tissue UBERON ID(s). Default: None.\n", - " Also see: https://github.com/chanzuckerberg/single-cell-data-portal/blob/9b94ccb0a2e0a8f6182b213aa4852c491f6f6aff/backend/wmg/data/tissue_mapper.py\n", - " - tissue_general Str or list of high-level tissue label(s). Default: None.\n", - " Also see: https://github.com/chanzuckerberg/single-cell-data-portal/blob/9b94ccb0a2e0a8f6182b213aa4852c491f6f6aff/backend/wmg/data/tissue_mapper.py\n", - " - tissue_ontology_term_id Str or list of tissue ontology term ID(s) as defined in the CELLxGENE dataset schema. Default: None.\n", - " - assay_ontology_term_id Str or list of assay ontology term ID(s) as defined in the CELLxGENE dataset schema. Default: None.\n", - " - assay Str or list of assay(s) as defined in the CELLxGENE dataset schema. Default: None.\n", - " - cell_type_ontology_term_id Str or list of celltype ontology term ID(s) as defined in the CELLxGENE dataset schema. Default: None.\n", - " - development_stage_ontology_term_id Str or list of development stage ontology term ID(s) as defined in the CELLxGENE dataset schema. Default: None.\n", - " - disease_ontology_term_id Str or list of disease ontology term ID(s) as defined in the CELLxGENE dataset schema. Default: None.\n", - " - donor_id Str or list of donor ID(s) as defined in the CELLxGENE dataset schema. Default: None.\n", - " - self_reported_ethnicity_ontology_term_id Str or list of self reported ethnicity ontology ID(s) as defined in the CELLxGENE dataset schema. Default: None.\n", - " - self_reported_ethnicity Str or list of self reported ethnicity as defined in the CELLxGENE dataset schema. Default: None.\n", - " - sex_ontology_term_id Str or list of sex ontology ID(s) as defined in the CELLxGENE dataset schema. Default: None.\n", - " - suspension_type Str or list of suspension type(s) as defined in the CELLxGENE dataset schema. Default: None.\n", - " \n", - " Returns AnnData object (when meta_only=False) or dataframe (when meta_only=True).\n", - "\n" - ] - } - ], - "source": [ - "# Display all options of the cellxgene gget module\n", - "help(gget.cellxgene)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "6j6vqbOXw9X3" - }, - "source": [ - "## Fetch an [AnnData](https://anndata.readthedocs.io/en/latest/) object by selecting gene(s), tissue(s) and cell type(s)\n", - "You can use all of the options listed above to filter for data of interest. Here, we will demonstrate the module by fetching a small dataset containing only three genes and two lung cell types:" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "id": "OnDHwjjSQ2uD" - }, - "outputs": [], - "source": [ - "# Fetch AnnData object based on specified genes, tissue and cell types\n", - "adata = gget.cellxgene(\n", - " gene=[\"ACE2\", \"ABCA1\", \"SLC5A1\"], tissue=\"lung\", cell_type=[\"mucus secreting cell\", \"neuroendocrine cell\"]\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "6krDnFMLyeRl" - }, - "source": [ - "Let's look at some of the features of the AnnData object we just fetched:" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "MqZM-2uNTt1L", - "outputId": "5e3a4de5-efe6-405e-f98c-c697094a485c" - }, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "AnnData object with n_obs × n_vars = 3322 × 3\n", - " obs: 'dataset_id', 'assay', 'suspension_type', 'sex', 'tissue_general', 'tissue', 'cell_type', 'is_primary_data'\n", - " var: 'soma_joinid', 'feature_id', 'feature_name', 'feature_length'" - ] - }, - "metadata": {}, - "execution_count": 4 - } - ], - "source": [ - "adata" - ] + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "view-in-github" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "YkHzXhTHvXUc" + }, + "source": [ + "# Querying data using the gget cellxgene module\n", + "\n", + "*By Laura Luebbert, lauraluebbert@caltech.edu.*\n", + "\n", + "[gget](https://github.com/pachterlab/gget) is a free, open-source command-line tool and Python package that enables efficient querying of genomic databases. gget consists of a collection of separate but interoperable modules, each designed to facilitate one type of database querying in a single line of code.\n", + "\n", + "The [gget cellxgene](https://pachterlab.github.io/gget/cellxgene.html) module builds on the [CZ CELLxGENE Discover Census](https://chanzuckerberg.github.io/cellxgene-census/) to query data from [CZ CELLxGENE Discover](https://cellxgene.cziscience.com/). This notebook briefly introduces the [gget cellxgene](https://pachterlab.github.io/gget/cellxgene.html) module by providing one simple example for each supported query type.\n", + "\n", + "If you use gget cellxgene in a publication, please [cite gget](https://pachterlab.github.io/gget/cite.html) in addition to [citing CZ CELLxGENE](https://cellxgene.cziscience.com/docs/08__Cite%20cellxgene%20in%20your%20publications).\n", + "\n", + "**Contents** \n", + "1. Install gget.\n", + "2. Fetch an [AnnData](https://anndata.readthedocs.io/en/latest/) object by selecting gene(s), tissue(s) and cell type(s).\n", + "3. Plot a dot plot similar to those shown on the CZ CELLxGENE Discover [Gene Expression](https://cellxgene.cziscience.com/gene-expression).\n", + "4. Fetch only cell metadata (corresponds to AnnData.obs).\n", + "5. Use [gget cellxgene](https://pachterlab.github.io/gget/cellxgene.html) from the command line." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "gaPshWPxwzo9" + }, + "source": [ + "## Install gget" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "id": "bKTgv7hCQxS1" + }, + "outputs": [], + "source": [ + "# The cellxgene module was added to gget in release 0.25.6\n", + "!pip install -q gget >=0.25.6\n", + "import gget" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" }, + "id": "f4hLtaBPToWG", + "outputId": "0ada6679-f2f2-4fd5-9a4d-b3db101c3081" + }, + "outputs": [ { - "cell_type": "markdown", - "metadata": { - "id": "Yl34ulk7ziH8" - }, - "source": [ - "A few thousand cells from CZ CELLxGENE Discover matched the filters specified above and their ACE2, ABCA1, and SLC5A1 expression matrix in lung mucus secreting and neuroendocrine cells was fetched. The `.var` and `.obs` layers contain additional information about each gene and cell, respectively:" - ] + "name": "stdout", + "output_type": "stream", + "text": [ + "Help on function cellxgene in module gget.gget_cellxgene:\n", + "\n", + "cellxgene(species='homo_sapiens', gene=None, ensembl=False, column_names=['dataset_id', 'assay', 'suspension_type', 'sex', 'tissue_general', 'tissue', 'cell_type'], meta_only=False, tissue=None, cell_type=None, development_stage=None, disease=None, sex=None, is_primary_data=True, dataset_id=None, tissue_general_ontology_term_id=None, tissue_general=None, assay_ontology_term_id=None, assay=None, cell_type_ontology_term_id=None, development_stage_ontology_term_id=None, disease_ontology_term_id=None, donor_id=None, self_reported_ethnicity_ontology_term_id=None, self_reported_ethnicity=None, sex_ontology_term_id=None, suspension_type=None, tissue_ontology_term_id=None, verbose=True, out=None)\n", + " Query data from CZ CELLxGENE Discover (https://cellxgene.cziscience.com/) using the\n", + " CZ CELLxGENE Discover Census (https://github.com/chanzuckerberg/cellxgene-census).\n", + " \n", + " NOTE: Querying large datasets requires a large amount of RAM. Use the cell metadata attributes\n", + " to define the (sub)dataset of interest.\n", + " The CZ CELLxGENE Discover Census recommends >16 GB of memory and a >5 Mbps internet connection.\n", + " \n", + " General args:\n", + " - species Choice of 'homo_sapiens' or 'mus_musculus'. Default: 'homo_sapiens'.\n", + " - gene Str or list of gene name(s) or Ensembl ID(s), e.g. ['ACE2', 'SLC5A1'] or ['ENSG00000130234', 'ENSG00000100170']. Default: None.\n", + " NOTE: Set ensembl=True when providing Ensembl ID(s) instead of gene name(s).\n", + " See https://cellxgene.cziscience.com/gene-expression for examples of available genes.\n", + " - ensembl True/False (default: False). Set to True when genes are provided as Ensembl IDs.\n", + " - column_names List of metadata columns to return (stored in AnnData.obs when meta_only=False).\n", + " Default: [\"dataset_id\", \"assay\", \"suspension_type\", \"sex\", \"tissue_general\", \"tissue\", \"cell_type\"]\n", + " For more options see: https://api.cellxgene.cziscience.com/curation/ui/#/ -> Schemas -> dataset\n", + " - meta_only True/False (default: False). If True, returns only metadata dataframe (corresponds to AnnData.obs).\n", + " - verbose True/False whether to print progress information. Default True.\n", + " - out If provided, saves the generated AnnData h5ad (or csv when meta_only=True) file with the specified path. Default: None.\n", + " \n", + " Cell metadata attributes:\n", + " - tissue Str or list of tissue(s), e.g. ['lung', 'blood']. Default: None.\n", + " See https://cellxgene.cziscience.com/gene-expression for examples of available tissues.\n", + " - cell_type Str or list of celltype(s), e.g. ['mucus secreting cell', 'neuroendocrine cell']. Default: None.\n", + " See https://cellxgene.cziscience.com/gene-expression and select a tissue to see examples of available celltypes.\n", + " - development_stage Str or list of development stage(s). Default: None.\n", + " - disease Str or list of disease(s). Default: None.\n", + " - sex Str or list of sex(es), e.g. 'female'. Default: None.\n", + " - is_primary_data True/False (default: True). If True, returns only the canonical instance of the cellular observation.\n", + " This is commonly set to False for meta-analyses reusing data or for secondary views of data.\n", + " - dataset_id Str or list of CELLxGENE dataset ID(s). Default: None.\n", + " - tissue_general_ontology_term_id Str or list of high-level tissue UBERON ID(s). Default: None.\n", + " Also see: https://github.com/chanzuckerberg/single-cell-data-portal/blob/9b94ccb0a2e0a8f6182b213aa4852c491f6f6aff/backend/wmg/data/tissue_mapper.py\n", + " - tissue_general Str or list of high-level tissue label(s). Default: None.\n", + " Also see: https://github.com/chanzuckerberg/single-cell-data-portal/blob/9b94ccb0a2e0a8f6182b213aa4852c491f6f6aff/backend/wmg/data/tissue_mapper.py\n", + " - tissue_ontology_term_id Str or list of tissue ontology term ID(s) as defined in the CELLxGENE dataset schema. Default: None.\n", + " - assay_ontology_term_id Str or list of assay ontology term ID(s) as defined in the CELLxGENE dataset schema. Default: None.\n", + " - assay Str or list of assay(s) as defined in the CELLxGENE dataset schema. Default: None.\n", + " - cell_type_ontology_term_id Str or list of celltype ontology term ID(s) as defined in the CELLxGENE dataset schema. Default: None.\n", + " - development_stage_ontology_term_id Str or list of development stage ontology term ID(s) as defined in the CELLxGENE dataset schema. Default: None.\n", + " - disease_ontology_term_id Str or list of disease ontology term ID(s) as defined in the CELLxGENE dataset schema. Default: None.\n", + " - donor_id Str or list of donor ID(s) as defined in the CELLxGENE dataset schema. Default: None.\n", + " - self_reported_ethnicity_ontology_term_id Str or list of self reported ethnicity ontology ID(s) as defined in the CELLxGENE dataset schema. Default: None.\n", + " - self_reported_ethnicity Str or list of self reported ethnicity as defined in the CELLxGENE dataset schema. Default: None.\n", + " - sex_ontology_term_id Str or list of sex ontology ID(s) as defined in the CELLxGENE dataset schema. Default: None.\n", + " - suspension_type Str or list of suspension type(s) as defined in the CELLxGENE dataset schema. Default: None.\n", + " \n", + " Returns AnnData object (when meta_only=False) or dataframe (when meta_only=True).\n", + "\n" + ] + } + ], + "source": [ + "# Display all options of the cellxgene gget module\n", + "help(gget.cellxgene)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "6j6vqbOXw9X3" + }, + "source": [ + "## Fetch an [AnnData](https://anndata.readthedocs.io/en/latest/) object by selecting gene(s), tissue(s) and cell type(s)\n", + "You can use all of the options listed above to filter for data of interest. Here, we will demonstrate the module by fetching a small dataset containing only three genes and two lung cell types:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "id": "OnDHwjjSQ2uD" + }, + "outputs": [], + "source": [ + "# Fetch AnnData object based on specified genes, tissue and cell types\n", + "adata = gget.cellxgene(\n", + " gene=[\"ACE2\", \"ABCA1\", \"SLC5A1\"], tissue=\"lung\", cell_type=[\"mucus secreting cell\", \"neuroendocrine cell\"]\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "6krDnFMLyeRl" + }, + "source": [ + "Let's look at some of the features of the AnnData object we just fetched:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" }, + "id": "MqZM-2uNTt1L", + "outputId": "5e3a4de5-efe6-405e-f98c-c697094a485c" + }, + "outputs": [ { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 143 - }, - "id": "qzdc41PdTwDN", - "outputId": "99350720-4f77-4a84-8974-0a1d795e5406" - }, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - " soma_joinid feature_id feature_name feature_length\n", - "0 2192 ENSG00000100170 SLC5A1 5081\n", - "1 6159 ENSG00000130234 ACE2 9739\n", - "2 11349 ENSG00000165029 ABCA1 11343" - ], - "text/html": [ - "\n", - "
\n", - "
\n", - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
soma_joinidfeature_idfeature_namefeature_length
02192ENSG00000100170SLC5A15081
16159ENSG00000130234ACE29739
211349ENSG00000165029ABCA111343
\n", - "
\n", - " \n", - " \n", - " \n", - "\n", - " \n", - "
\n", - "
\n", - " " - ] - }, - "metadata": {}, - "execution_count": 5 - } - ], - "source": [ - "adata.var" + "data": { + "text/plain": [ + "AnnData object with n_obs × n_vars = 3322 × 3\n", + " obs: 'dataset_id', 'assay', 'suspension_type', 'sex', 'tissue_general', 'tissue', 'cell_type', 'is_primary_data'\n", + " var: 'soma_joinid', 'feature_id', 'feature_name', 'feature_length'" ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "adata" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Yl34ulk7ziH8" + }, + "source": [ + "A few thousand cells from CZ CELLxGENE Discover matched the filters specified above and their ACE2, ABCA1, and SLC5A1 expression matrix in lung mucus secreting and neuroendocrine cells was fetched. The `.var` and `.obs` layers contain additional information about each gene and cell, respectively:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 143 }, + "id": "qzdc41PdTwDN", + "outputId": "99350720-4f77-4a84-8974-0a1d795e5406" + }, + "outputs": [ { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 424 - }, - "id": "lIebiJ0CTxDn", - "outputId": "d7158323-ebf5-4545-a21a-34779eed5561" - }, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - " dataset_id assay suspension_type sex \\\n", - "0 d8da613f-e681-4c69-b463-e94f5e66847f 10x 3' v3 nucleus female \n", - "1 d8da613f-e681-4c69-b463-e94f5e66847f 10x 3' v3 nucleus female \n", - "2 d8da613f-e681-4c69-b463-e94f5e66847f 10x 3' v3 nucleus female \n", - "3 d8da613f-e681-4c69-b463-e94f5e66847f 10x 3' v3 nucleus female \n", - "4 d8da613f-e681-4c69-b463-e94f5e66847f 10x 3' v3 nucleus female \n", - "... ... ... ... ... \n", - "3317 8c42cfd0-0b0a-46d5-910c-fc833d83c45e 10x 3' v2 cell female \n", - "3318 8c42cfd0-0b0a-46d5-910c-fc833d83c45e 10x 3' v2 cell female \n", - "3319 8c42cfd0-0b0a-46d5-910c-fc833d83c45e 10x 3' v2 cell female \n", - "3320 8c42cfd0-0b0a-46d5-910c-fc833d83c45e 10x 3' v2 cell female \n", - "3321 8c42cfd0-0b0a-46d5-910c-fc833d83c45e 10x 3' v2 cell female \n", - "\n", - " tissue_general tissue cell_type is_primary_data \n", - "0 lung lung mucus secreting cell True \n", - "1 lung lung mucus secreting cell True \n", - "2 lung lung mucus secreting cell True \n", - "3 lung lung mucus secreting cell True \n", - "4 lung lung mucus secreting cell True \n", - "... ... ... ... ... \n", - "3317 lung lung mucus secreting cell True \n", - "3318 lung lung mucus secreting cell True \n", - "3319 lung lung mucus secreting cell True \n", - "3320 lung lung mucus secreting cell True \n", - "3321 lung lung mucus secreting cell True \n", - "\n", - "[3322 rows x 8 columns]" - ], - "text/html": [ - "\n", - "
\n", - "
\n", - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
dataset_idassaysuspension_typesextissue_generaltissuecell_typeis_primary_data
0d8da613f-e681-4c69-b463-e94f5e66847f10x 3' v3nucleusfemalelunglungmucus secreting cellTrue
1d8da613f-e681-4c69-b463-e94f5e66847f10x 3' v3nucleusfemalelunglungmucus secreting cellTrue
2d8da613f-e681-4c69-b463-e94f5e66847f10x 3' v3nucleusfemalelunglungmucus secreting cellTrue
3d8da613f-e681-4c69-b463-e94f5e66847f10x 3' v3nucleusfemalelunglungmucus secreting cellTrue
4d8da613f-e681-4c69-b463-e94f5e66847f10x 3' v3nucleusfemalelunglungmucus secreting cellTrue
...........................
33178c42cfd0-0b0a-46d5-910c-fc833d83c45e10x 3' v2cellfemalelunglungmucus secreting cellTrue
33188c42cfd0-0b0a-46d5-910c-fc833d83c45e10x 3' v2cellfemalelunglungmucus secreting cellTrue
33198c42cfd0-0b0a-46d5-910c-fc833d83c45e10x 3' v2cellfemalelunglungmucus secreting cellTrue
33208c42cfd0-0b0a-46d5-910c-fc833d83c45e10x 3' v2cellfemalelunglungmucus secreting cellTrue
33218c42cfd0-0b0a-46d5-910c-fc833d83c45e10x 3' v2cellfemalelunglungmucus secreting cellTrue
\n", - "

3322 rows × 8 columns

\n", - "
\n", - " \n", - " \n", - " \n", - "\n", - " \n", - "
\n", - "
\n", - " " - ] - }, - "metadata": {}, - "execution_count": 6 - } + "data": { + "text/html": [ + "\n", + "
\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
soma_joinidfeature_idfeature_namefeature_length
02192ENSG00000100170SLC5A15081
16159ENSG00000130234ACE29739
211349ENSG00000165029ABCA111343
\n", + "
\n", + " \n", + " \n", + " \n", + "\n", + " \n", + "
\n", + "
\n", + " " ], - "source": [ - "adata.obs" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "e4zaccqDUVon" - }, - "source": [ - "## Plot a dot plot similar to those shown on the CZ CELLxGENE Discover [Gene Expression](https://cellxgene.cziscience.com/gene-expression)\n", - "Using the data we just fetched, we can plot a dot plot using [scanpy](https://scanpy.readthedocs.io/en/stable/):" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "id": "qGHq2q3wT3gw" - }, - "outputs": [], - "source": [ - "import scanpy as sc\n", - "\n", - "# retina increases the resolution of plots displayed in notebooks\n", - "%config InlineBackend.figure_format=\"retina\"" + "text/plain": [ + " soma_joinid feature_id feature_name feature_length\n", + "0 2192 ENSG00000100170 SLC5A1 5081\n", + "1 6159 ENSG00000130234 ACE2 9739\n", + "2 11349 ENSG00000165029 ABCA1 11343" ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "adata.var" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 424 }, + "id": "lIebiJ0CTxDn", + "outputId": "d7158323-ebf5-4545-a21a-34779eed5561" + }, + "outputs": [ { - "cell_type": "code", - "execution_count": 8, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 283 - }, - "id": "p1FTT-OiUa4k", - "outputId": "ab63ae62-8055-451a-83cf-ab9250a5842a" - }, - "outputs": [ - { - "output_type": "display_data", - "data": { - "text/plain": [ - "
" - ], - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAr4AAAIVCAYAAAA3XPxYAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAB7CAAAewgFu0HU+AACUz0lEQVR4nOzdd1QU198G8GepSy8CAtIEFBtWwIKKPbGbxGiMBUuMXWNNNdbkTewlRn8xEVuMRmPUqImJscWKGlEsiIIFFRULAtLZ+/6BO2Fll7qw4D6fcziBmTt3vjO7wYfZO3dkQggBIiIiIqJXnIGuCyAiIiIiKg8MvkRERESkFxh8iYiIiEgvMPgSERERkV5g8CUiIiIivcDgS0RERER6gcGXiIiIiPQCgy8RERER6QUGXyIiIiLSCwy+RERERKQXGHyJiIiISC8w+BIRERGRXmDwJSIiIiK9wOBLRERERHqBwZeIiIiI9AKDLxERERHpBQZfIiIiItILDL5EREREpBcYfImIiIhILzD4EhEREZFeYPAlIiIiIr3A4EtEREREeoHBl4iIiIj0AoMvEREREekFBl8iIiIi0gsMvkRERESkFxh8iYiIiEgvMPgSERERkV5g8CUiIiIivcDgS0RERER6gcGXiIiIiPQCgy8RERER6QUGXyIiIiLSCwy+RERERKQXGHyJiIiISC8w+BIRERGRXmDwJSIiIiK9wOBLRERERHqBwZeIiIiI9AKDLxERERHpBQZfIiIiItILDL5EREREpBcYfImIiIhILzD4EhEREZFeYPAlIiIiIr3A4EtEREREeoHBl4iIiIj0AoMvEREREekFBl8iIiIi0gsMvkRERESkFxh8iYiIiEgvMPgSERERkV5g8CUiIiIivcDgS0RERER6gcGXiIiIiPQCgy8RERER6QUGXyIiIiLSCwy+RERERKQXGHyJiIiISC8w+BIRERGRXmDwJSIiIiK9wOBLRERERHqBwZeIiIiI9AKDLxERERHpBQZfIiIiItILDL5EREREpBcYfImIiIhILzD4EhEREZFeYPAlIiIiIr3A4EtEREREeoHBl4iIiIj0AoMvEREREekFBl8iIiIi0gsMvkRERESkFxh8iYiIiEgvMPgSERERkV5g8CUiIiIivcDgS0RERER6gcGXiIiIiPQCgy8RERER6QUGXyIiIiLSCwy+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\n" - }, - "metadata": { - "image/png": { - "width": 351, - "height": 266 - } - } - } + "data": { + "text/html": [ + "\n", + "
\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
dataset_idassaysuspension_typesextissue_generaltissuecell_typeis_primary_data
0d8da613f-e681-4c69-b463-e94f5e66847f10x 3' v3nucleusfemalelunglungmucus secreting cellTrue
1d8da613f-e681-4c69-b463-e94f5e66847f10x 3' v3nucleusfemalelunglungmucus secreting cellTrue
2d8da613f-e681-4c69-b463-e94f5e66847f10x 3' v3nucleusfemalelunglungmucus secreting cellTrue
3d8da613f-e681-4c69-b463-e94f5e66847f10x 3' v3nucleusfemalelunglungmucus secreting cellTrue
4d8da613f-e681-4c69-b463-e94f5e66847f10x 3' v3nucleusfemalelunglungmucus secreting cellTrue
...........................
33178c42cfd0-0b0a-46d5-910c-fc833d83c45e10x 3' v2cellfemalelunglungmucus secreting cellTrue
33188c42cfd0-0b0a-46d5-910c-fc833d83c45e10x 3' v2cellfemalelunglungmucus secreting cellTrue
33198c42cfd0-0b0a-46d5-910c-fc833d83c45e10x 3' v2cellfemalelunglungmucus secreting cellTrue
33208c42cfd0-0b0a-46d5-910c-fc833d83c45e10x 3' v2cellfemalelunglungmucus secreting cellTrue
33218c42cfd0-0b0a-46d5-910c-fc833d83c45e10x 3' v2cellfemalelunglungmucus secreting cellTrue
\n", + "

3322 rows × 8 columns

\n", + "
\n", + " \n", + " \n", + " \n", + "\n", + " \n", + "
\n", + "
\n", + " " ], - "source": [ - "sc.pl.dotplot(adata, adata.var[\"feature_name\"].values, groupby=\"cell_type\", gene_symbols=\"feature_name\")" + "text/plain": [ + " dataset_id assay suspension_type sex \\\n", + "0 d8da613f-e681-4c69-b463-e94f5e66847f 10x 3' v3 nucleus female \n", + "1 d8da613f-e681-4c69-b463-e94f5e66847f 10x 3' v3 nucleus female \n", + "2 d8da613f-e681-4c69-b463-e94f5e66847f 10x 3' v3 nucleus female \n", + "3 d8da613f-e681-4c69-b463-e94f5e66847f 10x 3' v3 nucleus female \n", + "4 d8da613f-e681-4c69-b463-e94f5e66847f 10x 3' v3 nucleus female \n", + "... ... ... ... ... \n", + "3317 8c42cfd0-0b0a-46d5-910c-fc833d83c45e 10x 3' v2 cell female \n", + "3318 8c42cfd0-0b0a-46d5-910c-fc833d83c45e 10x 3' v2 cell female \n", + "3319 8c42cfd0-0b0a-46d5-910c-fc833d83c45e 10x 3' v2 cell female \n", + "3320 8c42cfd0-0b0a-46d5-910c-fc833d83c45e 10x 3' v2 cell female \n", + "3321 8c42cfd0-0b0a-46d5-910c-fc833d83c45e 10x 3' v2 cell female \n", + "\n", + " tissue_general tissue cell_type is_primary_data \n", + "0 lung lung mucus secreting cell True \n", + "1 lung lung mucus secreting cell True \n", + "2 lung lung mucus secreting cell True \n", + "3 lung lung mucus secreting cell True \n", + "4 lung lung mucus secreting cell True \n", + "... ... ... ... ... \n", + "3317 lung lung mucus secreting cell True \n", + "3318 lung lung mucus secreting cell True \n", + "3319 lung lung mucus secreting cell True \n", + "3320 lung lung mucus secreting cell True \n", + "3321 lung lung mucus secreting cell True \n", + "\n", + "[3322 rows x 8 columns]" ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "adata.obs" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "e4zaccqDUVon" + }, + "source": [ + "## Plot a dot plot similar to those shown on the CZ CELLxGENE Discover [Gene Expression](https://cellxgene.cziscience.com/gene-expression)\n", + "Using the data we just fetched, we can plot a dot plot using [scanpy](https://scanpy.readthedocs.io/en/stable/):" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "id": "qGHq2q3wT3gw" + }, + "outputs": [], + "source": [ + "import scanpy as sc\n", + "\n", + "# retina increases the resolution of plots displayed in notebooks\n", + "%config InlineBackend.figure_format=\"retina\"" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 283 }, + "id": "p1FTT-OiUa4k", + "outputId": "ab63ae62-8055-451a-83cf-ab9250a5842a" + }, + "outputs": [ { - "cell_type": "markdown", - "metadata": { - "id": "lIqvA3pc0iJA" - }, - "source": [ - "## Fetch only cell metadata (corresponds to AnnData.obs)\n", - "By setting `meta_only=True` and again filtering by the cell metadata attributes listed above, you can also fetch only the cell metadata:" + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAr4AAAIVCAYAAAA3XPxYAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAB7CAAAewgFu0HU+AACUz0lEQVR4nOzdd1QU198G8GepSy8CAtIEFBtWwIKKPbGbxGiMBUuMXWNNNdbkTewlRn8xEVuMRmPUqImJscWKGlEsiIIFFRULAtLZ+/6BO2Fll7qw4D6fcziBmTt3vjO7wYfZO3dkQggBIiIiIqJXnIGuCyAiIiIiKg8MvkRERESkFxh8iYiIiEgvMPgSERERkV5g8CUiIiIivcDgS0RERER6gcGXiIiIiPQCgy8RERER6QUGXyIiIiLSCwy+RERERKQXGHyJiIiISC8w+BIRERGRXmDwJSIiIiK9wOBLRERERHqBwZeIiIiI9AKDLxERERHpBQZfIiIiItILDL5EREREpBcYfImIiIhILzD4EhEREZFeYPAlIiIiIr3A4EtEREREeoHBl4iIiIj0AoMvEREREekFBl8iIiIi0gsMvkRERESkFxh8iYiIiEgvMPgSERERkV5g8CUiIiIivcDgS0RERER6gcGXiIiIiPQCgy8RERER6QUGXyIiIiLSCwy+RERERKQXGHyJiIiISC8w+BIRERGRXmDwJSIiIiK9wOBLRERERHqBwZeIiIiI9AKDLxERERHpBQZfIiIiItILDL5EREREpBcYfImIiIhILzD4EhEREZFeYPAlIiIiIr3A4EtEREREeoHBl4iIiIj0AoMvEREREekFBl8iIiIi0gsMvkRERESkFxh8iYiIiEgvMPgSERERkV5g8CUiIiIivcDgS0RERER6gcGXiIiIiPQCgy8RERER6QUGXyIiIiLSCwy+RERERKQXGHyJiIiISC8w+BIRERGRXmDwJSIiIiK9wOBLRERERHqBwZeIiIiI9AKDLxERERHpBQZfIiIiItILDL5EREREpBcYfImIiIhILzD4EhEREZFeYPAlIiIiIr3A4EtEREREeoHBl4iIiIj0AoMvEREREekFBl8iIiIi0gsMvkRERESkFxh8iYiIiEgvMPgSERERkV5g8CUiIiIivcDgS0RERER6gcGXiIiIiPQCgy8RERER6QUGXyIiIiLSCwy+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\n", + "text/plain": [ + "
" ] + }, + "metadata": { + "image/png": { + "height": 266, + "width": 351 + } + }, + "output_type": "display_data" + } + ], + "source": [ + "sc.pl.dotplot(adata, adata.var[\"feature_name\"].values, groupby=\"cell_type\", gene_symbols=\"feature_name\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "lIqvA3pc0iJA" + }, + "source": [ + "## Fetch only cell metadata (corresponds to AnnData.obs)\n", + "By setting `meta_only=True` and again filtering by the cell metadata attributes listed above, you can also fetch only the cell metadata:" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 424 }, + "id": "RQJyn-mKU_oh", + "outputId": "4df93c62-d44c-4720-f96a-5d5c677aab68" + }, + "outputs": [ { - "cell_type": "code", - "execution_count": 9, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 424 - }, - "id": "RQJyn-mKU_oh", - "outputId": "4df93c62-d44c-4720-f96a-5d5c677aab68" - }, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - " dataset_id assay suspension_type \\\n", - "0 047d57f2-4d14-45de-aa98-336c6f583750 10x 3' v2 cell \n", - "1 047d57f2-4d14-45de-aa98-336c6f583750 10x 3' v2 cell \n", - "2 047d57f2-4d14-45de-aa98-336c6f583750 10x 3' v2 cell \n", - "3 047d57f2-4d14-45de-aa98-336c6f583750 10x 3' v2 cell \n", - "4 047d57f2-4d14-45de-aa98-336c6f583750 10x 3' v2 cell \n", - "... ... ... ... \n", - "97547 48b37086-25f7-4ecd-be66-f5bb378e3aea 10x 3' v2 cell \n", - "97548 48b37086-25f7-4ecd-be66-f5bb378e3aea 10x 3' v2 cell \n", - "97549 48b37086-25f7-4ecd-be66-f5bb378e3aea 10x 3' v2 cell \n", - "97550 48b37086-25f7-4ecd-be66-f5bb378e3aea 10x 3' v2 cell \n", - "97551 48b37086-25f7-4ecd-be66-f5bb378e3aea 10x 3' v2 cell \n", - "\n", - " sex tissue_general tissue cell_type \\\n", - "0 unknown lung lung mesenchymal stem cell \n", - "1 unknown lung lung progenitor cell \n", - "2 unknown lung lung mesenchymal cell \n", - "3 unknown lung lung mesenchymal stem cell \n", - "4 unknown lung lung mesenchymal cell \n", - "... ... ... ... ... \n", - "97547 male lung lung fibroblast of lung \n", - "97548 male lung lung natural killer cell \n", - "97549 male lung lung pulmonary interstitial fibroblast \n", - "97550 male lung lung adventitial cell \n", - "97551 male lung lung fibroblast of lung \n", - "\n", - " is_primary_data \n", - "0 True \n", - "1 True \n", - "2 True \n", - "3 True \n", - "4 True \n", - "... ... \n", - "97547 True \n", - "97548 True \n", - "97549 True \n", - "97550 True \n", - "97551 True \n", - "\n", - "[97552 rows x 8 columns]" - ], - "text/html": [ - "\n", - "
\n", - "
\n", - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
dataset_idassaysuspension_typesextissue_generaltissuecell_typeis_primary_data
0047d57f2-4d14-45de-aa98-336c6f58375010x 3' v2cellunknownlunglungmesenchymal stem cellTrue
1047d57f2-4d14-45de-aa98-336c6f58375010x 3' v2cellunknownlunglungprogenitor cellTrue
2047d57f2-4d14-45de-aa98-336c6f58375010x 3' v2cellunknownlunglungmesenchymal cellTrue
3047d57f2-4d14-45de-aa98-336c6f58375010x 3' v2cellunknownlunglungmesenchymal stem cellTrue
4047d57f2-4d14-45de-aa98-336c6f58375010x 3' v2cellunknownlunglungmesenchymal cellTrue
...........................
9754748b37086-25f7-4ecd-be66-f5bb378e3aea10x 3' v2cellmalelunglungfibroblast of lungTrue
9754848b37086-25f7-4ecd-be66-f5bb378e3aea10x 3' v2cellmalelunglungnatural killer cellTrue
9754948b37086-25f7-4ecd-be66-f5bb378e3aea10x 3' v2cellmalelunglungpulmonary interstitial fibroblastTrue
9755048b37086-25f7-4ecd-be66-f5bb378e3aea10x 3' v2cellmalelunglungadventitial cellTrue
9755148b37086-25f7-4ecd-be66-f5bb378e3aea10x 3' v2cellmalelunglungfibroblast of lungTrue
\n", - "

97552 rows × 8 columns

\n", - "
\n", - " \n", - " \n", - " \n", - "\n", - " \n", - "
\n", - "
\n", - " " - ] - }, - "metadata": {}, - "execution_count": 9 - } + "data": { + "text/html": [ + "\n", + "
\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
dataset_idassaysuspension_typesextissue_generaltissuecell_typeis_primary_data
0047d57f2-4d14-45de-aa98-336c6f58375010x 3' v2cellunknownlunglungmesenchymal stem cellTrue
1047d57f2-4d14-45de-aa98-336c6f58375010x 3' v2cellunknownlunglungprogenitor cellTrue
2047d57f2-4d14-45de-aa98-336c6f58375010x 3' v2cellunknownlunglungmesenchymal cellTrue
3047d57f2-4d14-45de-aa98-336c6f58375010x 3' v2cellunknownlunglungmesenchymal stem cellTrue
4047d57f2-4d14-45de-aa98-336c6f58375010x 3' v2cellunknownlunglungmesenchymal cellTrue
...........................
9754748b37086-25f7-4ecd-be66-f5bb378e3aea10x 3' v2cellmalelunglungfibroblast of lungTrue
9754848b37086-25f7-4ecd-be66-f5bb378e3aea10x 3' v2cellmalelunglungnatural killer cellTrue
9754948b37086-25f7-4ecd-be66-f5bb378e3aea10x 3' v2cellmalelunglungpulmonary interstitial fibroblastTrue
9755048b37086-25f7-4ecd-be66-f5bb378e3aea10x 3' v2cellmalelunglungadventitial cellTrue
9755148b37086-25f7-4ecd-be66-f5bb378e3aea10x 3' v2cellmalelunglungfibroblast of lungTrue
\n", + "

97552 rows × 8 columns

\n", + "
\n", + " \n", + " \n", + " \n", + "\n", + " \n", + "
\n", + "
\n", + " " ], - "source": [ - "df = gget.cellxgene(\n", - " meta_only=True,\n", - " gene=\"ENSMUSG00000015405\",\n", - " ensembl=True, # Setting 'ensembl=True' here since the gene is passed as an Ensembl ID\n", - " tissue=\"lung\",\n", - " species=\"mus_musculus\", # Let's switch up the species\n", - ")\n", - "\n", - "df" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "2QjJEJdS-He7" - }, - "source": [ - "## Use [gget cellxgene](https://pachterlab.github.io/gget/cellxgene.html) from the command line\n", - "All gget modules support use from the command line. Note that the command line interface requires the `-o/--out` argument to specify a path to save the fetched data. Here are the command line versions of the queries demonstrated above:" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": { - "id": "hDcS0fZ--BnB" - }, - "outputs": [], - "source": [ - "# # Fetch AnnData object based on specified genes, tissue and cell types\n", - "# !gget cellxgene --gene ACE2 ABCA1 SLC5A1 --tissue lung --cell_type 'mucus secreting cell' 'neuroendocrine cell' -o example_adata.h5ad" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": { - "id": "f683tvIg-oEz" - }, - "outputs": [], - "source": [ - "# # Fetch only metadata\n", - "# !gget cellxgene --meta_only --gene ENSMUSG00000015405 --ensembl --tissue lung --species mus_musculus -o example_meta.csv" + "text/plain": [ + " dataset_id assay suspension_type \\\n", + "0 047d57f2-4d14-45de-aa98-336c6f583750 10x 3' v2 cell \n", + "1 047d57f2-4d14-45de-aa98-336c6f583750 10x 3' v2 cell \n", + "2 047d57f2-4d14-45de-aa98-336c6f583750 10x 3' v2 cell \n", + "3 047d57f2-4d14-45de-aa98-336c6f583750 10x 3' v2 cell \n", + "4 047d57f2-4d14-45de-aa98-336c6f583750 10x 3' v2 cell \n", + "... ... ... ... \n", + "97547 48b37086-25f7-4ecd-be66-f5bb378e3aea 10x 3' v2 cell \n", + "97548 48b37086-25f7-4ecd-be66-f5bb378e3aea 10x 3' v2 cell \n", + "97549 48b37086-25f7-4ecd-be66-f5bb378e3aea 10x 3' v2 cell \n", + "97550 48b37086-25f7-4ecd-be66-f5bb378e3aea 10x 3' v2 cell \n", + "97551 48b37086-25f7-4ecd-be66-f5bb378e3aea 10x 3' v2 cell \n", + "\n", + " sex tissue_general tissue cell_type \\\n", + "0 unknown lung lung mesenchymal stem cell \n", + "1 unknown lung lung progenitor cell \n", + "2 unknown lung lung mesenchymal cell \n", + "3 unknown lung lung mesenchymal stem cell \n", + "4 unknown lung lung mesenchymal cell \n", + "... ... ... ... ... \n", + "97547 male lung lung fibroblast of lung \n", + "97548 male lung lung natural killer cell \n", + "97549 male lung lung pulmonary interstitial fibroblast \n", + "97550 male lung lung adventitial cell \n", + "97551 male lung lung fibroblast of lung \n", + "\n", + " is_primary_data \n", + "0 True \n", + "1 True \n", + "2 True \n", + "3 True \n", + "4 True \n", + "... ... \n", + "97547 True \n", + "97548 True \n", + "97549 True \n", + "97550 True \n", + "97551 True \n", + "\n", + "[97552 rows x 8 columns]" ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" } - ], - "metadata": { - "colab": { - "provenance": [], - "include_colab_link": true - }, - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.10" - } + ], + "source": [ + "df = gget.cellxgene(\n", + " meta_only=True,\n", + " gene=\"ENSMUSG00000015405\",\n", + " ensembl=True, # Setting 'ensembl=True' here since the gene is passed as an Ensembl ID\n", + " tissue=\"lung\",\n", + " species=\"mus_musculus\", # Let's switch up the species\n", + ")\n", + "\n", + "df" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "2QjJEJdS-He7" + }, + "source": [ + "## Use [gget cellxgene](https://pachterlab.github.io/gget/cellxgene.html) from the command line\n", + "All gget modules support use from the command line. Note that the command line interface requires the `-o/--out` argument to specify a path to save the fetched data. Here are the command line versions of the queries demonstrated above:" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "id": "hDcS0fZ--BnB" + }, + "outputs": [], + "source": [ + "# # Fetch AnnData object based on specified genes, tissue and cell types\n", + "# !gget cellxgene --gene ACE2 ABCA1 SLC5A1 --tissue lung --cell_type 'mucus secreting cell' 'neuroendocrine cell' -o example_adata.h5ad" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "id": "f683tvIg-oEz" + }, + "outputs": [], + "source": [ + "# # Fetch only metadata\n", + "# !gget cellxgene --meta_only --gene ENSMUSG00000015405 --ensembl --tissue lung --species mus_musculus -o example_meta.csv" + ] + } + ], + "metadata": { + "colab": { + "include_colab_link": true, + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" }, - "nbformat": 4, - "nbformat_minor": 0 + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.10" + } + }, + "nbformat": 4, + "nbformat_minor": 0 } diff --git a/docs/conf.py b/docs/conf.py index 8dd0f7953..5d3f2ce7f 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -10,7 +10,9 @@ copyright = '2022-2023 Chan Zuckerberg Initiative' author = 'Chan Zuckerberg Initiative' -version = "1.0.0" +import cellxgene_census + +version = cellxgene_census.__version__ # -- General configuration --------------------------------------------------- # https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration From 963935e32535a91a7d46f44a60f1e849c68d59f9 Mon Sep 17 00:00:00 2001 From: Emanuele Bezzi Date: Tue, 16 May 2023 11:59:52 -0400 Subject: [PATCH 2/2] revert odd commit --- .../notebooks/api_demo/census_gget_demo.ipynb | 2126 ++++++++--------- 1 file changed, 1063 insertions(+), 1063 deletions(-) diff --git a/api/python/notebooks/api_demo/census_gget_demo.ipynb b/api/python/notebooks/api_demo/census_gget_demo.ipynb index eff4c43f4..aecff474d 100644 --- a/api/python/notebooks/api_demo/census_gget_demo.ipynb +++ b/api/python/notebooks/api_demo/census_gget_demo.ipynb @@ -1,1087 +1,1087 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "view-in-github" - }, - "source": [ - "\"Open" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "YkHzXhTHvXUc" - }, - "source": [ - "# Querying data using the gget cellxgene module\n", - "\n", - "*By Laura Luebbert, lauraluebbert@caltech.edu.*\n", - "\n", - "[gget](https://github.com/pachterlab/gget) is a free, open-source command-line tool and Python package that enables efficient querying of genomic databases. gget consists of a collection of separate but interoperable modules, each designed to facilitate one type of database querying in a single line of code.\n", - "\n", - "The [gget cellxgene](https://pachterlab.github.io/gget/cellxgene.html) module builds on the [CZ CELLxGENE Discover Census](https://chanzuckerberg.github.io/cellxgene-census/) to query data from [CZ CELLxGENE Discover](https://cellxgene.cziscience.com/). This notebook briefly introduces the [gget cellxgene](https://pachterlab.github.io/gget/cellxgene.html) module by providing one simple example for each supported query type.\n", - "\n", - "If you use gget cellxgene in a publication, please [cite gget](https://pachterlab.github.io/gget/cite.html) in addition to [citing CZ CELLxGENE](https://cellxgene.cziscience.com/docs/08__Cite%20cellxgene%20in%20your%20publications).\n", - "\n", - "**Contents** \n", - "1. Install gget.\n", - "2. Fetch an [AnnData](https://anndata.readthedocs.io/en/latest/) object by selecting gene(s), tissue(s) and cell type(s).\n", - "3. Plot a dot plot similar to those shown on the CZ CELLxGENE Discover [Gene Expression](https://cellxgene.cziscience.com/gene-expression).\n", - "4. Fetch only cell metadata (corresponds to AnnData.obs).\n", - "5. Use [gget cellxgene](https://pachterlab.github.io/gget/cellxgene.html) from the command line." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "gaPshWPxwzo9" - }, - "source": [ - "## Install gget" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "id": "bKTgv7hCQxS1" - }, - "outputs": [], - "source": [ - "# The cellxgene module was added to gget in release 0.25.6\n", - "!pip install -q gget >=0.25.6\n", - "import gget" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] }, - "id": "f4hLtaBPToWG", - "outputId": "0ada6679-f2f2-4fd5-9a4d-b3db101c3081" - }, - "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "Help on function cellxgene in module gget.gget_cellxgene:\n", - "\n", - "cellxgene(species='homo_sapiens', gene=None, ensembl=False, column_names=['dataset_id', 'assay', 'suspension_type', 'sex', 'tissue_general', 'tissue', 'cell_type'], meta_only=False, tissue=None, cell_type=None, development_stage=None, disease=None, sex=None, is_primary_data=True, dataset_id=None, tissue_general_ontology_term_id=None, tissue_general=None, assay_ontology_term_id=None, assay=None, cell_type_ontology_term_id=None, development_stage_ontology_term_id=None, disease_ontology_term_id=None, donor_id=None, self_reported_ethnicity_ontology_term_id=None, self_reported_ethnicity=None, sex_ontology_term_id=None, suspension_type=None, tissue_ontology_term_id=None, verbose=True, out=None)\n", - " Query data from CZ CELLxGENE Discover (https://cellxgene.cziscience.com/) using the\n", - " CZ CELLxGENE Discover Census (https://github.com/chanzuckerberg/cellxgene-census).\n", - " \n", - " NOTE: Querying large datasets requires a large amount of RAM. Use the cell metadata attributes\n", - " to define the (sub)dataset of interest.\n", - " The CZ CELLxGENE Discover Census recommends >16 GB of memory and a >5 Mbps internet connection.\n", - " \n", - " General args:\n", - " - species Choice of 'homo_sapiens' or 'mus_musculus'. Default: 'homo_sapiens'.\n", - " - gene Str or list of gene name(s) or Ensembl ID(s), e.g. ['ACE2', 'SLC5A1'] or ['ENSG00000130234', 'ENSG00000100170']. Default: None.\n", - " NOTE: Set ensembl=True when providing Ensembl ID(s) instead of gene name(s).\n", - " See https://cellxgene.cziscience.com/gene-expression for examples of available genes.\n", - " - ensembl True/False (default: False). Set to True when genes are provided as Ensembl IDs.\n", - " - column_names List of metadata columns to return (stored in AnnData.obs when meta_only=False).\n", - " Default: [\"dataset_id\", \"assay\", \"suspension_type\", \"sex\", \"tissue_general\", \"tissue\", \"cell_type\"]\n", - " For more options see: https://api.cellxgene.cziscience.com/curation/ui/#/ -> Schemas -> dataset\n", - " - meta_only True/False (default: False). If True, returns only metadata dataframe (corresponds to AnnData.obs).\n", - " - verbose True/False whether to print progress information. Default True.\n", - " - out If provided, saves the generated AnnData h5ad (or csv when meta_only=True) file with the specified path. Default: None.\n", - " \n", - " Cell metadata attributes:\n", - " - tissue Str or list of tissue(s), e.g. ['lung', 'blood']. Default: None.\n", - " See https://cellxgene.cziscience.com/gene-expression for examples of available tissues.\n", - " - cell_type Str or list of celltype(s), e.g. ['mucus secreting cell', 'neuroendocrine cell']. Default: None.\n", - " See https://cellxgene.cziscience.com/gene-expression and select a tissue to see examples of available celltypes.\n", - " - development_stage Str or list of development stage(s). Default: None.\n", - " - disease Str or list of disease(s). Default: None.\n", - " - sex Str or list of sex(es), e.g. 'female'. Default: None.\n", - " - is_primary_data True/False (default: True). If True, returns only the canonical instance of the cellular observation.\n", - " This is commonly set to False for meta-analyses reusing data or for secondary views of data.\n", - " - dataset_id Str or list of CELLxGENE dataset ID(s). Default: None.\n", - " - tissue_general_ontology_term_id Str or list of high-level tissue UBERON ID(s). Default: None.\n", - " Also see: https://github.com/chanzuckerberg/single-cell-data-portal/blob/9b94ccb0a2e0a8f6182b213aa4852c491f6f6aff/backend/wmg/data/tissue_mapper.py\n", - " - tissue_general Str or list of high-level tissue label(s). Default: None.\n", - " Also see: https://github.com/chanzuckerberg/single-cell-data-portal/blob/9b94ccb0a2e0a8f6182b213aa4852c491f6f6aff/backend/wmg/data/tissue_mapper.py\n", - " - tissue_ontology_term_id Str or list of tissue ontology term ID(s) as defined in the CELLxGENE dataset schema. Default: None.\n", - " - assay_ontology_term_id Str or list of assay ontology term ID(s) as defined in the CELLxGENE dataset schema. Default: None.\n", - " - assay Str or list of assay(s) as defined in the CELLxGENE dataset schema. Default: None.\n", - " - cell_type_ontology_term_id Str or list of celltype ontology term ID(s) as defined in the CELLxGENE dataset schema. Default: None.\n", - " - development_stage_ontology_term_id Str or list of development stage ontology term ID(s) as defined in the CELLxGENE dataset schema. Default: None.\n", - " - disease_ontology_term_id Str or list of disease ontology term ID(s) as defined in the CELLxGENE dataset schema. Default: None.\n", - " - donor_id Str or list of donor ID(s) as defined in the CELLxGENE dataset schema. Default: None.\n", - " - self_reported_ethnicity_ontology_term_id Str or list of self reported ethnicity ontology ID(s) as defined in the CELLxGENE dataset schema. Default: None.\n", - " - self_reported_ethnicity Str or list of self reported ethnicity as defined in the CELLxGENE dataset schema. Default: None.\n", - " - sex_ontology_term_id Str or list of sex ontology ID(s) as defined in the CELLxGENE dataset schema. Default: None.\n", - " - suspension_type Str or list of suspension type(s) as defined in the CELLxGENE dataset schema. Default: None.\n", - " \n", - " Returns AnnData object (when meta_only=False) or dataframe (when meta_only=True).\n", - "\n" - ] - } - ], - "source": [ - "# Display all options of the cellxgene gget module\n", - "help(gget.cellxgene)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "6j6vqbOXw9X3" - }, - "source": [ - "## Fetch an [AnnData](https://anndata.readthedocs.io/en/latest/) object by selecting gene(s), tissue(s) and cell type(s)\n", - "You can use all of the options listed above to filter for data of interest. Here, we will demonstrate the module by fetching a small dataset containing only three genes and two lung cell types:" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "id": "OnDHwjjSQ2uD" - }, - "outputs": [], - "source": [ - "# Fetch AnnData object based on specified genes, tissue and cell types\n", - "adata = gget.cellxgene(\n", - " gene=[\"ACE2\", \"ABCA1\", \"SLC5A1\"], tissue=\"lung\", cell_type=[\"mucus secreting cell\", \"neuroendocrine cell\"]\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "6krDnFMLyeRl" - }, - "source": [ - "Let's look at some of the features of the AnnData object we just fetched:" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" + "cell_type": "markdown", + "metadata": { + "id": "YkHzXhTHvXUc" + }, + "source": [ + "# Querying data using the gget cellxgene module\n", + "\n", + "*By Laura Luebbert, lauraluebbert@caltech.edu.*\n", + "\n", + "[gget](https://github.com/pachterlab/gget) is a free, open-source command-line tool and Python package that enables efficient querying of genomic databases. gget consists of a collection of separate but interoperable modules, each designed to facilitate one type of database querying in a single line of code.\n", + "\n", + "The [gget cellxgene](https://pachterlab.github.io/gget/cellxgene.html) module builds on the [CZ CELLxGENE Discover Census](https://chanzuckerberg.github.io/cellxgene-census/) to query data from [CZ CELLxGENE Discover](https://cellxgene.cziscience.com/). This notebook briefly introduces the [gget cellxgene](https://pachterlab.github.io/gget/cellxgene.html) module by providing one simple example for each supported query type.\n", + "\n", + "If you use gget cellxgene in a publication, please [cite gget](https://pachterlab.github.io/gget/cite.html) in addition to [citing CZ CELLxGENE](https://cellxgene.cziscience.com/docs/08__Cite%20cellxgene%20in%20your%20publications).\n", + "\n", + "**Contents** \n", + "1. Install gget.\n", + "2. Fetch an [AnnData](https://anndata.readthedocs.io/en/latest/) object by selecting gene(s), tissue(s) and cell type(s).\n", + "3. Plot a dot plot similar to those shown on the CZ CELLxGENE Discover [Gene Expression](https://cellxgene.cziscience.com/gene-expression).\n", + "4. Fetch only cell metadata (corresponds to AnnData.obs).\n", + "5. Use [gget cellxgene](https://pachterlab.github.io/gget/cellxgene.html) from the command line." + ] }, - "id": "MqZM-2uNTt1L", - "outputId": "5e3a4de5-efe6-405e-f98c-c697094a485c" - }, - "outputs": [ { - "data": { - "text/plain": [ - "AnnData object with n_obs × n_vars = 3322 × 3\n", - " obs: 'dataset_id', 'assay', 'suspension_type', 'sex', 'tissue_general', 'tissue', 'cell_type', 'is_primary_data'\n", - " var: 'soma_joinid', 'feature_id', 'feature_name', 'feature_length'" + "cell_type": "markdown", + "metadata": { + "id": "gaPshWPxwzo9" + }, + "source": [ + "## Install gget" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "id": "bKTgv7hCQxS1" + }, + "outputs": [], + "source": [ + "# The cellxgene module was added to gget in release 0.25.6\n", + "!pip install -q gget >=0.25.6\n", + "import gget" ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "adata" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "Yl34ulk7ziH8" - }, - "source": [ - "A few thousand cells from CZ CELLxGENE Discover matched the filters specified above and their ACE2, ABCA1, and SLC5A1 expression matrix in lung mucus secreting and neuroendocrine cells was fetched. The `.var` and `.obs` layers contain additional information about each gene and cell, respectively:" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 143 }, - "id": "qzdc41PdTwDN", - "outputId": "99350720-4f77-4a84-8974-0a1d795e5406" - }, - "outputs": [ { - "data": { - "text/html": [ - "\n", - "
\n", - "
\n", - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
soma_joinidfeature_idfeature_namefeature_length
02192ENSG00000100170SLC5A15081
16159ENSG00000130234ACE29739
211349ENSG00000165029ABCA111343
\n", - "
\n", - " \n", - " \n", - " \n", - "\n", - " \n", - "
\n", - "
\n", - " " + "cell_type": "code", + "execution_count": 2, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "f4hLtaBPToWG", + "outputId": "0ada6679-f2f2-4fd5-9a4d-b3db101c3081" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Help on function cellxgene in module gget.gget_cellxgene:\n", + "\n", + "cellxgene(species='homo_sapiens', gene=None, ensembl=False, column_names=['dataset_id', 'assay', 'suspension_type', 'sex', 'tissue_general', 'tissue', 'cell_type'], meta_only=False, tissue=None, cell_type=None, development_stage=None, disease=None, sex=None, is_primary_data=True, dataset_id=None, tissue_general_ontology_term_id=None, tissue_general=None, assay_ontology_term_id=None, assay=None, cell_type_ontology_term_id=None, development_stage_ontology_term_id=None, disease_ontology_term_id=None, donor_id=None, self_reported_ethnicity_ontology_term_id=None, self_reported_ethnicity=None, sex_ontology_term_id=None, suspension_type=None, tissue_ontology_term_id=None, verbose=True, out=None)\n", + " Query data from CZ CELLxGENE Discover (https://cellxgene.cziscience.com/) using the\n", + " CZ CELLxGENE Discover Census (https://github.com/chanzuckerberg/cellxgene-census).\n", + " \n", + " NOTE: Querying large datasets requires a large amount of RAM. Use the cell metadata attributes\n", + " to define the (sub)dataset of interest.\n", + " The CZ CELLxGENE Discover Census recommends >16 GB of memory and a >5 Mbps internet connection.\n", + " \n", + " General args:\n", + " - species Choice of 'homo_sapiens' or 'mus_musculus'. Default: 'homo_sapiens'.\n", + " - gene Str or list of gene name(s) or Ensembl ID(s), e.g. ['ACE2', 'SLC5A1'] or ['ENSG00000130234', 'ENSG00000100170']. Default: None.\n", + " NOTE: Set ensembl=True when providing Ensembl ID(s) instead of gene name(s).\n", + " See https://cellxgene.cziscience.com/gene-expression for examples of available genes.\n", + " - ensembl True/False (default: False). Set to True when genes are provided as Ensembl IDs.\n", + " - column_names List of metadata columns to return (stored in AnnData.obs when meta_only=False).\n", + " Default: [\"dataset_id\", \"assay\", \"suspension_type\", \"sex\", \"tissue_general\", \"tissue\", \"cell_type\"]\n", + " For more options see: https://api.cellxgene.cziscience.com/curation/ui/#/ -> Schemas -> dataset\n", + " - meta_only True/False (default: False). If True, returns only metadata dataframe (corresponds to AnnData.obs).\n", + " - verbose True/False whether to print progress information. Default True.\n", + " - out If provided, saves the generated AnnData h5ad (or csv when meta_only=True) file with the specified path. Default: None.\n", + " \n", + " Cell metadata attributes:\n", + " - tissue Str or list of tissue(s), e.g. ['lung', 'blood']. Default: None.\n", + " See https://cellxgene.cziscience.com/gene-expression for examples of available tissues.\n", + " - cell_type Str or list of celltype(s), e.g. ['mucus secreting cell', 'neuroendocrine cell']. Default: None.\n", + " See https://cellxgene.cziscience.com/gene-expression and select a tissue to see examples of available celltypes.\n", + " - development_stage Str or list of development stage(s). Default: None.\n", + " - disease Str or list of disease(s). Default: None.\n", + " - sex Str or list of sex(es), e.g. 'female'. Default: None.\n", + " - is_primary_data True/False (default: True). If True, returns only the canonical instance of the cellular observation.\n", + " This is commonly set to False for meta-analyses reusing data or for secondary views of data.\n", + " - dataset_id Str or list of CELLxGENE dataset ID(s). Default: None.\n", + " - tissue_general_ontology_term_id Str or list of high-level tissue UBERON ID(s). Default: None.\n", + " Also see: https://github.com/chanzuckerberg/single-cell-data-portal/blob/9b94ccb0a2e0a8f6182b213aa4852c491f6f6aff/backend/wmg/data/tissue_mapper.py\n", + " - tissue_general Str or list of high-level tissue label(s). Default: None.\n", + " Also see: https://github.com/chanzuckerberg/single-cell-data-portal/blob/9b94ccb0a2e0a8f6182b213aa4852c491f6f6aff/backend/wmg/data/tissue_mapper.py\n", + " - tissue_ontology_term_id Str or list of tissue ontology term ID(s) as defined in the CELLxGENE dataset schema. Default: None.\n", + " - assay_ontology_term_id Str or list of assay ontology term ID(s) as defined in the CELLxGENE dataset schema. Default: None.\n", + " - assay Str or list of assay(s) as defined in the CELLxGENE dataset schema. Default: None.\n", + " - cell_type_ontology_term_id Str or list of celltype ontology term ID(s) as defined in the CELLxGENE dataset schema. Default: None.\n", + " - development_stage_ontology_term_id Str or list of development stage ontology term ID(s) as defined in the CELLxGENE dataset schema. Default: None.\n", + " - disease_ontology_term_id Str or list of disease ontology term ID(s) as defined in the CELLxGENE dataset schema. Default: None.\n", + " - donor_id Str or list of donor ID(s) as defined in the CELLxGENE dataset schema. Default: None.\n", + " - self_reported_ethnicity_ontology_term_id Str or list of self reported ethnicity ontology ID(s) as defined in the CELLxGENE dataset schema. Default: None.\n", + " - self_reported_ethnicity Str or list of self reported ethnicity as defined in the CELLxGENE dataset schema. Default: None.\n", + " - sex_ontology_term_id Str or list of sex ontology ID(s) as defined in the CELLxGENE dataset schema. Default: None.\n", + " - suspension_type Str or list of suspension type(s) as defined in the CELLxGENE dataset schema. Default: None.\n", + " \n", + " Returns AnnData object (when meta_only=False) or dataframe (when meta_only=True).\n", + "\n" + ] + } ], - "text/plain": [ - " soma_joinid feature_id feature_name feature_length\n", - "0 2192 ENSG00000100170 SLC5A1 5081\n", - "1 6159 ENSG00000130234 ACE2 9739\n", - "2 11349 ENSG00000165029 ABCA1 11343" + "source": [ + "# Display all options of the cellxgene gget module\n", + "help(gget.cellxgene)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "6j6vqbOXw9X3" + }, + "source": [ + "## Fetch an [AnnData](https://anndata.readthedocs.io/en/latest/) object by selecting gene(s), tissue(s) and cell type(s)\n", + "You can use all of the options listed above to filter for data of interest. Here, we will demonstrate the module by fetching a small dataset containing only three genes and two lung cell types:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "id": "OnDHwjjSQ2uD" + }, + "outputs": [], + "source": [ + "# Fetch AnnData object based on specified genes, tissue and cell types\n", + "adata = gget.cellxgene(\n", + " gene=[\"ACE2\", \"ABCA1\", \"SLC5A1\"], tissue=\"lung\", cell_type=[\"mucus secreting cell\", \"neuroendocrine cell\"]\n", + ")" ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "adata.var" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 424 }, - "id": "lIebiJ0CTxDn", - "outputId": "d7158323-ebf5-4545-a21a-34779eed5561" - }, - "outputs": [ { - "data": { - "text/html": [ - "\n", - "
\n", - "
\n", - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
dataset_idassaysuspension_typesextissue_generaltissuecell_typeis_primary_data
0d8da613f-e681-4c69-b463-e94f5e66847f10x 3' v3nucleusfemalelunglungmucus secreting cellTrue
1d8da613f-e681-4c69-b463-e94f5e66847f10x 3' v3nucleusfemalelunglungmucus secreting cellTrue
2d8da613f-e681-4c69-b463-e94f5e66847f10x 3' v3nucleusfemalelunglungmucus secreting cellTrue
3d8da613f-e681-4c69-b463-e94f5e66847f10x 3' v3nucleusfemalelunglungmucus secreting cellTrue
4d8da613f-e681-4c69-b463-e94f5e66847f10x 3' v3nucleusfemalelunglungmucus secreting cellTrue
...........................
33178c42cfd0-0b0a-46d5-910c-fc833d83c45e10x 3' v2cellfemalelunglungmucus secreting cellTrue
33188c42cfd0-0b0a-46d5-910c-fc833d83c45e10x 3' v2cellfemalelunglungmucus secreting cellTrue
33198c42cfd0-0b0a-46d5-910c-fc833d83c45e10x 3' v2cellfemalelunglungmucus secreting cellTrue
33208c42cfd0-0b0a-46d5-910c-fc833d83c45e10x 3' v2cellfemalelunglungmucus secreting cellTrue
33218c42cfd0-0b0a-46d5-910c-fc833d83c45e10x 3' v2cellfemalelunglungmucus secreting cellTrue
\n", - "

3322 rows × 8 columns

\n", - "
\n", - " \n", - " \n", - " \n", - "\n", - " \n", - "
\n", - "
\n", - " " + "cell_type": "markdown", + "metadata": { + "id": "6krDnFMLyeRl" + }, + "source": [ + "Let's look at some of the features of the AnnData object we just fetched:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "MqZM-2uNTt1L", + "outputId": "5e3a4de5-efe6-405e-f98c-c697094a485c" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "AnnData object with n_obs × n_vars = 3322 × 3\n", + " obs: 'dataset_id', 'assay', 'suspension_type', 'sex', 'tissue_general', 'tissue', 'cell_type', 'is_primary_data'\n", + " var: 'soma_joinid', 'feature_id', 'feature_name', 'feature_length'" + ] + }, + "metadata": {}, + "execution_count": 4 + } ], - "text/plain": [ - " dataset_id assay suspension_type sex \\\n", - "0 d8da613f-e681-4c69-b463-e94f5e66847f 10x 3' v3 nucleus female \n", - "1 d8da613f-e681-4c69-b463-e94f5e66847f 10x 3' v3 nucleus female \n", - "2 d8da613f-e681-4c69-b463-e94f5e66847f 10x 3' v3 nucleus female \n", - "3 d8da613f-e681-4c69-b463-e94f5e66847f 10x 3' v3 nucleus female \n", - "4 d8da613f-e681-4c69-b463-e94f5e66847f 10x 3' v3 nucleus female \n", - "... ... ... ... ... \n", - "3317 8c42cfd0-0b0a-46d5-910c-fc833d83c45e 10x 3' v2 cell female \n", - "3318 8c42cfd0-0b0a-46d5-910c-fc833d83c45e 10x 3' v2 cell female \n", - "3319 8c42cfd0-0b0a-46d5-910c-fc833d83c45e 10x 3' v2 cell female \n", - "3320 8c42cfd0-0b0a-46d5-910c-fc833d83c45e 10x 3' v2 cell female \n", - "3321 8c42cfd0-0b0a-46d5-910c-fc833d83c45e 10x 3' v2 cell female \n", - "\n", - " tissue_general tissue cell_type is_primary_data \n", - "0 lung lung mucus secreting cell True \n", - "1 lung lung mucus secreting cell True \n", - "2 lung lung mucus secreting cell True \n", - "3 lung lung mucus secreting cell True \n", - "4 lung lung mucus secreting cell True \n", - "... ... ... ... ... \n", - "3317 lung lung mucus secreting cell True \n", - "3318 lung lung mucus secreting cell True \n", - "3319 lung lung mucus secreting cell True \n", - "3320 lung lung mucus secreting cell True \n", - "3321 lung lung mucus secreting cell True \n", - "\n", - "[3322 rows x 8 columns]" + "source": [ + "adata" ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "adata.obs" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "e4zaccqDUVon" - }, - "source": [ - "## Plot a dot plot similar to those shown on the CZ CELLxGENE Discover [Gene Expression](https://cellxgene.cziscience.com/gene-expression)\n", - "Using the data we just fetched, we can plot a dot plot using [scanpy](https://scanpy.readthedocs.io/en/stable/):" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "id": "qGHq2q3wT3gw" - }, - "outputs": [], - "source": [ - "import scanpy as sc\n", - "\n", - "# retina increases the resolution of plots displayed in notebooks\n", - "%config InlineBackend.figure_format=\"retina\"" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 283 }, - "id": "p1FTT-OiUa4k", - "outputId": "ab63ae62-8055-451a-83cf-ab9250a5842a" - }, - "outputs": [ { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAr4AAAIVCAYAAAA3XPxYAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAB7CAAAewgFu0HU+AACUz0lEQVR4nOzdd1QU198G8GepSy8CAtIEFBtWwIKKPbGbxGiMBUuMXWNNNdbkTewlRn8xEVuMRmPUqImJscWKGlEsiIIFFRULAtLZ+/6BO2Fll7qw4D6fcziBmTt3vjO7wYfZO3dkQggBIiIiIqJXnIGuCyAiIiIiKg8MvkRERESkFxh8iYiIiEgvMPgSERERkV5g8CUiIiIivcDgS0RERER6gcGXiIiIiPQCgy8RERER6QUGXyIiIiLSCwy+RERERKQXGHyJiIiISC8w+BIRERGRXmDwJSIiIiK9wOBLRERERHqBwZeIiIiI9AKDLxERERHpBQZfIiIiItILDL5EREREpBcYfImIiIhILzD4EhEREZFeYPAlIiIiIr3A4EtEREREeoHBl4iIiIj0AoMvEREREekFBl8iIiIi0gsMvkRERESkFxh8iYiIiEgvMPgSERERkV5g8CUiIiIivcDgS0RERER6gcGXiIiIiPQCgy8RERER6QUGXyIiIiLSCwy+RERERKQXGHyJiIiISC8w+BIRERGRXmDwJSIiIiK9wOBLRERERHqBwZeIiIiI9AKDLxERERHpBQZfIiIiItILDL5EREREpBcYfImIiIhILzD4EhEREZFeYPAlIiIiIr3A4EtEREREeoHBl4iIiIj0AoMvEREREekFBl8iIiIi0gsMvkRERESkFxh8iYiIiEgvMPgSERERkV5g8CUiIiIivcDgS0RERER6gcGXiIiIiPQCgy8RERER6QUGXyIiIiLSCwy+RERERKQXGHyJiIiISC8w+BIRERGRXmDwJSIiIiK9wOBLRERERHqBwZeIiIiI9AKDLxERERHpBQZfIiIiItILDL5EREREpBcYfImIiIhILzD4EhEREZFeYPAlIiIiIr3A4EtEREREeoHBl4iIiIj0AoMvEREREekFBl8iIiIi0gsMvkRERESkFxh8iYiIiEgvMPgSERERkV5g8CUiIiIivcDgS0RERER6gcGXiIiIiPQCgy8RERER6QUGXyIiIiLSCwy+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\n", - "text/plain": [ - "
" + "cell_type": "markdown", + "metadata": { + "id": "Yl34ulk7ziH8" + }, + "source": [ + "A few thousand cells from CZ CELLxGENE Discover matched the filters specified above and their ACE2, ABCA1, and SLC5A1 expression matrix in lung mucus secreting and neuroendocrine cells was fetched. The `.var` and `.obs` layers contain additional information about each gene and cell, respectively:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 143 + }, + "id": "qzdc41PdTwDN", + "outputId": "99350720-4f77-4a84-8974-0a1d795e5406" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " soma_joinid feature_id feature_name feature_length\n", + "0 2192 ENSG00000100170 SLC5A1 5081\n", + "1 6159 ENSG00000130234 ACE2 9739\n", + "2 11349 ENSG00000165029 ABCA1 11343" + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
soma_joinidfeature_idfeature_namefeature_length
02192ENSG00000100170SLC5A15081
16159ENSG00000130234ACE29739
211349ENSG00000165029ABCA111343
\n", + "
\n", + " \n", + " \n", + " \n", + "\n", + " \n", + "
\n", + "
\n", + " " + ] + }, + "metadata": {}, + "execution_count": 5 + } + ], + "source": [ + "adata.var" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 424 + }, + "id": "lIebiJ0CTxDn", + "outputId": "d7158323-ebf5-4545-a21a-34779eed5561" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " dataset_id assay suspension_type sex \\\n", + "0 d8da613f-e681-4c69-b463-e94f5e66847f 10x 3' v3 nucleus female \n", + "1 d8da613f-e681-4c69-b463-e94f5e66847f 10x 3' v3 nucleus female \n", + "2 d8da613f-e681-4c69-b463-e94f5e66847f 10x 3' v3 nucleus female \n", + "3 d8da613f-e681-4c69-b463-e94f5e66847f 10x 3' v3 nucleus female \n", + "4 d8da613f-e681-4c69-b463-e94f5e66847f 10x 3' v3 nucleus female \n", + "... ... ... ... ... \n", + "3317 8c42cfd0-0b0a-46d5-910c-fc833d83c45e 10x 3' v2 cell female \n", + "3318 8c42cfd0-0b0a-46d5-910c-fc833d83c45e 10x 3' v2 cell female \n", + "3319 8c42cfd0-0b0a-46d5-910c-fc833d83c45e 10x 3' v2 cell female \n", + "3320 8c42cfd0-0b0a-46d5-910c-fc833d83c45e 10x 3' v2 cell female \n", + "3321 8c42cfd0-0b0a-46d5-910c-fc833d83c45e 10x 3' v2 cell female \n", + "\n", + " tissue_general tissue cell_type is_primary_data \n", + "0 lung lung mucus secreting cell True \n", + "1 lung lung mucus secreting cell True \n", + "2 lung lung mucus secreting cell True \n", + "3 lung lung mucus secreting cell True \n", + "4 lung lung mucus secreting cell True \n", + "... ... ... ... ... \n", + "3317 lung lung mucus secreting cell True \n", + "3318 lung lung mucus secreting cell True \n", + "3319 lung lung mucus secreting cell True \n", + "3320 lung lung mucus secreting cell True \n", + "3321 lung lung mucus secreting cell True \n", + "\n", + "[3322 rows x 8 columns]" + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
dataset_idassaysuspension_typesextissue_generaltissuecell_typeis_primary_data
0d8da613f-e681-4c69-b463-e94f5e66847f10x 3' v3nucleusfemalelunglungmucus secreting cellTrue
1d8da613f-e681-4c69-b463-e94f5e66847f10x 3' v3nucleusfemalelunglungmucus secreting cellTrue
2d8da613f-e681-4c69-b463-e94f5e66847f10x 3' v3nucleusfemalelunglungmucus secreting cellTrue
3d8da613f-e681-4c69-b463-e94f5e66847f10x 3' v3nucleusfemalelunglungmucus secreting cellTrue
4d8da613f-e681-4c69-b463-e94f5e66847f10x 3' v3nucleusfemalelunglungmucus secreting cellTrue
...........................
33178c42cfd0-0b0a-46d5-910c-fc833d83c45e10x 3' v2cellfemalelunglungmucus secreting cellTrue
33188c42cfd0-0b0a-46d5-910c-fc833d83c45e10x 3' v2cellfemalelunglungmucus secreting cellTrue
33198c42cfd0-0b0a-46d5-910c-fc833d83c45e10x 3' v2cellfemalelunglungmucus secreting cellTrue
33208c42cfd0-0b0a-46d5-910c-fc833d83c45e10x 3' v2cellfemalelunglungmucus secreting cellTrue
33218c42cfd0-0b0a-46d5-910c-fc833d83c45e10x 3' v2cellfemalelunglungmucus secreting cellTrue
\n", + "

3322 rows × 8 columns

\n", + "
\n", + " \n", + " \n", + " \n", + "\n", + " \n", + "
\n", + "
\n", + " " + ] + }, + "metadata": {}, + "execution_count": 6 + } + ], + "source": [ + "adata.obs" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "e4zaccqDUVon" + }, + "source": [ + "## Plot a dot plot similar to those shown on the CZ CELLxGENE Discover [Gene Expression](https://cellxgene.cziscience.com/gene-expression)\n", + "Using the data we just fetched, we can plot a dot plot using [scanpy](https://scanpy.readthedocs.io/en/stable/):" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "id": "qGHq2q3wT3gw" + }, + "outputs": [], + "source": [ + "import scanpy as sc\n", + "\n", + "# retina increases the resolution of plots displayed in notebooks\n", + "%config InlineBackend.figure_format=\"retina\"" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 283 + }, + "id": "p1FTT-OiUa4k", + "outputId": "ab63ae62-8055-451a-83cf-ab9250a5842a" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAr4AAAIVCAYAAAA3XPxYAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAB7CAAAewgFu0HU+AACUz0lEQVR4nOzdd1QU198G8GepSy8CAtIEFBtWwIKKPbGbxGiMBUuMXWNNNdbkTewlRn8xEVuMRmPUqImJscWKGlEsiIIFFRULAtLZ+/6BO2Fll7qw4D6fcziBmTt3vjO7wYfZO3dkQggBIiIiIqJXnIGuCyAiIiIiKg8MvkRERESkFxh8iYiIiEgvMPgSERERkV5g8CUiIiIivcDgS0RERER6gcGXiIiIiPQCgy8RERER6QUGXyIiIiLSCwy+RERERKQXGHyJiIiISC8w+BIRERGRXmDwJSIiIiK9wOBLRERERHqBwZeIiIiI9AKDLxERERHpBQZfIiIiItILDL5EREREpBcYfImIiIhILzD4EhEREZFeYPAlIiIiIr3A4EtEREREeoHBl4iIiIj0AoMvEREREekFBl8iIiIi0gsMvkRERESkFxh8iYiIiEgvMPgSERERkV5g8CUiIiIivcDgS0RERER6gcGXiIiIiPQCgy8RERER6QUGXyIiIiLSCwy+RERERKQXGHyJiIiISC8w+BIRERGRXmDwJSIiIiK9wOBLRERERHqBwZeIiIiI9AKDLxERERHpBQZfIiIiItILDL5EREREpBcYfImIiIhILzD4EhEREZFeYPAlIiIiIr3A4EtEREREeoHBl4iIiIj0AoMvEREREekFBl8iIiIi0gsMvkRERESkFxh8iYiIiEgvMPgSERERkV5g8CUiIiIivcDgS0RERER6gcGXiIiIiPQCgy8RERER6QUGXyIiIiLSCwy+RERERKQXGHyJiIiISC8w+BIRERGRXmDwJSIiIiK9wOBLRERERHqBwZeIiIiI9AKDLxERERHpBQZfIiIiItILDL5EREREpBcYfImIiIhILzD4EhEREZFeYPAlIiIiIr3A4EtEREREeoHBl4iIiIj0AoMvEREREekFBl8iIiIi0gsMvkRERESkFxh8iYiIiEgvMPgSERERkV5g8CUiIiIivcDgS0RERER6gcGXiIiIiPQCgy8RERER6QUGXyIiIiLSCwy+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\n" + }, + "metadata": { + "image/png": { + "width": 351, + "height": 266 + } + } + } + ], + "source": [ + "sc.pl.dotplot(adata, adata.var[\"feature_name\"].values, groupby=\"cell_type\", gene_symbols=\"feature_name\")" ] - }, - "metadata": { - "image/png": { - "height": 266, - "width": 351 - } - }, - "output_type": "display_data" - } - ], - "source": [ - "sc.pl.dotplot(adata, adata.var[\"feature_name\"].values, groupby=\"cell_type\", gene_symbols=\"feature_name\")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "lIqvA3pc0iJA" - }, - "source": [ - "## Fetch only cell metadata (corresponds to AnnData.obs)\n", - "By setting `meta_only=True` and again filtering by the cell metadata attributes listed above, you can also fetch only the cell metadata:" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 424 }, - "id": "RQJyn-mKU_oh", - "outputId": "4df93c62-d44c-4720-f96a-5d5c677aab68" - }, - "outputs": [ { - "data": { - "text/html": [ - "\n", - "
\n", - "
\n", - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
dataset_idassaysuspension_typesextissue_generaltissuecell_typeis_primary_data
0047d57f2-4d14-45de-aa98-336c6f58375010x 3' v2cellunknownlunglungmesenchymal stem cellTrue
1047d57f2-4d14-45de-aa98-336c6f58375010x 3' v2cellunknownlunglungprogenitor cellTrue
2047d57f2-4d14-45de-aa98-336c6f58375010x 3' v2cellunknownlunglungmesenchymal cellTrue
3047d57f2-4d14-45de-aa98-336c6f58375010x 3' v2cellunknownlunglungmesenchymal stem cellTrue
4047d57f2-4d14-45de-aa98-336c6f58375010x 3' v2cellunknownlunglungmesenchymal cellTrue
...........................
9754748b37086-25f7-4ecd-be66-f5bb378e3aea10x 3' v2cellmalelunglungfibroblast of lungTrue
9754848b37086-25f7-4ecd-be66-f5bb378e3aea10x 3' v2cellmalelunglungnatural killer cellTrue
9754948b37086-25f7-4ecd-be66-f5bb378e3aea10x 3' v2cellmalelunglungpulmonary interstitial fibroblastTrue
9755048b37086-25f7-4ecd-be66-f5bb378e3aea10x 3' v2cellmalelunglungadventitial cellTrue
9755148b37086-25f7-4ecd-be66-f5bb378e3aea10x 3' v2cellmalelunglungfibroblast of lungTrue
\n", - "

97552 rows × 8 columns

\n", - "
\n", - " \n", - " \n", - " \n", - "\n", - " \n", - "
\n", - "
\n", - " " + "cell_type": "markdown", + "metadata": { + "id": "lIqvA3pc0iJA" + }, + "source": [ + "## Fetch only cell metadata (corresponds to AnnData.obs)\n", + "By setting `meta_only=True` and again filtering by the cell metadata attributes listed above, you can also fetch only the cell metadata:" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 424 + }, + "id": "RQJyn-mKU_oh", + "outputId": "4df93c62-d44c-4720-f96a-5d5c677aab68" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " dataset_id assay suspension_type \\\n", + "0 047d57f2-4d14-45de-aa98-336c6f583750 10x 3' v2 cell \n", + "1 047d57f2-4d14-45de-aa98-336c6f583750 10x 3' v2 cell \n", + "2 047d57f2-4d14-45de-aa98-336c6f583750 10x 3' v2 cell \n", + "3 047d57f2-4d14-45de-aa98-336c6f583750 10x 3' v2 cell \n", + "4 047d57f2-4d14-45de-aa98-336c6f583750 10x 3' v2 cell \n", + "... ... ... ... \n", + "97547 48b37086-25f7-4ecd-be66-f5bb378e3aea 10x 3' v2 cell \n", + "97548 48b37086-25f7-4ecd-be66-f5bb378e3aea 10x 3' v2 cell \n", + "97549 48b37086-25f7-4ecd-be66-f5bb378e3aea 10x 3' v2 cell \n", + "97550 48b37086-25f7-4ecd-be66-f5bb378e3aea 10x 3' v2 cell \n", + "97551 48b37086-25f7-4ecd-be66-f5bb378e3aea 10x 3' v2 cell \n", + "\n", + " sex tissue_general tissue cell_type \\\n", + "0 unknown lung lung mesenchymal stem cell \n", + "1 unknown lung lung progenitor cell \n", + "2 unknown lung lung mesenchymal cell \n", + "3 unknown lung lung mesenchymal stem cell \n", + "4 unknown lung lung mesenchymal cell \n", + "... ... ... ... ... \n", + "97547 male lung lung fibroblast of lung \n", + "97548 male lung lung natural killer cell \n", + "97549 male lung lung pulmonary interstitial fibroblast \n", + "97550 male lung lung adventitial cell \n", + "97551 male lung lung fibroblast of lung \n", + "\n", + " is_primary_data \n", + "0 True \n", + "1 True \n", + "2 True \n", + "3 True \n", + "4 True \n", + "... ... \n", + "97547 True \n", + "97548 True \n", + "97549 True \n", + "97550 True \n", + "97551 True \n", + "\n", + "[97552 rows x 8 columns]" + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
dataset_idassaysuspension_typesextissue_generaltissuecell_typeis_primary_data
0047d57f2-4d14-45de-aa98-336c6f58375010x 3' v2cellunknownlunglungmesenchymal stem cellTrue
1047d57f2-4d14-45de-aa98-336c6f58375010x 3' v2cellunknownlunglungprogenitor cellTrue
2047d57f2-4d14-45de-aa98-336c6f58375010x 3' v2cellunknownlunglungmesenchymal cellTrue
3047d57f2-4d14-45de-aa98-336c6f58375010x 3' v2cellunknownlunglungmesenchymal stem cellTrue
4047d57f2-4d14-45de-aa98-336c6f58375010x 3' v2cellunknownlunglungmesenchymal cellTrue
...........................
9754748b37086-25f7-4ecd-be66-f5bb378e3aea10x 3' v2cellmalelunglungfibroblast of lungTrue
9754848b37086-25f7-4ecd-be66-f5bb378e3aea10x 3' v2cellmalelunglungnatural killer cellTrue
9754948b37086-25f7-4ecd-be66-f5bb378e3aea10x 3' v2cellmalelunglungpulmonary interstitial fibroblastTrue
9755048b37086-25f7-4ecd-be66-f5bb378e3aea10x 3' v2cellmalelunglungadventitial cellTrue
9755148b37086-25f7-4ecd-be66-f5bb378e3aea10x 3' v2cellmalelunglungfibroblast of lungTrue
\n", + "

97552 rows × 8 columns

\n", + "
\n", + " \n", + " \n", + " \n", + "\n", + " \n", + "
\n", + "
\n", + " " + ] + }, + "metadata": {}, + "execution_count": 9 + } ], - "text/plain": [ - " dataset_id assay suspension_type \\\n", - "0 047d57f2-4d14-45de-aa98-336c6f583750 10x 3' v2 cell \n", - "1 047d57f2-4d14-45de-aa98-336c6f583750 10x 3' v2 cell \n", - "2 047d57f2-4d14-45de-aa98-336c6f583750 10x 3' v2 cell \n", - "3 047d57f2-4d14-45de-aa98-336c6f583750 10x 3' v2 cell \n", - "4 047d57f2-4d14-45de-aa98-336c6f583750 10x 3' v2 cell \n", - "... ... ... ... \n", - "97547 48b37086-25f7-4ecd-be66-f5bb378e3aea 10x 3' v2 cell \n", - "97548 48b37086-25f7-4ecd-be66-f5bb378e3aea 10x 3' v2 cell \n", - "97549 48b37086-25f7-4ecd-be66-f5bb378e3aea 10x 3' v2 cell \n", - "97550 48b37086-25f7-4ecd-be66-f5bb378e3aea 10x 3' v2 cell \n", - "97551 48b37086-25f7-4ecd-be66-f5bb378e3aea 10x 3' v2 cell \n", - "\n", - " sex tissue_general tissue cell_type \\\n", - "0 unknown lung lung mesenchymal stem cell \n", - "1 unknown lung lung progenitor cell \n", - "2 unknown lung lung mesenchymal cell \n", - "3 unknown lung lung mesenchymal stem cell \n", - "4 unknown lung lung mesenchymal cell \n", - "... ... ... ... ... \n", - "97547 male lung lung fibroblast of lung \n", - "97548 male lung lung natural killer cell \n", - "97549 male lung lung pulmonary interstitial fibroblast \n", - "97550 male lung lung adventitial cell \n", - "97551 male lung lung fibroblast of lung \n", - "\n", - " is_primary_data \n", - "0 True \n", - "1 True \n", - "2 True \n", - "3 True \n", - "4 True \n", - "... ... \n", - "97547 True \n", - "97548 True \n", - "97549 True \n", - "97550 True \n", - "97551 True \n", - "\n", - "[97552 rows x 8 columns]" + "source": [ + "df = gget.cellxgene(\n", + " meta_only=True,\n", + " gene=\"ENSMUSG00000015405\",\n", + " ensembl=True, # Setting 'ensembl=True' here since the gene is passed as an Ensembl ID\n", + " tissue=\"lung\",\n", + " species=\"mus_musculus\", # Let's switch up the species\n", + ")\n", + "\n", + "df" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "2QjJEJdS-He7" + }, + "source": [ + "## Use [gget cellxgene](https://pachterlab.github.io/gget/cellxgene.html) from the command line\n", + "All gget modules support use from the command line. Note that the command line interface requires the `-o/--out` argument to specify a path to save the fetched data. Here are the command line versions of the queries demonstrated above:" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "id": "hDcS0fZ--BnB" + }, + "outputs": [], + "source": [ + "# # Fetch AnnData object based on specified genes, tissue and cell types\n", + "# !gget cellxgene --gene ACE2 ABCA1 SLC5A1 --tissue lung --cell_type 'mucus secreting cell' 'neuroendocrine cell' -o example_adata.h5ad" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "id": "f683tvIg-oEz" + }, + "outputs": [], + "source": [ + "# # Fetch only metadata\n", + "# !gget cellxgene --meta_only --gene ENSMUSG00000015405 --ensembl --tissue lung --species mus_musculus -o example_meta.csv" ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" } - ], - "source": [ - "df = gget.cellxgene(\n", - " meta_only=True,\n", - " gene=\"ENSMUSG00000015405\",\n", - " ensembl=True, # Setting 'ensembl=True' here since the gene is passed as an Ensembl ID\n", - " tissue=\"lung\",\n", - " species=\"mus_musculus\", # Let's switch up the species\n", - ")\n", - "\n", - "df" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "2QjJEJdS-He7" - }, - "source": [ - "## Use [gget cellxgene](https://pachterlab.github.io/gget/cellxgene.html) from the command line\n", - "All gget modules support use from the command line. Note that the command line interface requires the `-o/--out` argument to specify a path to save the fetched data. Here are the command line versions of the queries demonstrated above:" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": { - "id": "hDcS0fZ--BnB" - }, - "outputs": [], - "source": [ - "# # Fetch AnnData object based on specified genes, tissue and cell types\n", - "# !gget cellxgene --gene ACE2 ABCA1 SLC5A1 --tissue lung --cell_type 'mucus secreting cell' 'neuroendocrine cell' -o example_adata.h5ad" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": { - "id": "f683tvIg-oEz" - }, - "outputs": [], - "source": [ - "# # Fetch only metadata\n", - "# !gget cellxgene --meta_only --gene ENSMUSG00000015405 --ensembl --tissue lung --species mus_musculus -o example_meta.csv" - ] - } - ], - "metadata": { - "colab": { - "include_colab_link": true, - "provenance": [] - }, - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" + ], + "metadata": { + "colab": { + "provenance": [], + "include_colab_link": true + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.10" + } }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.10" - } - }, - "nbformat": 4, - "nbformat_minor": 0 + "nbformat": 4, + "nbformat_minor": 0 }