{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Example export to SPRING" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/sam/miniconda3/lib/python3.6/site-packages/h5py/__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.\n", " from ._conv import register_converters as _register_converters\n" ] } ], "source": [ "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as pl\n", "import scanpy.api as sc\n", "\n", "sc.settings.verbosity = 2 # verbosity: errors (0), warnings (1), info (2), hints (3)\n", "sc.settings.set_figure_params(dpi=150) # low dpi (dots per inch) yields small inline figures\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Data prep" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Download counts matrices from 10X" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "!wget http://cf.10xgenomics.com/samples/cell-exp/2.1.0/pbmc8k/pbmc8k_filtered_gene_bc_matrices.tar.gz\n", "!tar xfz pbmc8k_filtered_gene_bc_matrices.tar.gz\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Load data" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "... reading from cache file ./cache/filtered_gene_bc_matrices-GRCh38-matrix.h5ad\n", "Variable names are not unique. To make them unique, call `.var_names_make_unique`.\n" ] } ], "source": [ "path = 'filtered_gene_bc_matrices/GRCh38/'\n", "adata = sc.read(path + 'matrix.mtx', cache=True).T # first time only\n", "adata.var_names = pd.read_csv(path + 'genes.tsv', header=None, sep='\\t')[1]\n", "adata.var_names_make_unique()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Store total counts" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "adata.obs['n_counts'] = adata.X.sum(1).A1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Normalize, then store full normalized counts matrix" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "sc.pp.normalize_per_cell(adata, counts_per_cell_after=adata.obs['n_counts'].mean())" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "adata.raw = adata" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Filter genes" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "sc.pp.filter_genes(adata, min_cells=3)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "filter_result = sc.pp.filter_genes_dispersion(\n", " adata.X, min_mean=0.0125, max_mean=3, min_disp=0.5)\n" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1189" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "filter_result['gene_subset'].sum()" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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s4wfP55LL72UZs2acemllzJmzJiwedoXXHAB48aNo2nTpkycOJEdO3YATk/btGnTOOecc2jevDm33nore/fuZf369QA0adKEK664gtatW9O0acUxyk8++STp6ekMHjyYE044gXvuuYdmzZxsseXLl9O1a1emT59Os2bNGDt2LKNHj2bp0qX+19944420bt2aM844g0GDBlFQUMBXX33FypUruf/++0lMTKRv3778/ve/5x//+AdNmzalTZs2PPbYY7z//vtMnjyZ7du31+izNnXOicC/vY83A2er6jHgLuDCuNUqynx5ujYziTEm1lwF3KraRFUPBG3LA4YCP3Z7MBE5DVgH9Anx9GlArqruC7h957bsSFhjayqTm5tLTk4Oubm5Yfc5cOAAPXv2rLCtZ8+efPnllyH3T0pK8j9u3rw5ZWVOVtbu3bt56KGHaNeuHe3atSMpKYnDhw/700qSk5Np3rx5yDL37NnDSSed5P87MTGRDh06+MvdsmWLv9x27dqxYsUKdu/e7d8/cAaVZs2aUV5e7n++V69e/tfdeuut7NmzB4DXX3+db775hosuuoiUlBT+/Oc/h/2MTL30OXCm9/EnwFnex01wgnFjjDHVEHbQpIjcDtytqkXex5V5x+XxzgVWAXMB/0wnIiJAfyDfZTnGxFxqamqF+1C6d+/u74X22bFjBz/84Q+rdawuXbpwyy23MGfOHP+2/Px8evbsybp163D+i4Svw65d30+FX1xc7B+s2aVLF0aMGMFbb73lf37Xrl2ceGLlMVOXLl1ISEjg4MGDJCQkAM4A0JKSEoqKiti/fz/PP/88x44d44033mDixImMGjWKoUOHVut9mzprAfC0iEwDngU+FhEFhgFron0wEfkH0FdVR0a7bGOMqQsq6+E+F2ge8DjcbYTbg6nqYlWdparB1+h746xgea2IfCEieSIy0ztSvtbYIEoTKDExkeHDh5OYmBh2nyuuuIJVq1bxyiuvcOzYMV555RVWrVrFT3/6UwBatGjBoUOHqjzWlClTWLx4MRs2bEBVWbp0KYMGDXL1b/Hqq6/mscce4+OPP+bIkSP88Y9/9Pecp6WlsWXLFp577jnKy8vZuHEjgwcPJicnp9Iyu3fvzrBhw7jlllsoKSnh4MGDXHLJJdx1112UlZVxySWX8NJLL9G0aVO6du2KiFTovTf1m6pm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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sc.pl.filter_genes_dispersion(filter_result)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "adata = adata[:, filter_result.gene_subset]\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Z-score normalize and run PCA" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "sc.pp.scale(adata)\n" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "sc.tl.pca(adata)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Build k-nearest-neighbor graph" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "computing neighbors\n", " finished (0:00:05.61)\n" ] } ], "source": [ "sc.pp.neighbors(adata, n_neighbors=5, use_rep='X_pca')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Get some 2-D embeddings - umap and force-directed graph" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "computing UMAP\n", " finished (0:00:09.11)\n" ] } ], "source": [ "sc.tl.umap(adata)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "drawing single-cell graph using layout \"fa\"\n", " finished (0:00:45.86)\n" ] } ], "source": [ "sc.tl.draw_graph(adata, layout='fa')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Cluster and run graph abstraction" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "running Louvain clustering\n", " using the \"louvain\" package of Traag (2017)\n", " finished (0:00:00.80)\n" ] } ], "source": [ "sc.tl.louvain(adata)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "running partition-based graph abstraction (PAGA)\n", " finished (0:00:00.07)\n" ] } ], "source": [ "sc.tl.paga(adata, groups='louvain')\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Export SPRING plot" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First, export a subplot using the ForceAtlas2 layout" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Writing subplot to ./10x_pbmc8k/force/\n", "41.813865184783936\n" ] } ], "source": [ "import time\n", "t0 = time.time()\n", "sc.export_to.spring_project(adata, './10x_pbmc8k', 'draw_graph', subplot_name='force')\n", "print(time.time() - t0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Repeat export, this time using umap embedding. \n", "Should be much faster since hdf5 counts matrices do not need to be rewritten." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Writing subplot to ./10x_pbmc8k/umap/\n", "./10x_pbmc8k/ is an existing SPRING folder. A new subplot will be created, but you must set `overwrite=True` to overwrite counts matrices.\n", "2.749732255935669\n" ] } ], "source": [ "t0 = time.time()\n", "sc.export_to.spring_project(adata, './10x_pbmc8k', 'umap', subplot_name='umap')\n", "print(time.time() - t0)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python 3", "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.6.4" } }, "nbformat": 4, "nbformat_minor": 1 }