{ "cells": [ { "cell_type": "code", "execution_count": 2, "metadata": { "pycharm": {} }, "outputs": [], "source": [ "import numpy as np\n", "from matplotlib import pyplot as plt\n", "\n", "import wot" ] }, { "cell_type": "markdown", "metadata": { "pycharm": {} }, "source": [ "Load transport map model and cell sets" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "pycharm": {} }, "outputs": [], "source": [ "tmap_model = wot.tmap.TransportMapModel.from_directory('tmaps/serum')\n", "cell_sets = wot.io.read_sets('data/major_cell_sets.gmt', as_dict=True)" ] }, { "cell_type": "markdown", "metadata": { "pycharm": {} }, "source": [ "Convert cell sets indicating whether a cell at time t is in a cell set" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "pycharm": {} }, "outputs": [], "source": [ "start_populations = tmap_model.population_from_cell_sets(cell_sets, at_time=12)\n", "end_populations = tmap_model.population_from_cell_sets(cell_sets, at_time=18)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Compute transition table " ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "pycharm": {} }, "outputs": [], "source": [ "transition_table = tmap_model.transition_table(start_populations, end_populations)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Visualize transition table as heat map" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(figsize=(12, 12))\n", "im = ax.imshow(transition_table.X)\n", "\n", "# We want to show all ticks...\n", "ax.set_xticks(np.arange(len(transition_table.var_names)))\n", "ax.set_yticks(np.arange(len(transition_table.obs_names)))\n", "# ... and label them with the respective list entries\n", "ax.set_xticklabels(transition_table.var_names)\n", "ax.set_yticklabels(transition_table.obs_names)\n", "\n", "# Rotate the tick labels and set their alignment.\n", "plt.setp(ax.get_xticklabels(), rotation=45, ha=\"right\",\n", " rotation_mode=\"anchor\")\n", "\n", "# Loop over data dimensions and create text annotations.\n", "for i in range(transition_table.shape[0]):\n", " for j in range(transition_table.shape[1]):\n", " text = ax.text(j, i, '{:.2f}'.format(transition_table.X[i, j]),\n", " ha=\"center\", va=\"center\", color=\"w\")\n", "fig.tight_layout()" ] } ], "metadata": { "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.7.3" }, "pycharm": { "stem_cell": { "cell_type": "raw", "source": [], "metadata": { "collapsed": false } } } }, "nbformat": 4, "nbformat_minor": 2 }