{ "cells": [ { "cell_type": "code", "execution_count": null, "metadata": { "pycharm": {} }, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import pandas as pd\n", "\n", "import wot" ] }, { "cell_type": "markdown", "metadata": { "pycharm": {} }, "source": [ "# Notebook 2: Computing transport matrices\n", "\n", "In this notebook we compute transport matrices connecting each pair of time-points, and we examine the effect of each parameter on the solution. \n", "\n", "To compute the transport matrix $\\pi_{t_1,t_2}$ connecting cells $x_1, \\ldots, x_n$ at time $t_1$ to cells $y_1, \\ldots, y_m$ at time $t_2$, we solve an optimization problem over all matrices $\\pi$ that obey certain row-sum and column-sum constraints. \n", "These constraints ensure that the total amount of mass flowing out of each cell $x_i$ and into each cell $y_j$ adds up the correct amount. \n", "We select the transport matrix with the lowest possible transport cost, subject to these constraints. \n", "\n", "The amount of mass flowing out of each cell $x_i$ depends on the *growth rate* of the cell. We do this in step 1 below, before proceeding to computing transport maps in step 2. \n" ] }, { "cell_type": "markdown", "metadata": { "pycharm": {} }, "source": [ "# Step 1: Construct initial estimate of cell growth rates (optional)\n", "\n", "Before computing transport maps, we first form an initial estimate of the cell growth rate function $g(x)$. \n", "We do this using signatures of proliferation and apoptosis computed in Notebook 1. \n", "Note that we refine this initial estimate using unbalanced optimal transport, as explained later in this notebook. \n", "\n", "We model cellular growth with a Birth-Death Process, which assigns each cell $x$ a *rate* of division $\\beta(x)$ and a rate of death $\\delta(x)$. \n", "In a small interval of time $dt$, these *rates* imply that the probability of a division is $\\beta(x)dt$, and the probability of death is $\\delta(x) dt$. \n", "The expected number of descendants after time $dt = t_2 - t_1$ is $e^{dt(\\beta(x) - \\delta(x))}$.\n", "\n", "To compute the birth (i.e. division) rate and death rate, we apply a logistic function to transform the gene set scores into biologically plausible vaules for our reprogramming dataset (where the most proliferative cells double every 9 hours, and the least proliferative cells double every 60 hours). " ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "pycharm": {} }, "outputs": [], "source": [ "# load proliferation and apoptosis scores\n", "gene_set_scores = pd.read_csv('data/gene_set_scores.csv', index_col=0)\n", "proliferation=gene_set_scores['Cell.cycle']\n", "apoptosis = gene_set_scores['Apoptosis']\n", "\n", "# apply logistic function to transform to birth rate and death rate\n", "def logistic(x, L, k, x0=0):\n", " f = L / (1 + np.exp(-k * (x - x0)))\n", " return f\n", "def gen_logistic(p, beta_max, beta_min, pmax, pmin, center, width):\n", " return beta_min + logistic(p, L=beta_max - beta_min, k=4 / width, x0=center)\n", "\n", "def beta(p, beta_max=1.7, beta_min=0.3, pmax=1.0, pmin=-0.5, center=0.25):\n", " return gen_logistic(p, beta_max, beta_min, pmax, pmin, center, width=0.5)\n", "\n", "def delta(a, delta_max=1.7, delta_min=0.3, amax=0.5, amin=-0.4, center=0.1):\n", " return gen_logistic(a, delta_max, delta_min, amax, amin, center,\n", " width=0.2)\n", "\n", "birth = beta(proliferation)\n", "death = delta(apoptosis)\n", "\n", "# growth rate is given by \n", "gr = np.exp(birth-death)\n", "growth_rates_df = pd.DataFrame(index=gene_set_scores.index, data={'cell_growth_rate':gr})\n", "growth_rates_df.to_csv('data/growth_gs_init.txt')" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "j1JdUgTXawEJ", "pycharm": {} }, "source": [ "# Step 2: Compute transport maps\n", "\n", "We are now ready to compute transport maps. \n", "\n", "The next code block reads in the expression matrix, cell days, and the initial cell growth rates we computed in step 1 above. If the cell growth rates are not provided, the algorithm will assume each cell grows at roughly the same rate. Note that the expression matrix we use here contains variable gene expression data of 1,400 genes from two time-course experiments, and we apply a filter to select cells from the serum time course. " ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "colab": {}, "colab_type": "code", "id": "OgHGRa2aIax6", "pycharm": {} }, "outputs": [ { "data": { "text/plain": [ "(175472, 1479)" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "VAR_GENE_DS_PATH = 'data/ExprMatrix.var.genes.h5ad'\n", "CELL_DAYS_PATH = 'data/cell_days.txt'\n", "SERUM_CELL_IDS_PATH = 'data/serum_cell_ids.txt'\n", "CELL_GROWTH_PATH = 'data/growth_gs_init.txt'\n", "\n", "# load data\n", "adata = wot.io.read_dataset(VAR_GENE_DS_PATH, obs=[CELL_DAYS_PATH, CELL_GROWTH_PATH], obs_filter=SERUM_CELL_IDS_PATH)\n", "adata.shape" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "eXxmqmQua1I0", "pycharm": {} }, "source": [ "# The optimization problem\n", "\n", "We solve the following *unbalanced transport* optimization problem introduced in Chizat et al 2018, where we only enforce the row-sum constraints approximately and we add entropy to the transport matrix: \n", "\n", "\\begin{equation}\n", "\\begin{aligned}\n", "\\underset{\\pi}{\\text{minimize}} & \\qquad \\iint c(x,y) \\pi(x,y) dx dy - \\epsilon \\int \\pi(x,y) \\log \\pi(x,y) dx dy \\\\\n", "&\\qquad + \\lambda_2 {\\text{KL}} \\left ( \\int \\pi(x,y) dx \\Big \\vert d \\hat {\\mathbb{P}}_{t_2} (y) \\int g(x)^{t_2 - t_1} d \\hat {\\mathbb{P}}_{t_1}(x) \\right ) \\\\ \n", "& \\qquad + \\lambda_1 {\\text{KL}} \\left ( \\int \\pi(x,y) dy \\Big \\vert d \\hat {\\mathbb{P}}_{t_1} (x) g(x)^{t_2 - t_1} \\right). \n", "\\end{aligned}\n", "\\end{equation}\n", "\n", "Here we use the notation $\\hat {\\mathbb{P}}_{t_k} = \\frac 1 n \\sum_{i=1}^n \\delta_{x_i}$ for the empirical distribution of samples $x_1,\\ldots,x_n$ at time $t_k$, and $\\text{KL}(P \\vert Q)$ denotes the KL-divergence between distributions $P$ and $Q$. The function $c(x,y)$ encodes the cost of transporting a unit mass from $x$ to $y$. We define $c(x,y)$ to be the squared euclidean distance between cells in local PCA space. This PCA space is computed separately for each pair of time-points. Finally, the function $g(x)$ encodes the growth rate of cell $x$, and is used to specify the budget of descendant mass for each cell $x_i$ at time $t_1$. \n", "\n", "The optimization problem has three regularization parameters: \n", "* $\\epsilon$ controls the degree of entropy in the transport map. \n", "A larger value gives more entropic descendant distributions, where cells are able to obtain more fates. \n", "* $\\lambda_1$ controls the constraint on the row sums of $\\pi_{t_1,t_2}$, which depend on the growth rate function $g(x)$ \n", "A smaller value of $\\lambda_1$ enforces the constraints less strictly, which is useful when we do not have precise information about $g(x)$.\n", "* $\\lambda_2$ controls the constraint on the column sums of $\\pi_{t_1,t_2}$.\n", "\n", "In the following code block we initialize an OTModel, which is parameterized by $\\epsilon, \\lambda_1, \\lambda_2$." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 34 }, "colab_type": "code", "executionInfo": { "elapsed": 1558, "status": "ok", "timestamp": 1556313217324, "user": { "displayName": "Joshua Gould", "photoUrl": "", "userId": "09978885733763067346" }, "user_tz": 240 }, "id": "YKuGivoIca9G", "outputId": "c0639c77-d5ed-4e9e-9130-b994bfad5e9c", "pycharm": {} }, "outputs": [], "source": [ "# create OTModel\n", "ot_model = wot.ot.OTModel(adata,epsilon = 0.05, lambda1 = 1,lambda2 = 50) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can now use the OTModel to compute transport maps between any pair of time-points. " ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "# Compute a single transport map from day 7 to 7.5\n", "tmap_annotated = ot_model.compute_transport_map(7,7.5)" ] }, { "cell_type": "markdown", "metadata": { "pycharm": {} }, "source": [ "The object tmap_annotated is an annotated transport matrix, and tmap_annotated.X contains the actual numerical matrix. \n", "Both rows and columns are annotated with cell barcodes and cell growth rates (just along rows). These annotations are accessed as follows: " ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "pycharm": {}, "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", " | g0 | \n", "g1 | \n", "
---|---|---|
index | \n", "\n", " | \n", " |
D7_Dox_C1_AAACCTGAGGAATCGC-1 | \n", "1.268895 | \n", "0.977589 | \n", "
D7_Dox_C1_AAACCTGAGTAGATGT-1 | \n", "2.978660 | \n", "2.510199 | \n", "
D7_Dox_C1_AAACCTGCAACCGCCA-1 | \n", "1.871918 | \n", "1.789104 | \n", "
D7_Dox_C1_AAACCTGCACTATCTT-1 | \n", "3.072989 | \n", "2.790364 | \n", "
D7_Dox_C1_AAACCTGCAGCCTGTG-1 | \n", "1.026225 | \n", "0.918584 | \n", "
D7_Dox_C1_AAACCTGCATATACGC-1 | \n", "1.412582 | \n", "1.366065 | \n", "
D7_Dox_C1_AAACCTGCATCCGTGG-1 | \n", "1.182596 | \n", "1.144585 | \n", "
D7_Dox_C1_AAACCTGTCGGAATCT-1 | \n", "0.982687 | \n", "1.047557 | \n", "
D7_Dox_C1_AAACGGGGTAGTACCT-1 | \n", "0.417277 | \n", "0.443068 | \n", "
D7_Dox_C1_AAACGGGTCTCTTATG-1 | \n", "0.348761 | \n", "0.282756 | \n", "
D7_Dox_C1_AAACGGGTCTGGGCCA-1 | \n", "2.636122 | \n", "2.038604 | \n", "
D7_Dox_C1_AAACGGGTCTGTCAAG-1 | \n", "0.399207 | \n", "0.446110 | \n", "
D7_Dox_C1_AAAGATGAGAGAGCTC-1 | \n", "1.564738 | \n", "1.329046 | \n", "
D7_Dox_C1_AAAGATGAGAGTACAT-1 | \n", "1.485496 | \n", "1.384023 | \n", "
D7_Dox_C1_AAAGATGAGATCCGAG-1 | \n", "0.699411 | \n", "0.789952 | \n", "
D7_Dox_C1_AAAGATGAGGGCACTA-1 | \n", "1.776569 | \n", "1.709204 | \n", "
D7_Dox_C1_AAAGATGCACTTAACG-1 | \n", "0.990188 | \n", "0.850556 | \n", "
D7_Dox_C1_AAAGATGGTCCCTTGT-1 | \n", "3.447298 | \n", "3.750008 | \n", "
D7_Dox_C1_AAAGATGTCCGCAAGC-1 | \n", "0.405894 | \n", "0.475874 | \n", "
D7_Dox_C1_AAAGATGTCGCGTTTC-1 | \n", "1.291190 | \n", "1.144758 | \n", "
D7_Dox_C1_AAAGATGTCGTGGACC-1 | \n", "3.467186 | \n", "2.937608 | \n", "
D7_Dox_C1_AAAGCAAAGAGTACCG-1 | \n", "2.457092 | \n", "1.622737 | \n", "
D7_Dox_C1_AAAGCAATCACTTATC-1 | \n", "1.255358 | \n", "1.328561 | \n", "
D7_Dox_C1_AAAGTAGAGAGTTGGC-1 | \n", "1.755248 | \n", "1.891669 | \n", "
D7_Dox_C1_AAAGTAGAGCTAACTC-1 | \n", "1.652005 | \n", "1.428341 | \n", "
D7_Dox_C1_AAAGTAGAGGAGTACC-1 | \n", "0.543827 | \n", "0.574121 | \n", "
D7_Dox_C1_AAAGTAGCAGTTTACG-1 | \n", "2.881975 | \n", "2.747883 | \n", "
D7_Dox_C1_AAAGTAGCATTAACCG-1 | \n", "1.117299 | \n", "0.860455 | \n", "
D7_Dox_C1_AAAGTAGGTACTCGCG-1 | \n", "2.765129 | \n", "2.744694 | \n", "
D7_Dox_C1_AAAGTAGTCTCGATGA-1 | \n", "1.426713 | \n", "1.493590 | \n", "
... | \n", "... | \n", "... | \n", "
D7_Dox_C2_TTTATGCCAAACTGCT-1 | \n", "0.546127 | \n", "0.668312 | \n", "
D7_Dox_C2_TTTATGCCACATGACT-1 | \n", "3.406330 | \n", "3.133376 | \n", "
D7_Dox_C2_TTTATGCCATACTCTT-1 | \n", "2.149502 | \n", "1.922778 | \n", "
D7_Dox_C2_TTTATGCGTGGCCCTA-1 | \n", "2.583077 | \n", "2.744961 | \n", "
D7_Dox_C2_TTTATGCGTTTAAGCC-1 | \n", "3.267880 | \n", "2.653814 | \n", "
D7_Dox_C2_TTTATGCTCAATAAGG-1 | \n", "0.681796 | \n", "0.808452 | \n", "
D7_Dox_C2_TTTATGCTCATTATCC-1 | \n", "3.685506 | \n", "2.870278 | \n", "
D7_Dox_C2_TTTATGCTCCTTGACC-1 | \n", "0.337586 | \n", "0.440907 | \n", "
D7_Dox_C2_TTTATGCTCCTTTCTC-1 | \n", "2.856774 | \n", "2.429800 | \n", "
D7_Dox_C2_TTTATGCTCTTGGGTA-1 | \n", "0.425422 | \n", "0.620381 | \n", "
D7_Dox_C2_TTTCCTCCATCGATTG-1 | \n", "0.267748 | \n", "0.358732 | \n", "
D7_Dox_C2_TTTCCTCGTAGTACCT-1 | \n", "2.577453 | \n", "2.360288 | \n", "
D7_Dox_C2_TTTCCTCGTTATGCGT-1 | \n", "0.959450 | \n", "1.076300 | \n", "
D7_Dox_C2_TTTCCTCTCCTTAATC-1 | \n", "3.275354 | \n", "3.232358 | \n", "
D7_Dox_C2_TTTCCTCTCGATGAGG-1 | \n", "0.470076 | \n", "0.660028 | \n", "
D7_Dox_C2_TTTCCTCTCTGTTTGT-1 | \n", "2.642529 | \n", "2.428539 | \n", "
D7_Dox_C2_TTTGCGCTCTTACCGC-1 | \n", "0.257352 | \n", "0.273753 | \n", "
D7_Dox_C2_TTTGGTTAGCGAGAAA-1 | \n", "0.294904 | \n", "0.404630 | \n", "
D7_Dox_C2_TTTGGTTAGGACACCA-1 | \n", "0.512239 | \n", "0.583090 | \n", "
D7_Dox_C2_TTTGGTTCAAAGGTGC-1 | \n", "1.495061 | \n", "1.318807 | \n", "
D7_Dox_C2_TTTGGTTGTGATGATA-1 | \n", "2.325406 | \n", "2.188960 | \n", "
D7_Dox_C2_TTTGGTTGTTGAACTC-1 | \n", "0.321137 | \n", "0.383881 | \n", "
D7_Dox_C2_TTTGGTTTCGTACCGG-1 | \n", "1.524528 | \n", "1.443170 | \n", "
D7_Dox_C2_TTTGGTTTCTAACGGT-1 | \n", "0.792568 | \n", "0.755125 | \n", "
D7_Dox_C2_TTTGTCAAGTGTCCCG-1 | \n", "0.841414 | \n", "0.897749 | \n", "
D7_Dox_C2_TTTGTCAAGTTAGCGG-1 | \n", "0.338531 | \n", "0.370486 | \n", "
D7_Dox_C2_TTTGTCACAGTGGAGT-1 | \n", "0.582584 | \n", "0.609164 | \n", "
D7_Dox_C2_TTTGTCAGTAATTGGA-1 | \n", "0.254926 | \n", "0.296702 | \n", "
D7_Dox_C2_TTTGTCATCGTGACAT-1 | \n", "0.594715 | \n", "0.876372 | \n", "
D7_Dox_C2_TTTGTCATCTCCCTGA-1 | \n", "1.198471 | \n", "1.539571 | \n", "
6507 rows × 2 columns
\n", "\n", " | g0 | \n", "g1 | \n", "g2 | \n", "
---|---|---|---|
index | \n", "\n", " | \n", " | \n", " |
D7_Dox_C1_AAACCTGAGGAATCGC-1 | \n", "1.268895 | \n", "0.977589 | \n", "0.771923 | \n", "
D7_Dox_C1_AAACCTGAGTAGATGT-1 | \n", "2.978660 | \n", "2.510199 | \n", "2.130938 | \n", "
D7_Dox_C1_AAACCTGCAACCGCCA-1 | \n", "1.871918 | \n", "1.789104 | \n", "1.692330 | \n", "
D7_Dox_C1_AAACCTGCACTATCTT-1 | \n", "3.072989 | \n", "2.790364 | \n", "2.516863 | \n", "
D7_Dox_C1_AAACCTGCAGCCTGTG-1 | \n", "1.026225 | \n", "0.918584 | \n", "0.815139 | \n", "
D7_Dox_C1_AAACCTGCATATACGC-1 | \n", "1.412582 | \n", "1.366065 | \n", "1.303655 | \n", "
D7_Dox_C1_AAACCTGCATCCGTGG-1 | \n", "1.182596 | \n", "1.144585 | \n", "1.093318 | \n", "
D7_Dox_C1_AAACCTGTCGGAATCT-1 | \n", "0.982687 | \n", "1.047557 | \n", "1.093740 | \n", "
D7_Dox_C1_AAACGGGGTAGTACCT-1 | \n", "0.417277 | \n", "0.443068 | \n", "0.462439 | \n", "
D7_Dox_C1_AAACGGGTCTCTTATG-1 | \n", "0.348761 | \n", "0.282756 | \n", "0.228207 | \n", "
D7_Dox_C1_AAACGGGTCTGGGCCA-1 | \n", "2.636122 | \n", "2.038604 | \n", "1.597445 | \n", "
D7_Dox_C1_AAACGGGTCTGTCAAG-1 | \n", "0.399207 | \n", "0.446110 | \n", "0.482377 | \n", "
D7_Dox_C1_AAAGATGAGAGAGCTC-1 | \n", "1.564738 | \n", "1.329046 | \n", "1.122280 | \n", "
D7_Dox_C1_AAAGATGAGAGTACAT-1 | \n", "1.485496 | \n", "1.384023 | \n", "1.281136 | \n", "
D7_Dox_C1_AAAGATGAGATCCGAG-1 | \n", "0.699411 | \n", "0.789952 | \n", "0.872767 | \n", "
D7_Dox_C1_AAAGATGAGGGCACTA-1 | \n", "1.776569 | \n", "1.709204 | \n", "1.641042 | \n", "
D7_Dox_C1_AAAGATGCACTTAACG-1 | \n", "0.990188 | \n", "0.850556 | \n", "0.728069 | \n", "
D7_Dox_C1_AAAGATGGTCCCTTGT-1 | \n", "3.447298 | \n", "3.750008 | \n", "4.010355 | \n", "
D7_Dox_C1_AAAGATGTCCGCAAGC-1 | \n", "0.405894 | \n", "0.475874 | \n", "0.539814 | \n", "
D7_Dox_C1_AAAGATGTCGCGTTTC-1 | \n", "1.291190 | \n", "1.144758 | \n", "1.010505 | \n", "
D7_Dox_C1_AAAGATGTCGTGGACC-1 | \n", "3.467186 | \n", "2.937608 | \n", "2.486141 | \n", "
D7_Dox_C1_AAAGCAAAGAGTACCG-1 | \n", "2.457092 | \n", "1.622737 | \n", "1.104880 | \n", "
D7_Dox_C1_AAAGCAATCACTTATC-1 | \n", "1.255358 | \n", "1.328561 | \n", "1.376567 | \n", "
D7_Dox_C1_AAAGTAGAGAGTTGGC-1 | \n", "1.755248 | \n", "1.891669 | \n", "2.018037 | \n", "
D7_Dox_C1_AAAGTAGAGCTAACTC-1 | \n", "1.652005 | \n", "1.428341 | \n", "1.230901 | \n", "
D7_Dox_C1_AAAGTAGAGGAGTACC-1 | \n", "0.543827 | \n", "0.574121 | \n", "0.591511 | \n", "
D7_Dox_C1_AAAGTAGCAGTTTACG-1 | \n", "2.881975 | \n", "2.747883 | \n", "2.580114 | \n", "
D7_Dox_C1_AAAGTAGCATTAACCG-1 | \n", "1.117299 | \n", "0.860455 | \n", "0.672185 | \n", "
D7_Dox_C1_AAAGTAGGTACTCGCG-1 | \n", "2.765129 | \n", "2.744694 | \n", "2.694334 | \n", "
D7_Dox_C1_AAAGTAGTCTCGATGA-1 | \n", "1.426713 | \n", "1.493590 | \n", "1.543274 | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "
D7_Dox_C2_TTTATGCCAAACTGCT-1 | \n", "0.546127 | \n", "0.668312 | \n", "0.792676 | \n", "
D7_Dox_C2_TTTATGCCACATGACT-1 | \n", "3.406330 | \n", "3.133376 | \n", "2.934748 | \n", "
D7_Dox_C2_TTTATGCCATACTCTT-1 | \n", "2.149502 | \n", "1.922778 | \n", "1.724100 | \n", "
D7_Dox_C2_TTTATGCGTGGCCCTA-1 | \n", "2.583077 | \n", "2.744961 | \n", "2.847056 | \n", "
D7_Dox_C2_TTTATGCGTTTAAGCC-1 | \n", "3.267880 | \n", "2.653814 | \n", "2.172043 | \n", "
D7_Dox_C2_TTTATGCTCAATAAGG-1 | \n", "0.681796 | \n", "0.808452 | \n", "0.928986 | \n", "
D7_Dox_C2_TTTATGCTCATTATCC-1 | \n", "3.685506 | \n", "2.870278 | \n", "2.267717 | \n", "
D7_Dox_C2_TTTATGCTCCTTGACC-1 | \n", "0.337586 | \n", "0.440907 | \n", "0.554888 | \n", "
D7_Dox_C2_TTTATGCTCCTTTCTC-1 | \n", "2.856774 | \n", "2.429800 | \n", "2.113878 | \n", "
D7_Dox_C2_TTTATGCTCTTGGGTA-1 | \n", "0.425422 | \n", "0.620381 | \n", "0.875085 | \n", "
D7_Dox_C2_TTTCCTCCATCGATTG-1 | \n", "0.267748 | \n", "0.358732 | \n", "0.460588 | \n", "
D7_Dox_C2_TTTCCTCGTAGTACCT-1 | \n", "2.577453 | \n", "2.360288 | \n", "2.148033 | \n", "
D7_Dox_C2_TTTCCTCGTTATGCGT-1 | \n", "0.959450 | \n", "1.076300 | \n", "1.177374 | \n", "
D7_Dox_C2_TTTCCTCTCCTTAATC-1 | \n", "3.275354 | \n", "3.232358 | \n", "3.133913 | \n", "
D7_Dox_C2_TTTCCTCTCGATGAGG-1 | \n", "0.470076 | \n", "0.660028 | \n", "0.894440 | \n", "
D7_Dox_C2_TTTCCTCTCTGTTTGT-1 | \n", "2.642529 | \n", "2.428539 | \n", "2.226831 | \n", "
D7_Dox_C2_TTTGCGCTCTTACCGC-1 | \n", "0.257352 | \n", "0.273753 | \n", "0.284005 | \n", "
D7_Dox_C2_TTTGGTTAGCGAGAAA-1 | \n", "0.294904 | \n", "0.404630 | \n", "0.530570 | \n", "
D7_Dox_C2_TTTGGTTAGGACACCA-1 | \n", "0.512239 | \n", "0.583090 | \n", "0.645941 | \n", "
D7_Dox_C2_TTTGGTTCAAAGGTGC-1 | \n", "1.495061 | \n", "1.318807 | \n", "1.158094 | \n", "
D7_Dox_C2_TTTGGTTGTGATGATA-1 | \n", "2.325406 | \n", "2.188960 | \n", "2.083658 | \n", "
D7_Dox_C2_TTTGGTTGTTGAACTC-1 | \n", "0.321137 | \n", "0.383881 | \n", "0.442784 | \n", "
D7_Dox_C2_TTTGGTTTCGTACCGG-1 | \n", "1.524528 | \n", "1.443170 | \n", "1.351901 | \n", "
D7_Dox_C2_TTTGGTTTCTAACGGT-1 | \n", "0.792568 | \n", "0.755125 | \n", "0.708005 | \n", "
D7_Dox_C2_TTTGTCAAGTGTCCCG-1 | \n", "0.841414 | \n", "0.897749 | \n", "0.937937 | \n", "
D7_Dox_C2_TTTGTCAAGTTAGCGG-1 | \n", "0.338531 | \n", "0.370486 | \n", "0.397700 | \n", "
D7_Dox_C2_TTTGTCACAGTGGAGT-1 | \n", "0.582584 | \n", "0.609164 | \n", "0.624181 | \n", "
D7_Dox_C2_TTTGTCAGTAATTGGA-1 | \n", "0.254926 | \n", "0.296702 | \n", "0.334487 | \n", "
D7_Dox_C2_TTTGTCATCGTGACAT-1 | \n", "0.594715 | \n", "0.876372 | \n", "1.247693 | \n", "
D7_Dox_C2_TTTGTCATCTCCCTGA-1 | \n", "1.198471 | \n", "1.539571 | \n", "1.896885 | \n", "
6507 rows × 3 columns
\n", "