{
"cells": [
{
"cell_type": "markdown",
"id": "bfcce7e2-f634-4ff7-9d58-ef54f0ab1d21",
"metadata": {
"tags": []
},
"source": [
"\n",
" \n",
""
]
},
{
"cell_type": "markdown",
"id": "83c79e29-152e-4b40-b093-5055175f0c54",
"metadata": {
"tags": []
},
"source": [
"Before you start, make sure to set your runtime type to GPU in colab."
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "8ee721de-3fd0-4cab-81bc-5298e4774bb9",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"# Install SOFA + dependencies\n",
"!pip install --quiet biosofa"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "869be535-67b2-42ef-999e-06f4dcbfa11d",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"--2024-11-06 09:37:23-- https://datasets.cellxgene.cziscience.com/484dbc33-c7dc-4e5e-9954-7f2a1cc849bc.h5ad\n",
"Resolving datasets.cellxgene.cziscience.com (datasets.cellxgene.cziscience.com)... 18.172.112.45, 18.172.112.61, 18.172.112.87, ...\n",
"Connecting to datasets.cellxgene.cziscience.com (datasets.cellxgene.cziscience.com)|18.172.112.45|:443... connected.\n",
"HTTP request sent, awaiting response... 200 OK\n",
"Length: 405964465 (387M) [binary/octet-stream]\n",
"Saving to: ‘484dbc33-c7dc-4e5e-9954-7f2a1cc849bc.h5ad’\n",
"\n",
"-c7dc-4e5e-9954-7f2 24%[===> ] 95.62M 22.3MB/s eta 17s ^C\n",
"--2024-11-06 09:37:30-- https://datasets.cellxgene.cziscience.com/fecbd715-66f5-48ae-8c39-51a76d7f1d3d.h5ad\n",
"Resolving datasets.cellxgene.cziscience.com (datasets.cellxgene.cziscience.com)... 18.172.112.45, 18.172.112.61, 18.172.112.87, ...\n",
"Connecting to datasets.cellxgene.cziscience.com (datasets.cellxgene.cziscience.com)|18.172.112.45|:443... connected.\n",
"HTTP request sent, awaiting response... 200 OK\n",
"Length: 906950703 (865M) [binary/octet-stream]\n",
"Saving to: ‘fecbd715-66f5-48ae-8c39-51a76d7f1d3d.h5ad’\n",
"\n",
" fecbd715-66f5-4 2%[ ] 20.59M 12.2MB/s ^C\n"
]
}
],
"source": [
"# download data \n",
"!wget https://datasets.cellxgene.cziscience.com/484dbc33-c7dc-4e5e-9954-7f2a1cc849bc.h5ad # RNA-Seq\n",
"!mv 484dbc33-c7dc-4e5e-9954-7f2a1cc849bc.h5ad rna.h5ad\n",
"!wget https://datasets.cellxgene.cziscience.com/fecbd715-66f5-48ae-8c39-51a76d7f1d3d.h5ad # ATAC-Seq\n",
"!mv fecbd715-66f5-48ae-8c39-51a76d7f1d3d.h5ad atac.h5ad"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "c35b434b-71b8-4f6e-bab9-432e675dc720",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import warnings\n",
"warnings.filterwarnings('ignore')\n",
"\n",
"import sofa \n",
"import torch\n",
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"import matplotlib\n",
"from sklearn.preprocessing import StandardScaler, OneHotEncoder\n",
"from muon import MuData\n",
"from sklearn.manifold import TSNE\n",
"import matplotlib.patches as mpatches\n",
"import scanpy as sc\n",
"import anndata as ad\n",
"from anndata import AnnData\n",
"import muon\n",
"from matplotlib import colors as mp_colors"
]
},
{
"cell_type": "markdown",
"id": "0b8c6411-bf16-4db0-a582-2a730f42c50f",
"metadata": {},
"source": [
"# Analysis of a single-cell multiome data set\n",
"\n",
"## Introduction\n",
"\n",
"In this notebook we will explore how `SOFA` can be used to analyze multi-omics data from the DepMap [[1,2,3,4,5]](#1,#2,#3,#4,#5). \n",
"Here we give a brief introduction what the SOFA model does and what it can be used for. For a more \n",
"detailed description please refer to our preprint: https://doi.org/10.1101/2024.10.10.617527 \n",
"\n",
"\n",
"### The SOFA model\n",
"Given a set of real-valued data\n",
"matrices containing multi-omic measurements from overlapping samples (also called views),\n",
"along with sample-level guiding variables that capture additional properties such as batches\n",
"or mutational profiles, SOFA extracts an interpretable lower-dimensional data representation,\n",
"consisting of a shared factor matrix and modality-specific loading matrices. The goal of these \n",
"factors is to explain the major axes of variation in the data. SOFA explicitly assigns a subset of factors \n",
"to explain both the multi-omics data and the guiding\n",
"variables (guided factors), while preserving another subset of factors exclusively\n",
"for explaining the multi-omics data (unguided factors). Importantly, this feature allows the\n",
"analyst to discern variation that is driven by known sources from novel, unexplained sources\n",
"of variability.\n",
"\n",
"#### Interpretation of the factors (Z)\n",
"Analogous to the interpretation of factors in PCA, SOFA factors ordinate samples along a\n",
"zero-centered axis, where samples with opposing signs exhibit contrasting phenotypes along\n",
"the inferred axis of variation, and the absolute value of the factor indicates the strength of the\n",
"phenotype. Importantly, SOFA partitions the factors of the low-rank decomposition into\n",
"guided and unguided factors: the guided factors are linked to specific guiding variables,\n",
"while the unguided factors capture global, yet unexplained, sources of variability in the data. \n",
"The factor values can be used in downstream analysis tasks related to the samples, such as clustering \n",
"or survival analysis. The factor values are called Z in SOFA.\n",
"\n",
"#### Interpretation of the loading weights (W)\n",
"SOFA’s loading weights indicate the importance of each feature for its respective factor,\n",
"thereby enabling the interpretation of SOFA factors. Loading weights close to zero indicate\n",
"that a feature has little to no importance for the respective factor, while large magnitudes\n",
"suggest strong relevance. The sign of the loading weight aligns with its corresponding factor,\n",
"meaning that positive loading weights indicate higher feature levels in samples with positive\n",
"factor values, and negative loading weights indicate higher feature levels in samples with\n",
"negative factor values. The top loading weights can be simply inspected or used in downstream analysis such as gene set \n",
"enrichment analysis. The factor values are called W in SOFA.\n",
"\n",
"#### Supported data\n",
"SOFA expects a set of matrices containing omics measurements with matching and aligned samples and different features. \n",
"Currently SOFA only supports Gaussian likelihoods, for the multi-omics data. \n",
"Data should therefore be appropriately normalized according to\n",
"its omics modality. Additionally, data should be centered and scaled.\n",
"\n",
"\n",
"For the guiding variables SOFA supports Gaussian, Bernoulli and Categorical likelihoods. Guiding variables\n",
"can therefore be continuous, binary or categorical. Guiding variables should be vectors with matching samples with \n",
"the multi-omics data.\n",
"\n",
"In SOFA the multi-omics data is denoted as X and the guiding variables as Y.\n",
"\n",
"\n",
"### Single-cell multiome data set of the human cortex\n",
"The data we analyze in this notebook was generated by [[1]](#1). The authors simultaneously profiled the transcriptome (RNA) and chromatin accessibility (ATAC) of 45549 single cells of the human cerebral cortex at 6 different developmental stages. The authors identified 13 different cell types in the data. \n",
"We will fit a SOFA model with 15 factors and guide the first 13 factors with a different cell type label. The 13 guided factors will explain the molecular differences between the cell types, while the 2 unguided factors are free to explain within cell type variation.\n",
"We will first load the data and do some basic preprocessing, then fit a SOFA model and perform various downstream analyses. \n",
"\n",
"\n",
"\n",
"[1] \n",
"Zhu, K. et al. Multi-omic profiling of the developing human cerebral cortex at the single-cell level. Sci Adv 9, eadg3754 (2023)."
]
},
{
"cell_type": "markdown",
"id": "504b07e1-d3bb-4a86-a942-7b0b72a42ebe",
"metadata": {},
"source": [
"## Load and preprocess"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "bf6a223e-1d72-4ed0-a0b5-eca6297e25d2",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"adata_rna= sc.read_h5ad(\"rna.h5ad\") "
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "22a29adc-f1ad-4477-b344-c8b117871f74",
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"AnnData object with n_obs × n_vars = 45549 × 30113\n",
" obs: 'author_cell_type', 'age_group', 'donor_id', 'nCount_RNA', 'nFeature_RNA', 'nCount_ATAC', 'nFeature_ATAC', 'TSS_percentile', 'nucleosome_signal', 'percent_mt', 'assay_ontology_term_id', 'cell_type_ontology_term_id', 'development_stage_ontology_term_id', 'disease_ontology_term_id', 'self_reported_ethnicity_ontology_term_id', 'organism_ontology_term_id', 'sex_ontology_term_id', 'tissue_ontology_term_id', 'suspension_type', 'is_primary_data', 'batch', 'tissue_type', 'cell_type', 'assay', 'disease', 'organism', 'sex', 'tissue', 'self_reported_ethnicity', 'development_stage', 'observation_joinid'\n",
" var: 'feature_is_filtered', 'feature_name', 'feature_reference', 'feature_biotype', 'feature_length'\n",
" uns: 'batch_condition', 'citation', 'schema_reference', 'schema_version', 'title'\n",
" obsm: 'X_joint_wnn_umap', 'X_umap'"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"adata_rna"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "70fac599-541a-45d8-a299-fff308f5882c",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"# basic preprocessing\n",
"adata_rna.X = adata_rna.raw.X\n",
"# normalization to total library size\n",
"sc.pp.normalize_total(adata_rna)\n",
"# log transformation\n",
"sc.pp.log1p(adata_rna)\n"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "5db1aed8-811d-4267-a787-ea8670059cdd",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"adata_atac= sc.read_h5ad(\"atac.h5ad\")"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "72cd8d6e-94fe-44ca-bc1d-9b5670d55325",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"# select highly variable genes\n",
"sc.pp.highly_variable_genes(\n",
" adata_rna,\n",
" n_top_genes=2000,\n",
" flavor=\"seurat\",\n",
" subset=True\n",
")\n",
"sc.pp.highly_variable_genes(\n",
" adata_atac,\n",
" n_top_genes=2000,\n",
" flavor=\"seurat\",\n",
" subset=True\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "3122a30f-9435-415f-adcd-9e211f80bfa6",
"metadata": {},
"outputs": [],
"source": [
"# scale the data\n",
"sc.pp.scale(adata_rna)\n",
"sc.pp.scale(adata_atac)"
]
},
{
"cell_type": "markdown",
"id": "5732b26c-cd47-44a4-977a-855e2605f602",
"metadata": {
"tags": []
},
"source": [
"### Set up Xmdata for SOFA\n"
]
},
{
"cell_type": "markdown",
"id": "2bfedf64-61ff-464d-9d96-422426af0458",
"metadata": {
"tags": []
},
"source": [
"#### Manually\n",
"\n",
"SOFA requires the following slots in uns:\n",
"* llh: \"gaussian\" \n",
"Currently only the Gaussian likelihood for the multi-omics data is supported.\n",
"\n",
"and in obsm:\n",
"* mask: boolean vector of length number of samples that masks samples with missing values"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "95776c24-65c4-4edc-9a51-8a1b4afdf4ec",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"metadata = adata_rna.obs\n",
"adata_rna.uns[\"llh\"] = \"gaussian\"\n",
"adata_rna.X = adata_rna.X\n",
"adata_rna.obsm[\"mask\"] = ~np.any(np.isnan(adata_rna.X), axis=1)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "fa175d27-541b-4e74-ba57-e757e275af7c",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"adata_atac.uns[\"llh\"] = \"gaussian\"\n",
"adata_atac.X = adata_atac.X\n",
"adata_atac.obsm[\"mask\"] = ~np.any(np.isnan(adata_atac.X), axis=1)\n",
"\n",
"adata_rna.var_names = adata_rna.var[\"feature_name\"]\n",
"adata_atac.var_names = adata_atac.var[\"feature_name\"]"
]
},
{
"cell_type": "markdown",
"id": "c3b33445-5dc5-4eaf-ae86-085aa54a30e4",
"metadata": {
"tags": []
},
"source": [
"#### Using SOFA's sofa.tl.get_ad()\n",
"Alternatively we can use SOFA's inbuilt sofa.tl.get_ad() function to create the appropriate `AnnData` object"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "9403e080-3bce-4bf5-825e-965a77060c3f",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"# First we convert the `AnnData` objects to dataframes\n",
"rna_df = adata_rna.to_df()\n",
"atac_df = adata_atac.to_df()"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "79760024-0528-40ab-8051-333b4d15951d",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"# Then use sofa.tl.get_ad() with default parameters\n",
"adata_atac = sofa.tl.get_ad(rna_df)\n",
"adata_rna = sofa.tl.get_ad(atac_df)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "05364be1-9e03-436a-ab4c-8c3c7f51221b",
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/html": [
"
MuData object with n_obs × n_vars = 45549 × 4000\n", " 2 modalities\n", " RNA:\t45549 x 2000\n", " uns:\t'llh', 'scaling_factor'\n", " obsm:\t'mask'\n", " ATAC:\t45549 x 2000\n", " uns:\t'llh', 'scaling_factor'\n", " obsm:\t'mask'" ], "text/plain": [ "MuData object with n_obs × n_vars = 45549 × 4000\n", " 2 modalities\n", " RNA:\t45549 x 2000\n", " uns:\t'llh', 'scaling_factor'\n", " obsm:\t'mask'\n", " ATAC:\t45549 x 2000\n", " uns:\t'llh', 'scaling_factor'\n", " obsm:\t'mask'" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# wrap the individual `AnnData` objects in a `MuData`\n", "Xmdata = MuData({\"RNA\":adata_rna, \"ATAC\":adata_atac})\n", "Xmdata" ] }, { "cell_type": "markdown", "id": "c2abe170-5cf0-48c2-a349-d7adfdd306bd", "metadata": { "tags": [] }, "source": [ "### Set up Ymdata for SOFA\n", "\n", "As described in the introduction, we would like to guide the first 13 factors with the 13 cell type labels.\n", "To this end we first need to one hot encode the cell type labels. We make use of the OneHotEncoder of `scikit-learn`:" ] }, { "cell_type": "code", "execution_count": 15, "id": "4a9d7dbc-6e19-41c6-b471-1a0c28871675", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/html": [ "
\n", " | astrocyte | \n", "caudal ganglionic eminence derived interneuron | \n", "endothelial cell | \n", "glutamatergic neuron | \n", "inhibitory interneuron | \n", "medial ganglionic eminence derived interneuron | \n", "microglial cell | \n", "neural progenitor cell | \n", "oligodendrocyte | \n", "oligodendrocyte precursor cell | \n", "pericyte | \n", "radial glial cell | \n", "vascular associated smooth muscle cell | \n", "
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "1.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "
1 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "1.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "
2 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "1.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "
3 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "1.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "
4 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "1.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
45544 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "1.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "
45545 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "1.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "
45546 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "1.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "
45547 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "1.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "
45548 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "1.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "
45549 rows × 13 columns
\n", "MuData object with n_obs × n_vars = 45549 × 13\n", " 13 modalities\n", " astrocyte:\t45549 x 1\n", " uns:\t'llh', 'scaling_factor'\n", " obsm:\t'mask'\n", " caudal ganglionic eminence derived interneuron:\t45549 x 1\n", " uns:\t'llh', 'scaling_factor'\n", " obsm:\t'mask'\n", " endothelial cell:\t45549 x 1\n", " uns:\t'llh', 'scaling_factor'\n", " obsm:\t'mask'\n", " glutamatergic neuron:\t45549 x 1\n", " uns:\t'llh', 'scaling_factor'\n", " obsm:\t'mask'\n", " inhibitory interneuron:\t45549 x 1\n", " uns:\t'llh', 'scaling_factor'\n", " obsm:\t'mask'\n", " medial ganglionic eminence derived interneuron:\t45549 x 1\n", " uns:\t'llh', 'scaling_factor'\n", " obsm:\t'mask'\n", " microglial cell:\t45549 x 1\n", " uns:\t'llh', 'scaling_factor'\n", " obsm:\t'mask'\n", " neural progenitor cell:\t45549 x 1\n", " uns:\t'llh', 'scaling_factor'\n", " obsm:\t'mask'\n", " oligodendrocyte:\t45549 x 1\n", " uns:\t'llh', 'scaling_factor'\n", " obsm:\t'mask'\n", " oligodendrocyte precursor cell:\t45549 x 1\n", " uns:\t'llh', 'scaling_factor'\n", " obsm:\t'mask'\n", " pericyte:\t45549 x 1\n", " uns:\t'llh', 'scaling_factor'\n", " obsm:\t'mask'\n", " radial glial cell:\t45549 x 1\n", " uns:\t'llh', 'scaling_factor'\n", " obsm:\t'mask'\n", " vascular associated smooth muscle cell:\t45549 x 1\n", " uns:\t'llh', 'scaling_factor'\n", " obsm:\t'mask'" ], "text/plain": [ "MuData object with n_obs × n_vars = 45549 × 13\n", " 13 modalities\n", " astrocyte:\t45549 x 1\n", " uns:\t'llh', 'scaling_factor'\n", " obsm:\t'mask'\n", " caudal ganglionic eminence derived interneuron:\t45549 x 1\n", " uns:\t'llh', 'scaling_factor'\n", " obsm:\t'mask'\n", " endothelial cell:\t45549 x 1\n", " uns:\t'llh', 'scaling_factor'\n", " obsm:\t'mask'\n", " glutamatergic neuron:\t45549 x 1\n", " uns:\t'llh', 'scaling_factor'\n", " obsm:\t'mask'\n", " inhibitory interneuron:\t45549 x 1\n", " uns:\t'llh', 'scaling_factor'\n", " obsm:\t'mask'\n", " medial ganglionic eminence derived interneuron:\t45549 x 1\n", " uns:\t'llh', 'scaling_factor'\n", " obsm:\t'mask'\n", " microglial cell:\t45549 x 1\n", " uns:\t'llh', 'scaling_factor'\n", " obsm:\t'mask'\n", " neural progenitor cell:\t45549 x 1\n", " uns:\t'llh', 'scaling_factor'\n", " obsm:\t'mask'\n", " oligodendrocyte:\t45549 x 1\n", " uns:\t'llh', 'scaling_factor'\n", " obsm:\t'mask'\n", " oligodendrocyte precursor cell:\t45549 x 1\n", " uns:\t'llh', 'scaling_factor'\n", " obsm:\t'mask'\n", " pericyte:\t45549 x 1\n", " uns:\t'llh', 'scaling_factor'\n", " obsm:\t'mask'\n", " radial glial cell:\t45549 x 1\n", " uns:\t'llh', 'scaling_factor'\n", " obsm:\t'mask'\n", " vascular associated smooth muscle cell:\t45549 x 1\n", " uns:\t'llh', 'scaling_factor'\n", " obsm:\t'mask'" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# wrap dictionary as `MuData`\n", "Ymdata = MuData(cell_type_dict)\n", "Ymdata" ] }, { "cell_type": "code", "execution_count": 18, "id": "dfa9a4e3-0dc1-4320-8c34-57f5796a9a8b", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "tensor([[1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", " [0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", " [0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", " [0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", " [0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", " [0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", " [0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],\n", " [0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0.],\n", " [0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0.],\n", " [0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0.],\n", " [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0.],\n", " [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0.],\n", " [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0.]],\n", " dtype=torch.float64)" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "num_factors = 15\n", "# In order to relate factors to guiding variables we need to provide a design matrix (guiding variables x number of factors) \n", "# indicating which factor is guided by which guiding variable.\n", "# Here we just indicate that the first 6 factors are each guided by a different guiding variable:\n", "design = np.zeros((len(Ymdata.mod), num_factors))\n", "for i in range(len(Ymdata.mod)):\n", " design[i,i] = 1\n", "# convert to torch tensor to make it usable by SOFA\n", "design = torch.tensor(design)\n", "design" ] }, { "cell_type": "markdown", "id": "147125d8-fde7-42ea-ad8b-3c76940cf1c6", "metadata": {}, "source": [ "## Fit the `SOFA` model" ] }, { "cell_type": "code", "execution_count": 93, "id": "1f3cd265-7f88-49c1-a3b1-027f52d30d71", "metadata": { "tags": [] }, "outputs": [], "source": [ "model = sofa.SOFA(Xmdata = Xmdata, # the input multi-omics data \n", " num_factors=num_factors, # number of factors to infer\n", " Ymdata = Ymdata, # the input guiding variables\n", " design = design, # design matrix relating factors to guiding variables\n", " device='cuda', # set device to \"cuda\" to enable computation on the GPU, if you don't have a GPU available set it to \"cpu\"\n", " subsample=2048, # for single-cell data it can be beneficial to subsample minibatches (here of size 2048) of the data for training, this speeds up the fitting process \n", " seed=42) # set seed to get the same results every time we run it" ] }, { "cell_type": "code", "execution_count": 94, "id": "4472ee3d-6993-4ade-81e0-811a8d939ec8", "metadata": { "tags": [] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Current Elbo 2.50E+08 | Delta: -1523794: 100%|██████████| 6000/6000 [14:14<00:00, 7.02it/s] \n" ] } ], "source": [ "model.fit(n_steps=6000, lr=0.01, predict = True)" ] }, { "cell_type": "code", "execution_count": 2, "id": "59b23b32-dc8c-4e60-bca4-4d14af700a78", "metadata": { "tags": [] }, "outputs": [], "source": [ "# if we would like to save the fitted model we can save it using:\n", "#sofa.tl.save_model(model,\"brain_example_model\")\n", "\n", "# to load the model use:\n", "#model = sofa.tl.load_model(\"brain_example_model\")" ] }, { "cell_type": "markdown", "id": "6c107ac0-1580-49e3-8f45-ccabe1174963", "metadata": {}, "source": [ "## Downstream analysis\n", "\n", "\n", "### Convergence\n", "\n", "We will first assess whether the ELBO loss of SOFA has converged by plotting it over training steps" ] }, { "cell_type": "code", "execution_count": 19, "id": "a4c953f8-6446-4cc5-8454-b7377ae8f8b9", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, 'ELBO')" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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SqP9vqq2TsJKiIiILBODlEm73dtWW6dpph0RERG1BwYpE9bTw1H7PWc2JyIiMjwGKTOhUrNHioiIyNAYpMzEYN+OUpdARERkcRikTFxQV2cAgILTnBMRERkcg5SJuxWfNHeZ5oGIiIjaHoOUiZP9bzIp5igiIiLDY5Aycdl5ZQCA65U1EldCRERkeRik2kFiYiICAgIwZMiQdj/XrfmjXv8hs93PRURERLoYpNpBXFwcsrOzcfjwYalLISIionbEIEVERESkJwYpIiIiIj0xSBERERHpiUGKiIiISE8MUkRERER6YpAycU8O9QEAjBvgJXElRERElodBysT18XQEAMjAd+0REREZGoOUibNS1v8IVWqNxJUQERFZHgYpE2clr/8R1mn4sj0iIiJDY5AycUpF/S099kgREREZHoOUibNS1P8IL1yvlLgSIiIiy8MgZeLySm8CAC7fuClxJURERJaHQcrEZVwukboEIiIii8UgZeJG9HKXugQiIiKLxSBl4h4K8NR+LwSf3CMiIjIkBikTp1Tc/hGq1AxSREREhsQgZeKsFLdnNK/TcAoEIiIiQ2KQageJiYkICAjAkCFD2v1cSjl7pIiIiKTCINUO4uLikJ2djcOHD7f7ue7skUo9V9Tu5yMiIqLbGKRMnEx2O0jVskeKiIjIoBikzIj1Hb1TRERE1P4YpMzIoq2npC6BiIjIojBImZE63tojIiIyKAYpM6LWMEgREREZEoOUGaljkCIiIjIoBikzUlOnlroEIiIii8IgZUbKq+ukLoGIiMiiMEgRERER6YlBioiIiEhPDFJEREREemp1kKqrq8PixYsxePBgODg4wMHBAYMHD8ZHH30ElUrVHjUSERERGSVlaxrfvHkTDz74IFJTUxEZGYmRI0cCAE6ePInXX38dP/30E3799VfY2tq2S7FERERExqRVQSohIQGXL19Geno6goKCdLYdO3YMjzzyCBISEvDOO++0ZY1ERERERqlVt/bWrVuHJUuWNAhRABAcHIyPPvoIa9eubbPiiIiIiIxZq4LUxYsXMXTo0Ca3Dxs2DJcuXbrnooiIiIhMQauClJOTEwoLC5vcnp+fD0dHx3suilonOtBL6hKIiIgsUquC1OjRo7Fw4cImtyckJGD06NH3XBS1zp3v2Cssq5awEiIiIsvSqsHm8+fPR1hYGIYNG4b4+Hj0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", "text/plain": [ "
\n", " | Factor_1 (astrocyte) | \n", "Factor_2 (caudal ganglionic eminence derived interneuron) | \n", "Factor_3 (endothelial cell) | \n", "Factor_4 (glutamatergic neuron) | \n", "Factor_5 (inhibitory interneuron) | \n", "Factor_6 (medial ganglionic eminence derived interneuron) | \n", "Factor_7 (microglial cell) | \n", "Factor_8 (neural progenitor cell) | \n", "Factor_9 (oligodendrocyte) | \n", "Factor_10 (oligodendrocyte precursor cell) | \n", "Factor_11 (pericyte) | \n", "Factor_12 (radial glial cell) | \n", "Factor_13 (vascular associated smooth muscle cell) | \n", "Factor_14 | \n", "Factor_15 | \n", "
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
4_AAACAGCCAACACTTG-1 | \n", "0.611896 | \n", "-0.506728 | \n", "0.283791 | \n", "1.593037 | \n", "0.168398 | \n", "0.399242 | \n", "0.422193 | \n", "0.024536 | \n", "-0.414130 | \n", "-0.239863 | \n", "-0.121763 | \n", "0.381870 | \n", "0.133415 | \n", "-0.268314 | \n", "-0.236205 | \n", "
4_AAACAGCCACCAAAGG-1 | \n", "0.369894 | \n", "-0.695359 | \n", "0.196381 | \n", "1.779255 | \n", "0.204215 | \n", "0.662641 | \n", "0.385849 | \n", "-0.214301 | \n", "-0.265921 | \n", "-0.233039 | \n", "0.073905 | \n", "0.207890 | \n", "-0.089338 | \n", "-0.538529 | \n", "-0.470559 | \n", "
4_AAACAGCCATAAGTTC-1 | \n", "0.525656 | \n", "-0.576934 | \n", "0.151626 | \n", "2.239841 | \n", "0.164921 | \n", "0.566175 | \n", "0.381240 | \n", "-0.492999 | \n", "-0.334595 | \n", "-0.270106 | \n", "-0.003286 | \n", "0.406507 | \n", "-0.017237 | \n", "0.213183 | \n", "-0.319585 | \n", "
4_AAACATGCATAGTCAT-1 | \n", "0.484234 | \n", "-0.433456 | \n", "0.094686 | \n", "1.731916 | \n", "0.098722 | \n", "0.500609 | \n", "0.417679 | \n", "-0.256506 | \n", "-0.528553 | \n", "-0.414691 | \n", "-0.151233 | \n", "0.122768 | \n", "-0.096484 | \n", "-0.026044 | \n", "-0.005257 | \n", "
4_AAACATGCATTGTCAG-1 | \n", "0.473560 | \n", "-0.469949 | \n", "0.194220 | \n", "2.000594 | \n", "0.305656 | \n", "0.425527 | \n", "0.379652 | \n", "-0.437305 | \n", "-0.143152 | \n", "-0.080377 | \n", "0.052171 | \n", "0.357325 | \n", "-0.041771 | \n", "-0.080069 | \n", "-0.247479 | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
150666_TTTGTGAAGACAACAG-1 | \n", "0.338253 | \n", "0.274610 | \n", "0.021684 | \n", "-0.642276 | \n", "0.297069 | \n", "-0.107472 | \n", "0.752773 | \n", "-0.331871 | \n", "1.272615 | \n", "-0.831026 | \n", "-1.536213 | \n", "0.170395 | \n", "1.086244 | \n", "0.420269 | \n", "1.975964 | \n", "
150666_TTTGTGAAGGCTGTGC-1 | \n", "0.088728 | \n", "0.120536 | \n", "0.196474 | \n", "-0.235622 | \n", "0.401305 | \n", "0.021225 | \n", "0.439250 | \n", "-0.194579 | \n", "-1.017107 | \n", "1.676835 | \n", "-1.030105 | \n", "0.552844 | \n", "0.437842 | \n", "0.196519 | \n", "1.003077 | \n", "
150666_TTTGTGAAGTAAGAAC-1 | \n", "0.254422 | \n", "-0.270921 | \n", "0.105018 | \n", "-0.476804 | \n", "0.007705 | \n", "0.118286 | \n", "0.191205 | \n", "-0.072784 | \n", "1.845788 | \n", "-0.173360 | \n", "-0.375505 | \n", "0.115170 | \n", "0.340696 | \n", "-0.138671 | \n", "0.186792 | \n", "
150666_TTTGTGAAGTCTTGAA-1 | \n", "0.707852 | \n", "-0.214515 | \n", "0.089128 | \n", "-0.605852 | \n", "0.340981 | \n", "0.148991 | \n", "0.792436 | \n", "-0.148444 | \n", "2.024130 | \n", "-0.886393 | \n", "-1.443925 | \n", "0.235342 | \n", "0.654023 | \n", "0.699232 | \n", "1.188664 | \n", "
150666_TTTGTTGGTGATCAGC-1 | \n", "0.890338 | \n", "-0.290386 | \n", "0.247877 | \n", "-0.622976 | \n", "0.332508 | \n", "0.064684 | \n", "1.110440 | \n", "-0.020911 | \n", "2.552641 | \n", "-1.316348 | \n", "-1.953289 | \n", "0.298762 | \n", "1.031413 | \n", "1.323803 | \n", "1.993683 | \n", "
45549 rows × 15 columns
\n", "feature_name | \n", "SHOX | \n", "CSF2RA | \n", "P2RY8 | \n", "CD99 | \n", "XG | \n", "GYG2 | \n", "ARSF | \n", "MXRA5 | \n", "PRKX | \n", "STS | \n", "... | \n", "MX2 | \n", "TMPRSS2 | \n", "TMPRSS3 | \n", "UBASH3A | \n", "TRPM2 | \n", "TSPEAR | \n", "KRTAP12-3 | \n", "ITGB2 | \n", "COL18A1 | \n", "COL6A2 | \n", "
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Factor_1 (astrocyte) | \n", "-0.018227 | \n", "0.016628 | \n", "0.008709 | \n", "-0.085218 | \n", "-0.032678 | \n", "-0.051249 | \n", "-0.128016 | \n", "-0.017553 | \n", "0.020427 | \n", "0.006717 | \n", "... | \n", "-0.013714 | \n", "-0.118789 | \n", "-0.051786 | \n", "-0.068351 | \n", "-0.008388 | \n", "-0.070681 | \n", "-0.040730 | \n", "-0.034352 | \n", "-0.009784 | \n", "-0.041832 | \n", "
Factor_2 (caudal ganglionic eminence derived interneuron) | \n", "0.061711 | \n", "0.025978 | \n", "0.041309 | \n", "0.008997 | \n", "0.103602 | \n", "0.066791 | \n", "0.096115 | \n", "0.026817 | \n", "0.018299 | \n", "0.073380 | \n", "... | \n", "0.063504 | \n", "0.054544 | \n", "0.064555 | \n", "0.087258 | \n", "0.127651 | \n", "0.140096 | \n", "0.034622 | \n", "0.046414 | \n", "0.055640 | \n", "0.089154 | \n", "
Factor_3 (endothelial cell) | \n", "0.002676 | \n", "0.046630 | \n", "-0.063564 | \n", "0.013813 | \n", "-0.022183 | \n", "0.019438 | \n", "0.019055 | \n", "-0.016783 | \n", "-0.012183 | \n", "-0.014433 | \n", "... | \n", "-0.028807 | \n", "0.011751 | \n", "-0.020785 | \n", "-0.045028 | \n", "0.020811 | \n", "-0.038803 | \n", "-0.009141 | \n", "0.003219 | \n", "-0.052285 | \n", "-0.009642 | \n", "
Factor_4 (glutamatergic neuron) | \n", "0.044140 | \n", "-0.032026 | \n", "-0.020472 | \n", "-0.004024 | \n", "0.047451 | \n", "0.072089 | \n", "0.020697 | \n", "0.033083 | \n", "-0.000998 | \n", "0.157253 | \n", "... | \n", "0.066016 | \n", "0.010713 | \n", "0.008618 | \n", "0.068955 | \n", "0.070585 | \n", "0.160543 | \n", "0.067635 | \n", "-0.021258 | \n", "-0.048109 | \n", "0.078915 | \n", "
Factor_5 (inhibitory interneuron) | \n", "0.021449 | \n", "0.076019 | \n", "0.071614 | \n", "0.111477 | \n", "0.054973 | \n", "0.011741 | \n", "-0.012790 | \n", "-0.002646 | \n", "-0.000420 | \n", "0.029649 | \n", "... | \n", "0.103795 | \n", "0.108892 | \n", "0.043622 | \n", "0.085356 | \n", "0.144796 | \n", "0.155512 | \n", "0.069746 | \n", "0.102761 | \n", "0.190089 | \n", "0.099793 | \n", "
Factor_6 (medial ganglionic eminence derived interneuron) | \n", "-0.002214 | \n", "0.011589 | \n", "0.009022 | \n", "0.005203 | \n", "-0.001285 | \n", "0.022863 | \n", "0.043369 | \n", "-0.009789 | \n", "-0.055886 | \n", "-0.051018 | \n", "... | \n", "-0.000926 | \n", "0.001854 | \n", "0.013125 | \n", "-0.046666 | \n", "-0.175756 | \n", "-0.010585 | \n", "0.021193 | \n", "0.029928 | \n", "0.040288 | \n", "-0.004638 | \n", "
Factor_7 (microglial cell) | \n", "0.033687 | \n", "-0.371200 | \n", "-0.201232 | \n", "-0.180759 | \n", "0.048073 | \n", "0.049734 | \n", "0.059747 | \n", "0.044436 | \n", "-0.062388 | \n", "0.013768 | \n", "... | \n", "-0.146758 | \n", "0.037564 | \n", "0.033068 | \n", "0.012605 | \n", "-0.099360 | \n", "0.029247 | \n", "0.020464 | \n", "-0.306571 | \n", "-0.021651 | \n", "0.055954 | \n", "
Factor_8 (neural progenitor cell) | \n", "-0.040064 | \n", "0.018456 | \n", "-0.022026 | \n", "0.028713 | \n", "0.042819 | \n", "-0.024957 | \n", "-0.036244 | \n", "-0.004213 | \n", "-0.068642 | \n", "-0.052252 | \n", "... | \n", "0.021161 | \n", "0.001159 | \n", "0.014907 | \n", "0.055635 | \n", "0.011421 | \n", "0.031352 | \n", "0.032900 | \n", "0.015596 | \n", "-0.012561 | \n", "0.020977 | \n", "
Factor_9 (oligodendrocyte) | \n", "-0.045553 | \n", "-0.086439 | \n", "-0.095924 | \n", "-0.091932 | \n", "-0.071380 | \n", "-0.057834 | \n", "-0.062374 | \n", "-0.035606 | \n", "-0.074925 | \n", "-0.039691 | \n", "... | \n", "-0.082786 | \n", "-0.074244 | \n", "-0.033555 | \n", "-0.044907 | \n", "-0.114517 | \n", "-0.094449 | \n", "-0.031309 | \n", "-0.104703 | \n", "-0.005420 | \n", "-0.073570 | \n", "
Factor_10 (oligodendrocyte precursor cell) | \n", "0.013328 | \n", "-0.076632 | \n", "-0.095766 | \n", "-0.061523 | \n", "0.004489 | \n", "-0.009986 | \n", "-0.035331 | \n", "-0.014284 | \n", "-0.010431 | \n", "-0.086027 | \n", "... | \n", "-0.005166 | \n", "0.103091 | \n", "0.000971 | \n", "-0.002350 | \n", "-0.054968 | \n", "-0.038637 | \n", "-0.016010 | \n", "-0.023825 | \n", "0.012225 | \n", "-0.018629 | \n", "
Factor_11 (pericyte) | \n", "-0.068400 | \n", "-0.117113 | \n", "-0.107469 | \n", "-0.063415 | \n", "-0.119831 | \n", "-0.101984 | \n", "-0.116682 | \n", "-0.038292 | \n", "-0.105895 | \n", "-0.142456 | \n", "... | \n", "-0.074856 | \n", "-0.127596 | \n", "-0.068352 | \n", "-0.096209 | \n", "-0.098300 | \n", "-0.039917 | \n", "0.005252 | \n", "-0.071315 | \n", "0.125981 | \n", "0.006964 | \n", "
Factor_12 (radial glial cell) | \n", "0.013457 | \n", "0.035862 | \n", "0.016619 | \n", "-0.008517 | \n", "-0.005948 | \n", "-0.048667 | \n", "-0.013628 | \n", "-0.006250 | \n", "0.036617 | \n", "0.091800 | \n", "... | \n", "0.037933 | \n", "0.001341 | \n", "0.018385 | \n", "0.011399 | \n", "0.078934 | \n", "0.081725 | \n", "0.034904 | \n", "0.064347 | \n", "0.076669 | \n", "0.018390 | \n", "
Factor_13 (vascular associated smooth muscle cell) | \n", "-0.020864 | \n", "-0.006278 | \n", "0.057538 | \n", "0.021366 | \n", "0.016715 | \n", "-0.011897 | \n", "0.036587 | \n", "-0.026533 | \n", "0.022503 | \n", "0.039456 | \n", "... | \n", "0.015130 | \n", "-0.010799 | \n", "0.014685 | \n", "0.013097 | \n", "-0.001941 | \n", "0.011595 | \n", "0.008483 | \n", "0.012239 | \n", "-0.133319 | \n", "-0.082095 | \n", "
Factor_14 | \n", "-0.030205 | \n", "-0.065338 | \n", "-0.098833 | \n", "-0.098750 | \n", "-0.020684 | \n", "0.015680 | \n", "0.004504 | \n", "0.002585 | \n", "-0.049090 | \n", "0.002668 | \n", "... | \n", "-0.099198 | \n", "-0.061864 | \n", "-0.059691 | \n", "-0.070308 | \n", "-0.167516 | \n", "-0.050790 | \n", "-0.045526 | \n", "-0.186547 | \n", "0.030531 | \n", "-0.045366 | \n", "
Factor_15 | \n", "0.102394 | \n", "0.111089 | \n", "0.161223 | \n", "0.145873 | \n", "0.143792 | \n", "0.096924 | \n", "0.109016 | \n", "0.141172 | \n", "0.169392 | \n", "0.152441 | \n", "... | \n", "0.147098 | \n", "0.099834 | \n", "0.066984 | \n", "0.102654 | \n", "0.077644 | \n", "0.146752 | \n", "0.049644 | \n", "0.127989 | \n", "0.083689 | \n", "0.177638 | \n", "
15 rows × 2000 columns
\n", "feature_name | \n", "HES5 | \n", "PRDM16 | \n", "LINC01134 | \n", "SLC2A5 | \n", "PIK3CD | \n", "TNFRSF1B | \n", "AADACL4 | \n", "SLC25A34-AS1 | \n", "PADI2 | \n", "PADI1 | \n", "... | \n", "LINC00279 | \n", "MT-ND1 | \n", "MT-ND2 | \n", "MT-CO1 | \n", "MT-CO2 | \n", "MT-ATP6 | \n", "MT-ND3 | \n", "MT-ND4L | \n", "MT-ND4 | \n", "MT-ND5 | \n", "
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Factor_1 (astrocyte) | \n", "-0.208182 | \n", "-0.429047 | \n", "-0.000131 | \n", "0.045786 | \n", "0.080833 | \n", "0.054359 | \n", "-0.012543 | \n", "-0.025898 | \n", "-0.091752 | \n", "0.003296 | \n", "... | \n", "0.036371 | \n", "-0.049887 | \n", "-0.039553 | \n", "0.012043 | \n", "-0.031498 | \n", "-0.078227 | \n", "-0.136771 | \n", "-0.020041 | \n", "-0.042751 | \n", "-0.024138 | \n", "
Factor_2 (caudal ganglionic eminence derived interneuron) | \n", "-0.036767 | \n", "-0.069018 | \n", "0.001598 | \n", "-0.011377 | \n", "-0.025387 | \n", "-0.038779 | \n", "0.004101 | \n", "0.004330 | \n", "-0.035379 | \n", "0.003445 | \n", "... | \n", "0.001888 | \n", "0.138144 | \n", "0.123199 | \n", "0.152745 | \n", "0.134151 | \n", "0.095955 | \n", "0.093427 | \n", "0.094417 | \n", "0.135157 | \n", "0.092551 | \n", "
Factor_3 (endothelial cell) | \n", "0.026845 | \n", "0.086176 | \n", "-0.006730 | \n", "0.032492 | \n", "0.092398 | \n", "-0.062162 | \n", "0.009899 | \n", "0.019996 | \n", "0.012182 | \n", "0.006935 | \n", "... | \n", "0.010711 | \n", "0.007029 | \n", "-0.003770 | \n", "0.000740 | \n", "0.000596 | \n", "-0.013372 | \n", "-0.011830 | \n", "0.009384 | \n", "-0.013850 | \n", "-0.012648 | \n", "
Factor_4 (glutamatergic neuron) | \n", "-0.119810 | \n", "-0.110515 | \n", "-0.008428 | \n", "-0.065243 | \n", "-0.076141 | \n", "-0.082045 | \n", "0.001842 | \n", "-0.012405 | \n", "-0.123653 | \n", "-0.004981 | \n", "... | \n", "-0.027927 | \n", "-0.064613 | \n", "-0.099515 | \n", "-0.053974 | \n", "-0.108447 | \n", "-0.121445 | \n", "-0.160079 | \n", "-0.058071 | \n", "-0.102936 | \n", "-0.070332 | \n", "
Factor_5 (inhibitory interneuron) | \n", "0.074077 | \n", "0.080980 | \n", "-0.000610 | \n", "0.054926 | \n", "0.059176 | \n", "0.070569 | \n", "-0.001754 | \n", "-0.002609 | \n", "0.111904 | \n", "0.008717 | \n", "... | \n", "0.032175 | \n", "0.144616 | \n", "0.140038 | \n", "0.144284 | \n", "0.186204 | \n", "0.150951 | \n", "0.152748 | \n", "0.052082 | \n", "0.145854 | \n", "0.084795 | \n", "
Factor_6 (medial ganglionic eminence derived interneuron) | \n", "0.061534 | \n", "0.110697 | \n", "-0.012850 | \n", "0.014597 | \n", "-0.108322 | \n", "0.006335 | \n", "-0.001688 | \n", "0.008390 | \n", "0.036388 | \n", "-0.003137 | \n", "... | \n", "0.001910 | \n", "-0.249092 | \n", "-0.228440 | \n", "-0.332192 | \n", "-0.354922 | \n", "-0.283303 | \n", "-0.202077 | \n", "-0.081255 | \n", "-0.252142 | \n", "-0.182548 | \n", "
Factor_7 (microglial cell) | \n", "0.073273 | \n", "0.076353 | \n", "-0.015753 | \n", "-0.372691 | \n", "-0.235887 | \n", "-0.319122 | \n", "-0.010101 | \n", "-0.001108 | \n", "-0.065391 | \n", "-0.022516 | \n", "... | \n", "0.011044 | \n", "0.019545 | \n", "0.015750 | \n", "0.001131 | \n", "0.000565 | \n", "-0.025114 | \n", "-0.020271 | \n", "0.019034 | \n", "0.008098 | \n", "0.033560 | \n", "
Factor_8 (neural progenitor cell) | \n", "0.094023 | \n", "-0.073044 | \n", "-0.020015 | \n", "-0.010783 | \n", "0.006819 | \n", "-0.035352 | \n", "-0.022101 | \n", "0.004570 | \n", "0.003941 | \n", "0.013296 | \n", "... | \n", "0.004650 | \n", "0.018530 | \n", "0.006067 | \n", "0.097694 | \n", "0.021061 | \n", "-0.002756 | \n", "-0.011136 | \n", "-0.008039 | \n", "0.041842 | \n", "0.008941 | \n", "
Factor_9 (oligodendrocyte) | \n", "-0.096187 | \n", "-0.090426 | \n", "0.002811 | \n", "-0.057448 | \n", "-0.100601 | \n", "-0.064315 | \n", "0.001830 | \n", "0.006622 | \n", "0.256400 | \n", "0.001876 | \n", "... | \n", "0.140956 | \n", "-0.023779 | \n", "0.035511 | \n", "0.045417 | \n", "0.096452 | \n", "0.008418 | \n", "0.016682 | \n", "-0.010833 | \n", "0.055347 | \n", "-0.018010 | \n", "
Factor_10 (oligodendrocyte precursor cell) | \n", "0.109106 | \n", "-0.139850 | \n", "-0.001256 | \n", "-0.085660 | \n", "-0.103560 | \n", "-0.073114 | \n", "-0.011707 | \n", "-0.001273 | \n", "-0.034249 | \n", "0.001216 | \n", "... | \n", "-0.023487 | \n", "-0.091286 | \n", "-0.058322 | \n", "-0.080787 | \n", "-0.033584 | \n", "-0.034352 | \n", "-0.039314 | \n", "-0.031082 | \n", "-0.040277 | \n", "-0.050600 | \n", "
Factor_11 (pericyte) | \n", "-0.096806 | \n", "-0.082905 | \n", "-0.013746 | \n", "-0.031378 | \n", "0.182597 | \n", "0.024180 | \n", "0.004992 | \n", "0.009840 | \n", "-0.045573 | \n", "0.001019 | \n", "... | \n", "-0.022335 | \n", "0.069674 | \n", "0.102980 | \n", "0.051257 | \n", "0.088180 | \n", "0.073444 | \n", "0.077907 | \n", "0.039346 | \n", "0.044237 | \n", "0.039888 | \n", "
Factor_12 (radial glial cell) | \n", "-0.305815 | \n", "-0.370938 | \n", "0.014988 | \n", "0.027542 | \n", "0.026361 | \n", "0.024751 | \n", "-0.001839 | \n", "0.037604 | \n", "0.079338 | \n", "0.000370 | \n", "... | \n", "0.007548 | \n", "0.139923 | \n", "0.137401 | \n", "0.122713 | \n", "0.170129 | \n", "0.160537 | \n", "0.122313 | \n", "0.048193 | \n", "0.146312 | \n", "0.089201 | \n", "
Factor_13 (vascular associated smooth muscle cell) | \n", "0.097635 | \n", "0.021009 | \n", "-0.025192 | \n", "0.014730 | \n", "0.082244 | \n", "0.057195 | \n", "-0.006985 | \n", "-0.018558 | \n", "0.041190 | \n", "-0.010776 | \n", "... | \n", "0.011489 | \n", "0.117726 | \n", "0.129374 | \n", "0.112941 | \n", "0.148383 | \n", "0.155056 | \n", "0.177456 | \n", "0.069603 | \n", "0.138858 | \n", "0.053408 | \n", "
Factor_14 | \n", "0.064157 | \n", "-0.044716 | \n", "-0.024030 | \n", "0.007258 | \n", "0.054465 | \n", "-0.057635 | \n", "0.013054 | \n", "-0.013529 | \n", "0.020315 | \n", "0.006386 | \n", "... | \n", "0.040675 | \n", "-0.076650 | \n", "-0.030133 | \n", "-0.004744 | \n", "-0.037376 | \n", "-0.099526 | \n", "-0.079796 | \n", "0.008935 | \n", "-0.054390 | \n", "-0.010699 | \n", "
Factor_15 | \n", "0.004490 | \n", "-0.062551 | \n", "0.004475 | \n", "0.026869 | \n", "0.085769 | \n", "0.083807 | \n", "0.021577 | \n", "-0.018813 | \n", "-0.007668 | \n", "-0.005300 | \n", "... | \n", "-0.029235 | \n", "0.010413 | \n", "0.031491 | \n", "0.010445 | \n", "0.000602 | \n", "0.039254 | \n", "0.070796 | \n", "-0.004739 | \n", "0.025249 | \n", "-0.005580 | \n", "
15 rows × 2000 columns
\n", "