diff --git a/.github/workflows/conda.yaml b/.github/workflows/conda.yaml index fe1da71aa..d4461b28a 100644 --- a/.github/workflows/conda.yaml +++ b/.github/workflows/conda.yaml @@ -22,27 +22,26 @@ jobs: matrix: include: - os: ubuntu-latest - python: "3.12" + python: "3.11" env: OS: ${{ matrix.os }} PYTHON: ${{ matrix.python }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Setup Miniconda - uses: conda-incubator/setup-miniconda@v2 + uses: conda-incubator/setup-miniconda@v3 with: - miniforge-variant: Mambaforge - miniforge-version: latest + mamba-version: "*" channels: conda-forge,bioconda channel-priority: strict - python-version: ${{ matrix.python-version }} + python-version: ${{ matrix.python }} - name: install conda build run: | - mamba install -y boa conda-verify + mamba install -y boa conda-verify python=${{ matrix.python }} shell: bash - name: build and test package diff --git a/CHANGELOG.md b/CHANGELOG.md index c29438c55..cd305992a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,20 +8,22 @@ and this project adheres to [Semantic Versioning][]. [keep a changelog]: https://keepachangelog.com/en/1.0.0/ [semantic versioning]: https://semver.org/spec/v2.0.0.html -## [Unreleased] +## v0.18.0 ### Additions - Isotypically included B cells are now labelled as `receptor_subtype="IGH+IGK/L"` instead of `ambiguous` in `tl.chain_qc` ([#537](https://github.com/scverse/scirpy/pull/537)). - Added the `normalized_hamming` metric to `pp.ir_dist` that accounts for differences in CDR3 sequence length ([#512](https://github.com/scverse/scirpy/pull/512)). +- `tl.define_clonotype_clusters` now has an option to require J genes to match (`same_j_gene=True`) in addition to `same_v_gene`. ([#470](https://github.com/scverse/scirpy/pull/470)). ### Performance improvements -- The hamming distance was reimplemented with numba, achieving a significant speedup ([#512](https://github.com/scverse/scirpy/pull/512)). +- The hamming distance has been reimplemented with numba, achieving a significant speedup ([#512](https://github.com/scverse/scirpy/pull/512)). +- Clonotype clustering has been accelerated leveraging sparse matrix operations ([#470](https://github.com/scverse/scirpy/pull/470)). ### Fixes -- Fix that pl.clonotype_network couldn't use non-standard obsm key ([#545](https://github.com/scverse/scirpy/pull/545)). +- Fix that `pl.clonotype_network` couldn't use non-standard obsm key ([#545](https://github.com/scverse/scirpy/pull/545)). ### Other changes @@ -54,7 +56,7 @@ and this project adheres to [Semantic Versioning][]. ### Fixes -- Fix issue with detecting the number of available CPUs on MacOD ([#518](https://github.com/scverse/scirpy/pull/502)) +- Fix issue with detecting the number of available CPUs on MacOS ([#518](https://github.com/scverse/scirpy/pull/502)) ## v0.16.1 diff --git a/docs/tutorials/tutorial_3k_tcr.ipynb b/docs/tutorials/tutorial_3k_tcr.ipynb index 84c94e9ac..f15285067 100644 --- a/docs/tutorials/tutorial_3k_tcr.ipynb +++ b/docs/tutorials/tutorial_3k_tcr.ipynb @@ -880,30 +880,10 @@ "Computing sequence x sequence distance matrix for VJ sequences.\n", "Computing sequence x sequence distance matrix for VDJ sequences.\n", "Initializing lookup tables. \n", - "Computing clonotype x clonotype distances.\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|██████████| 1526/1526 [00:00<00:00, 1526.57it/s]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "Computing clonotype x clonotype distances.\n", "Stored result in `mdata.obs[\"airr:clone_id\"]`.\n", "Stored result in `mdata.obs[\"airr:clone_id_size\"]`.\n" ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n" - ] } ], "source": [ @@ -1069,30 +1049,10 @@ "output_type": "stream", "text": [ "Initializing lookup tables. \n", - "Computing clonotype x clonotype distances.\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|██████████| 1549/1549 [00:02<00:00, 570.15it/s]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "Computing clonotype x clonotype distances.\n", "Stored result in `mdata.obs[\"airr:cc_aa_tcrdist\"]`.\n", "Stored result in `mdata.obs[\"airr:cc_aa_tcrdist_size\"]`.\n" ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n" - ] } ], "source": [ @@ -1332,30 +1292,10 @@ "output_type": "stream", "text": [ "Initializing lookup tables. \n", - "Computing clonotype x clonotype distances.\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|██████████| 1549/1549 [00:03<00:00, 508.19it/s]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "Computing clonotype x clonotype distances.\n", "Stored result in `mdata.obs[\"airr:cc_aa_tcrdist_same_v\"]`.\n", "Stored result in `mdata.obs[\"airr:cc_aa_tcrdist_same_v_size\"]`.\n" ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n" - ] } ], "source": [ @@ -2697,7 +2637,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "100%|██████████| 1490/1490 [00:00<00:00, 79003.75it/s]" + "100%|██████████| 1490/1490 [00:00<00:00, 84735.71it/s]" ] }, { @@ -2712,7 +2652,7 @@ "output_type": "stream", "text": [ "\n", - "100%|██████████| 1000/1000 [00:00<00:00, 2022.26it/s]\n" + "100%|██████████| 1000/1000 [00:00<00:00, 2187.13it/s]\n" ] }, { @@ -2823,7 +2763,7 @@ }, { "data": { - "image/png": "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044/depUSUeWEk6ZMsXzec+ePfX111/r4osv1pQpUwicAKABY44qAAAAUMvGjRun3NxcRUdH648//pDFYjlp22+//VaS1KdPn+PO3XTTTZKkw4cPKykpyfP5nj17NGXKFDmdTg0YMEAffPDBGdU3c+ZMTZ06VS6XS4MHD9Z99913yvbffPONJCk2NrZK4+/evVuS9OSTTx53bujQobLb7SorK6t0TwCAhoXACQAAAPVeXl6eli9frr1791ap/aFDh7Rs2TKlpaX5uLLq6dixo55//nllZGRowIABp2y7a9cuSdKgQYOOO2c2mxUSEiJJ+umnnzyfW61WJSYm6ocfftCKFSvOeO8mm82mhIQE/fDDD1q6dKlsNtsp2//yyy+SpLPOOksLFy7U2LFjNWzYMD399NNyOByV2rrdbs+MrnPPPfeE4wUEBEiSvvrqqzOqGwBQfxA4AQAAoN5asmSJunbtqoiICA0ePFgJCQkKDw/Xa6+9dsL2X3zxhWJiYtSiRQsNGTJEcXFxioqKOmn7urJ27Vo99dRTVdoUu2Kj7iFDhpzwfIsWLSRJycnJns/i4+OVnJysYcOGVau+0aNHa8+ePVXuv3nzZknSDz/8oOHDh+v999/Xjz/+qOeff16BgYGaPHmyp63ZbPbc95IlS44by+l0qqCgQJKqtHcUAKB+InACAABAvTRnzhwNHTpUW7du9QRIzZs3V35+vh555BFNmzatUvv58+fruuuu04EDBzwBVevWrZWTk6NHHnlETz/9dB3dSc1U7L0UFRV1wvMVG3RXhDR1IT09XdKRcGz48OH617/+pfvvv1+RkZFyuVx66qmnNGfOHE/7rl27SpKeeOKJ48Z66aWX5HK5JEnZ2dm1UD0AwBcInAAAAFDvlJSU6M4775Qk3XbbbTp48KB+++03ZWRk6Nprr5V0/P4/FZtVn3322crKytLSpUu1b98+3XXXXZKkf/3rX6fc+Lq+qlh+ZrWe+H0/JpNJkurs3txutzp27KjmzZtryZIlWrBggR599FG98cYbyszMVIcOHSRVDpf+/ve/SzoyM6pLly6aO3euVq9erVGjRunpp5/23NPplvIBAOovAicAAADUO2+//bYcDodatmxZaWaMJH388ceyWq0qKSnRvn37PJ9X7O80a9asSkvV3nrrLZnNZpWVlVXa56ihqNhQ/GQzmCr2SIqMjKy1mo5mNpu1YcMGZWRk6IILLjju3L///W9JR2ZBpaamSpJGjRqlCRMmSJK2bdum66+/XmeffbY+//xztW3bVv369ZMkRUdH196NAAC86sS/JgEAAADq0Ndffy1JGj9+/HHn/P39VV5eLknasGGD53OTySTDMFRYWFipfW5urud40aJF2rp1q1wulywWi0JCQhQTE6NWrVqpbdu2CgsL88Hd1ExQUJDy8/P1559/avDgwcedz8rKkvT/93Kqby655BLP382GDRvUpk0bSdKbb76pBx54QA8++KC2bNmi8PBwjRkzRhMmTFC7du0kVf2tdwCA+ofACQAAAPXO+vXrJUm33367SkpK9Oqrr2rVqlUKCwvTU089pS5duhzXp3379tq5c6fGjRun9evXa8+ePVq9erVeefVVud1umS0WpRU4lZK3V25JZpNks1oUtGmHgmxWhdr91LlzZ/Xv31+JiYmeZV11rXv37lq+fLmWLVum++6777jzFYHa5ZdfXtulSToyc+nXX3+V2+3WzTfffNx5p9PpWRbYsmXLSufatWunb7/99rg+FW8XvPHGG31QMQCgNhA4AQAAoN6pWD62evVq3XTTTZ4ZTdKRJXUDBw7U0qVLK/VZtGiR+vTpo23btik4OFhhYWEqLCxSWVmpTGazzr92rKI69lNASKjMZovcLqdKCvNVkJOp9MyDMjmLlJa7Vhs2bVGHdm01cuTIOlumdrT/+Z//0fLly7V69erjzq1cuVJut1sWi0UDBgyog+qkuXPnauLEiTKbzbr88st16NAh5eXlyel0ymq1egIlm83mWSp39dVX65dfftGLL76oe+65p9J4X3zxhRwOhwICAhQfH1/r9wMA8A72cAIAAEC9Ulpa6jm+/vrrJR2Z6fLyyy97lpStWLFCw4YNq9SvWbNmOuussyRJ5eXlysrKUlnZkbHaduuj868Zo3Y9+yumbSe1jG+vmMTOat9rgPpcOEIX/GWcug25TIftzfTnvjyt2LBNb731llatWuWZnVNXxo4dK5PJpN27d+uTTz7xfO50OnXDDTdIOrJs7eh9q2rTzTffLIvFIrfbrSFDhmjWnP/qoy/m65OvvtOsDz/Tq6++KklKTEzUsmXLVFxcLLvdrry8PL300kuVxioqKvIso7zllltq/V4AAN7DDCcAAADUK0dvjm21WpWcnKzW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z7iGYaht27b629/+pnHjxslsZo9zAAAAAACA+s4rgZMkmUwm3X333Ro9erRmzJihf//739qzZ49cLpe2b9+uHTt2aN68eaccwzAMz3GHDh30t7/9TbfeeqssFou3ygQAAAAAAICPeX3KUEBAgB566CHt2rVLCxcu1B133KHWrVvLMIzT/mnXrp3uvvtu/fLLL9q+fbvGjBlD2AQAAAAAANDAeG2G07FMJpMuueQSXXLJJZKk9PR0bd68WSkpKcrLy1NZWZkCAgIUHh6uxMREde3aVS1atPBVOQAAAAAAAKglPgucjhUTE6OYmJjautwJFRUVaebMmfr222+1ceNG5eXlKTg4WB06dNDll1+u++67T1FRUaccY926dZo6dap+/fVXHThwQKGhoerUqZNuvvlm3X777fL396+luwEAAAAAAKifai1wqmsrVqzQddddp7S0tEqf5+bmatWqVVq1apWmTp2qTz75RMOHDz/hGFOmTNGkSZPkcrk8n2VlZSkrK0vLly/XrFmzNH/+fMXGxvr0XgAAAAAAAOqzWgmcCgoKVFJSIqfTKX9/fwUEBCgkJKQ2Li1J2r59u4YPH678/HxJ0jnnnKNRo0YpNjZWhw4d0rx587RkyRLl5eVp5MiR+vnnnzVo0KBKY3z00Ud6+OGHJUlBQUG655571LdvXx06dEjvvfee1q9frzVr1uiqq67SsmXLZLPZau3+AAAAAAAA6hOvB07Z2dn66quvtGDBAq1fv1779u2T0+k8rp3NZlN8fLx69OihCy+8UNdee62aN2/u7XIkSQ888IAnbHrmmWf07LPPVjp/77336vXXX9dDDz0kh8Oh8ePHa8OGDZ4Ny/Py8nT//fdLksLDw7V06VJ1797d0/+ee+7R6NGj9cknnygpKUnTp0/3hFMAAAAAAABNjdfeUpebm6sHHnhArVu31l133aWvv/5ae/bsUXl5+QnfSFdaWqodO3boyy+/1H333ae4uDjdcccdysrK8lZJkqSUlBQtXLhQknTuueceFzZVmDhxokaOHClJ2rJli5YuXeo5N3PmTOXk5Eg6ElgdHTZJkp+fn2bPnu1ZSvfyyy+fMGQDAAAAAABoCrwSOG3ZskX9+vXT9OnTVVZW5gmVQkND1b17d5133nm69NJLdcUVV+jSSy/Veeedp+7duyskJMTTtry8XLNnz1bv3r21detWb5QlSfrxxx89x7feeusp215//fWe4xUrVniOP/30U0mSv7+/xo8ff8K+NptNd955pyQpMzNTS5YsqXbNAAAAAAAADVmNl9QVFRVp5MiR2rNnjySpX79+mjBhgoYOHVqlt9Lt379fixcv1rRp07RmzRrt379fl19+uTZs2OC1fZ66d++uffv2qVOnTqdsFxkZ6TnOzc2VJOXn52vdunWSpIEDByooKOik/YcOHapnnnlGkrRgwQJdeumlNS0dAAAAAACgwanxDKe3335bycnJMplMmjRpklatWqVbb721SmGTJMXGxuq2227T6tWrPfsepaam6s0336xpaZKkO++8Uxs3blReXp4uuOCCU7bdvHmz5zg6OtrzmdvtliT16NHjlP27devmOV6/fn01KwYAAAAAAGjYahw4zZ07V5J03nnn6aWXXqrRWK+88orOO+88GYahefPm1bS0M+J2uzVr1izP1+ecc46kI3tAVUhISDjlGOHh4QoODpYk7d271+s1AgAAAAAANAQ1XlJXMbvpxhtv9EY9uvnmm/Xbb79px44dXhmvqqZPn64tW7ZIktq3b+8JnDIzMz1tKmY9nUpkZKSKioqUnZ1dpeu2bt36pOcOHDig6OhobdiwoUpjNSTl5eWS1CjvDdXHc4Fj8UzgWDwTOBbPBI5V8UyUl5fLz8+vjqsBgKarxjOcSkpKJMlr+y0FBgZKkgzD8Mp4VfH777/r0Ucf9Xz94osvymKxSPr/9ydJdrv9tGNVtDm6HwAAAAAAQFNS4xlOcXFxSk5O1vLly70yy2nRokWSjuztVBvWr1+vESNGyOFwSJJuu+02XXfddZ7zFb8hkY68ie50Kto4nc4qXT8tLe2k5ypmP/Xs2bNKYzUkFb+FbIz3hurjucCxeCZwLJ4JHItnAseqeCaY3QQAdavGM5wuvvhiGYahmTNn6tdff63RWN99953++9//ymQyadiwYTUt7bRWrVqlCy+80PNGugEDBmjGjBmV2gQEBHiOK0KpUykrK5Mk+fv7e7FSAAAAAACAhqPGgdPDDz+sgIAAlZeXa/jw4Xr44YeVnJx8RmPs379fjz32mK699lq53W7Z7XY9+OCDNS3tlBYsWKChQ4d6wqY+ffpowYIFniV9FSo2AZek0tLS045b0ebooAoAAAAAAKApqfGSunbt2mnWrFm69dZbVVZWpqlTp2rq1Klq06aNevTooYSEBEVHR8tut8tms8nhcKi0tFTZ2dlKTU3V5s2btWvXLklH9m0ym8169913lZiYWOObO5l33nlHf/3rX+VyuSRJAwcO1IIFCxQeHn5c24iICM9xVTYCz8nJkSQ1b97cO8UCAAAAAAA0MDUOnCTphhtuUExMjMaPH6+dO3dKkvbu3avU1NQq9a/YILxTp07697//rYsuusgbZZ3Qk08+qRdffNHz9fDhw/XFF18oKCjohO07derkOT7d/eTm5qqoqEiSlJCQUPNiAQAAAAAAGqAaL6mrcN5552nLli36/PPPde211yoqKkqGYZz2T8uWLXXjjTdq3rx52rhxo0/DpnvvvbdS2DR69Gh9++23Jw2bJKlz584ym498mzZv3nzK8Y8+36NHjxpWCwAAAAAA0DB5ZYZTBYvFomuvvVbXXnutJOnAgQNKSUlRZmamSkpKVF5eroCAAAUHBysiIkKdOnU64TI2X5g0aZLeeustz9ePP/64/vnPf562X0BAgAYMGKA//vhDv//+u0pLS2W320/YdvHixZ7jCy+8sOZFAwAAAAAANEBeDZyO1apVK7Vq1cqXl6iSuXPn6pVXXvF8/dJLL+mxxx6rcv/rrrtOf/zxh0pKSjRr1izde++9x7UpLS3VO++8I0mKiorSxRdfXPPCAQAAAAAAGiCvLamrrzIzM3X33Xd7vn7ggQfOKGySpDFjxig6OlrSkZlRq1evrnS+vLxcY8eOVXp6uiRpwoQJstlsNawcAAAAAACgYfLpDKf64PXXX1dubq6kI2+cGzRokL7++uvT9mvTpo369Onj6ffKK69o7NixKioq0pAhQ3TnnXdq4MCBysnJ0axZs/Tnn39Kkrp3765Jkyb56nYAAAAAAADqvUYfOL3//vue49zcXF1//fVV6jd69OhKfceMGaOMjAw9+eSTKisr07Rp0zRt2rRKfbp3764ffvhBAQEB3igdAAAAAACgQWrUS+qysrJ04MABr4332GOPafXq1RozZozi4+Nls9kUEhKigQMH6vXXX1dSUpJiY2O9dj0AAAAAAICGqFHPcIqOjpZhGF4ds3fv3po9e7ZXxwQAAAAAAGhMahw4XXPNNd6o4zgmk0lffvmlT8YGAAAAAACA79Q4cPr6669lMpm8UQsAAAAAAAAagRrv4TR9+nQFBQVJkgzD8NofAAAAAAAANEw1nuH017/+VRdeeKEuv/xy7d27VyaTSU8++aRuv/12b9QHAAAAAACABsYrm4Z36dJFS5Ys0bnnnquDBw/q5Zdf1siRI9W3b19vDA8AAAAAAIAGpMZL6iq0bdtWn332maxWq8rLyzV27Fg5nU5vDQ8AAAAAAIAGwmuBkyQNGTJEzz33nCRp8+bNeuutt7w5PAAAAAAAABoArwZOkvTII4+oXbt2MgxDL7zwgkpLS719CQAAAAAAANRjXtnD6Wh+fn56++239eGHH0qStmzZoj59+nj7MgAAAAAAAKinvB44SdLQoUM1dOhQXwwNAAAAAACAes7rS+oAAAAAAADQtBE4AQAAAAAAwKsInAAAAAAAAOBVBE4AAAAAAADwKp9sGi5JiYmJ1epntVpls9kUERGhuLg49evXT9dee63atGnj5QoBAAAAAADgCz4LnFJSUo77zGQyyTCMKn1uMpkkSZ9++qmeeOIJvfjii5o4caJPagUAAAAAAID3+CxwuuuuuyQdCYwKCgpkGIbMZrO6du2qdu3aKSgoSCUlJUpJSdGmTZtUXl4uk8kki8WiuLg4lZWVKTs7W2VlZSorK9MjjzwiSYROAAAAAAAA9ZzP9nCaMWOGQkJClJ+fL7PZrIcfflhpaWlav3695s2bp//+97/68ssvtWbNGmVkZOj555+Xv7+/XC6X7rrrLqWlpamkpET/+7//q3bt2skwDD3++OPavXu3r0oGAAAAAACAF/gscPr555/16quvymQyac6cOXrllVfUokWLE7YNDw/Xk08+qXnz5kmSnnjiCa1atUomk0mXXXaZFi9erODgYDmdTs2ZM8dXJQMAAAAAAMALfBY4vfnmm5KkESNG6KabbqpSn8suu0zXXXed3G63Xn31Vc/nbdq00U033STDMLRgwQKf1AsAAAAAAADv8FngtGLFCplMJl111VVn1O+yyy6TJC1durTS571795YkpaWleaU+AAAAAAAA+IbPAqecnBxJkt1uP6N+/v7+kqS8vLxKn0dGRkqSsrOza14cAAAAAAAAfMZngVOzZs0kSStXrjyjfhXtK/pXyMzMlCQFBQV5oToAAAAAAAD4is8Cp8GDB8swDL377rvaunVrlfrs3LlTM2fOlMlk0rnnnlvp3K+//ipJat++vddrBQAAAAAAgPf4LHC69957JUml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n62oqCjZ7XbFxcXpuuuu07ffflutmqoiOTlZDz/8sHr16qWQkBDZ7XbFxsbqsssu04wZM1RaWuqza+P0rHVdAAAAAAAAqBv79+/XNddco1WrVlX6vKysTL///rt+//13TZ8+Xd9//726dOlyXP958+Zp3Lhxys/Pr/R5WlqavvjiC33xxRcaNmyYPvvsM4WFhXmt7s8++0yjR49WWVlZpc/T09OVnp6uH374QS+99JJ++OGHE9YN3yNwAgAAAACgHrj//vt11VVXeb7+4IMP9NVXX6lHjx76xz/+UantV199pQ8++ECtW7fWtGnTqnW9vLw8DRgwQPv375cktW/fXqNHj1b79u118OBBzZkzR3/++adSUlI0bNgwbdiwQeHh4Z7+X375pUaNGiW32y2r1apRo0bpoosuUnBwsHbu3KkPPvhAO3fu1MKFC3XJJZdo2bJl8vf3r1atR9uyZYtuu+02ORwOhYSE6I477lDv3r3l7++v1NRUvf/++9qyZYtSU1N11VVXafPmzbJaiT9qG99xAAAAAADqgT59+qhPnz6er2fOnClJOv/88ysFUdKRwEk6smH4seeqatKkSZ6w6YYbbtCcOXMqBUL333+/brzxRs2dO1f79u3TlClTPMFXRkaGbr/9drndbkVFRWnBggXq379/pfEfe+wx3XnnnXr//fe1evVqPf/883r++eerVevR3nnnHTkcDknSwoULj9s0feLEiRo+fLgWL16sHTt26IcfftCIESNqfF2cGfZwAgAAqCXFxcXas2ePtm/frpSUFJWUlNR1SQCAemzNmjWSpL59+57RuarIycnRe++9J0lKTEzU7Nmzj5t9ZDab9e677yowMFCS9NFHH3nO/fvf//Yso5s5c+ZxYZMk+fn56e2331bbtm0lSdOnTz/tflBVsX37dklSVFTUCd/QZ7Va9eyzzyo+Pl4XXXSRJ5xC7WKGEwAAgA8ZhqHU1FStXr1amzdv1mGHUy63IYvZpCC7v7p166b+/fsrLi6urksFANQj6enpng3Dj571JB35Bca2bdskVT9wWrBggVwulyRp/PjxstvtJ2wXGhqqN998Uw6HQ507d5ZhGDKZTJo7d64kqVmzZho5cuRJr2Oz2XTbbbfpueeeU15enpYuXarhw4dXq+YK0dHRkqTs7Gy9++67Gj9+/HFtBg8erJSUlBpdBzVD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SZMmMXv2bE+HJNpY/fmbJOF0ZtDpdFxyySVs3ryZV155BV9f3zZvz2Qy0a9fv0aTM4WFhVoCY+zYsacV28m65557+O9//8s999zTZJl169YBEBUVpb1Xl3Dq168fn376KVOmTCE+Pp4uXbowZcoUPv/889YM26M6duxIjx49Gt332muvAeDv78/gwYObbWfVqlXaqunPPPOMzAnZgmTScNGqdu7cqW337t272bK9evXStrdv364NmxFnr+DgYBYsWMBtt92GyWSSHgrnsJtuuombbrrphMru3r1b2w4JCWmtkEQ753Q6G/SKbG4SUHF2evjhh9m/fz8BAQHaHxbi3FI/4VT3OTMrK4t9+/bhdruJjo5u00mfxfH16dOHL7/8sl2153a7yc7O5vvvv+fxxx8nJyeHnj17cuedd7ZQlC0jOTmZjz/+GIBJkyZp79clnL766ittf52DBw/yxRdfMH36dJYsWdLspPpng6qqKvbs2cOiRYt4++23AfjnP/953ETk3/72NwDGjx8vC9K0MEk4iVZVP4EQGxvbbNlOnTpp2+np6a0UkWgv/vSnP7Fo0SK8vLw8HYo4g7jdbt544w3t9XnnnefBaERbs9vtZGVlsWbNGp599lntj82pU6dyxRVXeDg60ZZ+/vlnnnvuOaD22+jIyEgPRyQ8oe53gNlsZvfu3cyePfuYeXdiY2N56KGHuPHGG6XXgmjUpZdeqvVuAbjgggv48MMP8ff392BUDVVVVTFjxgzsdjve3t7cfffd2r66hJPT6eThhx9m3rx5REZGkp6ezosvvsgLL7zARx99RFBQEC+//LKHzqD1bd68mUGDBmmvTSYTb7/9NjNmzGi23qZNm7SeY3/+859bNcZzkQypE60qPz9f2z5eT4T6w2QKCwtbLSbRPiQlJUmySZy0F198kT179gCQkJAgCadzSGVlJWazmc6dOzN37ly2b9+OyWTiL3/5Cx9++GGT8zyJs09lZSVz587F7XYzadIk5syZ4+mQhIfs2LEDqJ2OYfr06Y1O8pyWlsbNN9/M5Zdfjs1ma+sQxRkgMzOTgIAALSG5evVqrr32WvLy8jwcWa2amhqmTp3K77//DsDLL7+sDSO32+2MHDmSQYMG8d577/HEE0/QuXNnzGYzXbt25fnnn+cf//gHAK+++qr2GepsdPjwYcxmM97e3kDttbnrrrtYvHhxs/Xq5v8bMmSINqewaDny6Uy0qqqqKm3bYrE0W7b+/vr1hBAC4Ndff+X+++/XXj/55JPo9XoPRiTa0uHDh495z2638/333zdYrUec/R544AFSUlJkKN05rqamhv3792uvIyIieOmllzh8+DA2m42DBw/y1FNPaUNpPvvsM/70pz95KlzRjq1du5bi4mLKy8t59913CQ4O5rvvvmPUqFHY7XaPxlZeXs6kSZO0xVUeeuihBourmEwmPvzwQ3777TemT5/eaBsPPPAAISEhqKrKf//73zaJ2xPGjRtHZWUl5eXlJCcnM23aNPLy8rjxxht59913G61TWlqqXZM77rijLcM9Z0jCSbQqh8OhbZvN5mbL1t9ff1UBIYTYvn07kydP1j74XXfddVx55ZUejkq0Jb1ezz//+U+WLVvGokWLGD9+PFC7Stn48eN5/fXXPRyhaAurVq3ShoTIULpz26FDh7TPjj179mTbtm3Mnz+fqKgoTCYT8fHx/PnPf+bnn3/WJodevHgxmzZt8mTYoh3y8/MDwNvbm2uvvZZvv/0WnU7H/v37m0xUtIWsrCxGjhzJ6tWrgdrE0ZNPPnnS7ZhMJoYMGQJwVvdw8vb2Rq/XoygKXbp04ZNPPmHKlCkAPPLII6iqekydb775BrvdjpeXl8wf3Eok4SRaldVq1baP9w1B/W7OZ/uEdkKIE/fbb79x/vnnayvSDRky5Kyeg0A0rkuXLtx3331Mnz6dW2+9lW+//ZY333wTRVFQVZXbb7+dQ4cOeTpM0YrKysq4/vrrUVVVhtIJevbsSWVlJUeOHOHnn38mNDS00XJ9+/blscce016/8sorbRWiOEMNHDiQUaNGAbVfanjC7t27GTp0qDZP2ZNPPsnChQtPub26+aiqq6tbJL4zxV133QXU9pI+cuTIMfu/+OILACZPnqwNxRMtSxJOolXVX260pqam2bL199dPVAkhzl0rVqzgwgsv1JJNAwYMYMWKFTL/lwBg7ty53HzzzUDtlxavvvqqhyMSremee+4hIyMDf39/GUonNB07dmwwD2hjZs2apW2vXbu2tUMS7VhFRQXr168/7tCyujmSCgoK2iKsBjZs2MCIESPIzMzEYDDw1ltv8dBDDzVadteuXTzzzDPaKmtNyc3NBSA8PLzF4/WUgwcPsmLFigarFx+t7j7CsffS7Xbz7bffAkiv+VYkCSfRqgIDA7Xt400EXlRUpG2HhYW1WkxCiDPDa6+9xiWXXEJFRQUAQ4cOZdWqVQ1+rwhxyy23aNt1q8yIs8+KFSu0FSplKJ04WWFhYQQHBwM02stBnDs2btzIsGHDuPLKKzlw4ECT5fbu3QtATExMW4UG1E6EP3HiREpKSvDy8uKLL75otjfnnj17uOeee/j73/+uTaJ/tLKyMq2n1rBhw1ojbI+YO3cukyZNanaYYd191Ol0DVZEB9i/fz9lZWXA2XVd2htJOIlW1a1bN207IyOj2bL198fGxrZWSEKIM8CCBQu4+eabcblcAEyYMIGVK1cSEBDg2cBEu9O9e3dtu72sKCRa3rJly7Tt66+/HkVRGv2ps337du09WXVIABiNRk+HINqBYcOGacPL/u///q/RMp999hnbtm0D4PLLL2+r0CgvL2fatGlasmnFihVMmjSp2Tpjx47V5jJ7+umnGy3z2GOPUVFRQWBgIFdccUWLx+0pEydOBOCTTz4hJSXlmP12u50nnngCgDFjxhzTE3LLli1AbS+oiIiIVo723CUJJ9GqevXqpW03193x6P29e/dutZiEEO3bbbfd1uDbqtmzZ/PVV1/J2PpzyPvvv89VV11FUlLScedlqj8cu241KiHE2e/bb79l4cKF3HvvvY2uYllfTU2N1tNe/rA8t1mtVhYsWADUTiJ/5513al9WVFRU8MILLzBz5kwArrrqKkaOHNlmsT3xxBNa4uTll1/W5pFqTmBgoLaC7wcffMCf/vQn7Xzy8/O56667+M9//gPU9g49mz5L3XbbbURERGCz2Rg/fjzff/+9tvDUtm3bGD9+PJs2bcJisfCvf/3rmPp1PcLqd5AQLc/g6QDE2W3o0KGYzWZsNhs//vij9gu+MatWrQJqVyJqy1/uQoj244EHHmDRokXa6z//+c889dRTHoxIeMK+ffv46KOPAFi+fHmzS5lv2LBB2+7Ro0erxyY844477tBWG2rO1KlTgdqe0s888wwAISEhrRma8JDPPvtMm8urZ8+ezJs3r8myP/30k7ZysgydEffddx/p6em89NJLPP/88zz//PMEBARQXl6u9ay+7LLLeOutt9osJpvNpi2IoigKDzzwAA888ECzdXJycgB49NFHSU1N5b333uOll17ipZdewt/fn7KyMlRVRafT8eSTTzJ79uxWP4+25O/vz/Lly5k0aRIpKSmMHz8ek8mE2WymvLxcK/PBBx/Qv3//Y+rXXT/pPd/KVCFa2aWXXqoCqqIo6o4dOxots23bNlVRFBVQL7744jaOULQXqampKqAC6mWXXebpcEQbW7ZsmXb/AfXpp5/2dEjCQ9avX689Bz169FCdTmej5dxut3r++edrZf/73/+2caSival7Fvr27evpUEQr+/jjj7X7nZSUpLrd7kbLuVwudcSIEVrZlStXtnGk4nhmz56tAur48ePbtL1vv/1WveSSS9TQ0FDVYDCooaGh6qRJk9RPPvmkyeeptWzevLnBZ6AT+TnaJ598oo4fP14NDg5WjUajGhkZqc6YMUPduHFjm55LWysoKFAXLFigJiYmqhaLRbVarWrPnj3V++67T83Kymqy3sSJE1VAnTNnThtGe+5RVFVVWz+tJc5la9euZfTo0QAkJiby448/Nli6Ni8vjzFjxmiTuv30009aeXFuSUtLIy4uDqj9Zunzzz/3bECizeTn59OtWzdtNbo777yTZ5991rNBCY8aOXIkv/zyCwC33347zz33XIM5etxuN3fffTfPP/88AP3792fLli0NyohzT93979u3rzYHizg72Ww2evToQWpqKgD3338/CxcubPA7wOl0ctttt2k9oS688EJWrlzpkXiFEOJcJAkn0SbmzJnDO++8A9ROzHbrrbfSpUsXDhw4wKJFi7QujfPmzWPx4sWeDFV4kCSczl0PP/ywNnQuMDCQV155BZPJdNx60dHRDBgwoLXDEx6wb98+hg0bpiUhBw8ezKxZswgPDyctLY13332XXbt2ARAUFMTGjRtJSEjwZMiiHZCE07ll9erVTJgwAbvdDtRO5TBz5kw6dOjAoUOHeOedd7QvNKOjo/nll1+OWalKCCFE65GEk2gTdrudGTNm8OmnnzZZZvr06SxZsuSE/sgUZydJOJ27IiIiyM7OPul6s2fP5u233275gES78PvvvzNt2jTS09ObLNOjRw8+++wzmfRTAJJwOhctX76ca6+9lqKioibL9O/fn48//pj4+Pg2jEwIIYSsUifahMlk4pNPPuHTTz9l8uTJdOjQAaPRSEhICBMnTuTTTz9l2bJlkmwS4hxUUFBwSskmcfYbMGAAu3fv5plnnmHkyJEEBARgNBrp0KEDEyZM4M0332THjh2SbBLi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", + "image/png": "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JXXnMWrUKNeMp+eee05r166tcN5ut2v06NFKT0+XJD3yyCPy8fGp8ToBAAAAAADqigY7w8ldwsLCNGHCBI0ePVqFhYUaOHCgxo0bp379+ik7O1tTp07Vxo0bJUmdO3fW+PHja7dgAAAAAACAWkbgVAmjRo1SRkaGXnzxRZWWlmrSpEmaNGlShTadO3fWTz/9JD8/v1qqEgAAAAAAoG5gSV0lPfvss1q7dq1GjRqluLg4+fj4KCgoSP369dP777+vpKQkxcTE1HaZAAAAAAAAta7Rz3AyDKPSbXv06KHp06d7sBoAAAAAAID6jxlOAAAAAAAAcCsCJwAAAAAAALgVgRMAAAAAAADcisAJAAAAAAAAbkXgBAAAAAAAALcicAIAAAAAAIBbETgBAAAAAADArQicAAAAAAAA4FYETgAAAAAAAHArAicAAAAAAAC4FYETAAAAAAAA3IrACQAAAAAAAG5F4AQAAAB4gM1m03//+19lZmaet+2BAwe0ZMkSHT169IKukZKSovnz51e1RAAAPIbACQAAAPCAG264Qddcc41mz5591jazZs1SWFiYEhISdOWVV6pZs2aKiorSH3/8cd7xy8rK1L17d/3pT39yZ9nV5nQ6VVhYqLKyMo+M76lxAQDuReAEAAAAuNkzzzxz3plH8+bN0913363c3FxFRUXp8ssvV0BAgI4cOaKBAwdq8+bNZ+3rdDrVvXt35eTkuLv0arvtttsUFBSkOXPmnPG8zWZTRESEwsLCzvgnPDz8tD5bt27VpZdeKqvVKi8vL1ksFnXs2FHLly/39O0AAKqIwAkAAABwk7KyMg0bNkzvvvvueduOGjVKkjR69Gilp6dr6dKlys3NVa9eveRwOHTzzTefsV9KSopatGihbdu2ubN0t3jvvff0n//855xtFi9erOzsbOXm5p7xz6kh2vLly9WtWzetWLFCTqdTrVq1UmhoqHbu3KlBgwbp008/9eQtAQCqiMAJAAAAcIPp06crNDRUP/30k8xms7y8vM7ads6cOcrNzZW3t7emTJni+txqteqnn36SJO3evVupqakV+o0ZM0atWrXS4cOHFRwc7JkbqaJx48bp6aefPm+7BQsWSJLatWunFStWnPHPyW644QY5nU41b95c6enp2r9/v7KysvTJJ5/IMAz95S9/ueC9rwAAnkfgBAAAALjB3/72NxUVFSk2NlabNm1SSEjIWduWzwKKi4uT2VzxR/LIyEhX33/9618Vzs2cOVNOp1ODBw9WWlqam++gahYuXKjo6Gh99tlnknTa/ZxqzZo1kqTLLrtMAwYMOOOfcn/88Yeys7MlSatXr1bz5s1d5x588EH17t1bDodDDz/8sLtvCwBQTQROAAAAqPNyc3P122+/6eDBg5Vqf/ToUa1cufK0GUKedPnll2vKlClKSUlR586dz9l248aNkqQuXbqc8XzLli0lSUlJSRU+Hzx4sNauXavFixcrMDCw+kW7wb333qvDhw8rKChI8+fPP29d+/btkySNGDHivGOXL5eLiopyfU9Ods8990jSabOiAAC1j8AJAAAAddbSpUvVqVMnhYWFacCAAYqPj1doaKjee++9M7b/9ttvFR0drWbNmmngwIGKjY1VRETEWdu706effqp77723Um0LCgokSZ06dTrj+bi4OEnSsWPHKny+aNEi9e7duxpVul+nTp309NNPKzc3V8OGDTtnW6fT6Zqx1L17d40ZM0a9e/dWv379NGXKFDmdzgrt8/LyJEkRERFnHK9Zs2aSpMzMzOreBgDAzay1XQAAAABwJjNnznRtrN2sWTO1a9dOu3bt0tGjR/X000/L29tbl112mav9vHnzXBtth4WFKTExUcnJyUpNTdXTTz+tvLw8vfbaa7VxK6c5fvy4JJ11H6aAgABJUnFxcY3VVFWLFi2qdNuNGzfKMAxJUnx8vOtYOrFk7qmnntKyZcvUvXt3SVLr1q0lSYcOHTrjeD///LMkyeFwVKV0AIAHMcMJAAAAdU5xcbHGjRsn6cSyqSNHjmj58uXKyMjQTTfdJEl68cUXK/R57LHHJEkXXXSRMjMztWLFCh06dEj333+/JOnvf//7aTNo6jqLxVLbJbjVjz/+6DqOj4/XpEmTNH/+fI0cOVJeXl7Kz8/XJZdcIpvNJkl65plnJJ2Y6TR16tQKY5WUlOjrr7+WJBmGUe/+bgGgoSNwAgAAQJ3zz3/+UzabTc2bN9fMmTMrnPvyyy9ltVpVXFxcYeZL+f5OU6dOrbBx9SeffCKz2azS0lLXjJja5uPjI0nKz88/4/nCwkJJUlBQUI3VVBPatGmjnj176qabbtL+/fv18MMPa9iwYZoxY4Y2bdokk8mk4uJiTZw4UZLUtGlT1xLC++67T1dffbVmzZqlF198Uc2bN1dRUZFr7PNtVg4AqFksqQMAAECd8/3330uSxo4de9o5b29v2e12SdLmzZtdn5tMJhmG4dofqVxOTo7rePHixdqxY4ccDocsFouCgoIUHR2tqKgotWrV6pxvlnOn6OhoHTlyRNu2bTvj+eTkZEln37uovrrzzjt15513nvFcx44d1aNHD61fv17Tpk3Tc889J0latmyZevbsqV27dunnn392hYYWi0UzZszQyJEjCZsAoA4icAIAAECds2nTJkkn3oBWXFysd999V2vWrFFISIj++te/qmPHjqf1adOmjfbs2aMxY8Zo06ZNOnDggNauXasJ774rp9Mps8Wi1PwyJecelFOS2ST5WC0K2LpbAT5WBft6qUOHDurTp48SEhJkMpk8dn9XX3211q9ff9bAqXzm1uDBgz1WQ1100UUXaf369a6NxSXJ399fO3fu1K+//qq33npLBQUF6tGjh15//XWlp6dL+r8ZYwCAuoPACQAAAHVO+VKztWvX6o477nDNaJJOLKnr16+fVqxYUaHP4sWL1bNnT+3cuVOBgYEKCQlRQUGhSktLZDKbddlNoxXRrrf8goJlNlvkdJSpuCBP+dnHlH7siExlhUrNWa/NW7erbetWuu666xQeHu6R+xszZozefvttJScnq6ysTFbr//1Ynpqa6rr/2267zSPX95SCggLXXkq7du3S6tWrFR4erqioKAUGBurzzz/Xxo0bdfPNN6t///6n9c/KypIkBQYGnnZu0KBBGjRoUIXPJkyYIElKSEhw850AAKqLwAkAAAB1SklJiev41ltvlcVi0e23367u3bvrxx9/1MqVK7Vq1SoNGTJE77//vqttkyZN1L17dy1ZskR2u12ZmZmuc60Se+qyG0cpOLzJGa/pdDqVmZaslF1btPHQIWUV7VRaWpquvvpq9enTx+2zndq2bauwsDDl5ORoxIgRmj9/vsxms4qLi3XllVdKknr06KHmzZu79bqeUFBQoHXr1mnDhg3Kzc11bfi9cs06ZRaUyM/LIl8vsyIiIvT6668rMzNT69ev16+//nraWEuXLpUkDR8+XNKJfbkSExNltVqVm5t7Wvt///vfkk7MGAMA1C0ETgAAAKhTTt5I22q1at++fWrRooUkafz48frXv/6lBx54QL/88ovy8/MVHByssrIyxcbGKisrS1arl9r1HqjL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YmI0bNgwTZ48WSUlJR67Ns7PWtsFAAAAAACA2pGWlqYbb7xRa9asqfB5aWmpfv/9d/3+++/6+OOPNX/+fHXs2PG0/nPnztWYMWOUl5dX4fPU1FR9++23+vbbbzVkyBB98803CgkJcVvd33zzjUaOHKnS0tIKn6enpys9PV0//fST3n77bf30009nrBueR+AEAAAAAEAd8Oijj+r66693ff3555/ru+++U5cuXfTaa69VaPvdd9/p888/V4sWLTRp0qQqXS83N1d9+/ZVWlqaJKlNmzYaOXKk2rRpoyNHjmjmzJnauHGjkpOTNWTIEG3evFmhoaGu/nPmzNEtt9wip9Mpq9WqW265RVdccYUCAwO1Z88eff7559qzZ48WLlyoq666SitXrpS3t3eVaj3Z9u3bdc8998hmsykoKEj33XefevToIW9vb6WkpGjGjBnavn27UlJSdP3112vbtm2yWok/ahrfcQAAAAAA6oCePXuqZ8+erq+nTJkiSbrssssqBFHSicBJOrFh+KnnKmv8+PGusOm2227TzJkzKwRCjz76qG6//XbNnj1bhw4d0sSJE13BV0ZGhu699145nU5FRERowYIF6tOnT4Xxn332WY0bN04zZszQ2rVr9frrr+v111+vUq0n+/TTT2Wz2SRJCxcuPG3T9CeeeEJDhw7VkiVLtHv3bv30008aMWJEta+LC8MeTgAAADWkqKhIBw4c0K5du5ScnKzi4uLaLgkAUIetW7dOktSrV68LOlcZ2dnZmjZtmiQpISFB06dPP232kdls1meffSZ/f39J0hdffOE6949//MO1jG7KlCmnhU2S5OXlpX/+859q1aqVJOnjjz8+735QlbFr1y5JUkRExBnf0Ge1WvXKK68oLi5OV1xxhSucQs1ihhMAAIAHGYahlJQUrV27Vtu2bdNxW5kcTkMWs0kBvt5KTExUnz59FBsbW9ulAgDqkPT0dNeG4SfPepJO/AJj586dkqoeOC1YsEAOh0OSNHbsWPn6+p6xXXBwsD766CPZbDZ16NBBhmHIZDJp9uzZkqQmTZrouuuuO+t1fHx8dM899+jVV19Vbm6uVqxYoaFDh1ap5nKRkZGSpKysLH322WcaO3bsaW0GDBig5OTkal0H1UPgBAAA4CEOh0P//e9/tTZpnY4WlCojv0SlDkNWL2+V2W3ytZqVmr1a6zds1MX9+2no0KEym5mADgCQ1q9fL0ny9fVVp06dKpzbuHGjKyyqauC0evVq1/HAgQPP2fbee++t8HV2drZrllFISIjmzZt3zv7Hjx93HSclJVU7cLr11ls1a9YsSdK4ceP08ccf69prr9XQoUPVt29f9muqI/hbAAAA8ADDMPTdd99p9bqN2nmkQIERzdWhf1c1jU2Q2WKRw1GmjIN7lbJriw6nHZVt5e+y2+269tprq/xaawBAw1G+ZK5r166nBSjl5xISEhQWFlal8TMyMlzHcXFxF9S3fN8nSdq7d69uuOGGSvc9evToBV3rTEaMGKGHH35YH3/8sSRp8+bN2rx5s9544w0FBwfrqquu0nXXXafrr79eQUFB1b4eqobACQAAwAPWrl2rpA2btONwvuK79FVCl94VgiSLxarohA6KatVeezau0o4d62VZm6S4uDh179699goHANSaUaNGaebMmRU+W7NmzVl/EbF///7TzhmGUalrZWdnu479/PwuqM78/PwLan+ygoKCKvc92aRJk3T11Vfr/fff17Jly+R0Ol21zZkzR3PmzFFQUJBeffVVPfHEE265Ji4Mc7YBAADczDAMrVq1Soeyi9UsoaNad+1z1v9YMJlMatu9nyJatFZqznH98ccflf6PBQAAqqp8I3BJF/wSi5P73nrrrTIMo9J/pk+f7rZ7uOaaa7R06VIdOXJEn3/+ue655x7FxMS4zhcUFOjJJ5/Ue++957ZrovIadeD0ySefyGQyVfoVknv37tVf/vIXtW3bVr6+vgoPD1efPn00YcIEt6W0AACg/tu/f7+OHM1UdpFNrRLPv7eGyWRSq869lFVYqrT0w0pNTa2BKgEAdc2jjz6q7777Tp999pnrs48++kjfffed68+XX37pOvfmm29WOPfdd99V+lrNmjVzHaekpJyz7YEDB/THH3+4luGd3Dc9Pb3S1/SUJk2a6O6779bMmTOVmpqqdevW6bbbbnOdf/PNN2W322uxwsap0S6p27Fjh5599tlKt//66681ZsyYCpudlZaWKikpSUlJSfrXv/6lefPmKTEx0RPlAgCAemTPnj3KKipVWLMWCggOrVSf4PAmCoporuyiAu3evZu31gFAI9SzZ0/17NlTP/30kyTJ29tb999/v7y9vV1tVq1a5Tq+//77FRERUaVr9e7d2xVs/fHHH7rkkkvO2vajjz7SBx98IOnE/lE9e/ZUixYtlJqaqqSkJBUUFJxzr6RZs2ZpwYIFio+P1w033KDevXtXqWbpxKylefPmaefOnWrbtq1Gjhx5WpuePXvqyy+/1N69e5WUlKScnBylpKSodevWVb4uLlyjnOF04MABDRs2TIWFhZVqv3z5ct111106fvy4vLy89MADD2jWrFmaPHmyLr30UknSvn37NGLECGVlZXmydAAAUA8UFxfL7jDkX8mwqZx/UKhsDucFL20AADQs5ZuCd+nSpULYJP3f2+vi4uKqHDZJ0rBhw2SxWCRJU6ZMOesMoNLSUn377beSTswk6tatmyS5Ngo/fvy4Jk2adNbrlJaW6oUXXtCXX36pv/3tbxUmcVTVqFGj9Oabb+rtt98+6zJ0k8mk8PBw19eBgYHVvi4uTKMLnFasWKGLL75YBw8erFT7srIyjR07Vg6HQ97e3vrpp580efJk3XnnnXrggQf066+/6plnnpEkJScn65VXXvFg9QAAoD6wWCwySTIM5wX1M5wOmU0m138AAAAap/LAqVev05dln+vchYiNjdWtt94qSdq1a5f+8pe/yOFwVGhTVlamxx9/3LXU+4EHHnD9G/XEE0/I19dXkvTKK69o9uzZp12jrKxMd911lw4dOiRJ6tu3rwYOHFituoOCgjRs2DBJ0s6dO8/63+C///67fv31V0lShw4dKiwDRM1oNEvqbDab3nvvPb300ksqKyurdL/vv/9eu3fvliQ9+OCDuuKKKyqcN5lMeuedd/TLL78oKSlJn376qV566SU1adLErfUDAID6IyQkRP7eFqUeSZNhGGfdMPxkTodDOUfTFR9iUUhISA1UCQCoq84VKpXPcKpu4CRJH374oZYvX67U1FRNmTJFq1ev1j333KPY2FglJyfriy++0JYtWyRJnTp10nPPPefq26pVK3388ce67777ZLfbdeutt2ratGm67rrrFBYWpv3792v69Onau3evJCkgIEBTp06tds2S9MYbb2jhwoWy2+167bXXtHDhQt14441q2bKlcnNztWbNGs2aNUt2u10mk0l/+9vf3HJdXJhGETgtXrxYDzzwgPbt2ydJslqtevbZZ/Xmm2+et+/XX3/tOn7ooYfO2MZkMumRRx7RyJEjZbPZ9N1332ncuHHuKR4AANQ7Xbt21dJfflFyVo4y01PUJCbu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9evXaHKmsLBQS2CMHTv2tGI7Wffccw///e9/ueeee5oss27dOgCioqK09+oSTv369ePTTz9lypQpxMfH06VLF6ZMmcLnn3/emmF7VMeOHenRo0ej+1577TUA/P39GTx4cLPtrFq1Sls1/ZlnnpE5IVuQTBouWtXOnTu17d69ezdbtlevXtr29u3btWEz4uwVHBzMggULuO222zCZTNJD4Rx20003cdNNN51Q2d27d2vbISEhrRWSaOecTmeDXpHNTQIqzk4PP/ww+/fvJyAgQPvDQpxb6iec6j5nZmVlsW/fPtxuN9HR0W066bM4vj59+vDll1+2q/bcbjfZ2dl8//33PP744+Tk5NCzZ0/uvPPOFoqyZSQnJ/Pxxx8DMGnSJO39uoTTV199pe2vc/DgQb744gumT5/OkiVLmp1U/2xQVVXFnj17WLRoEW+//TYA//znP4+biPzb3/4GwPjx42VBmhYmCSfRquonEGJjY5st26lTJ207PT29lSIS7cWf/vQnFi1ahJeXl6dDEWcQt9vNG2+8ob0+77zzPBiNaGt2u52srCzWrFnDs88+q/2xOXXqVK644goPRyfa0s8//8xzzz0H1H4bHRkZ6eGIhCfU/Q4wm83s3r2b2bNnHzPvTmxsLA899BA33nij9FoQjbr00ku13i0AF1xwAR9++CH+/v4ejKqhqqoqZsyYgd1ux9vbm7vvvlvbV5dwcjqdPPzww8ybN4/IyEjS09N58cUXeeGFF/joo48ICgri5Zdf9tAZtL7NmzczaNAg7bXJZOLtt99mxowZzdbbtGmT1nPsz3/+c6vGeC6SIXWiVeXn52vbx+uJUH+YTGFhYavFJNqHpKQkSTaJk/biiy+yZ88eABISEiThdA6prKzEbDbTuXNn5s6dy/bt2zGZTPzlL3/hww8/bHKeJ3H2qaysZO7cubjdbiZNmsScOXM8HZLwkB07dgC10zFMnz690Ume09LSuPnmm7n88sux2WxtHaI4A2RmZhIQEKAlJFevXs21115LXl6ehyOrVVNTw9SpU/n9998BePnll7Vh5Ha7nZEjRzJo0CDee+89nnjiCTp37ozZbKZr1648//zz/OMf/wDg1Vdf1T5DnY0OHz6M2WzG29sbqL02d911F4sXL262Xt38f0OGDNHmFBYtRz6diVZVVVWlbVsslmbL1t9fv54QQgD8+uuv3H///drrJ598Er1e78GIRFs6fPjwMe/Z7Xa+//77Bqv1iLPfAw88QEpKigylO8fV1NSwf/9+7XVERAQvvfQShw8fxmazcfDgQZ566iltKM1nn33Gn/70J0+FK9qxtWvXUlxcTHl5Oe+++y7BwcF89913jBo1Crvd7tHYysvLmTRpkra4ykMPPdRgcRWTycSHH37Ib7/9xvTp0xtt44EHHiAkJARVVfnvf//bJnF7wrhx46isrKS8vJzk5GSmTZtGXl4eN954I++++26jdUpLS7Vrcscdd7RluOcMSTiJVuVwOLRts9ncbNn6++uvKiCEENu3b2fy5MnaB7/rrruOK6+80sNRibak1+v55z//ybJly1i0aBHjx48HalcpGz9+PK+//rqHIxRtYdWqVdqQEBlKd247dOiQ9tmxZ8+ebNu2jfnz5xMVFYXJZCI+Pp4///nP/Pzzz9rk0IsXL2bTpk2eDFu0Q35+fgB4e3tz7bXX8u2336LT6di/f3+TiYq2kJWVxciRI1m9ejVQmzh68sknT7odk8nEkCFDAM7qHk7e3t7o9XoURaFLly588sknTJkyBYBHHnkEVVWPqfPNN99gt9vx8vKS+YNbiSScRKuyWq3a9vG+Iajfzflsn9BOCHHifvvtN84//3xtRbohQ4ac1XMQiMZ16dKF++67j+nTp3Prrbfy7bff8uabb6IoCqqqcvvtt3Po0CFPhylaUVlZGddffz2qqspQOkHPnj2prKzkyJEj/Pzzz4SGhjZarm/fvjz22GPa61deeaWtQhRnqIEDBzJq1Cig9ksNT9i9ezdDhw7V5il78sknWbhw4Sm3VzcfVXV1dYvEd6a46667gNpe0keOHDlm/xdffAHA5MmTtaF4omVJwkm0qvrLjdbU1DRbtv7++okqIcS5a8WKFVx44YVasmnAgAGsWLFC5v8SAMydO5ebb74ZqP3S4tVXX/VwRKI13XPPPWRkZODv7y9D6YSmY8eODeYBbcysWbO07bVr17Z2SKIdq6ioYP369ccdWlY3R1JBQUFbhNXAhg0bGDFiBJmZmRgMBt566y0eeuihRsvu2rWLZ555RltlrSm5ubkAhIeHt3i8nnLw4EFWrFjRYPXio9XdRzj2Xrrdbr799lsA6TXfiiThJFpVYGCgtn28icCLioq07bCwsFaLSQhxZnjttde45JJLqKioAGDo0KGsWrWqwe8VIW655RZtu26VGXH2WbFihbZCpQylEycrLCyM4OBggEZ7OYhzx8aNGxk2bBhXXnklBw4caLLc3r17AYiJiWmr0IDaifAnTpxISUkJXl5efPHFF8325tyzZw/33HMPf//737VJ9I9WVlam9dQaNmxYa4TtEXPnzmXSpEnNDjOsu486na7BiugA+/fvp6ysDDi7rkt7Iwkn0aq6deumbWdkZDRbtv7+2NjY1gpJCHEGWLBgATfffDMulwuACRMmsHLlSgICAjwbmGh3unfvrm23lxWFRMtbtmyZtn399dejKEqjP3W2b9+uvSerDgkAo9Ho6RBEOzBs2DBteNn//d//NVrms88+Y9u2bQBcfvnlbRUa5eXlTJs2TUs2rVixgkmTJjVbZ+zYsdpcZk8//XSjZR577DEqKioIDAzkiiuuaPG4PWXixIkAfPLJJ6SkpByz326388QTTwAwZsyYY3pCbtmyBajtBRUREdHK0Z67JOEkWlWvXr207ea6Ox69v3fv3q0WkxCifbvtttsafFs1e/ZsvvrqKxlbfw55//33ueqqq0hKSjruvEz1h2PXrUYlhDj7ffvttyxcuJB777230VUs66upqdF62ssfluc2q9XKggULgNpJ5O+8807ty4qKigpeeOEFZs6cCcBVV13FyJEj2yy2J554QkucvPzyy9o8Us0JDAzUVvD94IMP+NOf/qSdT35+PnfddRf/+c9/gNreoWfTZ6nbbruNiIgIbDYb48eP5/vvv9cWntq2bRvjx49n06ZNWCwW/vWvfx1Tv65HWP0OEqLlGTwdgDi7DR06FLPZjM1m48cff9R+wTdm1apVQO1KRG35y10I0X488MADLFq0SHv95z//maeeesqDEQlP2LdvHx999BEAy5cvb3Yp8w0bNmjbPXr0aPXYhGfccccd2mpDzZk6dSpQ21P6mWeeASAkJKQ1QxMe8tlnn2lzefXs2ZN58+Y1Wfann37SVk6WoTPivvvuIz09nZdeeonnn3+e559/noCAAMrLy7We1ZdddhlvvfVWm8Vks9m0BVEUReGBBx7ggQceaLZOTk4OAI8++iipqam89957vPTSS7z00kv4+/tTVlaGqqrodDqefPJJZs+e3ern0Zb8/f1Zvnw5kyZNIiUlhfHjx2MymTCbzZSXl2tlPvjgA/r3739M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gBoUFKRmZmY22k5TPZzq1PV0iomJOWaf3W5XQ0JCVEANDg5utKeVqqrqU089pR3jxx9/bLRMY1wulxoYGKgCat++fdXq6upjyuzcuVP18fFRATU0NFR1u90N9t94443asa+++mrVZrMdc4zp06drZf7yl79o+3777TftfX9/f3Xt2rXHHL+4uFgdNWqUVm7+/PkN9te/14A6ffr0Js/3lVde0cpNmjRJLS8vP6ZMcnKyGhsbqwKq0WhU9+7d22R7QgghhBDi9MgcTkII0U48+uijx/QqCgkJYdq0adrrhIQEnnzyyWPqzp07F52u9lf6rl27Gux79dVXtV5JN954I3fccccx9fV6Pf/+97+54IILANi5c2eDOZYKCgp4++23AejevTvPP/+8drw64eHhLFu2DL1ef4Jn3PK+/vprampqAHjkkUcICwtrtNztt9+Ot7c3APv372+2zblz5xIZGdmygQJGo5FrrrkGgMLCQr777rtGy9XN2RQTE8OYMWNOuP38/HyKi4sBuOiii7BYLMeUSUxMZPbs2SQmJjJs2DAKCwu1fUVFRdr8SJ07d+att97CZDI1qK/T6Xj99de1Xknvvfeetu8f//iHtr1o0SJGjhx5zPEDAgL45JNPCA0NBeCNN94gOzu7yXP6y1/+0uj7LpeLp59+Gqjt2fTxxx/j4+NzTLkuXbpoPc0cDgf//ve/mzyWEEIIIYQ4PZJwEkKIduLqq69u9P24uDht+5JLLjkm0QPg4+NDUFAQUDsMqr664WMADzzwQJPHVxSFhx56SHv92WefadvfffcdbrcbgHnz5mE0GhttIzExkYsuuqjJY7S2WbNmceDAAb799tsmryfUJkpiYmIAqKqqarbNxhIlLaX+hOj1kzV1tm7dyu7du4Hac1MU5YTbDggI0JJ/H330ESkpKY2We/HFF7UEY0hIiPb+ihUrtEngb7zxxkYTVgB+fn48//zzLFq0iMWLF6OqKjabjR9++AGoHULY3L0ICQnhpptuAmonxF++fHmj5QIDA0lMTGx036ZNm0hLSwPgmmuuaXbY4dixY7V7X//fhhBCCCGEaFkyh5MQQrQD4eHhBAYGNrrP399f205ISGiyjbo/so9eKa5uTqWYmJhm6wOMGjUKk8mE3W5n48aNx7QBMGzYsGbbGD16dJO9dVqb0WgkISGhyfPMy8tj27ZtrF27lszMTODY63W07t27t3icdfr370+fPn3YsWMHX375JRUVFQ165tRfke666647qbbNZjNTpkzhk08+4fDhw/Ts2ZMJEyYwadIkxo0b1yCR2Zj69/94Sbd58+Y1eL19+3atp9n555/faJK0vosuuognnnhCO+7R7QF069atyfrr16/XtsvKyppdAREgNDSU9PR0cnJyyMzMJCoqqtnyQgghhBDi5EnCSQgh2oG63knH01zPjcZ6v5SXl1NdXQ3UDos6HpPJRGRkJKmpqeTm5mrv19+um/S6KcdLarWVzZs38/3337N7924OHjxISkpKgyFjJ6r+JNitYc6cOdxzzz1UVVXx2Wefce211wK1ibAPPvgAgKFDh9K1a9eTbvvFF19kx44dHDhwALvdzpdffqlNVN6lSxcmTZrEFVdcwYgRI46pW/+e1/UIOlH1657Ic1e/TP269TV3H+qSh1A7YXvdsLkTkZeXJwknIYQQQohWIEPqhBCiHWhqiNrpKisr07br5iw6nrqkVmVlpfZe/WF6Vqu12fq+vr4nEWHLS0lJYdSoUQwaNIgFCxbw/vvv89tvv2nJptDQUGbOnElERMQJtWc2m1szXGbOnInBUPv9T/1hdatWrdLmM5o9e/YptR0eHs7WrVt57LHHiI2NbbDvwIEDPPfcc4wcOZJ+/fqxZcuWBvuLioq07ePd86Od7HNXP5Fa/7mrr7n7UP94J6u8vPyU6wohhBBCiKZJwkkIIc5i9YdnNfWH/NEqKiqAhkmA+j2wjjfnkc1mO5kQG1U3HOtk5eTkMHz4cH7++Wegdn6gq666iieeeILPPvuMlJQU8vLyWLp06Qn3KmttYWFhTJo0CYCVK1eSn58P/C/5ZDabueqqq065fW9vb/7617+SmprK1q1befrppxk7dmyDJNL27du58MILG8zzVP/+H++eH+1kn7u6Z+7o456o+nVWrFiBqqon/DN69OiTPp4QQgghhDg+STgJIcRZzM/PT0ssNDVpdH3V1dXa8KT6K7N17NhR2z506FCzbWRlZTW5r/5cPk6ns8lypaWlx421MX/961+1IVk33ngjmZmZfPjhhzz88MNMmTKlwdCtoydX96S6ycNdLhdfffUVLpdLm9D6kksuaXJ+r5PVr18/HnzwQb7//nsKCwv5+OOPiY+PB2qv+TPPPKOV7dChg7adkZHRbLupqamsX79eu/bh4eHavhN57g4cOKBtn8qKgPVjPXLkyEnXF0IIIYQQLU8STkIIcRZTFIXBgwcDtUmDgwcPNlt+zZo12iTa/fr1096vP8fPTz/91Gwb69ata3Jf/WFRzQ2D2rVrV7PHaEpdksZqtfLcc881OQwrPz+/QWJMVdVTOl5LmTx5srZC3Oeff866deu0IW0nO1l4nT179vDSSy9x++23N5r0sVqtXHHFFQ0m2N6+fbu2nZSUpG3Xn5S7Mc8//zzDhg0jPDyc33//nX79+mnX/qefftJWOGzKqlWrtO36z92JGjJkiLa9evXq45a//vrrufnmm3nqqadOuveWEEIIIYQ4MZJwEkKIs9yUKVO07f/7v/9rspyqqg32T548WdueOHGiNmxp8eLFDYZA1ZeVldXsCmFhYWHa9tatW5uM47///W+TbTSnbp4mg8GAxWJpstyzzz7bIMnkcDhO6XjHU9ej63gJF6PRyDXXXAPUDqv78MMPgdrrNXHixFM69po1a/jTn/7Eiy++yMcff9xkueDgYG27/lC4iRMnotfrgdp73tQ1stls2v0KDQ2lb9++mM1mJkyYANQmOuvOpzEFBQW88cYbQO31OpXzHT58OKGhoQD897//bbYX3vLly3nrrbd47bXXWLx48SkN4RNCCCGEEMcnCSchhDjLzZs3T/tj/PXXX+eFF144pozb7ebee+/VeockJiZy5ZVXavu9vLy49957gdoVwWbNmnXMXE3l5eVcffXVzfYYqettBbBkyZJjelypqsqCBQvYsGHDSZ5lrbi4OC2W999/v9EyL7zwAgsXLmzw3qnOGXU8dcmM0tLS4/aiqhtWV11dzeuvvw7AjBkztAnFT9bUqVO1yeifeOIJduzY0Wi5J554QtseM2aMtt2pUydt7qj9+/czf/58rfdbHafTyV133aUNw7zlllu0JNWDDz6orZw4f/58fvnll2OOXVpayuWXX05BQQFQ+6webxXExlgsFu655x6g9l5eeumlDVauq5OcnMzcuXO11/fdd99JH0sIIYQQQpyYU/sUK4QQ4ozh6+vL0qVLmTRpEi6XizvuuIOPP/6Y6dOn06FDB9LT01m6dKk2nMrb25sPPvgAk8nUoJ0FCxbw+eefs3PnTr744gt69+7NjTfeSExMDAcOHODVV1/l8OHDhIWFkZeX12gsvXr1YujQoWzYsIHS0lKGDh3K/Pnz6dGjB9nZ2SxdupStW7eSkJBAYWEhxcXFJ3Wuc+bM4aGHHgJqV3ZbuXIlw4cPx2q1cujQIT766KNGh+uVlpbi5+d3Usc6EVFRUezevZuysjJuvvlmxo0bR3BwMOeff/4xZfv370+fPn3YsWOHNr/Vqa5OB7XzKN11113885//pKKigqSkJGbNmsWgQYMIDAwkMzOTjz/+mN9++w2A6OhobrnllgZtPPfcc6xdu5bMzEwWL17Mxo0bue666+jUqRNpaWm899577Ny5E4CePXvy5z//Wat73nnn8cgjj/CPf/yD0tJSRo8ezVVXXaVNWL5r1y4WL16szfvUo0ePBnNInaz777+f7777jp9++ondu3fTo0cP5s6dy+DBg3E6nWzatIk333xTSy5eeOGF3Hzzzad8PCGEEEIIcRyqEEIIjwFUQO3bt2+TZZ555hmt3FtvvdVkuZiYGBVQY2JiGt3/7bffqsHBwVpbjf1069ZN3blzZ5PHKCwsVIcNG9Zk/b59+6pvvfWW9nr16tXHtHHgwAE1Ojq6yTa6dOmiHjhwQI2MjFQBdfbs2Q3qp6amamUvu+yyBvvsdrs6efLkZs8RUGfNmqUuWLBAe/311183aGf06NHavuLi4iavx+rVq7Vyd9555zH733nnnWOOPXjw4Cbb+89//qOVS0xMbLLciXI4HOrMmTOPez26d++u7tu3r9E2UlNT1cTExGbrJyUlqVlZWY3Wf/LJJ1Wj0dhs/cmTJ6tFRUWNHrupe92YyspK9corrzzu+V5yySVqeXn5SV1LIYQQQghxcmRInRBCnCPGjx9PSkoKTz/9NMOHDyc4OBiTyURMTAwTJkzgvffeY/v27SQmJjbZRlBQEGvWrOG1115jxIgR+Pr6YrVa6dmzJ3//+99Zv349AQEBzcaRkJDA7t27efLJJxkwYAA+Pj74+vrSv39/nnrqKa2H06kwGo188cUXvPHGG4wZM4bAwED0ej1+fn706tWL66+/nnXr1rFkyRKmTp2q1Wtq+N3puu6661i8eDF9+vTBy8sLPz+/ZudzGjp0qLZ9Or2b6hgMBpYuXcoPP/zAzJkz6dKlC15eXphMJiIjI5k4cSKvvfYaO3bsoFu3bo22ERsby9atW3nzzTcZP348HTp0wGg0EhQUxAUXXMDixYv59ddfiYiIaLT+Qw89xN69e7nnnnvo3bu3tnJit27dmDVrFqtXr+arr75qkZX4vLy8+Oijj1i7di1z584lISEBb29vTCYTnTp14sorr+Sbb77hyy+/bDBflRBCCCGEaHmKqnp4aR4hhBBCAPDnP/+ZhQsXYjAYOHz4MOHh4Z4OSQghhBBCiFMiPZyEEEKIdsBut/Puu+8CcMkll0iySQghhBBCnNEk4SSEEEJ4WN0qgdnZ2QD86U9/8nBEQgghhBBCnB5ZpU4IIYTwgJKSEgYOHEh4eDiHDh0iJycHgDFjxnDBBRd4ODohhBBCCCFOj8zhJIQQQniIn58f5eXl2uvQ0FDWr19PfHy8B6MSQgghhBDi9MmQOiGEEMJDLr74Yry9vQkKCmLatGmsW7dOkk1CCCGEEOKsID2chBBCCCGEEEIIIUSLkh5OQgghhBBCCCGEEKJFScJJCCGEEEIIIYQQQrQoSTgJIYQQQgghhBBCiBYlCSchhBBCCCGEEEII0aIk4SSEEEIIIYQQQgghWpQknIQQQgghhBBCCCFEi5KEkxBCCCGEEEIIIYRoUZJwEkIIIYQQQgghhBAtShJOQgghhBBCCCGEEKJFScJJCCGEEEIIIYQQQrQoSTgJIYQQQgghhBBCiBYlCSchhBBCCCGEEEII0aIk4SSEEEIIIYQQQgghWpQknIQQQgghhBBCCCFEi/p/xJunc6vlx/sAAAAASUVORK5CYII=", "text/plain": [ "
" ] @@ -2926,7 +2866,13 @@ "name": "stdout", "output_type": "stream", "text": [ - "ranking genes\n", + "ranking genes\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ " finished (0:00:00)\n" ] }, @@ -2990,9 +2936,9 @@ "name": "stderr", "output_type": "stream", "text": [ - "/home/sturm/projects/2020/scirpy/src/scirpy/tl/_clonotype_imbalance.py:273: RuntimeWarning: divide by zero encountered in log2\n", + "/home/sturm/projects/2020/scirpy/src/scirpy/tl/_clonotype_imbalance.py:272: RuntimeWarning: divide by zero encountered in log2\n", " logfoldchange = np.log2((case_mean_freq + global_minimum) / (control_mean_freq + global_minimum))\n", - "/home/sturm/projects/2020/scirpy/src/scirpy/tl/_clonotype_imbalance.py:273: RuntimeWarning: divide by zero encountered in scalar divide\n", + "/home/sturm/projects/2020/scirpy/src/scirpy/tl/_clonotype_imbalance.py:272: RuntimeWarning: divide by zero encountered in scalar divide\n", " logfoldchange = np.log2((case_mean_freq + global_minimum) / (control_mean_freq + global_minimum))\n" ] } @@ -3254,29 +3200,9 @@ "output_type": "stream", "text": [ "Initializing lookup tables. \n", - "Computing clonotype x clonotype distances.\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|██████████| 1549/1549 [00:01<00:00, 839.84it/s]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "Computing clonotype x clonotype distances.\n", "Stored IR distance matrix in `adata.uns[\"ir_query_VDJDB_aa_identity\"]`.\n" ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n" - ] } ], "source": [ @@ -3412,7 +3338,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "100%|██████████| 324/324 [00:00<00:00, 8583.86it/s]" + "100%|██████████| 324/324 [00:00<00:00, 8135.75it/s]" ] }, { diff --git a/src/scirpy/ir_dist/_clonotype_neighbors.py b/src/scirpy/ir_dist/_clonotype_neighbors.py index e2171b755..c948c617e 100644 --- a/src/scirpy/ir_dist/_clonotype_neighbors.py +++ b/src/scirpy/ir_dist/_clonotype_neighbors.py @@ -6,13 +6,12 @@ import pandas as pd import scipy.sparse as sp from scanpy import logging -from tqdm.contrib.concurrent import process_map from scirpy.get import _has_ir from scirpy.get import airr as get_airr -from scirpy.util import DataHandler, _get_usable_cpus, tqdm +from scirpy.util import DataHandler -from ._util import DoubleLookupNeighborFinder, merge_coo_matrices, reduce_and, reduce_or +from ._util import DoubleLookupNeighborFinder class ClonotypeNeighbors: @@ -24,6 +23,7 @@ def __init__( receptor_arms: Literal["VJ", "VDJ", "all", "any"], dual_ir: Literal["primary_only", "all", "any"], same_v_gene: bool = False, + same_j_gene: bool = False, match_columns: None | Sequence[str] = None, distance_key: str, sequence_key: str, @@ -34,6 +34,7 @@ def __init__( receptor configuration and calls clonotypes from this distance matrix """ self.same_v_gene = same_v_gene + self.same_j_gene = same_j_gene self.match_columns = match_columns self.receptor_arms = receptor_arms self.dual_ir = dual_ir @@ -67,8 +68,13 @@ def _make_clonotype_table(self, params: DataHandler) -> tuple[Mapping, pd.DataFr raise ValueError("Obs names need to be unique!") airr_variables = [self.sequence_key] + if self.same_v_gene: airr_variables.append("v_call") + + if self.same_j_gene: + airr_variables.append("j_call") + chains = [f"{arm}_{chain}" for arm, chain in itertools.product(self._receptor_arm_cols, self._dual_ir_cols)] obs = get_airr(params, airr_variables, chains) @@ -157,13 +163,28 @@ def _add_distance_matrices(self) -> None: self.clonotypes2, [x for x in self.clonotypes.columns if "v_call" in x], ) - self.neighbor_finder.add_distance_matrix( "v_gene", sp.identity(len(v_genes), dtype=bool, format="csr"), v_genes, # type: ignore ) + if self.same_j_gene: + # J gene distance matrix (identity mat) + j_genes = self._unique_values_in_multiple_columns( + self.clonotypes, [x for x in self.clonotypes.columns if "j_call" in x] + ) + if self.clonotypes2 is not None: + j_genes |= self._unique_values_in_multiple_columns( + self.clonotypes2, + [x for x in self.clonotypes.columns if "j_call" in x], + ) + self.neighbor_finder.add_distance_matrix( + "j_gene", + sp.identity(len(j_genes), dtype=bool, format="csr"), + j_genes, # type: ignore + ) + if self.match_columns is not None: match_columns_values = set(self.clonotypes["match_columns"].values) if self.clonotypes2 is not None: @@ -190,6 +211,13 @@ def _add_lookup_tables(self) -> None: "v_gene", dist_type="boolean", ) + if self.same_j_gene: + self.neighbor_finder.add_lookup_table( + f"{arm}_{i}_j_call", + f"{arm}_{i}_j_call", + "j_gene", + dist_type="boolean", + ) if self.match_columns is not None: self.neighbor_finder.add_lookup_table( @@ -208,34 +236,17 @@ def compute_distances(self) -> sp.csr_matrix: """ start = logging.info("Computing clonotype x clonotype distances.") # type: ignore n_clonotypes = self.clonotypes.shape[0] + clonotype_ids = np.arange(n_clonotypes) - # only use multiprocessing for sufficiently large datasets - # for small datasets the overhead is too large for a benefit - if self.n_jobs == 1 or n_clonotypes <= 2 * self.chunksize: - dist_rows = tqdm( - (self._dist_for_clonotype(i) for i in range(n_clonotypes)), - total=n_clonotypes, - ) - else: - logging.info( - "NB: Computation happens in chunks. The progressbar only advances " "when a chunk has finished. " - ) # type: ignore - - dist_rows = process_map( - self._dist_for_clonotype, - range(n_clonotypes), - max_workers=_get_usable_cpus(self.n_jobs), - chunksize=2000, - tqdm_class=tqdm, - ) + dist = self._dist_for_clonotype(clonotype_ids) - dist = sp.vstack(list(dist_rows)) dist.eliminate_zeros() logging.hint("Done computing clonotype x clonotype distances. ", time=start) return dist # type: ignore - def _dist_for_clonotype(self, ct_id: int) -> sp.csr_matrix: - """Compute neighboring clonotypes for a given clonotype. + def _dist_for_clonotype(self, ct_ids: np.ndarray[int]) -> sp.csr_matrix: + """Compute neighboring clonotypes for the given clonotypes. + Returns a clonotype x clonotype2 sparse distance matrix. Or operations use the min dist of two matching entries. And operations use the max dist of two matching entries. @@ -245,83 +256,249 @@ def _dist_for_clonotype(self, ct_id: int) -> sp.csr_matrix: has a sequence dist < threshold. If we require both receptors to match ("and"), the higher one should count. """ - # Lookup distances for current row - tmp_clonotypes = self.clonotypes2 if self.clonotypes2 is not None else self.clonotypes - lookup = {} # CDR3 distances - lookup_v = {} # V-gene distances - for tmp_arm in self._receptor_arm_cols: - chain_ids = [(1, 1)] if self.dual_ir == "primary_only" else [(1, 1), (2, 2), (1, 2), (2, 1)] + lookup = {} + chain_ids = [(1, 1)] if self.dual_ir == "primary_only" else [(1, 1), (2, 2), (1, 2), (2, 1)] + for receptor_arm in self._receptor_arm_cols: for c1, c2 in chain_ids: - lookup[(tmp_arm, c1, c2)] = self.neighbor_finder.lookup( - ct_id, - f"{tmp_arm}_{c1}", - f"{tmp_arm}_{c2}", + lookup[(receptor_arm, c1, c2)] = self.neighbor_finder.lookup( + ct_ids, + f"{receptor_arm}_{c1}", + f"{receptor_arm}_{c2}", ) - if self.same_v_gene: - lookup_v[(tmp_arm, c1, c2)] = self.neighbor_finder.lookup( - ct_id, - f"{tmp_arm}_{c1}_v_call", - f"{tmp_arm}_{c2}_v_call", - ) - - # need to loop through all coordinates that have at least one distance. - has_distance = merge_coo_matrices(lookup.values()).tocsr() # type: ignore - # convert to csr matrices to iterate over indices - lookup = {k: v.tocsr() for k, v in lookup.items()} - - def _lookup_dist_for_chains(tmp_arm: Literal["VJ", "VDJ"], c1: Literal[1, 2], c2: Literal[1, 2]): - """Lookup the distance between two chains of a given receptor - arm. Only considers those columns in the current row that - have an entry in `has_distance`. Returns a dense - array with dimensions (1, n) where n equals the number - of entries in `has_distance`. + id_len = len(ct_ids) + + first_value = next(iter(lookup.values())) + has_distance_table = sp.csr_matrix((id_len, first_value.shape[1])) + for value in lookup.values(): + has_distance_table += value + + has_distance_mask = has_distance_table + has_distance_mask.data = np.ones_like(has_distance_mask.data) + + def OR_min(a: sp.csr_matrix, b: sp.csr_matrix) -> sp.csr_matrix: """ - ct_col2 = tmp_clonotypes[f"{tmp_arm}_{c2}_{self.sequence_key}"].values - tmp_array = lookup[(tmp_arm, c1, c2)][0, has_distance.indices].todense().A1.astype(np.float16) - tmp_array[ct_col2[has_distance.indices] == "nan"] = np.nan - if self.same_v_gene: - mask_v_gene = lookup_v[(tmp_arm, c1, c2)][0, has_distance.indices] - tmp_array = np.multiply(tmp_array, mask_v_gene) - return tmp_array + Computes the element-wise minimum between 2 CSR matrices while ignoring 0 values. If 2 values + are compared and at least one of them is a 0, the maximum of the 2 values is taken instead of the minimum. + + To be able to use built-in functions, we shift the data arrays by the overall maximum value such that we get negative values. + Then we can use the built-in "<" function to compare the CSR matrices while ignoring 0 values. + """ + max_value_a = np.max(a.data, initial=0) + max_value_b = np.max(b.data, initial=0) + + if max_value_a > np.iinfo(np.uint8).max or max_value_b > np.iinfo(np.uint8).max: + raise ValueError("CSR matrix data values exceed maximum value for datatype uint8 (255).") + + max_value = np.int16(np.max([max_value_a, max_value_b]) + 1) + min_mat_a = sp.csr_matrix((a.data.astype(np.int16), a.indices, a.indptr), shape=a.shape) + min_mat_a.data -= max_value + min_mat_b = sp.csr_matrix((b.data.astype(np.int16), b.indices, b.indptr), shape=b.shape) + min_mat_b.data -= max_value + a_smaller_b = min_mat_a < min_mat_b + min_result = b + (a - b).multiply(a_smaller_b) + return min_result + + def AND_max(a, b): + """ + Computes the element-wise maximum between 2 CSR matrices while handling 0 values differently. If 2 values + are compared and at least one of them is a 0, the minimum (=0) of the 2 values is taken instead of the maximum. + + To be able to use built-in functions, we shift the data arrays by the overall maximum value such that we get negative values. + Then we can use the built-in ">" function to compare the CSR matrices while handling the special case for 0 values at + the same time. + """ + max_value_a = np.max(a.data, initial=0) + max_value_b = np.max(b.data, initial=0) + + if max_value_a > np.iinfo(np.uint8).max or max_value_b > np.iinfo(np.uint8).max: + raise ValueError("CSR matrix data values exceed maximum value for datatype uint8 (255).") + + max_value = np.int16(np.max([max_value_a, max_value_b]) + 1) + max_mat_a = sp.csr_matrix((a.data.astype(np.int16), a.indices, a.indptr), shape=a.shape) + max_mat_a.data -= max_value + max_mat_b = sp.csr_matrix((b.data.astype(np.int16), b.indices, b.indptr), shape=b.shape) + max_mat_b.data -= max_value + a_greater_b = max_mat_a > max_mat_b + max_result = b + (a - b).multiply(a_greater_b) + return max_result + + if self.match_columns is not None: + # Create a mask to filter clonotype pairs based on having similar entries in given columns + distance_matrix_name, forward, _ = self.neighbor_finder.lookups["match_columns"] + distance_matrix_name_reverse, _, reverse = self.neighbor_finder.lookups["match_columns"] + if distance_matrix_name != distance_matrix_name_reverse: + raise ValueError("Forward and reverse lookup tablese must be defined " "on the same distance matrices.") + reverse_lookup_values = np.vstack(list(reverse.lookup.values())) + reverse_lookup_keys = np.zeros(reverse.size, dtype=np.int64) + reverse_lookup_keys[list(reverse.lookup.keys())] = np.arange(len(list(reverse.lookup.keys()))) + match_column_mask = sp.csr_matrix( + (np.empty(len(has_distance_mask.indices)), has_distance_mask.indices, has_distance_mask.indptr), + shape=has_distance_mask.shape, + ) + has_distance_mask_coo = match_column_mask.tocoo() + indices_in_dist_mat = forward[has_distance_mask_coo.row] + match_column_mask.data = reverse_lookup_values[ + reverse_lookup_keys[indices_in_dist_mat], has_distance_mask_coo.col + ] + + receptor_arm_res = {} + dist_mats_chains = {} + + def filter_chain_count_data( + dist_mat_coo, + chain_counts_a, + chain_counts_b, + ) -> tuple[np.ndarray, np.ndarray, np.ndarray]: + """ + Helper function for filter_chain_count. Computes the data + arrays for the csr matrices that we want to filter by chain count. + """ + filtered_data_stacked = np.array( + [np.zeros_like(dist_mat_coo.data), np.zeros_like(dist_mat_coo.data), np.zeros_like(dist_mat_coo.data)] + ) + + ct_pair_ids_a = dist_mat_coo.row + ct_pair_ids_b = dist_mat_coo.col + + data_array_indices = np.arange(len(dist_mat_coo.data)) + chain_counts_pair_a = chain_counts_a[ct_pair_ids_a] + chain_counts_pair_b = chain_counts_b[ct_pair_ids_b] + chain_counts_equal = chain_counts_pair_a == chain_counts_pair_b + + filtered_data_stacked[chain_counts_pair_a[chain_counts_equal], data_array_indices[chain_counts_equal]] = ( + dist_mat_coo.data[chain_counts_equal] + ) + + return ( + filtered_data_stacked[0], + filtered_data_stacked[1], + filtered_data_stacked[2], + ) + + def filter_chain_count( + tmp_dist_mat: sp.csr_matrix, col: str + ) -> tuple[sp.csr_matrix, sp.csr_matrix, sp.csr_matrix]: + """ + Filters a temporary clonotype distance matrix based on the count of receptor chains. + We want to keep clonotype pairs that both have the same number of chains which can be either 0, 1, or 2 chains. + Return 3 matrices: pairs with both 0 chains, pairs with both 1 chain, pairs with both 2 chains; + """ + chain_counts_a = self._chain_count[col] + + if self._chain_count2 is None: + chain_counts_b = chain_counts_a + else: + chain_counts_b = self._chain_count2[col] + + dist_mat_coo = tmp_dist_mat.tocoo() + + filtered_chain_count0, filtered_chain_count1, filtered_chain_count2 = ( + tmp_dist_mat.copy(), + tmp_dist_mat.copy(), + tmp_dist_mat.copy(), + ) + filtered_chain_count0.data, filtered_chain_count1.data, filtered_chain_count2.data = ( + filter_chain_count_data( + dist_mat_coo, + chain_counts_a, + chain_counts_b, + ) + ) + return filtered_chain_count0, filtered_chain_count1, filtered_chain_count2 + + def match_gene_segment( + tmp_dist_mat: sp.csr_matrix, tmp_arm: str, c1: int, c2: int, segment_suffix: Literal["v_call", "j_call"] + ) -> sp.csr_matrix: + """ + Filters a temporary clonotype distance matrix based on gene segement similarity (e.g. v_gene or j_gene). + We want to keep clonotype pairs with the same gene segment. + """ + distance_matrix_name, forward, _ = self.neighbor_finder.lookups[f"{tmp_arm}_{c1}_{segment_suffix}"] + distance_matrix_name_reverse, _, reverse = self.neighbor_finder.lookups[f"{tmp_arm}_{c2}_{segment_suffix}"] + if distance_matrix_name != distance_matrix_name_reverse: + raise ValueError("Forward and reverse lookup tablese must be defined " "on the same distance matrices.") + empty_row = np.array([np.zeros(reverse.size, dtype=bool)]) + reverse_lookup_values = np.vstack((*reverse.lookup.values(), empty_row)) + reverse_lookup_keys = np.full(id_len, -1, dtype=np.int32) + keys_array = np.fromiter(reverse.lookup.keys(), dtype=int, count=len(reverse.lookup)) + reverse_lookup_keys[keys_array] = np.arange(len(keys_array)) + gene_segment_mask = sp.csr_matrix( + (np.empty(len(has_distance_mask.indices)), has_distance_mask.indices, has_distance_mask.indptr), + shape=has_distance_mask.shape, + ) + has_distance_mask_coo = gene_segment_mask.tocoo() + indices_in_dist_mat = forward[has_distance_mask_coo.row] + gene_segment_mask.data = reverse_lookup_values[ + reverse_lookup_keys[indices_in_dist_mat], has_distance_mask_coo.col + ] + return tmp_dist_mat.multiply(gene_segment_mask) + + # Now we merge the distances of chains. + # Can first be filtered based on v_gene and j_gene similarity and other column similarity. + # We also need to filter based on chain count similarity. + # Then we reduce the temporary clonotype distance matrices of the receptor chains with an AND/OR logic. + for receptor_arm in self._receptor_arm_cols: + for c1, c2 in chain_ids: + tmp_dist_mat = lookup[(receptor_arm, c1, c2)][ct_ids] + + if not (self.same_v_gene or self.same_j_gene or self.match_columns): + tmp_dist_mat = tmp_dist_mat.multiply(has_distance_mask) + + if self.same_v_gene: + tmp_dist_mat = match_gene_segment(tmp_dist_mat, receptor_arm, c1, c2, segment_suffix="v_call") + + if self.same_j_gene: + tmp_dist_mat = match_gene_segment(tmp_dist_mat, receptor_arm, c1, c2, segment_suffix="j_call") + + if self.match_columns is not None: + tmp_dist_mat = tmp_dist_mat.multiply(match_column_mask) + + if self.dual_ir == "all": + filtered0, filtered1, filtered2 = filter_chain_count(tmp_dist_mat, receptor_arm) + dist_mats_chains[(receptor_arm, c1, c2, 0)] = filtered0 + dist_mats_chains[(receptor_arm, c1, c2, 1)] = filtered1 + dist_mats_chains[(receptor_arm, c1, c2, 2)] = filtered2 + else: + dist_mats_chains[(receptor_arm, c1, c2)] = tmp_dist_mat - # Merge the distances of chains - res = [] - for tmp_arm in self._receptor_arm_cols: if self.dual_ir == "primary_only": - tmp_res = _lookup_dist_for_chains(tmp_arm, 1, 1) - elif self.dual_ir == "all": - tmp_res = reduce_or( - reduce_and( - _lookup_dist_for_chains(tmp_arm, 1, 1), - _lookup_dist_for_chains(tmp_arm, 2, 2), - chain_count=self._chain_count[tmp_arm][ct_id], - ), - reduce_and( - _lookup_dist_for_chains(tmp_arm, 1, 2), - _lookup_dist_for_chains(tmp_arm, 2, 1), - chain_count=self._chain_count[tmp_arm][ct_id], - ), + receptor_arm_res[receptor_arm] = dist_mats_chains[(receptor_arm, 1, 1)] + elif self.dual_ir == "any": + receptor_arm_res[receptor_arm] = OR_min( + OR_min(dist_mats_chains[(receptor_arm, 1, 1)], dist_mats_chains[(receptor_arm, 1, 2)]), + OR_min(dist_mats_chains[(receptor_arm, 2, 1)], dist_mats_chains[(receptor_arm, 2, 2)]), ) - else: # "any" - tmp_res = reduce_or( - _lookup_dist_for_chains(tmp_arm, 1, 1), - _lookup_dist_for_chains(tmp_arm, 1, 2), - _lookup_dist_for_chains(tmp_arm, 2, 2), - _lookup_dist_for_chains(tmp_arm, 2, 1), + elif self.dual_ir == "all": + receptor_arm_res[receptor_arm] = OR_min( + AND_max(dist_mats_chains[(receptor_arm, 1, 1, 2)], dist_mats_chains[(receptor_arm, 2, 2, 2)]), + AND_max(dist_mats_chains[(receptor_arm, 2, 1, 2)], dist_mats_chains[(receptor_arm, 1, 2, 2)]), ) - res.append(tmp_res) - - # Merge the distances of arms. - reduce_fun = reduce_and if self.receptor_arms == "all" else reduce_or - # checking only the chain=1 columns here is enough, as there must not - # be a secondary chain if there is no first one. - res = reduce_fun(np.vstack(res), chain_count=self._chain_count["arms"][ct_id]) + receptor_arm_res[receptor_arm] += ( + dist_mats_chains[(receptor_arm, 1, 1, 1)] + dist_mats_chains[(receptor_arm, 1, 1, 0)] + ) + else: + raise NotImplementedError(f"self.dual_ir method {self.dual_ir} is not implemented") - if self.match_columns is not None: - match_columns_mask = self.neighbor_finder.lookup(ct_id, "match_columns", "match_columns") - res = np.multiply(res, match_columns_mask[0, has_distance.indices]) + if len(receptor_arm_res) == 1: + ct_dist_mat = receptor_arm_res[self._receptor_arm_cols[0]] + else: + if self.receptor_arms == "all": + arm_res_filtered = {} + arm_res_filtered[("VJ", 0)], arm_res_filtered[("VJ", 1)], arm_res_filtered[("VJ", 2)] = ( + filter_chain_count(receptor_arm_res["VJ"], "arms") + ) + arm_res_filtered[("VDJ", 0)], arm_res_filtered[("VDJ", 1)], arm_res_filtered[("VDJ", 2)] = ( + filter_chain_count(receptor_arm_res["VDJ"], "arms") + ) + ct_dist_mat = AND_max(arm_res_filtered[("VJ", 2)], arm_res_filtered[("VDJ", 2)]) + ct_dist_mat += ( + arm_res_filtered[("VJ", 0)] + + arm_res_filtered[("VJ", 1)] + + arm_res_filtered[("VDJ", 0)] + + arm_res_filtered[("VDJ", 1)] + ) - final_res = has_distance.copy() - final_res.data = res.astype(np.uint8) - return final_res + else: + ct_dist_mat = OR_min(receptor_arm_res["VJ"], receptor_arm_res["VDJ"]) + return ct_dist_mat diff --git a/src/scirpy/ir_dist/_util.py b/src/scirpy/ir_dist/_util.py index b0c3bbeb2..08ffa9228 100644 --- a/src/scirpy/ir_dist/_util.py +++ b/src/scirpy/ir_dist/_util.py @@ -233,61 +233,90 @@ def n_cols(self): def lookup( self, - object_id: int, - forward_lookup_table: str, - reverse_lookup_table: str | None = None, - ) -> coo_matrix | np.ndarray: - """Get ids of neighboring objects from a lookup table. - - Performs the following lookup: + object_ids: np.ndarray[int], + forward_lookup_table_name: str, + reverse_lookup_table_name: str | None = None, + ) -> sp.csr_matrix: + """ + Creates a distance matrix between objects with the given ids based on a feature distance matrix. - object_id -> dist_mat -> neighboring features -> neighboring objects. + To get the distance between two objects we need to look up the features of the two objects. + The distance between those two features is then the distance between the two objects. - where an object is a clonotype in our case (but could be used for something else) + To do so, we first use the `object_ids` together with the `forward_lookup_table` to look up + the indices of the objects in the feature `distance_matrix`. Afterwards we pick the according row for each object + out of the `distance_matrix` and construct a `rows` matrix (n_object_ids x n_features). - "nan"s are not looked up via the distance matrix, they return a row of zeros + "nan"s (index = -1) are not looked up in the feature `distance_matrix`, they return a row of zeros instead. + Then we use the entries of the `reverse_lookup_table` to construct a `reverse_lookup_matrix` (n_features x n_object_ids). + By multiplying the `rows` matrix with the `reverse_lookup_matrix` we get the final `object_distance_matrix` that shows + the distances between the objects with the given `object_ids` regarding a certain feature column. + + It might not be obvious at the first sight that the matrix multiplication between `rows` and `reverse_lookup_matrix` gives + us the desired result. But this trick allows us to use the built-in sparse matrix multiplication of `scipy.sparse` + for enhanced performance. + Parameters ---------- - object_id - The row index of the feature_table. - forward_lookup_table + object_ids + The row indices of the feature_table. + forward_lookup_table_name The unique identifier of a lookup table previously added via `add_lookup_table`. - reverse_lookup_table + reverse_lookup_table_name The unique identifier of the lookup table used for the reverse lookup. If not provided will use the same lookup table for forward and reverse lookup. This is useful to calculate distances across features from different columns of the feature table (e.g. primary and secondary VJ chains). + + Returns + ------- + object_distance_matrix + A CSR matrix containing the pairwise distances between objects with the + given `object_ids` regarding a certain feature column. """ - distance_matrix_name, forward, reverse = self.lookups[forward_lookup_table] + distance_matrix_name, forward_lookup_table, reverse_lookup_table = self.lookups[forward_lookup_table_name] - if reverse_lookup_table is not None: - distance_matrix_name_reverse, _, reverse = self.lookups[reverse_lookup_table] + if reverse_lookup_table_name is not None: + distance_matrix_name_reverse, _, reverse_lookup_table = self.lookups[reverse_lookup_table_name] if distance_matrix_name != distance_matrix_name_reverse: raise ValueError("Forward and reverse lookup tablese must be defined " "on the same distance matrices.") distance_matrix = self.distance_matrices[distance_matrix_name] - idx_in_dist_mat = forward[object_id] - if idx_in_dist_mat == -1: # nan - return reverse.empty() - else: - # get distances from the distance matrix... - row = distance_matrix[idx_in_dist_mat, :] - - if reverse.is_boolean: - assert ( - len(row.indices) == 1 # type: ignore - ), "Boolean reverse lookup only works for identity distance matrices." - return reverse[row.indices[0]] # type: ignore - else: - # ... and get column indices directly from sparse row - # sum concatenates coo matrices - return merge_coo_matrices( - (reverse[i] * multiplier for i, multiplier in zip(row.indices, row.data, strict=False)), # type: ignore - shape=(1, reverse.size), - ) + + if np.max(distance_matrix.data) > np.iinfo(np.uint8).max: + raise OverflowError( + "The data values in the distance scipy.sparse.csr_matrix exceed the maximum value for uint8 (255)" + ) + + indices_in_dist_mat = forward_lookup_table[object_ids] + indptr = np.empty(distance_matrix.indptr.shape[0] + 1, dtype=np.int64) + indptr[:-1] = distance_matrix.indptr + indptr[-1] = indptr[-2] + distance_matrix_extended = sp.csr_matrix( + (distance_matrix.data.astype(np.uint8), distance_matrix.indices, indptr), + shape=(distance_matrix.shape[0] + 1, distance_matrix.shape[1]), + ) + rows = distance_matrix_extended[indices_in_dist_mat, :] + + reverse_matrix_data = [np.array([], dtype=np.uint8)] * rows.shape[1] + reverse_matrix_col = [np.array([], dtype=np.int64)] * rows.shape[1] + nnz_array = np.zeros(rows.shape[1], dtype=np.int64) + + for key, value in reverse_lookup_table.lookup.items(): + reverse_matrix_data[key] = value.data + reverse_matrix_col[key] = value.col + nnz_array[key] = value.nnz + + data = np.concatenate(reverse_matrix_data) + col = np.concatenate(reverse_matrix_col) + indptr = np.concatenate([np.array([0], dtype=np.int64), np.cumsum(nnz_array)]) + + reverse_matrix = sp.csr_matrix((data, col, indptr), shape=(rows.shape[1], reverse_lookup_table.size)) + object_distance_matrix = rows * reverse_matrix + return object_distance_matrix def add_distance_matrix( self, diff --git a/src/scirpy/tests/data/clonotypes_test_data/j_gene_test_data.h5ad b/src/scirpy/tests/data/clonotypes_test_data/j_gene_test_data.h5ad new file mode 100644 index 000000000..43d588866 Binary files /dev/null and b/src/scirpy/tests/data/clonotypes_test_data/j_gene_test_data.h5ad differ diff --git a/src/scirpy/tests/test_clonotypes.py b/src/scirpy/tests/test_clonotypes.py index c0f6a0a39..06719cbaa 100644 --- a/src/scirpy/tests/test_clonotypes.py +++ b/src/scirpy/tests/test_clonotypes.py @@ -2,6 +2,7 @@ import sys from typing import cast +import anndata as ad import numpy as np import numpy.testing as npt import pandas as pd @@ -339,3 +340,23 @@ def test_clonotype_convergence(adata_clonotype): categories=["convergent", "not convergent"], ), ) + + +def test_j_gene_matching(): + from . import TESTDATA + + data = ad.read_h5ad(TESTDATA / "clonotypes_test_data/j_gene_test_data.h5ad") + + ir.tl.define_clonotype_clusters( + data, + sequence="nt", + metric="normalized_hamming", + receptor_arms="all", + dual_ir="any", + same_j_gene=True, + key_added="test_j_gene", + ) + + clustering = data.obs["test_j_gene"].tolist() + expected = ["0", "0", "0", "0", "0", "1", "1", "1", "1", "1", "1", "1", "1", "2", "2", "2", "2", "2"] + assert np.array_equal(clustering, expected) diff --git a/src/scirpy/tl/_clonotypes.py b/src/scirpy/tl/_clonotypes.py index 0f407a782..59e5cc94f 100644 --- a/src/scirpy/tl/_clonotypes.py +++ b/src/scirpy/tl/_clonotypes.py @@ -197,9 +197,10 @@ def define_clonotype_clusters( receptor_arms: Literal["VJ", "VDJ", "all", "any"] = "all", dual_ir: Literal["primary_only", "all", "any"] = "any", same_v_gene: bool = False, + same_j_gene: bool = False, within_group: Sequence[str] | str | None = "receptor_type", key_added: str | None = None, - partitions: Literal["connected", "leiden"] = "connected", + partitions: Literal["connected", "leiden", "fastgreedy"] = "connected", resolution: float = 1, n_iterations: int = 5, distance_key: str | None = None, @@ -249,12 +250,19 @@ def define_clonotype_clusters( partitions How to find graph partitions that define a clonotype. - Possible values are `leiden`, for using the "Leiden" algorithm and + Possible values are `leiden`, for using the "Leiden" algorithm, + `fastgreedy` for using the "Fastgreedy" algorithm and `connected` to find fully connected sub-graphs. - The difference is that the Leiden algorithm further divides + The difference is that the Leiden and Fastgreedy algorithms further divide fully connected subgraphs into highly-connected modules. + "Leiden" finds the community structure of the graph using the + Leiden algorithm of Traag, van Eck & Waltman. + + "Fastgreedy" finds the community structure of the graph according to the + algorithm of Clauset et al based on the greedy optimization of modularity. + resolution `resolution` parameter for the leiden algorithm. n_iterations @@ -289,6 +297,7 @@ def define_clonotype_clusters( receptor_arms=receptor_arms, # type: ignore dual_ir=dual_ir, # type: ignore same_v_gene=same_v_gene, + same_j_gene=same_j_gene, match_columns=within_group, distance_key=distance_key, sequence_key="junction_aa" if sequence == "aa" else "junction", @@ -304,6 +313,8 @@ def define_clonotype_clusters( resolution_parameter=resolution, n_iterations=n_iterations, ) + elif partitions == "fastgreedy": + part = g.community_fastgreedy().as_clustering() else: part = g.clusters(mode="weak")