{ "cells": [ { "cell_type": "markdown", "id": "c000", "metadata": {}, "source": [ "# Reproducing across laboratories\n", "\n", "A screen at scale comes from more than one laboratory. This page uses JUMP-Target-2, the plate the JUMP\n", "consortium {cite:p}`Chandrasekaran_2023` ran at every participating laboratory, so any difference between two\n", "copies of it is technical.\n", "\n", "JUMP calls a participating laboratory a source, and this page uses that column throughout: `Metadata_Source`,\n", "with values from `source_2` to `source_13`. In a CellProfiler export, `Metadata_Site` is a field of view inside\n", "a well, which this page does not use." ] }, { "cell_type": "code", "execution_count": 1, "id": "c001", "metadata": { "execution": { "iopub.execute_input": "2026-11-11T02:25:49.047695Z", "iopub.status.busy": "2026-11-11T02:25:49.047304Z", "iopub.status.idle": "2026-11-11T02:26:19.880460Z", "shell.execute_reply": "2026-11-11T02:26:19.878532Z" } }, "outputs": [], "source": [ "import warnings\n", "\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import pandas as pd\n", "import scanpy as sc\n", "\n", "import mantispy as mt\n", "\n", "warnings.formatwarning = lambda message, category, *a, **k: f\"{category.__name__}: {message}\\n\"" ] }, { "cell_type": "markdown", "id": "c002", "metadata": {}, "source": [ "## JUMP-Target-2\n", "\n", "`mt.ds.jump_target2()` downloads one TARGET2 plate from each of the eleven sources that ran it,\n", "and joins the JUMP annotation onto them. The plate map is identical at every source, and source_9\n", "runs it four times over on a 1536-well plate; only the laboratory differs." ] }, { "cell_type": "code", "execution_count": 2, "id": "c003", "metadata": { "execution": { "iopub.execute_input": "2026-11-11T02:26:19.885186Z", "iopub.status.busy": "2026-11-11T02:26:19.884706Z", "iopub.status.idle": "2026-11-11T02:26:20.440107Z", "shell.execute_reply": "2026-11-11T02:26:20.438860Z" } }, "outputs": [ { "data": { "text/plain": [ "{'shape': (5374, 3616),\n", " 'sources': {'source_9': 1536,\n", " 'source_10': 384,\n", " 'source_13': 384,\n", " 'source_3': 384,\n", " 'source_4': 384,\n", " 'source_5': 384,\n", " 'source_6': 384,\n", " 'source_7': 384,\n", " 'source_8': 384,\n", " 'source_11': 383,\n", " 'source_2': 383},\n", " 'perturbations': 302,\n", " 'control wells': 898}" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "jump = mt.ds.jump_target2()\n", "{\n", " \"shape\": jump.shape,\n", " \"sources\": jump.obs[\"Metadata_Source\"].value_counts().to_dict(),\n", " \"perturbations\": int(jump.obs[\"Metadata_Perturbation\"].nunique()),\n", " \"control wells\": int(jump.obs[\"Metadata_Control\"].sum()),\n", "}" ] }, { "cell_type": "code", "execution_count": 3, "id": "fig023", "metadata": { "execution": { "iopub.execute_input": "2026-11-11T02:26:20.443275Z", "iopub.status.busy": "2026-11-11T02:26:20.443119Z", "iopub.status.idle": "2026-11-11T02:26:20.841520Z", "shell.execute_reply": "2026-11-11T02:26:20.840243Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "counts = jump.obs[\"Metadata_Source\"].value_counts().sort_values()\n", "fig, ax = plt.subplots(figsize=(5, 4))\n", "ax.barh(counts.index.astype(str), counts.to_numpy(), color=\"steelblue\")\n", "ax.set_xlabel(\"wells\")\n", "ax.set_title(\"Wells per source\")\n", "fig.tight_layout()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "fig024", "metadata": {}, "source": [ "Wells contributed by each source. source_9 has 1536 (a 1536-well plate); the others have about 384 each." ] }, { "cell_type": "markdown", "id": "c004", "metadata": {}, "source": [ "The perturbation annotation comes from the JUMP metadata repository, joined by `mt.io.read_jump`; see\n", "[Published profiles and JUMP](../tutorials/data/profiles.ipynb).\n", "\n", "## The same pipeline\n", "\n", "The recipe does not change for data from eleven laboratories." ] }, { "cell_type": "code", "execution_count": 4, "id": "c005", "metadata": { "execution": { "iopub.execute_input": "2026-11-11T02:26:20.844654Z", "iopub.status.busy": "2026-11-11T02:26:20.844505Z", "iopub.status.idle": "2026-11-11T02:26:31.309360Z", "shell.execute_reply": "2026-11-11T02:26:31.308074Z" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "UserWarning: 111 of 3616 features have no spread in at least one group of 'Metadata_Plate' among the rows selected by reference='negcon' (Cells_AreaShape_EulerNumber, Cells_AreaShape_FormFactor, Cells_Correlation_Manders_DNA_AGP, Cells_Correlation_Manders_ER_AGP, Cells_Correlation_Manders_Mito_AGP and 106 more). They cannot be scaled there, so their values in those groups are set to NaN. They are flagged in var['degenerate_scale'], and pp.feature_select drops them by default; to drop them now, adata = adata[:, ~adata.var['degenerate_scale']].copy(). A variance or outlier cut does not catch a feature that varies across a plate but is constant among its control wells; the flag does.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "UserWarning: 28 selected feature(s) hold values more than outlier_cutoff=500 robust standard deviations from their own median (Cells_AreaShape_Compactness, Cells_Correlation_Manders_DNA_ER, Cells_Correlation_Manders_ER_DNA, Cells_Intensity_IntegratedIntensityEdge_Mito, Cells_RadialDistribution_FracAtD_mito_tubeness_1of20 and 23 more). They can dominate distances and PCA. Add 'drop_outliers' to operations to drop them, or check where the extreme values come from; on single cells, before aggregation, since a median profile hides a few extreme cells.\n" ] }, { "data": { "text/plain": [ "{'features kept': 618,\n", " 'control wells per source': {'source_10': 64,\n", " 'source_11': 64,\n", " 'source_13': 64,\n", " 'source_2': 65,\n", " 'source_3': 64,\n", " 'source_4': 64,\n", " 'source_5': 64,\n", " 'source_6': 65,\n", " 'source_7': 64,\n", " 'source_8': 64,\n", " 'source_9': 256}}" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mt.pp.normalize(jump, method=\"mad_robustize\", by=\"Metadata_Plate\", reference=\"negcon\")\n", "mt.pp.feature_select(jump, na_cutoff=0.0)\n", "jump = mt.pp.subset_features(jump)\n", "\n", "{\n", " \"features kept\": jump.n_vars,\n", " \"control wells per source\": jump.obs.groupby(\"Metadata_Source\", observed=True)[\"Metadata_Control\"].sum().to_dict(),\n", "}" ] }, { "cell_type": "code", "execution_count": 5, "id": "fig021", "metadata": { "execution": { "iopub.execute_input": "2026-11-11T02:26:31.313609Z", "iopub.status.busy": "2026-11-11T02:26:31.313456Z", "iopub.status.idle": "2026-11-11T02:26:31.630023Z", "shell.execute_reply": "2026-11-11T02:26:31.628719Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "controls = jump.obs.groupby(\"Metadata_Source\", observed=True)[\"Metadata_Control\"].sum().sort_values()\n", "fig, ax = plt.subplots(figsize=(5, 4))\n", "ax.barh(controls.index.astype(str), controls.to_numpy(), color=\"steelblue\")\n", "ax.axvline(jump.n_vars, color=\"indianred\", ls=\"--\", lw=1, label=f\"{jump.n_vars} features\")\n", "ax.set_xlabel(\"control wells\")\n", "ax.set_title(\"Control wells per source\")\n", "ax.legend(fontsize=8)\n", "fig.tight_layout()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "fig022", "metadata": {}, "source": [ "Control wells per source (bars) against the number of features kept (dashed line). Every source has fewer control wells than features." ] }, { "cell_type": "markdown", "id": "c006", "metadata": {}, "source": [ "## The batch metrics\n", "\n", "`mt.metrics.evaluate_integration` runs the integration benchmark over each representation and draws it as a\n", "heatmap, one row per representation, with higher better in every cell. It returns the numeric results frame too." ] }, { "cell_type": "markdown", "id": "gen8228", "metadata": {}, "source": [ "The benchmark comes from [scib-metrics](https://scib-metrics.readthedocs.io), imported through\n", "`pip install \"mantispy[integration,map]\"` rather than reimplemented; mantispy reads its public results and\n", "renders the heatmap. The columns group into blocks: bio conservation (cLISI is how label-pure a well's\n", "neighbourhood is), batch correction (iLISI is how batch-mixed it is, PCR comparison how much less of the variance\n", "the batch explains after correction), and the aggregate scores. With\n", "[copairs](https://github.com/cytomining/copairs) also installed the heatmap gains a retrieval block, the\n", "cross-replicate mean average precision (mAP), and a second aggregate column beside scib-metrics' `Total`:\n", "mantispy's `Total+mAP`, which folds mAP into the bio group. Without scib-metrics it draws the mAP column alone,\n", "and with neither it raises and points to `mt.metrics.batch_variance_explained` (stack several covariates) or\n", "`mt.metrics.pc_regression` (a single covariate) for a native batch-variance check." ] }, { "cell_type": "code", "execution_count": 6, "id": "c007", "metadata": { "execution": { "iopub.execute_input": "2026-11-11T02:26:31.634732Z", "iopub.status.busy": "2026-11-11T02:26:31.634578Z", "iopub.status.idle": "2026-11-11T02:27:53.924727Z", "shell.execute_reply": "2026-11-11T02:27:53.923388Z" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "FutureWarning: The argument key_added is deprecated and will be removed in the future. Use `out` instead.\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAuEAAADGCAYAAAB8dl41AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjExLjIsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvgI3uAAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAdnZJREFUeJzt3XVYVGkbBvCbUkKQkBRQUhRUFFExFlGwu3tt11hz7a61C1tX0bWwu7GwAxMbRURWuhtmnu+PhfM5CooucGb0+V3XXt83Z845c89xOPPMe973PUpERGCMMcYYY4wVG2WxAzDGGGOMMfaz4SKcMcYYY4yxYsZFOGOMMcYYY8WMi3DGGGOMMcaKGRfhjDHGGGOMFTMuwhljjDHGGCtmXIQzxhhjjDFWzLgIZ4wxxhhjrJhxEc4YY4wxxlgx4yKcMcYYY4yxYsZFOGOMMcYYY8WMi3DGGGOMMcaKGRfhjDHGGGOMFTMuwhljjDHGGCtmXIQzxhhjjDFWzLgIZ4wxxhhjrJhxEc4YY4wxxlgx4yKcMcYYY4yxYsZFOGOMMcYYY8WMi3DGGGOMMcaKGRfhjDHGGGOMFTMuwhljjDHGGCtmXIQzxhhjjDFWzLgI/wFkZmYiOTkZ2dnZYkdRGHzMmDxLS0tDcnIyiEjsKEXiR39/P4rs7GwkJycjMzNToV+DMXnFRbgCyMrKQnJyMpKTk5GamvrZ82PGjIG2tjb2798vSj55l9dJno8Z+1bp6enC32FGRsY3bZuRkYHk5GRIJJICre/q6gptbW1ERER8Z1r5kdd7/5Hen1gkEonweUxJSfmmHzRSqRTJyclIT0//4no7duyAtrY2Jk+eXAiJxXsNRZDbMJSSkiJ2lP8kt17JysoSO4pC4CJcASxcuBDa2trQ19eHoaEhSpYsiXr16iEwMBAAULJkSWhpaUFNTU3sqHLpr7/+gra2NqZPny4s42PGvlXLli2hra0NQ0NDlC5dGjo6OujSpQuSkpK+uu2vv/4KbW1tnDt3rliyypO83rumpia0tLSgrMxfQd/r3Llz0NbWRunSpWFoaAh1dXW4ubnhwYMHX9323r170NbWRsuWLb+4npqaGrS0tFCyZMlCTM7y0rx5c2hra0NbWxvBwcFix/luS5cuhba2NpYuXSp2FIXAZ0AFMmjQIKSkpGDBggW4du0apkyZAgCYP38+wsPD0aZNm8+2KWjLW67c1r68tstrWe6v99z/8ruk+HFrfl4tNp/u+9P9JiUlfdYCmbvPzMxMmVYEqVQqrJOdnS1s8/H633rMCvo+2Y9v+/btSEtLQ6NGjbB371789ddfwEddLD5tycrIyBC6PeX395WSkoLk5OTPXis1NfWbWtC/tC8ikvnbyJWb++NW/ryWfW0/eb1+fu/98uXLCA8Ph6Gh4Xdl/Nbz2o/M1dUVqampWLduHW7evIkhQ4Z8ts7H3e6ICGlpacBHrenp6enCFcOP/+vcuTPCw8MxY8aMr+4zOTlZ2C8+aW3/uNWeW0g/FxoaiosXL0JFRQVEhO3bt+e5Xu5Vpdz/Pu1Omd/zny7/+N8JX6gT8tvfx9+3H3+fZ2VlCd+Nuet8+u/Nf7ufICb35syZQwBo0KBBFB8fT5MmTSIA1LdvXyIiGjZsGAGg3bt3ExFRbGws9e3bl3R1dUlNTY0qVKhAe/bsyXf/iYmJNGzYMDI0NCQ1NTXS0tKic+fOFWhfua8NgJSVlUlZWZk8PDwoJSWFiIiOHj1KVlZWVLJkSdLS0iItLS0KCQkhIqKEhAQaNGgQ6evrU4kSJcje3p727t2b536trKxIWVmZXF1dhdfu06cPAaBjx47RvHnzSEtLizQ1NUlNTY2cnJzo7Nmz5OvrSyVLliQAwnubN2/eNx+zr71P9uNr1KgRAaDt27fThw8fyMvLiwDQtm3biIioadOmpKWlRerq6qSurk6NGjWi4OBgGjZsGKmqqhIAUldXJy0tLfL396eXL19SixYtqFSpUsLy9PR0IiJydHSU+byVKFGCxowZk2+2L+0rMDCQGjZsSJqamqShoUH169ene/fuCdt+/FpqamrUv3//PJc9f/6cGjduLLzHevXq0f3797/4+vm999z9f/jw4ZszFuR4/AxOnTpFAKhWrVpERPTkyRMCQGZmZkREJJVKae7cuWRmZkZqampkampK8+bNoxcvXpCGhgYBIBUVFdLS0qKOHTuSj4+PcIwBkJaWFq1cuZIA0NixY7+4z+zsbDIzM6NSpUoJ58TVq1cTAJoxYwadOnVKOP+rqqqShYUFrVu3johIeN3c1/gZzZ07lwDQ+PHjSVVVlWxsbGSeDw4Optq1a5OSkhIpKysL/0abNm0q0PM9evQQlqmoqJCrqytFRUVRr169SFdXl0qUKEGOjo50/PjxAu1v/PjxMt+31apVo6tXr9KGDRuoRIkSBIBKlChBWlpatGbNmi++1s+Oi3AFkFuE5xaRAKhUqVLCF+CnBWXXrl2F4iAlJYVcXV1JWVmZbt++nef+e/fuTQBo1qxZlJWVJfPc1/aV+9pNmzal9PR06t69OwEgHx8fIiKytbUlQ0NDunHjBqWlpcnsu2fPngSADh8+TDExMeTu7k4qKir0+PFjYb8eHh6UmJhIRERNmjQhAPT8+XNKS0sjHR0dMjc3p+zsbGGf2dnZFBwcTKVLlyYTExMiIlq3bh0BoAkTJgjrfesx+9r7ZD++3CI8t8gGQE5OThQfHy+zXkZGBh09epQAUNeuXYmIqEuXLgSATp06JaxjZ2dHKioqdPbs2c9eK7fonDNnDqWkpJC1tTUBoODg4M/W/dK+0tPTqXz58qSurk7Pnz+n169fU6lSpcjMzIySkpJkXmvixInC39KnyzIyMsjGxob09fXp1atX9Pr1azIwMCAzMzNKTU394nv59L1/vP8PHz58U8aCHI+fRW4R7urqSgkJCbRw4UICQIMHDyYiohUrVhAAmjlzptDQkvsj8s6dOwSAGjVqJOwvtxi2tLSkd+/eySzLLZC/tM8pU6YQANqxYwcREbm5uZGysrKwL8op4qOjo8nV1ZWUlJTo3bt3XIQTkZ2dHSkpKVFoaCg1a9aMANCVK1eE53N/8O/fv5+ioqLIwsJCpij+2vO5RXjr1q0pNTWViIhatmxJysrKdP78eYqMjCQXFxcqWbIkvX379qv7y5WVlUUvXrygEiVKkIODAxERzZ8/nwDQ/PnzhfW+9Fo/O+6OokAGDRqE5ORk+Pv7Izk5Ge3bt/+sawcR4cSJE1BSUkK3bt2gqamJ9u3bQyqV4uTJk5/tk4hw+PBhKCkpYdy4cVBVVf2ufXXu3BklS5aEk5MTAAgDrkqWLImoqCi4ublBR0cHzZs3R0xMDIgIR44cAQD06NEDlpaWuHv3LtTV1XH37l1hv7169YK2tjYAYMCAAUDOQJ6jR48iMTER/fr1g4qKCg4dOoQKFSoIGRITExEeHl6g/rqF8T7ZzyO3O8qcOXMQGBiIkSNHAgBmzZoFExMTaGlpoWvXrgCAly9f5rmPwMBAvHr1Cq6urvDy8sr3tXr06AFNTU3Y2toC+XzevrSvwMBAvH37FjVq1ECFChVgbW2NunXr4p9//kFAQIDMuoMGDYKKikqeyx4/fozXr18jISEBzs7OqFKlCtLT05GQkICzZ88W6L3k51syFuR4/GwCAgJQpkwZTJgwAVWqVMGCBQsAAIcPHwYALFq0CKampti6dSu0tLRw+/btL+6vZcuWsLCwyPO5L+2zf//+UFJSwo4dO/DmzRvcuHEDTZs2hYWFBe7fv4/atWujZMmSsLS0xL1790BECAoKKvTjoWiuX7+OV69ewc3NDbq6umjbti0AYNu2bUBOt59Lly5BXV0dHTp0QJkyZdC8eXNh+689/7E+ffpAQ0MDGRkZOH36NIgIrVu3hpWVFZ4/fw5VVVXcuXPnq/vbsWMHbGxsoK6ujurVqyMzMzPfc92XXuvevXuFeCQVExfhCqh+/fpQVVVFcHAw4uLiZJ5TUlIS+pXl9q3M7YP1cYGd1/qf9tX6ln1paGgI2yCnsAWALVu2wMvLC6VKlUJWVhZOnTqFLVu2CPtWVlZGRESETL+zPn36fLZfAGjTpg2MjIywY8cObN++HcrKyujXrx+QU6CHhITgzZs3SE5ORpkyZWTyfklhvE/28/Hw8AByBrk9evQIM2fOhJmZGRITE3Hnzh3gC5+/3M/V16bILMjn7Uv7yi2qP87xtc92Xsty13Vxcfms37CVlVWB3kt+vicj//39n6urK5KSkjBixAg8evQI/fv3Bz46dqdPn5b59/L29v7i/vL6HOT60j6trKzQqFEjnDt3DkuWLAEADBw4EAAwYcIE3Lp1C4cOHUJKSgoaN24McP9gAMDWrVsBAA8fPoSJiQnGjBkDFRUV7N27F2lpaVBWVoaysjJyei4An/ytfe35j+X+2yorK0NJSQkaGhpISEiQ+bds3779F/eXlZWFAQMGICYmBmFhYUhMTETJkiXzHSfypddq165doR1HRcVFuALJHVi4b98+ZGdnw9LSEvr6+p+t17lzZwDAqlWr8PbtW+zatQslSpTIcxAiclqXAGDq1KmIjIyUGfj0rfv6lJOTEw4ePIj3799j3LhxAAAdHR0AQNeuXSGVSjF16lRER0d/ceAmckbq//rrr3j79i2OHz+OJk2aoFy5ckDOl3JWVhaioqKwZcsWREVFCduVLl0aAPD+/XskJSXleYL6r++T/TzS09MRHx+PAwcOAACqVasmFIVpaWmIiIjAihUrZLbJ/QwGBwcjOTkZFStWhLOzMwICArBz507Ex8fnOZiyICpVqpTvvhwdHeHo6Ii7d+/C398fN2/exNWrV2FjYwMXF5cCv4ajoyOcnJxw584d7N69G4mJicKUqV96/bze+6d/34WV8WdWsmRJ/PnnnyhTpgwOHjyIGzduCFdj5s2bh/fv38sMrsv9N4mMjERcXFyBB5p/aZ/IKbolEgnWrVsHU1NTYfaV3L+PyMhIXL9+HZcuXSqS46Bo0tPTsXfvXujr6wt/U8nJyRgxYgQSExNx+PBhKCsro3nz5sjIyMCWLVvw7NkzHD9+XNjH157Pi5qaGjp06IDU1FTMnj0bsbGxwmt/bX9EBCUlJWRkZCA6Ohre3t4yA7dzP1vv3r0T9pffazEemKkQFi5cKAxqye0r2axZM2Hg0pgxY0hLS4v2799PREQpKSk0ceJEqlChAhkZGZG7uzudP38+3/2np6fT7NmzycnJiUqXLi0zMPNr+/r0tZcuXUpaWlq0dOlSIiKqXr06aWlpkba2NpUvX55+//13yszMJCKi1NRUmjZtGlWqVIl0dHSE9/j69evP9pvrxYsXVKpUKdLS0qJDhw4Jy48cOUL29vbCc7n/xcfHU0JCAnl5eZG+vr6wz289Zl97n+zH17JlS+Fzpa2tTVZWVtS3b1+KiooiIqJZs2aRmZmZzOfPzc2NiIju3btHzs7Owuc8IiKC/vnnH+rfvz/Z2NgIn9vcwZSurq7CekREbdu2JS0trXzHdXxpXyEhIdS9e3eytLQkc3Nz6tSpEwUFBQnbfvpa+S179+4d/frrr2RlZSW8hr29/VdfP6/3/un+vzXj147Hz+DcuXOkpaVFHh4ewrLc74r27dsTEdHGjRvJxcVFOPd9fA4bOHAgGRkZkZaWFk2ePJl27Ngh/P9ceS370j4zMjLIwsKCtLS0aPr06cI2jx49opo1a5K2trbM38fFixfzfI2fxYEDB0hLS4u6desms/z48eMy/44RERHUtm1b0tPTIy0tLVJTUyMA9NdffxXo+f79+8t8r1POhAzjxo0jBwcHmX+X6Ojor+5v165dZG1tLfNvqaWlJWRxd3cXtj137twXX+tnp0R8PY8xxhhjTC5JJBKkpaWBiBAREYGePXvi1q1buHbtGurUqfPV5wv79Vjh4e4ojDHGGGNy6tixYzAxMYGZmRnc3d1RsmRJ7Nq1SyiIv/Z8Yb8eKzzcEs4YY4wxxlgx45ZwxhhjjDHGihkX4YwxxhhjjBUzLsIZY4wxxhgrZlyEM8YYY4wxVsy4CGeMMcYYY6yYcRHOGGOMMcZYMeMinDHGGGOMsWLGRThjjDHGGGPFjItwxhhjjDHGihkX4YwxxhhjjBWzH6oIl0qkYkcoEJKS2BEKTGGOKSnOMZVIJWJHKJDvySklxfi8SKWKkRMAJBLF+LwoyrlCUY4nAEi+8Zgqyr8BvjOropznpQqSU1GOJxQo67fmVCJFeWcFtGfSEUS+iRY7Rr4q1LNB498b4NH5V0iOSxM7zhcZWurCrqYllvVfg/cv/hE7Tr6qe1VBzxld8Prue6QnZYgd54t0jEvBopIxfl0+Gs/fvxY7Tr4czG2wbfTy79p2XcAm/JP0odAzFZYqRk7oVKk9zmy8irgPiWLH+SJLJ1PU6VAN83osQcizULHj5KtWMxf0n9cb+6YfR9TbGLHj5MvOzQpeQ36R++MJAOUqWmDKzj++ebvNI3fiQ1BkkWQqLKa2Rui/ssd3bRuSfB8ZkqRCz1RYtNWMYKrpgDPvHyEuM0XsOPmy1CqDOsZ2CIh+iKSsZLHjfJGRuiEq6dnjSdwDpGTLb1Yt1VJw1HP+pm1UiyyNSCLfROOf5xFix8iXoZUBACA5Lg1J0fL7BwoAWroaAID3L/7Bm4dvxY6Tr7L2ZgCA9KQMpCakix3ni9RLlQAAPH//Gg/ePBE7TpH4J+kDQhLeiR0jX6alTAAAcR8SEfUuVuw4X6RnogMACHkWilf35fdHm6WDOQAg6m0MPryQ3wKwTDl9QAGO53/xISgSoYFhYscoMhmSJKRJ5PfHc0nlUgCAuMwURKXL748FvRJaAICkrGQkZMrv8QSAUqr/Zk3JTkZylnxn/VY/VHcUxhhjjDHGFAEX4YwxxhhjjBUzLsIZY4wxxhgrZlyEM8YYY4wxVsy4CGeMMcYYY6yYcRHOGGOMMcZYMeMinDHGGGOMsWLGRThjjDHGGGPFjItwxhhjjDHGihkX4YwxxhhjjBUzLsIZY4wxxhgrZlyEM8YYY4wxVsy4CGeMMcYYY6yYqYodQGxKSgBR/s+pqasBACRZEkiypV9cXtSkUimUlfP/3UQ5b0RJSUlYlpaeKrOOiooqSqiVKMKU/74+5XdQv7KOsrISpNIvb1uYvnZM83v+a9sVtoIcU2VlZUil//8sapRQl8kokUqQnplRpDm/B0kJSspKX1xHKpFCWeXz412QbYuLWsl/T6dSiTTvc4ISgGL6aP+Xv8GCbFtYvnj+VVYSjml2pgRSifSz56kYzxWKcky/x/e8txIaJfDRVw0kEimyM7KLMuZ3Kci5WiKRQEVFpcDLi0JBckolEijnkyczPQPKyspQLaFWRAk/yvEdtUhBty1M3/Nvn5mRBUm27OdYQ0ujyDIWuAiPi4vD+fPn0aFDB+HAhoeH4/bt22jdunWRBSxKLcd5wqVtVWRlZOPYwrN4fOaZzPNlK5liwF89oKKqDP+tt3BuzeUvLi8qj17ex9K/5yI+MRa1q9bH2N5TUEKtpPC8VCrF/nM7ccBvN9Iz0lC/ekOM6jUJqWkp6D21vbBeVlYmOnr1QN+2vxVJTnWtkhi1aQiqeVZFTFgslvVfg6B7bwq0ThlzAwxbNQCO9RwQ/T4Wa0dsRuCVp0WSEwCO+h3E6u3LkZWdhU7NumFoz5Eyz0ulUmw9sAm7j21HZlYG2np1wqi+45CWnoZVfy/Faf8TUIISurfujQFdhhRZTktDM+wY6w1n60q49/oJeiz5HWEx4TLrdKzbAov6ToZeqdK48SwAvZePRnRiLPwX7Ie1iSUAQFVFFTde3EPT6T2LLOu3ykjKwNVlFxEeGA5tU23UH+sBvXL6MuvEhcTi6rJLSAxLQEltdbgOrI1ydawKtG1hqurpANdWlaGkBNw79RQBp57IPF9CQw19l7SHsrIS3j4Kw6l1V/59Qglo2LsW7GtZQUkJCAp4B78tN4qseLSwL4tpvuNRrpIlAq89xewuC5EQnVigdQqybWFRUlZCi7GN4NzMEZlpmTi28Bye+QfJrGNZxQy9lneEiqoyLm25gcs+NwEAemal0Wq8F6xcLJAUnYKTy87j+ZXXRZITAJwbVMYEn1HQNSqNKwdvYHH/lcjKzC7QOgXZVkxlHUwxYFUPGFoa4MXN19j8+06kJqYVaJ3516dANedHkoqqCu4ef4CtY3xFeiefCw+Lwvj+i/DsYRAcKttg0ZbxMDU3klnn4smbWDZ9C8LDolDZpQLmbxwHYzODfJcXlaPLt+DanuNQVlVF27EDUKtdY5nnM9PScWjxRtw9dgGqJdTQbFgv/NL9/3VX2Is3WNV3PH7p0QbNh/Uqspwv7z/H8tFLEPMhGtUb1MCo5X9AXVNdeJ6IcNznCPav3Yu0pFS4etbCyKVjUUK9BPav2YOD6/dDKpXCrUkdDJ0/Amoli+YHQ0ZaBhaPXYHrZ25Bz1AXE1aOQZVaTjLrvH7yBisnr8WLh69gammCsUtGoHJNR6yZvgF+By/mviEoKSvj4OPdKFFEWQv8c0RXVxdr1qzB2rVrc7IRevXqhbdv3xZJsKLm8IstrGpYYmHTNdgyeBdaT2wMdW11mXXeP/mAmW5LcHbV5QItLwoSqQRLts3B8K5/YN/S00jPSMOpq0dl1omJj0JKWgo2zdiN7X8eRnBYEK7dvwSdUqVxeMV54T+rsrbwcmteZFlbDW2G7EwJepgPxPYZvvh93aACr1OlgSP2LzmCLkb9sHPOPvRfUHTFYnRsFNZsX4GN87bh0LpTuHTTD/efBsisExsfAwA4tP40Dq8/g6t3LyPw5SMEvnoE23L2OLXlIrYt2QPf4zsQEhZcZFkX9pmM0/cuQb9bFZx/eBXzeo2XeV5ZWRlrh8xD27kDoNfVCcdu+2FGt1EAANcxLWHQvQoMulfB3xf24+/z+4ss5/cI3P8AmmW00HVXL1RqXRm31l3LY52HKF/PGj3290W9MQ1wd8utAm9bWEobaaN6s0rYM/skdk0/DqcGdjAw15VZJzMtCxuG7fl/8Z3DzM4IJjaG2DzmAP4atR96pqVh6WhaZFlHrhmCM1vPo3mpjnj9MBh9ZnYv8DoF2bawVGpgBzMHYyxutQ7bxxxA60mNUUJT9ksu5EEY5nqsxKUtN2SW29e1xrVddzCnwQqcXnkRrSc2RlFRVlHGxG2jsWTgKrQx6A5tfW006+dVoHUKsq3Yes7vCL/N/hjpNBVx/8Sj6dCGBV5nbLUZGFlpCkZWmoJnV17i+r47IryD/C2f4YPa7lVx/d0+1G9cA8tn+Hy2zq3LD7F23yxcD9mLsuWM4bNy/xeXF4VXtx/i8YXrmHpyC0ZtX4qjyzcjMSpWZp3Qp0EoX6Ui/ry2F6N2LMOxFT5IS04Bcgr0U2t3oE7HZkWWETk1n/e45eg1vg92PtoHFVUVHPc5IrNOckIyIt9HwvvMOvjc2YnoD9G4fOQiPoR8wIltx7Dabz12PtoLdS11nNtzusiyHt9xCqnJaTj8xBejFgzDotHLIZFIZNa5ce42Bk/rj1NvDqFNnxZYN3MTAGD0wuE48eoATrw6gNGLfkfDtu5FVoDjW4pwJSUlbNmyBXPmzEFwcDBWrVoFIsLvv//+1W19fX2RkZGBy5cv49atW589//r1axw5cgS+vr4ICQkBAOHxiRMnEBER8a3v66tsapbDvWOPkZ6UjvBXUXj3KAyWVcwK/XX+qw9RYVBTLQFXJzeUUCuJFr+0w/3nsic7Q31j9G37G3RKlYZOqdLQ0zGAro5sq+DTN4+hpaEFc2PLIsta2b0STm8+j+zMbNw4egea2hrQM9Yt0DoXdvjj+a1X0NTRgFZpTUSHxRRZzvvPAuBS2RXlza2hq6OHZg1a4c5D2S/6MvqG6NdpMJSVlJGQFA8lJSXo6xqgZpXa6NC0C9RLasDMqCy0tbShU6p0kWVtUNkNa0/8jWxJNlYf34qGVevKPC+VSiGRSmCiZwh9bV3oaZdGo6r1ZNYppa6FJtUb4MD1k0WW83uEP/6ACs0qQkVNBTYN7RD/Lv6zy9mljLWRmZKJjMR0pCekQdtUp8DbFhZzB2O8fRCGpJgUpMSn4dWdEFhUNCnQtslx/3YH09QpCQ1tdSgrKyEpJqVIciopKcGxjgMOrz0BSbYEh1YdQ3VP5wKtU5BtC5OViyXun3iCjJRMfHgRifBXUShbwGN6a999vL4dAqmEEPkmGsmxqQXY6vtY2JdFWlIaAvweIDM9E8fWn4TLJ8clv3UKsq2Y1NTVYGpnjOt77kCSJcHFbdfgUM/um9fRL6sHw/IGeHmj6K5GfI/bVx6h68BWUFNTRfdBrXHb/+Fn60xcOBgWVqZQK6EGS2szGBjqfnF5UXh56wFcmntAW18XxlYWsK/ljNf3AmXWsXFxgmurhpBkZSMlPhFautpCt5Ojyzajxe+9UVKz6LpMAEBcZCxSk1JRp3k9qJVUQ/PeLfHw2gOZdbR1tdF/+iCUNigNLR0tGJgYQLeMLlRUlCGVSBAfFY+k2ESkJqfiwZX7RZb1/rWHaNmzGUqol4BrAxeolVDDhxDZK8g9R3WFY42KUFZWRjk7S+iW+fzf+Oi2E2jZs2mR5cS39gm3srLCtGnT0LlzZ4SFheH27dt59vn5VLdu3dCwYUOoq6vjyZMn8PT0xF9//QUAmDp1KjZu3Ag3NzdoaGjA3Nwc5cqVw6lTpxAfH4+UlBTcvXsXe/fuRf369b//nX5Cs7QG/nn+/+I+NT4NmrpF+yH+HokpCSj9UZFXupQuElPyv0R86PweGBmYoKp9dZnlxy4fQPP6bYs0q7Z+KSTFJAmPE2OSoK1fCnER8QVap/XwZug2pQMyUjMxr8vSIsuZkBQPXW094bGujh6C3r78bL34xHi0GeyFtPQ0dG3ZE2ZGZYXnpFIp5q+fhR5t+0CvdNF0g1BSUoKOZinE5/x7xyUnQFdL+7P1+q0ciz97T4BhaQNsObcH+tqyJ5NeHu1x5OYZZGRlFknO75WRlI6SOVeflJSVUFK7JDKSMoRL3ABg38QB56afwvPjT6BSQgUek70KvG1hUS9VEmnJ6cLj9OQMqJcq+cVtciVGJePdkw/oOe/fS8dPLgch9p+EQs8IAFqlNZGRlglJ9r8tPgnRiShtoF2gdQqybWHSLK2B1Pj/F8+p8anQLP1t518NHXW0mtgYR+afKYKE/9Ix0JHpkpMQnQgdA50CrVOQbcVUSk8TqQlpQv/d5NgUaOlqfvM67j3dcNX3djEmL5jEuCTo5RzvUjqaSE1Jz7ePcMD1QNz2fwTv3dMKtLwwpcQnwdSunPBYS680UuI//44PfvAU6wZPQXZmFjpMHgq1EiUQcPISjKwsoG9qjOysLEglEmRnZhVJv/DEuETo6P3/86ujXxpJcUn5rn/O9/S/RXCjWgCArqN6YtGwP5GdlY06zesh8n1koWf8f9YklNb/f9bS+jpIzCdrRFgkti7ZgQkrxsgsDwp8jeysbNhXsctzu8Lyzd9YAwcOxPTp09G7d2+Ym5sXeLsxY8agRYsWSE5ORoUKFRAYGAglJSVs2LABgYGBMDY2lll/9erVuHHjBsLDw2FtbY0NGzYUahGeHJuKUgZawmPtMqWQUoQtKt9LV1sPcYn/bxWOTYiWKSA/tvXIBqRlpOL3buNklscnxeHxqwcY02tKkWZNiEqErnFphDwNBQDoGesiISqxwOscWnEch1Ych52LNSb5jkF/+9+LZDCTfmkD3Im/KTyOjovKs5DW1dHF5d13kJyShImLR8Pv+hl41W2KjMwMzFw5GbWquqFt446Fni8XESEuOQFldPQRnRgLo9IGiEmK/2y9UwGXcCrgEgCgTe3GeBcVJvP8oKbd0W3x8CLL+b3US2sgLT4NWoalIJVIkZGYDvXSsl3Crq64jKrdqsPqFxskhMbj3PRTaLexc4G2LSxpiekobWsoPNYsrYHE6OQCbWtXszz0TXWwYdgekJTQZHA9ONSxxvPrbwqw9bdJjk9BSY0SKKFeApnpmTAw1UdcZEKB1inItoUpJU72/FuqTKlvatEubayNjrNb4vSKiwh7Fl6ALb5PfGQ89Ez+f741MNVHfGR8gdYpyLZiSopNgZaeJpRVlCGVSFHaSBtJMcnftI5qCRXUalcdc5otE+EdfJlemdKIjoiDoYk+4mMToaWtmWcBfuH4DezfdhordkyBxkf9m/NbXti0DXSRFB0nPE6MioWda5XP1rNxqYwld48iPiIaq/qOh41LZdzYfwpvHz3H0WWb//0BTQQVVVU0H9670HPqGugiPvr/n9/YyFiULpP3VeD9a/YgIjQcI5b8v7Bt1qsFmvVqAQDYs3IXjMoa5bltoWQto4u4qP8f09iIOOjmkfXNs7dYMXE1xi8fjbJWsj0hjmw7gRY9i7aLD75nisJ58+bB2dkZu3btQnBwwfvCNmrUCABQqlQp1K5dG8+ePcOjR4/g5ub2WQGelJQEZ2dnjBkzBnv27MHjx48LvUvKy2tv4NreGWXK6cO2dnmYVTRByIP3UFJWkmlNK6GhBhU1FaioKaOEhtpXlxc20zJloaysirM3TiAqNgIHz++Bq6MbACA9899f9tmSbCzeOhtZ2Zno03ow0jPSkC35/6X509eOwcPVC2qqRTtq+r7fI7T5vTkMzPTRbIAnYj/EISE6ESqqKlAtofrFdXrP7gp7V1to65eCvpk+VFRVimw2geqONXDvyV3cC7yDN6Gvcfz8YdRx+fcHXmrav4XA1buXcfDMXkTHRSM6Lurf5URISErAiFmD4VatLhrXb47UtNTP+poVprP3/TGp0zCY6hlhUqfhOJ1TbJdQLQEVZRXh/2upa8LZ2hGze4zFlnN7hO3dnWojOikOz9/L16ViADCrZo4nhx4hNSYFTw8/hoGdIVTUVP6dcSjr32MqycxGemI6MpIykBafiuz0LIAo322LwrunH2BV1RzGVgYoY6EHu5rl8C7wHyCnCMmlWkIFKmoqwqweSkpKUC2hArWSatDQVoeGtjrUSqrJbFPY7p1/hB6TO8PAVB/dJ3XCrZN3AQBqJdWE2WXyWye/5UXh1c1guLarCn1zXdjVsYJhOX2EPf3whfOvinCeNbU3Qs+l7XHG+xKi3sYU6fn3/at/oKKiDK+eHjCyMESHUW1wM+e4lNQoCSUlpXzX+dK28iA7Ixshj0LReHAD6BrroMmQhgi8+BwAoFpSFUrKSl9cBwBcWlTFy1tvkBInfw1YdRpWx1/L9iLyQww2LtmDep4uQM7sF1lZ/34/7tpwFHt9TmLe+jFQUlJCRnrmF5cXhYr1auD2ET98CHqLoLuPEXT3EWxdq0AqlSIz/d/ZrK7sPoZH568jOS4BCZExyMrIgJISMHzLQiy5ewRL7h5B09+6w2tQ1yIpwAFA11AP+sb6OPn3MUR/iMaRjQfg0sAVAJCRnvFv10iJBOsmr0L0P1HoN20QMtIykJWZJayTlpyKB1fu4fjWo/DqWnTdPFwbuODAX0cQERaJM3v9oKKmAlNLE0iyJcjM+DfP/asPsXDkUvyxdCQMjPWRnvb/q53JCcm46XcbDdu6F1nGXN9UhN+9exdbtmzBnj17MG3aNPTv37/AhdLHAziDg4NhaGgIU1NTBAUFfbaPK1euwNjYGHfu3MH+/fvRtWvXQi/IXt9+i3tHH6Pvuq5oPtYT+6YcRWZaFspVNUef1Z2BnBavyRdGosGAOqjdxQWTL4xEaROdfJcXBSUlJUwaMAsn/Q9j9OJBsDa3ReOcwZV/LBmCkA/B+CfyPa49uIwTVw6j28RW6DaxFY5fPgjktKZevH0Gzeq2KZJ8Hzux4SyiQqOx6OIs1O9cBysGrQMANO7jgV9nd/3iOhd3XUGvmV2w6u4itBneDAt7riyynLo6epg8dCYWbpyLMfOGoWurXqhk64TMrEw06/fvH13Nqm4I/RCCX//ojLF//o7aznXgWbcpbj+8judvnmDp5vlo1s8dzfq548GzgK++5veasHU+yhuZ48aSIzAvY4qp2xcDAJYNmIZeHv/OfPNn7/EI2XID28eswPaLB7H+1A5h+14NO2Dj6V1Flu+/cGxfBaolVHHyj6P450EYag/7ty/708OPEbj/3/6bNQfVQcjVNzgydB9ub7qB2sPqQaWEar7bFoXk2FRc3RMArwF10WxIfdw69BDxEUnQ0C6JXvP+P0NBjzmt4NnPDRaVTNFvWQeYOxjjxY1gxIUnoOOkJug0pSmS41Lw7GrR/SBaMXQtKta0x4aAFSihXgJ/z94NAJjgMwr12tT+4jr5LS8KL6+9wZMLL9FnVWd4DfkF+6YfR3amBFYului24N9zlXYZLYw/ORR1utVAnW41MP7kUGjpaaJ668rQK6uLPqs7Y/zJoRh/cmiRTVNJRJjddRHaDW+J1dcX48XdVzi3/d+ZE9bcWAKLCmXzXedL28qLv8ftRcX69ph0bCSy0rNwdsO/P/IHr+2NSvXtv7gOALh1rAH/HTfy3b+YRs3si4h/otG90WiEhYRj9Kx+AICl0zbjyC4/AMDWVQfx8M5zNK82AI0q9caM31d+cXlRKF/FAe4922Lj8JnYO9sbXWeNgpauDsJevIH3r38AAKo3c8eDs1cwv80g7J6+HE2H9ISpbXmZ/aioqUJVrWhnnR61/A9cOXoZ49uOhmFZIzTr+W/L9qzeU/Hy/gvEhsfg8uGLuHToAvq69kBf1x44vOnfWuTPgbPRr3YvbJ23GQNn/gan2pWLLGezrl6wqWSFEa3/wLG/T2LK6nFQUlKC38GL8J7y7+Qih3yO4X3wPxjSbBQ6OvfEgEbDhO0vHvGHe6v6RXoFJJcSFbC6TUtLQ/Xq1bF48WK0bNkSRAQPDw907twZQ4cO/fKLKCmhQYMG6N69O27duoXr16/j0aNHUFJSQp06dWBmZoY2bdpAXV0dbm5uSElJQf369TFz5kykp6djzZo1sLW1hZ+f31dzruqyWaavt7yp2qwSui5oi+v7HyEpumgGaBUWE9syqOpphzH1puDNQ/mdBad+pzoYu2UYnlx8jdSE9AJsIR79sjqwcbVArbGt8eDNkwJsIQ5na0fcWnq0AGt+btql2QhJeFfomQpL7bI1MbTGIPjOOomod7EF2EI89jXLo8ngehhUfSRe3Ze/qxm5GnVzx9Rd47C29zZ8eFF0fT3/q8qNHdB5Tiu5P54AYFfNBhvvfXvxN7fFcoQGhhVgTfFYOJXF1BOjv2vblwn+SJMUzdSZhUFXzQzltKvD980NRKXn32dabPY6JmhiXgWXPlxDQqb8Hk8AKKtpihqGzrgddRXJWfKbtZSaDmoafluDUIFbwi9cuIDevXujZcuWwEezpdy/fx+ZmV+/VLNy5Uo8efIEZcqUwaVLl6CqqgoVFRVcvHgR9erVw8WLF3H48GGEhoaiUqVK8PHxwcOHD5GamgofHx94eHh80xtjjDHGGGNMXhX42kWLFi3QokULmWXW1tbYtGlTgbavUqUKVqxY8dlyTU1NjB079rPlrVu3lrkJEBfhjDHGGGPsR1EoHYjS0tJw5MiRz5bb2NjA1dUVXbp0KYyXYYwxxhhj7IdQaEX44cOHP1vesGFDuLq6wtdXfm5lyxhjjDHGmNgKpQjX19fnQpsxxhhjjLEC+uZ5whljjDHGGGP/DRfhjDHGGGOMFTMuwhljjDHGGCtmXIQzxhhjjDFWzLgIZ4wxxhhjrJhxEc4YY4wxxlgx4yKcMcYYY4yxYsZFOGOMMcYYY8WMi3DGGGOMMcaKGRfhjDHGGGOMFTMuwhljjDHGGCtmXIQzxhhjjDFWzFTFDlDYjKzLiB3hi/TL6gIASulpiB3lqzR1SgIAzCuYiR3li4zL/ftvrq5dUuwoX1VCqwQAwMHcRuwoX/Rf8plpmxZqlsJmqPnv50XPVEfsKF+lXUYLAFCuooXYUb7I1MoYAGBY3kDsKF+kZ1YaUIDjif+Q0dTWqNCzFLb/krGkinahZilsJVQ0AQB6JbTEjvJF2moaOf9bSuwoX6Wp+u8x1VKV76zfk0+JiKhI0ohAKpFCWUX+G/dJSlBSVhI7RoEozDElgpKSYhxTiVQCFWUVsWN81ffklJIUykry/3mRSqVQVpb/nAAgkUigoiL/nxdFOVcoyvEEAIlECpVvOKaK8m+A78yqKOd5KRGUFSCnohxPKFDWb835QxXhjDHGGGOMKQLF+MnMGGOMMcbYD4SLcMYYY4wxxooZF+EKJDs7W+wIBaIoOSMjI8WOUGCKckyZfLh8+TIGDx4sdgzG2A9Gkb43FQEX4QriwYMHcHNzQ1xcnNhRvsrT0xPHjh0TO8YXBQcHw83NDU+fPhU7ylelpqbC2dkZjx49EjtKoUtISMDChQsxbNgwpKamih3ni27cuAF/f3+xY3zV5cuX0blzZ3Tv3l3sKIyxH0h2dja8vLxw4MABsaMUSGBgIHx9fZGWliZ2lHxxEZ5j3759ct3a6OzsjBYtWsDT01PuC/FVq1ZhyJAhcl2IW1lZYcuWLWjVqpXcF+KamppYuHAhmjVr9kMV4nFxcahRowaio6MxYsQIlCwp31NMEhG6du0q14X45cuX0aJFCyxYsADu7u5ixykwHx8fsSMwxr5CVVUVJ06cwNSpU+W+EF+yZAk8PT2xevVq/PLLL8jKyhI7Ut6I0Zw5c6hy5coUExMjdpTP+Pj40NWrV4XHM2bMoOrVq1NsbKyoub7m0aNHVLZsWTp69KjYUb7o0qVLZG1tTU+ePBE7ymeioqJo1apV9PfffxMR0fHjx8nMzIwePnwodrRCMXv2bOrRo4fw+Pr16zRu3Dg6deqUqLnykntuuHbtGpmamtLly5fFjvSZS5cukZGREY0bN44sLCzo5cuXYkcqsAYNGtCDBw/EjvFFgYGB5ObmRvXq1fth/gZzhYWFUdOmTalatWrk5+cndpxClZCQQF26dCFHR0fatWuX2HG+aPPmzVShQgXq378/JSUliR0nX6GhoeTg4ED79+8XO0qe5syZQ5UqVaIPHz4QEZGlpSUFBASIHStPP1URnp2dTVOnTqXU1FRhWW4RFhkZSZcvX6bhw4fTs2fPRM2ZKyMjg/T09MjU1FSuC/GIiAhq0aIFqaur09ixY4XlXIh/v+fPn5OZmRlNmzaNbt68KSz/kQrxmTNnUvv27Sk8PJxGjhxJU6dOpaNHj5Kuri69ePFC7HhERHT37l1ydnamevXq0Z07d4jktBAPCQmhGjVq0KVLl4iIaOvWrQpViO/YsYNGjx4tdowvqlmzJv3111909uxZsrW1pVu3bokdqdB07dqVZsyYQTdv3iRHR0c6dOiQ2JEKzcSJE2ngwIF0//59cnNzo9WrV4sdKU9v3rwhKysrunHjBv35559Ut25dSkxMFDtWvuS1EJdIJNS2bVvq2LEjZWdn04kTJ8jc3JzS0tLEjpann6oIp5wCtmHDhkIhvn79emrZsiUNGjSIevfuTdOmTaM+ffqIHVMwZswYGj9+PJUtWzbPQjwlJUXUfGFhYWRvb0/Tpk2joKAgsrW1lSkQcwvxM2fOiJrzU3fu3KFevXrRmDFjKCYmRu4K8RYtWtDSpUuFx1evXqUVK1ZQeHi4UIg/f/5c1Iz/VWJiIvXr1486deoktFJIJBIyNzenGzduiB2PEhMTydTUlA4fPiwsk0gkRHJWiOe2gIeEhMgsl/dCfOXKlXT48GHKysqitLQ0cnBwoKysLLFjfSYpKYnq1KlDnTp1EpY9evSIbG1t6e7du6Jm+6+kUik1atSIPDw8hGVhYWHk6Ogo940nBdGlSxdycXGhjIwMopxWcTc3N1q7dq3Y0WScPHmSatWqRWvWrBGWeXt7U926dUX/jv9YbGwsbdiwQbhaIq+FeGZmJrVt25YaNWpERkZGdPv2bbEj5eunK8Lpk0I8IyODVq9eTZcvX6b4+HhydnYmX19fUfN9/EX07t07qlevHt28efOzQvzcuXMiJfy/Jk2aUMeOHYmIKD09nWxtbWnKlCl09OhRSk5OJsq5jJt7WUge3Lt3j4yNjWnHjh3UuHFjatmyJVFOMSMvP8Bq165NW7dupZiYGBo0aBDNmDGDxo4dS5UqVSLKKco/vqKjCIKCgoSW2rxkZGTQsGHDqGHDhsWaKz8nT54kZ2dnopyT+vTp06lu3bpkbW1Nr169omvXrlH//v1FzZhbgOce19wfCblyC/FPC3Qx7N27VzgPHD9+nPz9/al///5UoUIFmjx5MrVu3ZqOHDkidsw87d27l0xNTSk0NFRYJm/nte917do1MjAwoHv37gnLwsLC6OnTp6LmKgwvXrwgU1NTOn78uLAsISFB7q5iSCQS6tWrF7Vu3Vrmb/j8+fMklUpFzZbrxYsXZGVlRYMHD6batWvT8OHDSSqVUmhoKHl6elJ6errYEWXkFuJNmzal7OxssePk66cswimPFvGEhASqVasWjRkzRtRcPj4+VKZMGZo8eTKFh4cTEVHPnj3p8uXLeRbiYgsJCSEbGxtau3YttWvXjho0aEArV66krl27kpGREY0fP17siJ/p0aMH7d69m+bPn08ODg4UFhZGf/3112cFTHG7ffs2bdu2jYiIbt68SS4uLtSlSxfhyzAkJIRKlChBmZmZoub8Xq1bt6Y6depQrVq1aPPmzTKXB1etWkV2dnbUq1cviouLEzXn+/fviYgoMjKSTE1NafTo0dSqVSuh1fu3336jP/74Q9SMRET+/v5kaGgoFOBhYWFUtWrVzwpuPz8/0T4zqampQqPCjh07yMnJiX7//XeqVq2a8CM9NTWVdu7cSY0bN6Z27dqJkjMvERERtHLlStq1axdJJBLau3cvOTg4CJ8PRZaUlETr1q2jTZs2UVpaGl27do2srKx+iG5umZmZtG3bNlq9ejXFxcXRixcvyMbGRi4arT51+/ZtWrRoEd2+fVsoxH/99VfRv4s+lZKSQuXKlaNt27bRhQsXyMjIiNzc3GjQoEFy8SNh+fLlVKFCBfL29pbpwpNbiHft2lVuC/GfrgiPj48XWi8+LsRTUlLk4hLV+fPnycTEhMaNG0dubm40ePBgOnDgALVo0YIopzhbsGCB2DFlhISEkJWVFVWvXl3myz4tLU30giovPXv2pI4dOwpfqH379iUPDw/RW5aDg4PJysqKtmzZ8tlzycnJ1LZtWxoxYoQo2QrDvn37aPTo0RQTE0PLli0TWkDfv39PqampctOSUq9ePZo7dy4REYWHh5Ofn5+QLSMjg6pVqyYXA7xevHhBFhYWtGfPHqFb2OLFi4k+uZomppUrV9L69euFx+3atSNlZeV8u31VqFBBLgbIv337lszNzalPnz7UuHFjatGihVCIt23bVux4/0l8fDxVrFiROnbsSJ06dSIXFxdKTU2la9euUe3ateWuAPwWmZmZ9Msvv5CXlxf17duXbGxsKCIigl68eEFVqlSRq8GOW7ZsIQsLCxoxYgTZ2tqSj4+PUIhv3bpV1GzR0dHCGJjXr19TSkoKvXnzhiIiIsjExIT8/f2pR48eNHLkSKGxUExr166l0aNH04oVK6h27do0cuRICgoKIsr5TLRr104uB/zTz1aEe3t7k5GREVWtWpUGDhxIWVlZQiGe22dMLH5+ftSrVy+SSCR0/vx5Mjc3p3v37tHZs2epcePGZGRkJHqRSDl9wGbNmvVZa1Bui/imTZtEy/axJUuWyPSZfvjwIU2fPp327t1Ljx8/Jm1tbfrjjz/I3d2dWrZsKTf97j4txLOzs2n8+PFkZWVFv/32m8K2glPOe6lWrRqlpaXRli1byNLSkpYsWUK2trb0559/ih1PEB0dTVWqVBEKccppOTx//jzVqVOHunfvLhetP/RRIW5hYSEU4LlfOps3bxY7HkmlUuFYSSQS8vPzozVr1pCTkxN9+PCBYmNjadmyZUQ5g5FLly4t0+VDLH379pX5TNarV4+OHTtGJEc/cArC39+ffHx8ZJbNmjWLBg0aJDzu0aMHrVq1ikjB3tvLly9p/vz5Msu2bdtGjRs3Fh5PmTJFmCxAzPc2YcIEioyMFB5nZWWRrq6uUCi+e/eOdHV1KTs7myQSiejnl8ePH5OVlRVt376dzM3N6cSJE0REtGfPHmrbti0tWLCAqlevLmrGj6WkpFDVqlVJIpFQQkIC2draUvny5ally5Z07tw50Y/nl/w084TfuXMHK1euxN27d2FnZ4eIiAhkZWVh5syZGD9+PEqUKCFqPnd3d6SmpqJ3795o0KABtm3bhtatW6NMmTI4c+YM3rx5Aw0NDVEzAsD+/ftx/vx5dO/eHd26dcP169cBAJaWlrhw4QIWLFgAX19fsWOiWrVqaN68OV68eIEHDx7A09MT2dnZ8PHxgbe3Nx49eoSyZcti7NixOHr0KDQ1NcWODAAoX748Lly4gDlz5sDHxwcqKioYMmQIHjx4gHXr1kFNTU3siAUmlUrx9OlTZGRkAABUVFTQtWtX9OzZEzNnzsT58+cxduxYPH36FMOHDxc7rsDAwAAXLlzA3r17MW/ePCDn5k6+vr74448/sHPnTigpKYmS7fHjx+jQoQP69++P+Ph42Nvbw8/PD0QES0tLZGVloUuXLgCAXr16iZLxY0pKSlBSUsLhw4fRtWtXuLu7Y+jQoZg0aRLq168PV1dXxMTEAAAMDQ3h4+MDc3Nz0fJKJBIAQGJiIiwsLITlGhoaSElJAXLmSlYUlSpVgpOTk8yyT9+bpqamQr43CwsL1K5dW2aZvL63xo0bo3Tp0sLjrKwsZGdnw8TEBACgrq6OzMxMSCQSKCsri3Z+yeXk5IRFixahV69e6N27N5o3bw4AaNasGSQSCa5evYpDhw6JmvFjmpqaaNy4Mfbs2YOmTZuiadOmePPmDYYNG4awsDDRj+cXif0roLgsXbqUFixYQB07dqTWrVtTZGQkubm5yUz/JoaPL/1lZWVRhw4dqEePHp+1iMuLuLg4cnZ2JqlUSo8ePaJatWpRjRo16O+//6aMjAwKCQmhsLAwsWMS5XTtsba2pn79+tGePXuIco63o6MjPXr0SOx4dP/+fYqOjs7zuS91TVEEwcHBVLVqVTIwMKBKlSoJ02nGxsZSqVKl5GrQV36X3/NqERdT7iBMb29vGjJkCA0ZMkR4LrdFvHbt2tSuXTu5umJy+/Ztkkql9Ntvv1GnTp2EFsnAwEC6cuWK2PEEAQEBVLlyZUpNTaWbN2+Subk5rVmzhgYPHkxVqlSR2ynOCuLdu3e0c+dOopyp8MzNzWnx4sU0ceJEsrS0lGmlVTQJCQlCV9LY2FiysbGh6dOn0/z588nY2FiuZpHaunWr0B12/Pjx5OHhQZs3byYXFxeaPn262PFkvHjxgubNm0dWVlZ0/fp1IiI6fPiw3Fw1/lTumKnhw4eLHeWb/FBFeHp6er5dNq5fv06amprUsmVLev36NdWoUYNGjRpV7Bk/9vfff1Pp0qWpXbt2tGnTJgoLC8uzEJe3PuBDhgwhPz8/2rdvnzDyvH///uTl5SV3/QnPnz9PGhoawqwL2dnZ5ODgIJxUxLR48WJydnb+YiE+cOBAub6UlpfXr19TuXLlhEvcnTp1ot27dwvP//bbb3LTbSkqKoqqVKlCb9++zfP53EJc7BmTrl69SgYGBsIgzAsXLlDt2rVp0KBBdPr0aaKcL83BgwfLVQGeO6ArLS0tz0JcLFFRUTKP3759S6ampsJ5IiIigu7evUsDBgygqVOnUkJCgkhJC0d0dDQ5OzsLf3evXr2ioUOH0ujRo+mff/4RO943yczMFP490tPTKS0tjZo0aUKTJk0iyvm3Gzt2LA0ZMkT0+w18/DlLT08XBifnFuJbtmyh3r170/bt20VM+e84gdzv7tjYWFq8eDEtX76ckpKS6P79+2RlZUU9e/YkKyurfM+VYrh165bMQPQOHTrIbd/v/PxQRfj27dtlZjxZtWoVlS5dmsqWLUt79uyhtWvXkpWVFVlaWtLKlSvFjksBAQFkYmJCs2bNookTJ1LVqlXJ2dmZxo0bR1ZWVkIhLm+ePXtGTk5OZGpqKhctyl9z/vx5srS0pLlz51KTJk2oVatWclPYzp49+7NCXCKR0LRp0xS2deqPP/6gqlWrUkZGBqWmppKjoyN5eXnRuHHj6Pz58/T48WNq3bq1aPmkUqnMvLabN28ma2vrz75csrKyKDQ0lGJiYkQfNJo78HL16tUUFhZGtra2NHr0aNq9ezeVKlVKrqfKGzp0qDDQLLcQF3Nga1JSEv3yyy8yPwQmTZpEU6dOpYCAAGrQoAE5ODgId6pVZCEhIeTl5UUpKSmfFeKK6tixY+Tq6krBwcFUo0YN8vPz+6wQlweZmZnCfOvLly8XZv75tBAXW3R0NFWtWpUOHDhA0dHRZGNjQ3369KG+ffuSk5MTJSUlUUhICK1YsUKuvpMmTJhA5cuXJ0tLS+Ez7e/vT7Vq1RI72jf5oYpw+mjGk9ybKQQFBdHbt2+pUqVKwoTt8lKAUU4hbm5uThcuXCDKGfi4YcMGatOmDU2ZMkXsePlq2rSp6K2D+Tl//jxVqFCBKlSoQHv37hWW6evr04EDB+Tq358+KcQlEgn17t2bvLy85GIg7vfIHeHfokUL8vLyok6dOtG1a9do3bp15OnpSU2bNhX1kmZmZiZNnTpVpnvBp4V4VlYWdezYUWYAmxiuXbsmDAjMLcRNTEyEQZgpKSlUunRpevfunag5Bw8eLNPqd+LECWGqsKdPn8rdF2PuOSB3QP6ZM2fIxsaGOnfuTKGhodSnTx9hwKii+HRygZiYGLK1tRWuSNFHLeK5U6Eqqvnz55Oamhr9/vvvwrLcQlyeunUEBweTiYkJWVpaygw4zi3ExZ4JKLcAnzp1KhERTZs2TaY7R9++fWn58uUiJsxflSpVKDk5maKjo6l69eq0bt06IiK5vddAfn64IpxyCnFra2uZbhyzZs2Sqz/Oj31aiCuCU6dOUbNmzcSOIUyjlOvIkSPCFErTpk0jVVVV4Y/z1q1bctOfbd++fTIj+3ML8e7duytkAZ6YmEi+vr7C1HO5hbiJiYlcv5ePPz+5hfirV6+EsSNiz5o0evRoYWYC+qRFPDMzk9q0aSP6DwXK+dvKLWyTk5Np7NixVK5cORo2bBg9e/aMGjVqJHd3l5RIJOTq6vrZXU/nz58vtAAqiqSkJKpdu7ZM6/6cOXNo6NCh9P79e+rUqROVL1+eDh06RNHR0fTs2TNR8/5XR44cIU9PT3J1dRWmwQ0JCaG0tDS5+pylpqZSy5Ytyc7OTrgDae5ViWvXronaIJRbgOvq6go/4sePH08zZswQ1unTp4/wg19ezJw5k7y8vKh58+bCspiYGHJxcVGIK/Of+iGLcMopxF1cXCguLo4iIiKoYsWKMrefljfyWogHBATk2XdeKpVS27ZtRS1SkpKSqEqVKjKDF2fOnEkBAQG0ceNGsre3p927d5O+vr5c/dtfvHgxz648s2fPVsgC/NWrV2Rra0uenp5kbGwsDHb+uEVc7GI2P23btqXRo0cLjzdv3kzq6upyUYATEQ0YMID8/f1lluUW4s7OznI3CHP58uXC9KWpqam0efNmqlGjBhkbG9OGDRvEjid4+fIl9erViwIDA8nKykooxB89ekSVKlWSm64C3+LT88a+ffvI1taWGjRoQAEBAfTHH3/Q7NmzRctXGOLi4mjy5MnCjVe8vb2pRo0atH79ejIyMpKLO8PmSkpKEgakBwcHk52dHXl7e9Mvv/xCs2bNEjXbxy3g3t7eZGNjQ+/evaPQ0FCytLSkGTNm0PDhw8nGxkZ4D/Jg79695ObmRidPnqQaNWrItNLLw/n6e/xQRfiNGzdo06ZNQr+lGTNmkIaGBjVs2JBWrFghdjxBfjOyBAQEyNUgzOfPn5OxsbFcX96JjIz8rBBPS0sjU1NTCgoKonbt2tHBgwflpgWciKhatWoyrZufzpCjSF69ekWWlpb0119/ERHR6tWraerUqXTr1i1hzttevXqJfifa/GRkZFCrVq1kCvEzZ86IekK/efOmUCx17tyZ7t+//9k6YWFhNHLkSNEL8I+LnsTExHzvKpnfzXnE8OHDBxowYIDQJePTQlxRv8wp51zi6ekpHO/cAYy+vr5kYWEhFzdW+V4ZGRlUu3btz+5Wu2fPHmrXrp1ctYCvW7eODA0NydHRUWhZDgsLo+7du9PChQtF7xL57NkzmSuxnxbi48ePp2nTpuU7aYAY5s6dSzVq1KBbt24R5QwmrVWrltx2lymoH6YInzt3LllbW9OkSZOobNmywrR+M2bMELojyINJkyaRi4uL6F+eBdG6dWtav349vXjxgtq1a0fVqlWTm+kHP/ZpIZ6RkUHW1tbk4uJCzZs3l7vBrWXLlhUu/2VnZ1OPHj0+u6GGopg/fz7Z2dlRQkICpaSkUM2aNYVpKzt16kSUUxjEx8eLHTVfeRXiYoqLiyMXFxeaNm0aNWvWjA4cOEDXr1+ny5cv0/nz5+n06dNyMaNFeno6VapUifbv308TJ06krl27EuW0Vsnz7d27dOlCenp6MmMCAgMDqWnTpqIXR4Xh0qVLZG1tLRTiT548ITMzM7n6IfQ9li9frhB3K12yZAnZ29tTcHAw9e7dm/T09GT6rsurjwtxeRQTE0PVqlWTuYlWfHy8XNy9+L9QyCJ88ODB9PjxY+Hxpk2bqHLlyhQeHk6dOnWihg0bkqGhoVzNr005lwcdHR0pNjaW7t69K0wBJK/69etHHh4e5OXlRS9evCAPDw86c+aM2LHy9GkhHhYWRufPnxcuW8qT+fPnU926dcnHx4caNmxIzZs3F332jf9iwoQJVKtWLfLw8KC+fftSdnY2vXnzhtTV1cWOVmAZGRk0f/58ubkSkVuI6+npUevWral9+/bUuXNn6t69O40bN05ufsSHhoaSnp4e2dnZyVy2zi3E5fHHV2pqKnl6etK4cePEjlJoQkJCqFWrVsJ55NNC/NMpGRXR4MGDZbo0Xbp0SS7GQ3xq165dFBYWRhMnTiQPDw86duwY2djYyO1EBh/z9vYmDw8PsWPQpk2bhLuJUs4A9djYWIqJiZEZhPkjUMgi3N/fn6ysrIRCPD4+nqKiomjevHnk5eVFQUFB1Lhx489uaSu2oUOH0oQJE+j333+nrl27UocOHWjp0qVix5Lx8uVLGjJkCK1fv56ysrKEeVb//PNPql69utx8+eclr64p8mrHjh3Ut29fWrdundy11H+PCRMmkL6+vjBIavjw4dS9e3exYym0j1vE5VVSUhL16NGDHBwchGkfY2Nj6cOHD3I1SOr9+/c0YcIEWrFiBWVmZgqFuDwf24JKTEykChUqyMyCQjlFau3atRW+dT88PJyysrLowoULZGdnR2fPnqXVq1eToaGhMG++PNi5c6dwU7jk5GQyNjamkJAQqlmzpuiDML+FPDQMBgQEUJUqVSgoKIjOnz9PRkZGQjcURR6EmReFLMIpj0Kccvra7tu3j1xcXOTqV+ebN28oPDycQkJCaMSIEXTixAmKiYkhe3t7uRqImZqaShYWFjRz5kzq1KkT9ezZkyQSCW3fvp0cHBwUYrBSZGQkDR06VGFOeD+S3Bbx0aNHU7Vq1RT+BifyQJ4L8Xnz5gn91UNDQ8nBwYHmzZtHVatWlavp/R48eECmpqY0e/ZsatWqFdWrV48SExMpNTWVBg4cqPCf08WLF1Pv3r1lluVe0ZHnRpOvSUpKombNmpGtrS3Z29vT2bNn6ciRI9SoUSPq2LGj3HWvuX37Nrm7uxPldDN0cXEhAwMDGjt2rNjRFFJAQAA5OjqSkZHRZ3fWVeRxG59SiCI8v5bCTwvxPXv2UNWqVWnRokXFnDB/S5cuJQMDAzI3N6eNGzcS5bQUVatWTa6+WAMDA2nUqFHCTCi5N9Xo0aMHJSQkyNWAnlu3blHnzp1p8ODBctE3lv3fhAkTqFq1anI1ol7RxcXF0aRJk+Sqa9XixYupatWqMgO3IiIi6LfffpOrK1FZWVnk4OBABw8epBMnTpCJiQl17NiR6tSpI8xjrugmTpxIc+fOFR77+vqSl5eXqJkKw/Dhw2nw4MH07NkzMjc3p23btsl940qtWrWEHwcZGRly9b0pr2JjY/P8vshtAXdycpLpmvKjUYgifOLEifnObpJXi7i8CAoKosqVK1NERATFx8eTm5sbrV69ml68eEHz5s0TO56MpKQkqlu3LvXp00dYJpVKac6cOXI1QvrBgwdkbGxMe/bsoVatWpGnp6fYkdgn5GkmGlb4IiMjSV9fX2F+ACclJVF0dDQZGxvT3bt3qWfPnrRgwQKFyZ+X9PR0unDhAgUFBVFQUBCVLVuWFi1aRCNHjiRzc3O5ayX+FnFxcZSWlkYVK1akW7duCQX4pUuXqH79+nJViO/du5fq1atHvr6+lJWVRX///bfMzW7Y1/n6+pKLi4tMIe7v7y+0gH/cNeVHpBBFeFJSEtWrV++rhbg8zdwRFRVFNjY21K1bN2FZQkICubm50dWrV0XN9qnk5GSijwpxeZom8VP9+vWj7du30/z588nBwYHCwsJozZo1Cn3ZlTFFcvfuXXJxcREex8XFkZeXl1zNqhAUFET9+/enAQMG0KtXr+jSpUvk5uZGY8aMIRcXF7kq5L5VVFQUOTk5UfPmzalixYq0bNkyevnyJY0ZM4amTZtGERERYkf8Txo3bkwbN26kPn36kI6ODm3bto2OHTtGRkZGctUHfNu2bdStWze6ffs2/frrr2RtbU1TpkwhY2Nj4TuVFcyaNWtkCvHQ0FC6fv268HxAQABt3bpVxIRFRyGKcCpAIS6Pv5JevHhB5cuXp3PnzgnLPp4WS2yPHz+mihUrkq2tLXXv3p1SUlKEQjy364yY7t27J9xGPCAggKRSKQ0aNIhatWolTIHWt29fatiwocLd4IYxRRMTE0OhoaGUmZlJzs7ONGvWLDp48CA5Ojp+NnezmNLS0sjS0pLmzJlD69evp/Lly9Pr169p8uTJNGTIEOE+EopqwIABNGPGDLp+/ToZGRnR2bNnhQHRiiw+Pp5WrVpFdevWJcr5vDVp0oTKly9Pzs7OFBAQIHZEwZkzZ6hhw4YUHBwsLIuOjqZFixbRuHHjFPpHnlg+LcR/FgpThG/ZsoW8vLxIRUVFrm6886k9e/ZQz549affu3UQ5hbiNjY1MIS4PHjx4QCYmJuTr60uHDh0iHR0dcnd3FwpxeejLduzYMbK3t6d169aRiYkJvX79moKCgsjAwICGDRtG9evXp1atWnH3B8aK2LJly8jY2JiqV69Offv2pbCwMBo6dCi1bNlSrubpffHiBfXr148GDhwoLFu8eLFc/Uj4Xu/evaN3795RzZo1af/+/UIB7uvrSw4ODnIzveb3SEhIoL1795Knpyc1aNBA5jl5e19SqZS6dOlCRkZGfAW2kP2MhbhCFOGnT58ma2trCg4OpoiICHJ2dpbLQnzixInk5OREhw8fJgMDA+EugS9evKCFCxeKHU/G9evX6dChQ3T9+nWhr6S9vT3169dP7GgyJkyYQADo0KFDwrIPHz7QunXr6NSpU9ziwFgRu3XrFtna2tL79++pXbt21K5dO7m98pSenk7Nmzen5s2bC8sGDBggV4Pgv5ebmxtt3ryZZs+eTcrKynTgwAFavnz5D3EjnqFDh9Lo0aOFqSOnTp0qdqQ8ZWdnU0ZGBmVnZ1Pnzp2pf//+/B30H+3fv5/mzp0r3H33ZyvElYiIIOemT58OFRUVzJgxAwCwaNEirF69Gtu3b4e7u7vY8QAAN2/exPDhw3HmzBkMGjQIysrKCAwMRLNmzbBs2TKx48lISkqCtrY2AKBJkyYYPnw4AgICIJFIMGnSJGhqaoqW7eHDh3j+/Dm6dOmC06dPIzExEW/fvsXmzZtx9uxZWFpa4u+//0bv3r2hpKQkWk7GfhbLli1DZmYmbt++DQDYsGEDWrRogVWrVqFWrVpixxMQEZSUlJCRkYH27dsjNTUVGhoaiIqKwtmzZ6Gnpyd2xO8SFxeHyZMn4/Xr1zh79iyys7MxY8YMHDp0CFWqVMGSJUtgbm4udszv1rlzZwQFBeH27dtQVVVFWloaWrdujV9++QXTpk0TO57Ax8cHEydOhJaWFgYNGoRx48ahe/fu0NXVxfr16/n76BtJpVIMGDAAT548Qbt27bB48WIcP34cbm5uWLt2LXR0dNCzZ0+xYxY9sX8FFMSVK1fI0dGRwsPDKTw8nBwdHenhw4dix/pMZmYmrVu3jho1akShoaHUokUL2rlzp9ixBIGBgVSxYkWys7Ojxo0bU1RUFA0dOpSsra2pSpUqcjELyocPH8jR0ZFGjRpFJiYmwjzER44cIVtbW2rUqBF5enrKVd96xn5EuS18N2/eJA0NDWrTpg0FBQVRtWrV5Kp7x7Nnz8jW1pbKlCkjdAPMbREfOnSo2PEKxdixY8nOzk6h76ybn2vXrpGOjo5wMxbKuWeFPPUBv337tjC2oHfv3uTl5SW0iG/atIlbw7/DwoULydPTk2JiYqhOnTrUrVs30tHRkRmQ+TOQ2yJ8w4YNZGVlRdWrV6crV67Qpk2byMDAgDQ0NGTmRBXbgQMHqHfv3rRu3TqSSqXC3KaOjo5ydWtViURC9vb25OvrS/v27SNTU1MKDAwkqVRKjx8/lqu+bbt27SIANGvWLJnlDx8+pC1btshdH0HGfjRLly4lDQ0Nqlu3Lr19+5Y2btxI1tbWVL58eVqzZo3Y8WR069aNfHx86N27d+Ts7EybNm0i+qgQV9Tb08fHx5O3tzdt2bKFMjIyaOzYsdSiRYsf4kYl2dnZdODAAdq1axelpaXRtWvXyMrKSi4b14iIZs+eTd7e3kIBHhUVRU2bNqXAwECxoymM3bt3U0ZGBkkkEvL396fk5GRKTU2lYcOGUZ8+feju3bvUsWNHubrPQHGQyyL82LFj5ODgQC9fvqTmzZtT586diXIGaMjTCWjdunVUqVIlOnjwIJmYmNCKFSsoPDycRo4cKfpgpdDQUJkZY16+fEn169cXCvBHjx7RggUL5OoHTa6YmBg6c+YMOTo60s6dO0kikdCUKVMUel5fxhRFcHAw2dvbU0hICB05coQqVKhAb968ETvWZ16/fk1//vkn/fLLL8Ky6OhocnZ2lmkRnzJlisK1IKenp5ODgwN17dqVevXqRW5ubpSenk5jx46VuZeDIsrMzCQPDw+qV68etWrViqpVq0ZJSUl07do1cnJykqvv+AMHDlB6ejodPnyY9PX1ycvLi0JDQ6l+/fo0cOBAbgH/Brk/Inv16kVNmjQRjp29vT1t3bqVrKys6OLFi2LHLHZyWYR369aNjh8/Th07dqTWrVtTZGQk9erVi+Lj40XN9ekfXLly5SgoKEgYrBQZGUlHjhwRLd/HnJ2dydLSUijE09LSqFy5cmRqakoPHjygGTNmyN2t6K9du0aNGjWiJk2a0N27d+nDhw9UtWpVqlixIjVt2pRnQWGsiF25coVsbW1lBpKfPXuWKlSoIBfd1XIlJSWRubk5DR06lCpVqkTLli0TnouOjlboH+whISE0d+5c6t+/v7Csf//+tHbtWqKcLnuKbNOmTTIDZ3/77Tfh5nXyNODX29ubbG1thc/SuHHjyNbWlszMzGj27NlcgH8jqVRKlSpVotKlS8vUckePHqUmTZrQ3r17Rc0nFmWx+6Tv27cPFy9eBAD89ddfSExMRLly5TBq1ChkZmZi3bp1aNmyJQwMDFC6dGnRcvr4+KBx48ZIS0sTlqmoqGDMmDEAgPXr16N58+a4du2aaBk/5uHhgbp168LT0xOvX7+Guro6tmzZglKlSqFdu3YICAiAv78/TExMxI4KAHj27Bk6dOiA0aNHo2zZshg0aBCMjY1x48YNbNq0CcePHxd1wChjP4N69eph0KBB8PX1RVJSEgDAy8sLR44cgYGBgdjxAACBgYGYPHkyunXrhjVr1uDatWvYtWsX1qxZAwAwMDCAqamp2DG/W3Z2NjZu3ChzvEuWLImYmBgAkJtz9veKjIxEpUqVhMfGxsbCe9PQ0BAx2f/dv38fixYtwsWLFxEaGooRI0agW7duePDgAV6/fo1p06bxQMxvpKSkhMmTJ6Nv377o0aMHMjMzERoaivT0dJw+fRqdOnUSO6I4xP4V8PTpU7K2tqZff/2VKleuTJGRkZSQkEA1a9YkLy8vMjU1lYsuE8OGDSMHBweZG8OsWbOGtLS0aNmyZWRnZydX0yqFhIRQ/fr1ae/evVS+fHmhRVwqlVJiYqLY8T4zbtw4Wrt2rcydMGfNmiVXrW+M/ajWr19PjRs3Jh8fHyIiWrRoEdWpU0cuzxXR0dFUpUoVGjFihLAsLi6OunbtKlctqf/F69evycbGhqZNm0bjxo0jS0tLhW4Bj4uLo82bNxPldJU0NzenVatWkbe3NxkZGdGLFy/EjijD19eXPDw8aOTIkdSxY0dasGABtW3bVuxYCiV3ykHKGec1dOhQOnr0KBERjR8/nlxdXcnCwoJWr14tYkrxiV6EExFNmTKFAMhcjsjOzqb79+9TVFSUqNlyvX79Wvij/LgQv3DhAs2bN0/0Eb2hoaHUqVMnOnbsmHCZrEePHuTv7/9ZIS5PXr16RURE8+bNozp16pCDgwOFhoZSnz59qGHDhtwFhbEi5ufnRxUrVqSjR4+Sl5eXMKf2okWL5GoQZkZGBj169IhSU1OFvt+5gzB/RK9fvyYLCwsaP348JSQkiB3nu6WlpZGrq6vMjDqvXr2iX3/9lXr27ClXgxvv3btHZ86coaysLFq/fj2dPXuWUlJSqG7durR+/Xqx4ymMOXPmUM2aNUkqldLEiRPJxcWFli1bJnOPlzNnztDNmzfFjio6uSjC3759S5cvXyZra2s6f/48xcfH02+//SZ6q8aNGzdkMnTu3Jlu3LjxWSEuD3x9fUlTU5Pat29PNWvWpK1bt9KdO3eoZcuWRES0d+9eatasmdgxP9OwYUNasGABJSQkUOXKlal9+/bk6upK7du35wKcsSLm7e1NzZs3FwZE5c4oIm83t3n27BnZ2NiQnZ0dmZub09WrVz8bhPkjev36Ndna2tKJEyfEjvLdpk+fTt27dxc7xldt27aNTE1NqUGDBtSiRQtKS0uj1NRUatiwoUz/fPZlc+bMoUqVKlFERAQlJCSQtrY2xcXFERHR+/fvSVdXl/vTf0TUIvzo0aP022+/0fHjx4lyTrR2dnZkZmZGEyZMEDMa+fv7k6qqKjk6OtKsWbMoJiaG7ty5Q+3btyciEgpxsaf2Cw0NpefPnxMR0ebNm8ne3p4ePHhAM2fOpGrVqpGOjg69ffuWSA5v/0s5A6zq1q1LCxYsoLS0NDp27BjduHFD7FiM/RTCwsLIzs6OvL29hWXp6elC1wF54erqKmS6fv06mZubU3Z2tsIPwiyIp0+fUps2bUgikYgd5bs0a9aMTp48KTy+dOmSzEBaeeDn50ctW7ak4OBgopxC0svLixISEmj16tVcNBbQnDlzSEVFhYYNG0aU8/2uq6srDMR8/PgxGRoaipxSvhRLEZ5X8Tdr1iyqUKEC7dq1i/T19YU5oRMTE+np06fFEStfiYmJJJFIqG/fvtSsWTPauHEj1axZk0aMGEEVK1YU+q8dO3ZM1JxERH379pW5pJNbiL9//55SU1NlTn7y4sSJE3T69GnhcUJCAhkaGtKCBQtEzcXYz+LBgwe0Z88eio6OprCwMKpYsSLt2bNH7Fh5kkgkVLJkSZlpBvX09BS6jzTl9JOeMWMGjRs3jkJDQ/NcZ+rUqdS3b99iz1aYVq1aRZ6enhQUFETbtm0jIyMjunTpktixBFKplNq2bUvly5eX+aGTOzc4K5jcFvDnz5+Ti4uLMD//vHnzqFq1ajR16lSytLSk7du3ix1VrhRLET5lyhSaMWOG8PjKlStUuXJlioiIoK5du1KrVq3I2tpaZh2xnD59WpgKKrcQb926NaWnp9PRo0epadOm9PjxY7FjCtq2bUtPnjyRWfZxIS6PXr16RTY2NkIhnpmZSc2bN6exY8fKZWs9Yz+SRYsWkbm5ObVt25YsLS0pMDBQKMRz71ArD549eybcGbdTp040evRo+ueff2jixIlUr149seP9J8nJyVSxYkUaM2YM/f7772RhYfHZXOZTp04VLusrMqlUSrNnzyZbW1tq2LAhPXjwQOxIn8nMzKS2bdvS8OHDxY6isLy9vYXPalxcnEwhfurUKZoxYwZf5c5DsRThKSkp5OHhIVNkp6am0oYNG8jd3Z3ev39PLVu2pA0bNhRHnC/6888/aevWrcLjjwtxsbue5AoNDRUGszRq1CjPVpTNmzdT69atRUiXv7i4OLp+/TolJyfTq1evyNbWlubOnUutW7emIUOGiB2PsR/e27dvycjIiCIjI4mIaOfOneTl5UWUc4dGefH48WMyMTERWkwTEhKod+/eZGRkRB06dFD4wnT9+vU0YMAAun79OhkZGdHZs2eFQYCkQAV4TEyM2BG+286dO6l8+fJkbW1N+/btEwrx33//XexoP4RPC3GWt2KZJ1xTUxPHjx+Hv78/Zs6cCeTMBxoQEIBq1aqhVatWaNKkCQYNGlQccfIkkUgAAImJidDW1haWKysr46+//oKBgQE6duworCemwMBANGnSBIGBgZ/lzdWvXz/s27dPlHx5OX/+PBwcHDB8+HA4OTkhNTUVV65cQVRUFFxcXLBs2TKxIzL2w/vw4QMsLCxgaGgIALCyssKHDx8AQNT7MHwsOzsbHTp0wPLly+Hu7g4A0NHRwbZt2xAREYH9+/fDyMhI7JjfJTMzEwCQlpaG5ORktG3bFjt27EBMTAz69OmDsLAw+Pn54eDBg7h48aLcv88ePXoI87MnJyejVatW0NfXx/Tp00FEYsfLl7+/PyZPnoy9e/fiwIEDmDBhAu7du4e9e/fC0dFRrrMrCl1dXfj5+eHixYtyc/8UuVScFf+nLeLv3r2j/v37019//VWcMT5z//59qlWrFsXFxdGwYcPo7Nmzn60jkUho//79ouTLy5EjR6hs2bJkaGhI5ubmZGZmRiYmJmRiYkJubm5yM7Uj5YwJMDY2pqtXrxLlZK9WrZrYsRj7aezatYsyMzMpKyuLatasSZMmTaLjx4+To6Oj3E29dv/+fapSpYrMsr179wpdUxRZmzZthL74ZcuWpR49etCYMWOofPnyMt0Kk5KSRM1ZUHFxcVSjRg1avXo1LVq0iAYOHEiRkZHUo0cPGjRokNwOaBw5ciQtXrxYeDx9+nSaMmWKqJl+VPLSg0BeKVEx/OQLCAjA/fv34enpCSMjI7Rs2RK//PKL0CouD6ZOnYqzZ8/C1NQU5ubmMDc3R3Z2NrKyspCdnY0ePXrA0dFR7Jgyjh49isGDB+PkyZOoVq2a2HHyFRYWhho1aggtbnFxcShbtixSUlL4rmOMFbG5c+di//79uHjxIvT09BAXF4dp06bh5cuX6N27N3r27Cl2RBmxsbFwcnLC5cuXYWtri7lz52LHjh24fPmywt4t8sOHD/j1118hkUjw6NEjrFmzBg0aNMDGjRuhoaGBvn37Ql9fX+yY3yU+Ph5eXl5ISkrC5cuXYWxsDKlUij59+kBfXx8rVqwQO6IgNTUVmpqa2LZtG3bu3Injx48jLS0NDRo0wPTp09GuXTuxI7KfTVFX+d7e3mRhYUG9e/emsmXL0qVLl4QW8Y9nyJAHU6ZMIVVVVZo2bRp5e3vT2rVraePGjXLVAv6p3BZxeRgseufOHZnHCQkJFB4eTkRE9evXp5kzZ9Lz58+pY8eONGDAAJFSMvbzuHv3LllYWMjVlbGCOHToEBkZGZGhoSE1aNBA4ach7Ny5s9DS+v79ezIyMpK5OZ2iym3pzu3/u3DhQuE5iUTy2aQBYlqyZIlw3wypVEqDBw8mExMT0tfXp/Hjx4sdj/2kirQIj42NJT09PQoLCyPKmR+0cuXKRDlz0cqjKVOmkKurqzC5vCI4cuQINWrUSNQMSUlJVKVKFdqyZQsREZ0/f5709fXJ2NiYpk2bRlFRUdS9e3eysbGhUaNG/RCXlhmTdytXrvzs9u6TJ0+m7OxsUXMlJCTQwoULydvbO9/L1RkZGcKPeEVXo0YNmUaKJk2akKOjIz18+FDUXP9FXFwc1a1bV5hS+OOuKfLm6NGjZG1tLdQiuUJDQxV+qkum2Ip0YGZcXBy0tbVhamoKADA2NkZMTAwAoGTJkkX50t9t7ty5aNy4MRo3bozU1FSx4xRI69atcebMGdFePzQ0FKVKlYKfnx9WrFgBHx8fLFmyBMeOHUNISAiePXuGP//8Ezt37kRQUBCWL18OdXV10fIy9rP45ZdfcPz4cTx79gxPnz5Fw4YNkZmZCRUVFdEyvX//HrVr10ZAQAD279+PsWPH5rleiRIlYGxsXOz5ikLfvn0xbtw4PH36FCtXrkR8fDxGjBiBjRs3ih3tu0ilUnTs2BG1atVCxYoVgZyBeOfOncP+/fuFrofyYuXKlVi5ciXMzMwAACkpKQgPD4e5ubnCdnFiP4YiKcJnzZqF+fPnw9raGs7OzujXrx/279+PLl265HvClSdz587F7NmzoampKXaUAhPrSzUsLAzu7u64ffs2DA0NhUI8OjoaderUQcmSJbF79268e/cO69evFyUjYz8rZ2dnzJs3Dy1atECzZs3Qr18/LF68WLQ8YWFh8PDwwMCBA7Fnzx4sXboUr169kotZpwrThw8f0L59ezg4OGDNmjUYOnQo2rZti06dOuHEiRPYsWMHLl26hDJlyogd9bv4+/sjLi4OS5YsEZYlJiZCV1cXFy9eFBre5EWpUqUQHx8P5ORs0aIFfx8x+VDYTesrV64kJycnioyMpKysLEpOTqaZM2dSmzZt6O+//y7sl2MiSk5OJiKigIAAsrKyolu3bhERUWRkJDk5OcnMepOVlUWpqamiZWXsR5OWlqZwtzKPiYmhatWq0YwZMygjI4OaNGlCxsbGZGZmRg0bNqRVq1YpfBeUkJAQsra2pnnz5tGpU6dISUnps7mSp06dSk5OTsI5VJ5lZmbStWvXiHK6nERERNDZs2fJ3d1dWOfixYtkYWFBCQkJIibNX2BgIFlYWFDnzp3J0tKSRo0aJbczt7Cfy38uwo8ePUqxsbHCYz09PQoJCaF169ZRzZo1ycHBQW77f7Pvd+fOHerdu7fwOK9C/OM+4oyxwrVkyRL69ddfhUJ8+fLlZGlpSb/++qtcTnH3/v17io2NFQpxe3t76tixI6Wnp5NEIiF/f3+aMGGCQvfRzcjIIB8fH1q1ahUFBgaSkZERHT58mEqVKkWzZ88myhkUOHXqVLm/EU+uf/75hypUqEBbt26lGjVq0NKlSyk7O5saNGhAnTt3pmHDhpGxsbFc3Yo+L1FRUbR37165uissY/95isLZs2fjyJEj8PPzg56eHpo0aYLw8HB07twZ/fv3R+XKlREcHIxSpUoVXvM9kwvZ2dlQVVWFVCqFsrIy7t27h44dO8LX1xc1a9ZEVFQUZs6cidWrV/NUhIwVstxp4JSVlfHHH3+gU6dO2LNnD06ePInjx4/j1KlTed7Iq7hFRESgV69eiIuLw5AhQ9CvXz/ExsbC09MTLVu2xOzZs8WOWChSUlJQs2ZNHD16FDY2NvD09ES/fv2QkJCAf/75B/369YOVlZXYMb/Lw4cPUa1aNbRp0waHDh0CAGRlZWH79u2Ii4tDly5dYG5uLnZMAMCLFy/w+PFjuLu7CzelYkxuFUYlP2PGDKpevbrQIi6RSCg+Pp5q1qwp/PpnP5asrCyinNYtV1dXYQq0T1vEGWNFRyKRUK9evah69erk4+MjLPf29qa6deuKPguRVCqlunXr0oQJEz67/P9x1xRFFxISQosXL5a55bmHhwe1adOGzM3NKTQ0VNR8/1VERATNnDmTKlSoQIcOHSIiomvXrslda/5ff/1FJiYm1Lp1azI3N6e7d++KHYmxLyq0PuGfFuL9+/enUaNGFdbumZx4+vQpNWzYkKpWrUr37t0jIqLNmzdT1apVZQrxfv36iZyUsZ9DbiHetm1bmT7iV65cETUXEdHt27epXLlyn/Vdl0qlFBERQTExMdSlSxe57D7zLa5cuUI6Ojq0du1aYVlUVBRt376dIiMjRc32X2RnZ9Pp06eFc31ISAg5ODjQ4MGDydjYWOgrXtyysrJoxYoVMlNtxsbGkr6+Pr19+5aIiI4dO0Y1a9YUJR9jBVWoAzM/LsQVYcAJ+zbJyclUrlw52rp162fPfVqIM8aKlo+PD7Vr147mz59P6enp1KtXL5k+4vLg+PHjeRZCr1+/pp49e4qSqbDljnm6dOkSlStXTq5uUPNfxMfHU4MGDcjDw4Pq1KlDY8eOJalUSlFRUbRgwQJ69uyZaNmkUimtX79eZo75p0+fkq2trfD4+fPnVLZsWZESMlYwhTpF4cyZM9GqVSts3boVWlpahblrJgdyp9T69ddfIZVKsXz5cri5uaFmzZpo1qwZRowYgZkzZ4odk7Ef3p49e7B48WJ069YNb968Qc+ePbF161ZIpVLs379f1GwZGRnC3ORubm548eIFrly5IrPOokWL4OjoKFrGwvDhwwc0aNAAdnZ2aNCgAWxsbLBt2za0atUKT58+FTvefyKRSNCsWTM4Oztj06ZNeP/+Pfz8/DB8+HAYGBhgwoQJcHBwEC2fkpISBg8eDDU1NRw7dgwSiQQODg4wNzfH2LFjce7cOfTu3RtDhw4VLSNjBfGfB2ayn0doaCiqVauGsWPH4vbt2+jXrx9atWqF3r17w9LSEnPnzgUR8SBMxorQkiVLcObMGSxatAjVqlUDANjb2+PkyZOwtraGsnKR3oPti96/f4+WLVtCTU0NISEh8PHxQXx8PIYNG4aZM2fC0dER27dvx71793D79m2FuhfDpzw9PdGoUSO4u7ujbdu22LNnDzw8PODv748yZcqgUqVKYkf8JpcvX4aSkhJ++eUXAMDNmzfh4uICZ2dnjBw5EmFhYbh37x4WLVok3KBHDBKJBFlZWcIN3wYOHIjk5GTs2LEDqampmDp1Kh4+fIjOnTtzEc7kn9hN8UyxvHr1inx9fYX5YLOzs6lWrVp5dlFhjBW+gIAA0tPTEwbIRUREkL6+vuiD/0JDQ8nW1paWLFlCREQbNmygdu3aEeXMI92iRQuqUaMGjRs3juLj40XN+l+lpKSQlZUVXbt2jYyMjOjs2bPk6+tLI0aMEDvaN8vMzKTu3buTvb092dnZ0YIFC4Tn/P396ZdffqETJ06QhYWF6NMNnz59mkxMTEhDQ0O474hUKqUBAwZQ165dZfqIM6YIuAhn30UikdCDBw+oadOm1LJlS7nqh8rYjygpKUnmBllmZmbUo0cPsrGxoUWLFokdj/z8/MjAwIDu3btHGRkZ5O7uTt7e3mLHKlTv3r2j06dPExFRpUqVhALcx8eHzMzMFK4/eGZmJrVr147atWtH6enpFBwcTO7u7nT//n1KTk6m5ORkqlevHjk4OIg2CDPXwYMHycTEhK5evUpv3ryR6f/NhThTVFyEs+9y/fp1ateuHW3atIkLcMaK2OLFi8nQ0JAcHBxo1apVRDmFeLly5eRiFpRcp06dIjMzM2rUqBF17tz5h7sr4YMHD6h27dpEOTO/VKhQgZycnMjV1ZVevXoldrxvdvPmTdLQ0KA7d+4QEdH06dPJ1NSUmjZtSuXLl6e4uDixIxIR0Zs3b0hNTY1OnjxJRET3798nQ0NDsrOzo6ZNm1JKSgpJpVLavn37D/eZYz82LsIZY0yOTZkyhapWrUrv3r2jdu3aka6uLs2dO5dITuflP3XqFGlqatLt27fFjlIk6tevL0zZl52drdBTEFLODDZmZmY0atQosre3F7o1VapUifz8/MSOJ/D29qYKFSrQxYsXydzcnNatW0dZWVlUu3ZtmTnyGVMk4o3gYYwx9kUvX75EuXLlcP78ecybNw8SiQSrVq3C5s2bcf78eVSvXh379+9HUFCQ2FEFTZs2xYEDB9C2bVvcv39f7Dj/2bt37zB79my8f/8eADBs2DCsW7cOAKCioqLwd2Vs0aIFNm7ciLVr12LFihUwNzfH+fPnERcXh1q1aokdT/D7779j2LBh8PDwwOjRo/Hbb78hLS0N4eHhsLe3FzseY99H7F8BjDHGPrdr1y5ydXUlqVRK//zzD5UrV45CQ0PJycmJAgMDxY73VadOnaKGDRuKHeM/i4mJoUWLFpG9vT117NiR/Pz8yM7OTuEHl34qt0V83bp1ZGRkRFevXhU7Up5yW8RfvnxJ7u7uNHLkSLEjMfbdeIpCxhiTMytXrsSpU6ewYsUKODg4ICUlBS4uLoiOjsaIESMwffp0sSMWiFQqFXXKxP8iLS0Nly9fRoUKFWBlZQWpVIrTp09jzZo1ePToEa5evYpy5cqJHbNQnThxAr1798bBgwfh7u4udpx8rVq1CmPGjEHfvn2xYcMGnhaXKSwuwhljTGSZmZl48OABXFxcoKKighMnTqB9+/a4evUqXF1dAQCpqalITEyEiYmJ2HF/eO/evUPz5s1hY2OD4OBgDB8+HIMGDRKez8rKgpqamqgZi0piYiJ0dHTEjvFVFy5cgIeHBxfgTKEpZhMFY4z9II4fPw5ra2t4e3sjMDAQyOmne/DgQfTo0QPBwcEAAE1NTS7Ai0FcXBw8PDwwaNAgTJ48GREREVi6dCnWrFkjrPOjFuAAFKIAB4CGDRtyAc4UHhfhjDEmkqtXr6Jv3744duwYduzYAQBwd3dHZGQkWrRogeXLl6NJkyaIiYkRO+pPQ09PD3///Te6du2KDh064O+//0bt2rXh5+eH+Ph4seMxxn4g3B2FMcZE0qRJE7Rv3x6DBw9GUFAQ6tevDy8vL9y7dw8XLlyAkZERnj59qnC3QP8RbNq0CXfu3EHNmjWxYcMG3LlzR+xIjLEfDBfhjDEmEltbW2zfvh1ubm7IysrCnTt3UKdOHQwdOhS2trYYM2aM2BF/Wm/fvkWTJk2gra2NXbt28TR4jLFCx0U4Y4yJpFevXtDW1sbatWuFZTExMahbty6OHj3KhR9jjP3AVMUOwBhjP6s///wTtWrVgoaGBoYOHYo3b95g+PDhGDBgABfgcuLt27coX7682DEYYz8gHpjJGGMisbCwwLVr1xAUFISqVavi999/x6RJkzBu3Dixo/3w/vnnH7Rq1Qr16tXDzZs381xn2rRp6NKlC/iCMWOsKHB3FMYYYz+djh07wtHREe7u7hg6dChWr14NT09P4flp06bh4MGDuHjxIoyMjETNyhj7MXERzhhj7KchkUjQrFkzKCsr4/Tp0wCAN2/eoFmzZli7di0aNWrEBThjrFhwEc4YY+yncu7cOXTr1g3Xrl1DhQoVgJxCPD09HaVLl0bnzp1x6NAhLsAZY0WKi3DGGGM/vPT0dFy5cgUODg6wsLDAuXPnMGTIEJw6dQp2dnZix2OM/YR4YCZjjLEf2rt37+Dq6gpvb280b94c27Ztg5eXF9atW4c+ffrwwEvGmCi4JZwxxtgPKyYmBjVr1sTIkSNRs2ZNtGnTBjo6OpgwYQIGDBiAzMxMlChRQuyYjLGfEBfhjDHGfmiXL1+Gg4MDXFxcsHnzZuzatQuxsbHYuXMndHR0xI7HGPtJ8c16GGOM/XAyMjJw/fp1WFpawt3dHevXr0fr1q3x/v17PH/+HLdu3RI7ImPsJ8ct4Ywxxn4o0dHR8PDwgKWlJYKDgzFw4EC0atUKjRs3hq6uLnx9ffmOpIwx0XERzhhj7IcycOBAlC1bFk2aNEHbtm2xY8cOuLq6QldXV+xojDEm4NlRGGOM/VAePXqEypUrCwV4bGws3NzckJ2dLXY0xhgTcJ9wxhhjP5SWLVuic+fO2LdvH548eYLFixfj3LlzUFXlrzzGmPzgMxJjjDGF9uHDB4wfPx6lSpXC3LlzMWnSJKSnp2Pq1KmoUqUKbt26BXNzc7FjMsaYDO4TzhhjTKE1a9YMzs7O0NXVxd9//w0/Pz+YmpqKHYsxxr6IW8IZY4wppLS0NLx48QLq6uqYP38+AKBcuXLw9PTkQpwxJve4CGeMMaZwEhISULNmTaioqCA8PBzv3r2DpaUlunbtClVVVcTFxXERzhiTa9wdhTHGmEJ59+4d9u/fj/DwcCxatAgHDhzAlClTcO7cOVhYWIgdjzHGCoRbwhljjCmUe/fuYerUqdi9ezcAoEOHDlBSUkLPnj1x+fJlseMxxliBcEs4Y4wxhePr64tZs2bhwoULQreTtLQ0aGhoiB2NMcYKhFvCGWOMKZyuXbsCgMwgTC7AGWOKhItwxhhjCokHYTLGFBl3R2GMMcYYY6yYKYsdgDHGGGOMsZ8NF+GMMcYYY4wVMy7CGWOMMcYYK2ZchDPGGGOMMVbMuAhnjDHGGGOsmHERzhhjjDHGWDHjIpwxxhhjjLFixkU4Y4wxxhhjxYyLcMYYY4wxxooZF+GMMcYYY4wVMy7CGWOMMcYYK2b/A11Yuykvfs/KAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sc.pp.pca(jump, n_comps=30)\n", "mt.metrics.evaluate_integration(jump, label_key=\"Metadata_Perturbation\", batch_key=\"Metadata_Source\");" ] }, { "cell_type": "code", "execution_count": 7, "id": "c008", "metadata": { "execution": { "iopub.execute_input": "2026-11-11T02:27:53.928107Z", "iopub.status.busy": "2026-11-11T02:27:53.927244Z", "iopub.status.idle": "2026-11-11T02:27:55.396012Z", "shell.execute_reply": "2026-11-11T02:27:55.394569Z" } }, "outputs": [ { "data": { "text/html": [ " \n", " \n", " " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "mt.pl.batch_variance(jump, keys=[\"Metadata_Source\", \"Metadata_Perturbation\"]);" ] }, { "cell_type": "markdown", "id": "c009", "metadata": {}, "source": [ "## Cross-source retrieval\n", "\n", "Batch metrics ask whether the sites mix. A screen needs to know whether the same compound, run\n", "at different sites, produces the same profile. That is a retrieval task, with `pos_sameby` set to the\n", "perturbation and `pos_diffby` to the source.\n", "\n", "The next cell computes the baseline, three corrections and an ICC feature filter." ] }, { "cell_type": "code", "execution_count": 8, "id": "c010", "metadata": { "execution": { "iopub.execute_input": "2026-11-11T02:27:55.399616Z", "iopub.status.busy": "2026-11-11T02:27:55.399458Z", "iopub.status.idle": "2026-11-11T02:29:34.462549Z", "shell.execute_reply": "2026-11-11T02:29:34.460395Z" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "UserWarning: sphering is fitted on 64 reference rows for 618 features. With fewer rows than features the covariance is singular and the transform amplifies noise. Select fewer features first, or use more controls.\n", "UserWarning: sphering is fitted on 65 reference rows for 618 features. With fewer rows than features the covariance is singular and the transform amplifies noise. Select fewer features first, or use more controls.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "UserWarning: sphering is fitted on 256 reference rows for 618 features. With fewer rows than features the covariance is singular and the transform amplifies noise. Select fewer features first, or use more controls.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "UserWarning: with null_size=500 no p-value can fall below 1/501, so the correction over 301 groups calls none of them unless at least 13 reach that floor together. Raise null_size above 6020 for one group to be callable on its own.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "UserWarning: with null_size=500 no p-value can fall below 1/501, so the correction over 301 groups calls none of them unless at least 13 reach that floor together. Raise null_size above 6020 for one group to be callable on its own.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "UserWarning: with null_size=500 no p-value can fall below 1/501, so the correction over 301 groups calls none of them unless at least 13 reach that floor together. Raise null_size above 6020 for one group to be callable on its own.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "UserWarning: with null_size=500 no p-value can fall below 1/501, so the correction over 301 groups calls none of them unless at least 13 reach that floor together. Raise null_size above 6020 for one group to be callable on its own.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "UserWarning: with null_size=500 no p-value can fall below 1/501, so the correction over 301 groups calls none of them unless at least 13 reach that floor together. Raise null_size above 6020 for one group to be callable on its own.\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
pipelinefeaturescross-source mAPsignificant of 301
0per-plate normalize only6180.02176
1+ sphere per source6180.02289
2+ sphere pooled controls6180.0080
3+ regress out source6180.0040
4+ keep ICC > 0.22620.028103
\n", "
" ], "text/plain": [ " pipeline features cross-source mAP significant of 301\n", "0 per-plate normalize only 618 0.021 76\n", "1 + sphere per source 618 0.022 89\n", "2 + sphere pooled controls 618 0.008 0\n", "3 + regress out source 618 0.004 0\n", "4 + keep ICC > 0.2 262 0.028 103" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def cross_source_map(adata, use_rep=None):\n", " \"\"\"Mean average precision for retrieving a compound across sites.\"\"\"\n", " treated = adata[~adata.obs[\"Metadata_Control\"].to_numpy()].copy()\n", " mt.tl.map(\n", " treated,\n", " pos_sameby=[\"Metadata_Perturbation\"],\n", " pos_diffby=[\"Metadata_Source\"],\n", " neg_diffby=[\"Metadata_Perturbation\"],\n", " use_rep=use_rep,\n", " null_size=500,\n", " seed=0,\n", " )\n", " table = treated.uns[\"mantispy\"][\"map\"]\n", " return round(float(table[\"score\"].mean()), 3), int(table[\"is_significant\"].sum())\n", "\n", "\n", "n_treated = int(jump.obs.loc[~jump.obs[\"Metadata_Control\"].to_numpy(), \"Metadata_Perturbation\"].nunique())\n", "variants = {\"per-plate normalize only\": jump}\n", "\n", "per_source = jump.copy()\n", "mt.pp.sphere(per_source, method=\"ZCA-cor\", reference=\"negcon\", by=\"Metadata_Source\")\n", "variants[\"+ sphere per source\"] = per_source\n", "\n", "pooled = jump.copy()\n", "mt.pp.sphere(pooled, method=\"ZCA-cor\", reference=\"negcon\")\n", "variants[\"+ sphere pooled controls\"] = pooled\n", "\n", "regressed = jump.copy()\n", "mt.pp.regress_out(regressed, keys=[\"Metadata_Source\"], by=None, reference=None)\n", "variants[\"+ regress out source\"] = regressed\n", "\n", "reproducible = jump.copy()\n", "mt.pp.feature_reproducibility(reproducible, by=\"Metadata_Perturbation\", min_icc=0.2)\n", "reproducible = reproducible[:, reproducible.var[\"icc_selected\"].to_numpy()].copy()\n", "variants[\"+ keep ICC > 0.2\"] = reproducible\n", "\n", "map_variants = pd.DataFrame(\n", " [\n", " {\"pipeline\": name, \"features\": adata.n_vars, \"cross-source mAP\": score, f\"significant of {n_treated}\": count}\n", " for name, adata in variants.items()\n", " for score, count in [cross_source_map(adata)]\n", " ]\n", ")\n", "map_variants" ] }, { "cell_type": "code", "execution_count": 9, "id": "fig019", "metadata": { "execution": { "iopub.execute_input": "2026-11-11T02:29:34.466647Z", "iopub.status.busy": "2026-11-11T02:29:34.466254Z", "iopub.status.idle": "2026-11-11T02:29:34.593558Z", "shell.execute_reply": "2026-11-11T02:29:34.592370Z" } }, "outputs": [ { "data": { "image/png": "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QglGRkYlql/QBWxBL4Qyc2SVnUdbXFIBAOXKlSvyvg1lf+tB2XqllVQAQIUKFQosV1dXV9inChUqFFqXiIiIiD4cToUiIiIiIiLZmFh8ogYOHIgHDx6oOgwiIiIiIoBToT5dfNwgEREREZUlHLEgIiIiIiLZmFgQEREREZFsTCyIiIiIiEg2JhZERERERCQbEwsiIiIiIpKNiQUREREREcnGxIKIiIiIiGRjYkFERERERLIxsSAiIiIiItmYWBARERERkWxMLIiIiIiISDYmFkREREREJBsTCyIiIiIiko2JBRERERERyaap6gCIyqoTs51gYGCg6jCIiJRyddpOnrOISKU4YkFERERERLIxsSAiIiIiItmYWBARERERkWxMLIiIiIiISDYmFkREREREJBsTCyIiIiIiko2JBRERERERycbEgoiIiIiIZGNiQUREREREsjGxICIiIiIi2ZhYEBERERGRbEwsiIiIiIhINk1VB0BUVvX9zQOaOuVVHYYCjwXdVR0CERERUYE4YkFERERERLIxsSAiIiIiItmYWBARERERkWxMLIiIiIiISDYmFkREREREJBsTCyIiIiIiko2JBRERERERycbEgoiIiIiIZGNiQUREREREsjGxICIiIiIi2ZhYEBERERGRbEwsiIiIiIhINiYWREREREQkGxMLIiIiIiKSjYkFERERERHJxsSCiIiIiIhkY2JBRERERESyMbEgIiIiIiLZmFiQAiEETp48iVevXqk6FCIiIiL6hHyyicWTJ0/g6+ur6jA+O1lZWejbty8CAwNVHQoRERERfUI+2cTi3LlzmD9/vtL1w8LCcOHCBWRlZeHGjRtwdXVFRkaGtD4wMBBnz55FcHBwge1TU1Nx4cIF3LhxA2lpabh58yZu374trb969SoePHiAxMREeHl54cqVK9K69PR0+Pr6wsvLCy9fvszXtxACAQEBOHfuHJ4/f670uoIkJCTg/Pnz8PLyQnJycr59OHnyJFJSUhTKT506hRcvXgAA3N3dAQC+vr44efIkLly4UOB2iotLbhxZWVk4efIk4uLi8OTJE7i7uyMkJESqGxsbi/Pnz+PmzZvIysrKt/2YmBh4enrCz88PaWlpxR43IiIiIpJHU9UBfCynT5/G0qVLYWVlhYyMDFSvXh1fffUVEhIS0L9/f4SFhaFevXoIDAxE06ZN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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "order = map_variants.set_index(\"pipeline\")\n", "sig_col = [c for c in order.columns if c.startswith(\"significant\")][0]\n", "fig, axes = plt.subplots(1, 2, figsize=(8, 4), sharey=True)\n", "axes[0].barh(order.index, order[\"cross-source mAP\"], color=\"steelblue\")\n", "axes[0].set_xlabel(\"cross-source mAP\")\n", "axes[1].barh(order.index, order[sig_col], color=\"seagreen\")\n", "axes[1].set_xlabel(sig_col)\n", "fig.tight_layout()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "fig020", "metadata": {}, "source": [ "Left: cross-source mAP per pipeline. Right: compounds significant of 301. Sphering pooled controls and regressing out source give the lowest values; keeping ICC > 0.2 gives the highest." ] }, { "cell_type": "code", "execution_count": 10, "id": "c011", "metadata": { "execution": { "iopub.execute_input": "2026-11-11T02:29:34.597626Z", "iopub.status.busy": "2026-11-11T02:29:34.597476Z", "iopub.status.idle": "2026-11-11T02:29:55.513932Z", "shell.execute_reply": "2026-11-11T02:29:55.512421Z" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "FutureWarning: The argument key_added is deprecated and will be removed in the future. Use `out` instead.\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# The batch metrics again, after sphering per source.\n", "sphered = variants[\"+ sphere per source\"].copy()\n", "sc.pp.pca(sphered, n_comps=30)\n", "mt.metrics.evaluate_integration(\n", " sphered, reps=(\"X_pca\",), label_key=\"Metadata_Perturbation\", batch_key=\"Metadata_Source\"\n", ");" ] }, { "cell_type": "markdown", "id": "c012", "metadata": {}, "source": [ "Compare that heatmap with the metrics above. Sphering per source lifts the batch-correction side of the heatmap,\n", "and here retrieval agrees: the mAP holds, and 89 compounds are recovered above chance instead of 76. Sphering on\n", "the pooled controls and regressing out the source recover none. Keeping the features whose replicates agree, which\n", "is not a batch correction, recovers the most.\n", "\n", "Judge a correction by the retrieval the screen needs. The mixing metrics describe the batches, not whether the\n", "biology survived.\n", "\n", "With one plate per site, there are 64 or 65 control wells per site (256 at source_9) against 618 features, so\n", "a per-source covariance is underdetermined, yet sphering per source still helped here. With twenty plates per site the result could differ." ] }, { "cell_type": "markdown", "id": "7fb27b941602401d91542211134fc71a", "metadata": {}, "source": [ "## Is it the regularization, or the pooling?\n", "\n", "Sphering divides out the control covariance; the `ZCA-cor` variant used here does it on the correlation matrix, standardizing each feature against the controls first. That division is unstable in directions where the controls barely vary, so a regularization term, `epsilon`, is added to steady it: a larger `epsilon` means gentler whitening, and a large enough one reduces the whitening to almost nothing. mantispy's default is a small fixed `epsilon`; `epsilon=\"auto\"` instead reproduces the consortium's own sphering search. It uses the same log-uniform grid and the same objective, the mean of a candidate's activity and replicate-retrieval mAP, and keeps the best. It then samples past both ends of that grid, and between points, when the best sits there, so the search can follow the signal out of the recipe's range if that is where it leads." ] }, { "cell_type": "code", "execution_count": 11, "id": "acae54e37e7d407bbb7b55eff062a284", "metadata": { "execution": { "iopub.execute_input": "2026-11-11T02:29:55.516308Z", "iopub.status.busy": "2026-11-11T02:29:55.516121Z", "iopub.status.idle": "2026-11-11T02:31:56.769607Z", "shell.execute_reply": "2026-11-11T02:31:56.769080Z" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "UserWarning: with null_size=0 no p-value can fall below 1/1, so the correction over 301 groups calls none of them unless at least 6021 reach that floor together. Raise null_size above 6020 for one group to be callable on its own.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "UserWarning: with null_size=0 no p-value can fall below 1/1, so the correction over 301 groups calls none of them unless at least 6021 reach that floor together. Raise null_size above 6020 for one group to be callable on its own.\n" ] }, { "data": { "text/plain": [ "{'fixed default epsilon': 1e-06,\n", " 'fixed default score': 0.158,\n", " 'recipe search range': (1e-05, 1000.0),\n", " 'chosen epsilon': 861345,\n", " 'chosen score': 0.162,\n", " 'largest control-correlation eigenvalue': 80.1}" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "auto = jump.copy()\n", "mt.pp.sphere(auto, method=\"ZCA-cor\", reference=\"negcon\", epsilon=\"auto\")\n", "sweep = auto.uns[\"mantispy\"][\"sphere_epsilon\"]\n", "\n", "\n", "def sweep_objective(adata):\n", " \"\"\"The activity and replicate-retrieval mAP that epsilon=\"auto\" maximizes.\"\"\"\n", " activity = mt.tl.map(adata, mode=\"activity\", null_size=0, seed=0, copy=True)\n", " replicability = mt.tl.map(adata, mode=\"replicability\", null_size=0, seed=0, copy=True)\n", " return (activity.uns[\"mantispy\"][\"map\"][\"score\"].mean() + replicability.uns[\"mantispy\"][\"map\"][\"score\"].mean()) / 2\n", "\n", "\n", "default = jump.copy()\n", "mt.pp.sphere(default, method=\"ZCA-cor\", reference=\"negcon\", epsilon=1e-6)\n", "default_score = sweep_objective(default)\n", "\n", "controls = jump[jump.obs[\"Metadata_Control\"].to_numpy()]\n", "eigenvalues = np.linalg.eigvalsh(np.corrcoef(np.asarray(controls.X, dtype=float), rowvar=False))\n", "{\n", " \"fixed default epsilon\": 1e-6,\n", " \"fixed default score\": round(float(default_score), 3),\n", " \"recipe search range\": (1e-5, 1e3),\n", " \"chosen epsilon\": round(float(sweep[\"epsilon\"])),\n", " \"chosen score\": round(float(np.max(sweep[\"scores\"])), 3),\n", " \"largest control-correlation eigenvalue\": round(float(eigenvalues.max()), 1),\n", "}" ] }, { "cell_type": "code", "execution_count": 12, "id": "9a63283cbaf04dbcab1f6479b197f3a8", "metadata": { "execution": { "iopub.execute_input": "2026-11-11T02:31:56.775562Z", "iopub.status.busy": "2026-11-11T02:31:56.775354Z", "iopub.status.idle": "2026-11-11T02:31:57.874858Z", "shell.execute_reply": "2026-11-11T02:31:57.873374Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "grid = np.asarray(sweep[\"grid\"], dtype=float)\n", "scores = np.asarray(sweep[\"scores\"], dtype=float)\n", "ok = np.isfinite(scores)\n", "order = np.argsort(grid[ok])\n", "# the chain: the fixed default, then every candidate the search scored, by increasing epsilon\n", "xs = np.concatenate(([1e-6], grid[ok][order]))\n", "ys = np.concatenate(([default_score], scores[ok][order]))\n", "\n", "fig, ax = plt.subplots(figsize=(6, 4))\n", "ax.axvline(1e-5, color=\"grey\", ls=\":\", lw=1)\n", "ax.axvline(1e3, color=\"grey\", ls=\":\", lw=1)\n", "for i in range(len(xs) - 1):\n", " ax.annotate(\n", " \"\",\n", " xy=(xs[i + 1], ys[i + 1]),\n", " xytext=(xs[i], ys[i]),\n", " arrowprops={\"arrowstyle\": \"->\", \"color\": \"steelblue\", \"lw\": 1.3},\n", " )\n", "best = int(np.argmax(ys))\n", "ax.scatter([xs[0]], [ys[0]], color=\"indianred\", s=45, zorder=3)\n", "ax.scatter([xs[best]], [ys[best]], color=\"seagreen\", s=45, zorder=3)\n", "ax.plot([], [], color=\"indianred\", marker=\"o\", ls=\"\", label=\"fixed default\")\n", "ax.plot([], [], color=\"steelblue\", marker=r\"$\\rightarrow$\", ls=\"\", markersize=11, label=\"search\")\n", "ax.plot([], [], color=\"seagreen\", marker=\"o\", ls=\"\", label=\"chosen\")\n", "ax.plot([], [], color=\"grey\", ls=\":\", lw=1, label=\"recipe range\")\n", "ax.set_xscale(\"log\")\n", "ax.set_xlim(xs.min() / 4, xs.max() * 4)\n", "pad = 0.08 * (ys.max() - ys.min())\n", "ax.set_ylim(ys.min() - pad, ys.max() + pad)\n", "ax.set_xlabel(\"epsilon\")\n", "ax.set_ylabel(\"activity + replicability mAP\")\n", "ax.set_title(\"Picking epsilon on the pooled controls\")\n", "ax.legend(loc=\"best\", fontsize=8)\n", "fig.tight_layout()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 13, "id": "8dd0d8092fe74a7c96281538738b07e2", "metadata": { "execution": { "iopub.execute_input": "2026-11-11T02:31:57.877969Z", "iopub.status.busy": "2026-11-11T02:31:57.877816Z", "iopub.status.idle": "2026-11-11T02:32:59.051593Z", "shell.execute_reply": "2026-11-11T02:32:59.050150Z" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "UserWarning: with null_size=500 no p-value can fall below 1/501, so the correction over 301 groups calls none of them unless at least 13 reach that floor together. Raise null_size above 6020 for one group to be callable on its own.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "UserWarning: with null_size=500 no p-value can fall below 1/501, so the correction over 301 groups calls none of them unless at least 13 reach that floor together. Raise null_size above 6020 for one group to be callable on its own.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "UserWarning: with null_size=500 no p-value can fall below 1/501, so the correction over 301 groups calls none of them unless at least 13 reach that floor together. Raise null_size above 6020 for one group to be callable on its own.\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
pipelinecross-source mAPsignificant of 301
0per-plate normalize only0.02176
1+ sphere pooled, fixed epsilon0.0080
2+ sphere pooled, auto epsilon0.02489
\n", "
" ], "text/plain": [ " pipeline cross-source mAP significant of 301\n", "0 per-plate normalize only 0.021 76\n", "1 + sphere pooled, fixed epsilon 0.008 0\n", "2 + sphere pooled, auto epsilon 0.024 89" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.DataFrame(\n", " [\n", " {\"pipeline\": name, \"cross-source mAP\": m, f\"significant of {n_treated}\": s}\n", " for name, (m, s) in {\n", " \"per-plate normalize only\": cross_source_map(jump),\n", " \"+ sphere pooled, fixed epsilon\": cross_source_map(pooled),\n", " \"+ sphere pooled, auto epsilon\": cross_source_map(auto),\n", " }.items()\n", " ]\n", ")" ] }, { "cell_type": "markdown", "id": "72eea5119410473aa328ad9291626812", "metadata": {}, "source": [ "The fixed default sits below the recipe range, and the search leaves it by the other end: the score is still rising past the top of the grid and flattens only far beyond it, at an `epsilon` larger than any eigenvalue of the control correlation (above), where the whitening it keeps is close to none. Both regimes agree: heavy whitening at small `epsilon` and almost none at large `epsilon` score about the same, while the partial whitening in between is worst. The whole curve spans a narrow band, a small gain over the default.\n", "\n", "So the search does not find a regularization that makes pooled sphering work; it backs the whitening off until the transform nearly vanishes, which is the data declining the correction. The head-to-head agrees: `auto` recovers essentially the normalize-only mAP, far from the fixed default's collapse, and the extra compounds it calls significant (89 against 76) come from `ZCA-cor`'s per-feature re-standardization, not from the covariance reshaping, which at this `epsilon` is off. On significant compounds it ties sphering per source (89).\n", "\n", "Read a search that leaves its range and flattens, as here, as a diagnostic: pooled covariance correction is the wrong tool for this screen, because the pooled control correlation is set by the differences between the laboratories. Sphering helps most within a source, where the controls share one correlation structure, and it is not in JUMP's compound recipe at all, which is the next section." ] }, { "cell_type": "markdown", "id": "c013", "metadata": {}, "source": [ "## What the consortium's recipe does\n", "\n", "JUMP has three recipes, and the perturbation type decides which one applies.\n", "`jump-profiling-recipe` names them in its configs. For compounds, which TARGET-2 contains,\n", "`compound.json` specifies\n", "\n", "```\n", "profiles_var_mad_int_featselect_harmony\n", "```\n", "\n", "that is, variance-based feature selection, MAD normalization against the negative controls, the rank\n", "inverse normal transform, feature selection and Harmony. The ORF and CRISPR branches use a\n", "different pipeline, `profiles_wellpos_cc_var_mad_outlier_featselect_sphering_harmony`, which\n", "adds well position correction, cell count regression, outlier removal and sphering.\n", "\n", "Sphering is in the ORF and CRISPR branches, and the `epsilon` search above is exactly how the recipe sets it there, but not in the compound pipeline. The diagnostic above is why: run on this compound screen, that same search tunes the whitening away to almost nothing. mantispy leaves the choice to the data rather than to a fixed rule: `mt.pp.sphere` is available, and `epsilon=\"auto\"` is the recipe's own search, which here declines the step. The two steps of the compound pipeline that the comparison above does not include are covered below, and both behave differently from the corrections in that table.\n", "\n", "`pp.rank_int` is the rank inverse normal transform. Each feature's values are replaced by\n", "their normal scores within a plate, so only the ordering of the wells is kept and the scale is\n", "discarded. Every feature ends up standard normal by construction, which is a strong assumption\n", "about your data, so check what it costs." ] }, { "cell_type": "code", "execution_count": 14, "id": "c014", "metadata": { "execution": { "iopub.execute_input": "2026-11-11T02:32:59.053871Z", "iopub.status.busy": "2026-11-11T02:32:59.053678Z", "iopub.status.idle": "2026-11-11T02:34:10.492638Z", "shell.execute_reply": "2026-11-11T02:34:10.491754Z" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "UserWarning: with null_size=500 no p-value can fall below 1/501, so the correction over 301 groups calls none of them unless at least 13 reach that floor together. Raise null_size above 6020 for one group to be callable on its own.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "UserWarning: with null_size=500 no p-value can fall below 1/501, so the correction over 301 groups calls none of them unless at least 13 reach that floor together. Raise null_size above 6020 for one group to be callable on its own.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "UserWarning: with null_size=500 no p-value can fall below 1/501, so the correction over 301 groups calls none of them unless at least 13 reach that floor together. Raise null_size above 6020 for one group to be callable on its own.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "UserWarning: with null_size=500 no p-value can fall below 1/501, so the correction over 301 groups calls none of them unless at least 13 reach that floor together. Raise null_size above 6020 for one group to be callable on its own.\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
pipelinefeaturescross-source mAPsignificant of 301
0per-plate normalize only6180.02176
1+ rank INT, ranked globally6180.02392
2+ rank INT, ranked per plate6180.033114
3+ rank INT per plate, then ICC > 0.2670.034125
\n", "
" ], "text/plain": [ " pipeline features cross-source mAP \\\n", "0 per-plate normalize only 618 0.021 \n", "1 + rank INT, ranked globally 618 0.023 \n", "2 + rank INT, ranked per plate 618 0.033 \n", "3 + rank INT per plate, then ICC > 0.2 67 0.034 \n", "\n", " significant of 301 \n", "0 76 \n", "1 92 \n", "2 114 \n", "3 125 " ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "inted = jump.copy()\n", "mt.pp.rank_int(inted, by=\"Metadata_Plate\")\n", "\n", "# The reference implementation ranks each feature over the whole screen; ranking within a\n", "# plate additionally removes any plate-level difference in the shape of the distribution.\n", "globally = jump.copy()\n", "mt.pp.rank_int(globally)\n", "\n", "inted_icc = inted.copy()\n", "mt.pp.feature_reproducibility(inted_icc, by=\"Metadata_Perturbation\", min_icc=0.2)\n", "inted_icc = inted_icc[:, inted_icc.var[\"icc_selected\"].to_numpy()].copy()\n", "\n", "rankint_variants = pd.DataFrame(\n", " [\n", " {\"pipeline\": name, \"features\": adata.n_vars, \"cross-source mAP\": score, f\"significant of {n_treated}\": count}\n", " for name, adata in [\n", " (\"per-plate normalize only\", jump),\n", " (\"+ rank INT, ranked globally\", globally),\n", " (\"+ rank INT, ranked per plate\", inted),\n", " (\"+ rank INT per plate, then ICC > 0.2\", inted_icc),\n", " ]\n", " for score, count in [cross_source_map(adata)]\n", " ]\n", ")\n", "rankint_variants" ] }, { "cell_type": "code", "execution_count": 15, "id": "fig017", "metadata": { "execution": { "iopub.execute_input": "2026-11-11T02:34:10.495408Z", "iopub.status.busy": "2026-11-11T02:34:10.495213Z", "iopub.status.idle": "2026-11-11T02:34:10.603772Z", "shell.execute_reply": "2026-11-11T02:34:10.602825Z" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxUAAAGGCAYAAAANcKzOAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjExLjIsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvgI3uAAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAVTZJREFUeJzt3XmcTvX///HnmBkzxmxmZJ2x70n2ZFcja9lTspUIyZYlok2FNkJ8KiVSJMooRRHZlRp7yDZ2hjG72d+/P77m+rnM4po5k7E87reb263rnPf7fV7nXNeczvM6y+VkjDECAAAAgBzKl9cFAAAAALi9ESoAAAAAWEKoAAAAAGAJoQIAAACAJYQKAAAAAJYQKgAAAABYQqgAAAAAYAmhAgAAAIAlLnldAIDbV2pqqs6cOSMvLy85OTnldTkAcsgYo+joaJUoUUL58ln/vpF9A3DncHT/QKgAkGNnzpxRYGBgXpcBIJecPHlSAQEBlsdh3wDceW60fyBUAMgxLy8v6eqOxtvbO6/LAZBDUVFRCgwMtP1NW8W+AbhzOLp/IFQAyLG0yxq8vb05cADuALl1qRL7BuDOc6P9AzdqAwAAALCEUAEAAADAEkIFAAAAAEsIFQAAAAAsIVQAAAAAsIRQAQAAAMASQgUAAAAASwgVAAAAACwhVAAAAACwhFABAAAAwBJCBQAAAABLCBUAAAAALHHJ6wIA3P46TV0tF3ePvC4DwHVWT2yXp8tvOONpObu75mkNANLbNWpxro/JmQoAAAAAlhAqAAAAAFhCqAAAAABgCaECAAAAgCWECgAAAACWECoAAAAAWEKoAAAAAGAJoQIAAACAJYQKAAAAAJYQKgAAAABYQqgAAAAAYAmhAgAAAIAlhAoAAAAAlhAqAAAAAFhCqAAAAABgCaECAAAAgCWECgAAAACWECoAAAAAWEKoAAAAAGAJoQIAAACAJYQKAAAAAJYQKgAAAABYQqgAAAAAYAmhAgAAAIAld1SoCA4O1tatW/O6jNvGTz/9pA0bNuR1GZni/QQAALg9uOR1Ablp5syZqlu3rh588EGH2q9du1ZRUVHq1KmT7fU///yjVq1aqWLFirZ2Z8+e1bJly9SrVy99+eWXWY5ZvXp1NW/e3OKa3ByffPKJAgIC1LRpU4f7rFy5Uj4+PmrcuHGu1pLRuNl9P3PT9Z+NNLGxsdq4caNOnTqlwoUL6/7771fZsmXT9Xe0XW5KSUnR2rVrFRoaqooVK6pZs2ZycnLKss+ZM2e0ZcsWJSUlqU6dOqpUqdJ/WiMAALgzWTpTsXLlSu3atSv3qrnJvvzyS3344Yd2r1944QUNHjzYrt2RI0f0wgsvKDIyUgcOHLD9+/bbbzV8+HC7aefPn8+DNbl55syZo6VLl9424+bU9Z8NSfr8888VGBioCRMmaNu2bfryyy/VqlUrde3aVcaYbLfLTbGxsWratKmee+45rV+/Xj169NCjjz6qpKSkTPsMGTJEjRo10uLFi7V8+XLVqlVLo0aN+k/qAwAAdzZLZyrmzJmjoKAg3X///Q61Dw4OVpEiRVSyZEmtX79e3t7e6tixo9avX6+9e/dKkvz9/VW3bl27MwXX9i1durS2bNmilJQUPfzwwypcuHCmy0tJSdH8+fNVsmRJtWrVyqEaK1asqPXr1+uXX37RI488Yjcvf/78mjVrlu31rFmztH37drtpjqz7tm3blJKSorZt28rHx8euXVJSktauXatTp06pXLlyatasmZydnTMc59ptmNPlXetG78PatWt1/PhxxcbG2ta5Z8+e8vX1vWHdWcls3DRp36Zn9p47us2y89m53rfffqt+/fpp4cKFeuqpp2zTjTFavny5jDFycnJyuN319u/frxIlSsjX19fhmq41depUhYaGavfu3fLz81NoaKiqV6+uuXPnatCgQRn2eeihhzR9+nS5uPzfbmDDhg1q1qyZHnvssWydvQIAALiplz/NnDlTly5dUlRUlJo0aaJatWpJks6fP68DBw7Y/nvAgAF68803NWzYMLu+4eHhio2NVYMGDXTgwAENHTpUf/75p0qVKpVuWfHx8XriiSd04sQJrVq1yuEay5Urp4cfflhjx45Vy5Ytb3j5SHbXPTw8XE2aNNG+ffs0atQobdy4UeXKlZMkHT9+XK1bt5a3t7eqV6+umTNnysXFRWvWrFGhQoXsxrl+G+Zkede70ftw9uxZxcbGysXFxdYuISHBobqzktm4kvTLL7/o+++/z/Q9d3SbZeezk5Hx48erY8eOdkFBkpycnOwukXK03fW++eYbvfvuu+rSpYv69evn0KVL1/fv3r27/Pz8JEmlS5dW+/bt9c0332QaKjp37mz3umnTpsqfP78OHDhAqAAAANly0++pOHXqlP75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5ur/aNq2bWtq165tuc+IESPMvn37zMsvv3xbhYqOHTuaunXrmtjYWGOMMZMnTzYeHh7m7NmzOe5z/PhxM23aNFvITExMND179jQlS5a85Q+ip0+fbnx9fW2hcePGjcbFxSXLoOVIn/nz59sF0Z07dxpXV1fz5Zdf/qfrk1u6du1qateubWJiYowxxrz77rumQIECd/zB1M0yZ84cU758+SzbLF682Li5uZk//vjDGGPMnj17TMGCBc3HH398k6q8fUVHR5vRo0ebw4cPm+eeey7DUHHp0iXj4+Nj+0IgPj7eNGrUyLRs2TJbbe5EhAoAZvDgwaZ69ep201577TVTuHDhTL/dcqRPTsa9FXz33XfGycnJnDlzxjZt06ZNRpIJCQnJlT63U6gICwsz+fLlM4sXL7ZNu3LlivHy8jLTpk3LtT7GGLN+/XojyRw5ciSX1yJ31ahRwwwcONBuWlBQkOnQoUOu9jHGmKJFi5opU6ZYrPi/Fx4ebpydnc3ChQtt0xISEoyPj495991387S2O8WcOXNM2bJlze7du82+fftMQkJCujaPPPKI6dixo920nj17mgceeOAmVnr7yyxUfPLJJ8bd3d1ER0fbpi1fvtxIMidOnHC4zZ2IG7UBKCQkRHXq1LGbVr9+fV28eFGnTp3KcZ+cjHsrCAkJUYkSJVS8eHHbtPr169vm5Vaf28Xu3buVmppq9166u7vrvvvuy3TdctJHkv7880+5u7urZMmSubwWuScpKUn79u3L8LOd2bplp09sbKw2bdqk1atXq1+/fvL19VWfPn3+gzXJXXv27FFKSordOubPn1/333//bf83cCs5fvy4unXrprZt26pw4cL66KOP7OZntt/duXOn+Gky60JCQlS5cmV5enrapqXt63fu3OlwmzsRN2oDUHh4eLobRtNeh4eHKzAwMEd9cjLurSCjul1dXeXl5aXw8PBc63O7SKs/o/cyq+2R3T779+/XG2+8oTFjxtzSv1AbGRmplJSUbK1bdvqcPXtWL730ki5fvqwTJ07o9ddfvy1utM3Je47sqVq1qvbv368qVapIkr788kv17t1b5cqVU5s2baQs9s0JCQmKi4tTwYIF86T2O8WN/r/maJs7EaECgFxdXRUfH2837cqVK9LVbxpz2icn494KMqpbkuLj47O1PW7U53bh6uoqXV2Xa125ckXe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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "order = rankint_variants.set_index(\"pipeline\")\n", "sig_col = [c for c in order.columns if c.startswith(\"significant\")][0]\n", "fig, axes = plt.subplots(1, 2, figsize=(8, 4), sharey=True)\n", "axes[0].barh(order.index, order[\"cross-source mAP\"], color=\"steelblue\")\n", "axes[0].set_xlabel(\"cross-source mAP\")\n", "axes[1].barh(order.index, order[sig_col], color=\"seagreen\")\n", "axes[1].set_xlabel(sig_col)\n", "fig.tight_layout()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "fig018", "metadata": {}, "source": [ "Left: cross-source mAP per ranking choice. Right: compounds significant of 301. Ranking per plate is higher than ranking globally or normalize-only, and adding the ICC filter is higher still." ] }, { "cell_type": "markdown", "id": "c015", "metadata": {}, "source": [ "Ranking per plate helps more than any correction above, and the ICC filter adds to it on only 67\n", "features.\n", "Ranking globally helps less (92 significant, against 114 per plate).\n", "\n", "Where you rank matters. The reference implementation ranks each feature over the whole\n", "screen, which is the `by=None` default. Ranking within each plate works better here,\n", "because it also removes plate-to-plate differences in the shape of a\n", "feature's distribution, which with one plate per site are the differences between sites.\n", "\n", "The transform discards magnitude, and distance from the controls depends on magnitude, so\n", "check the effect on activity as well:" ] }, { "cell_type": "code", "execution_count": 16, "id": "c016", "metadata": { "execution": { "iopub.execute_input": "2026-11-11T02:34:10.606890Z", "iopub.status.busy": "2026-11-11T02:34:10.606713Z", "iopub.status.idle": "2026-11-11T02:34:13.147287Z", "shell.execute_reply": "2026-11-11T02:34:13.146282Z" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "UserWarning: with null_size=500 no p-value can fall below 1/501, so the correction over 301 groups calls none of them unless at least 13 reach that floor together. Raise null_size above 6020 for one group to be callable on its own.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "UserWarning: with null_size=500 no p-value can fall below 1/501, so the correction over 301 groups calls none of them unless at least 13 reach that floor together. Raise null_size above 6020 for one group to be callable on its own.\n" ] }, { "data": { "text/plain": [ "{'per-plate normalize only': (0.251, 106), '+ rank INT': (0.29, 116)}" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def activity(adata):\n", " \"\"\"Phenotypic activity: can each compound be told from the negative controls?\"\"\"\n", " scratch = adata.copy()\n", " mt.tl.map(scratch, mode=\"activity\", null_size=500, seed=0)\n", " table = scratch.uns[\"mantispy\"][\"map\"]\n", " return round(float(table[\"score\"].mean()), 3), int(table[\"is_significant\"].sum())\n", "\n", "\n", "activity_compare = {\"per-plate normalize only\": activity(jump), \"+ rank INT\": activity(inted)}\n", "activity_compare" ] }, { "cell_type": "code", "execution_count": 17, "id": "fig015", "metadata": { "execution": { "iopub.execute_input": "2026-11-11T02:34:13.150126Z", "iopub.status.busy": "2026-11-11T02:34:13.149897Z", "iopub.status.idle": "2026-11-11T02:34:13.234764Z", "shell.execute_reply": "2026-11-11T02:34:13.233211Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "labels = list(activity_compare)\n", "maps = [activity_compare[k][0] for k in labels]\n", "fig, ax = plt.subplots(figsize=(5, 4))\n", "bars = ax.bar(labels, maps, color=[\"grey\", \"steelblue\"])\n", "ax.bar_label(bars, padding=2)\n", "ax.set_ylabel(\"activity mAP\")\n", "ax.set_title(\"Phenotypic activity\")\n", "fig.tight_layout()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "fig016", "metadata": {}, "source": [ "Phenotypic activity mAP before and after the rank INT transform. It is slightly higher after the transform." ] }, { "cell_type": "markdown", "id": "c017", "metadata": {}, "source": [ "Here it costs nothing, and activity rises too. That need not generalize: this is one plate per\n", "source and 618 features. The\n", "outcome depends on the screen, so measure both before adopting it.\n", "\n", "## Harmony, and a metric that disagrees with retrieval\n", "\n", "`pp.harmony` ranked in the top three in every scenario of the batch-correction benchmark\n", "{cite:p}`Arevalo_2024`, as did Seurat RPCA, and is the last step of the recipe.\n", "It works on an embedding rather than on features (it alternates soft clustering and\n", "per-cluster linear correction), so it returns a corrected `obsm`, not a corrected `X`.\n", "Its result moves with the seed and the row order;\n", "[Learned embeddings against CellProfiler](learned_embeddings.ipynb) measures how much the seed moves it." ] }, { "cell_type": "code", "execution_count": 18, "id": "c018", "metadata": { "execution": { "iopub.execute_input": "2026-11-11T02:34:13.237495Z", "iopub.status.busy": "2026-11-11T02:34:13.237355Z", "iopub.status.idle": "2026-11-11T02:35:00.757812Z", "shell.execute_reply": "2026-11-11T02:35:00.756575Z" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "FutureWarning: The argument key_added is deprecated and will be removed in the future. Use `out` instead.\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "harmonised = jump.copy() # carries the X_pca from above\n", "mt.pp.harmony(harmonised, batch_key=\"Metadata_Source\", use_rep=\"X_pca\")\n", "\n", "mt.metrics.evaluate_integration(\n", " harmonised, reps=(\"X_pca\", \"X_harmony\"), label_key=\"Metadata_Perturbation\", batch_key=\"Metadata_Source\"\n", ");" ] }, { "cell_type": "code", "execution_count": 19, "id": "c019", "metadata": { "execution": { "iopub.execute_input": "2026-11-11T02:35:00.760096Z", "iopub.status.busy": "2026-11-11T02:35:00.759690Z", "iopub.status.idle": "2026-11-11T02:36:05.349885Z", "shell.execute_reply": "2026-11-11T02:36:05.347859Z" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "UserWarning: with null_size=500 no p-value can fall below 1/501, so the correction over 301 groups calls none of them unless at least 13 reach that floor together. Raise null_size above 6020 for one group to be callable on its own.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "UserWarning: with null_size=500 no p-value can fall below 1/501, so the correction over 301 groups calls none of them unless at least 13 reach that floor together. Raise null_size above 6020 for one group to be callable on its own.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "UserWarning: with null_size=500 no p-value can fall below 1/501, so the correction over 301 groups calls none of them unless at least 13 reach that floor together. Raise null_size above 6020 for one group to be callable on its own.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "UserWarning: with null_size=500 no p-value can fall below 1/501, so the correction over 301 groups calls none of them unless at least 13 reach that floor together. Raise null_size above 6020 for one group to be callable on its own.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "UserWarning: with null_size=500 no p-value can fall below 1/501, so the correction over 301 groups calls none of them unless at least 13 reach that floor together. Raise null_size above 6020 for one group to be callable on its own.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "UserWarning: with null_size=500 no p-value can fall below 1/501, so the correction over 301 groups calls none of them unless at least 13 reach that floor together. Raise null_size above 6020 for one group to be callable on its own.\n" ] }, { "data": { "text/plain": [ "{'X_pca': {'site centroid spread': 418.1,\n", " 'cross-source mAP': 0.016,\n", " 'significant': 54},\n", " 'X_harmony, five seeds': {'site centroid spread': {'min': 277.0,\n", " 'max': 422.0},\n", " 'cross-source mAP': {'min': 0.014, 'max': 0.016},\n", " 'significant': {'min': 37, 'max': 44}}}" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def centroid_spread(embedding):\n", " \"\"\"Mean distance of the site centroids from their mean.\"\"\"\n", " centroids = pd.DataFrame(embedding).groupby(harmonised.obs[\"Metadata_Source\"].to_numpy()).mean()\n", " return round(float(np.linalg.norm(centroids - centroids.mean(), axis=1).mean()), 1)\n", "\n", "\n", "# PCA is deterministic; Harmony moves with its seed, so it is scored over five.\n", "score, significant = cross_source_map(harmonised, use_rep=\"X_pca\")\n", "pca = {\n", " \"site centroid spread\": centroid_spread(harmonised.obsm[\"X_pca\"]),\n", " \"cross-source mAP\": score,\n", " \"significant\": significant,\n", "}\n", "seeds = []\n", "for seed in range(5):\n", " mt.pp.harmony(harmonised, batch_key=\"Metadata_Source\", use_rep=\"X_pca\", seed=seed)\n", " score, significant = cross_source_map(harmonised, use_rep=\"X_harmony\")\n", " seeds.append(\n", " {\n", " \"site centroid spread\": centroid_spread(harmonised.obsm[\"X_harmony\"]),\n", " \"cross-source mAP\": score,\n", " \"significant\": significant,\n", " }\n", " )\n", "seeds = pd.DataFrame(seeds)\n", "{\"X_pca\": pca, \"X_harmony, five seeds\": seeds.agg([\"min\", \"max\"]).to_dict()}" ] }, { "cell_type": "code", "execution_count": 20, "id": "fig013", "metadata": { "execution": { "iopub.execute_input": "2026-11-11T02:36:05.353852Z", "iopub.status.busy": "2026-11-11T02:36:05.353331Z", "iopub.status.idle": "2026-11-11T02:36:05.638879Z", "shell.execute_reply": "2026-11-11T02:36:05.638140Z" } }, "outputs": [ { "data": { "image/png": "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mxt+//13eHp6QiaTYenSpRBCoF27dlJcQEAAnJyc0LdvX5XrqGLmzJn4+eefsXv3bjRt2lQDR0hEVPgNGzYM1apVg7+/f5YxycnJMDExUSozMDCQtmWGt+eQpn31S+YPYi2qUpLeSf9uM20/dPT0C7Q/ee3Ajz4aaZeJNxGRClavXo2WLVvCzc0NlpaWOH/+PJYtWwZbW1spZteuXahbt650z6EqdVatWoWgoCA8fvwYANCnTx9oaWlh7NixcHV1xalTpzB27FhUqlQJK1euxMqVK6W606ZNg52dXb5+DkREBWX16tVwdnaWnmT+8uVLAEDdunUxbNgwdO3aFRYWFnj9+rVSvaioKACApaVlpu0GBARg5MiR0npcXBzs7e01eCRE9CVi4k1EpAJXV1fcvXsXJ06cQGJiItavX6+UQON9ImxlZaVWncqVK0NXVxcAMGDAAKnc2toaAODo6Ii///470z59PKtDRPQ5O3XqFIQQ0vqePXswdepUzJs3T7r0vEaNGpg1axZSUlKgo/O/09zz589DV1cXlStXzrRduVwOuVyeT0dBRF8qJt5ERCoyMjJCq1atstzeunVrtevUqVMHderUyXJ7qVKl+AocIiIA7u7uSuu3bt0C3s94p/P398eUKVOwcOFCfP/994iLi8O8efPQpUsXfllJRAVK7cT77t272LNnD169eoUKFSqgU6dOMDQ0VIqJjY3FunXrEBYWhvLly8Pf31+6v0adGCIiIiIiVdnb22PdunXo27cv5s+fj5cvX6JWrVpYsGBBQXeNiL5waj3VfPbs2ejSpQuePn0KuVyO33//HZUqVcKzZ8+kmMjISNSoUQNr166Fvr4+FixYAA8PD7x580atGCIiIiKirPj4+ODs2bMZyjt06IDnz59j27ZtuHr1Ko4ePYpixYoVSB+JiNKplXj7+Pjg0qVLmDlzJn788UecPn0a8fHxWLdunRQzdepU6Ojo4OjRo5gyZQqOHTuGJ0+eYP78+WrFEBERERFlxdraWuky8w/p6+vDzc0Njo6O+d4vIqLMqJV4u7i4KK0rFAqkpKQofYu4Y8cOdO7cWXpIRbFixeDr64vt27erFUNERERERET0OVD7Hu+IiAhMmzYNb968walTpzBgwAD06tULeJ+IP378GOXKlVOqU65cOSmpViUmMwqFAgqFQlqPi4tTt+tERERERERE+U6tGW8A0NXVhYODA0qVKgV9fX2cOXNGej/i27dvgUxecWNqaiptUyUmM4GBgTAzM5MWvl+RiIiIiIiIigK1E29LS0t8//33mDx5Ms6fP4/o6GhMmjQJeP/aHJlMhpiYGKU60dHRUqKtSkxmAgICEBsbKy3h4eHqdp2IiIiIiIgo333Se7z19PRQvXp16T2Kenp6cHJyktbT3bp1C5UqVVI5JjNyuVy6J5yIiIiIiIioqFBrxjsoKEhpPSoqCsePH0fNmjWlsi5dumDTpk2Ijo4GAISHh2P37t3o0qWLWjFEREREREREnwO1Eu+VK1eiVq1a6Nu3L7p27YoKFSrAxcUFEydOlGLGjx+PkiVLonbt2ujZsyfq1asHDw8PDBgwQK0YIiIiIiIios+BWpear1u3DqGhoQgODoauri7Gjh0LNzc3pRhjY2OcPn0aBw4cwOPHj9G9e3c0a9YMMplMrRgiIiIiIiKiz4Ha93hXqlQp23uxAUBHRwc+Pj6fHENERERERERU1H3Sw9WIiIiIiIjo86OIfw1F/OsM5anJSdK/458/gLauXqb15SYWkJtYaLSPRQkTbyIiIiIiIlISHrIPD45tyDYmZMXYLLeVbfwNnJr6a6BnRRMTbyIiIiIiIlJiX7sViru457o+Z7uVMfEmIiIiIiIiJbxUPG+p9ToxIiIiIiIiIlIPE28iIiIiIiIiDWLiTURERERERKRBTLyJiIiIiIiINIiJNxEREREREZEG8anmREWYIv41FPGvM5SnJidJ/45//gDaunqZ1ufTKomIiIiINI+JN1ERFh6yDw+Obcg2JmTF2Cy3lW38DZya+mugZ0RERERElI6JN1ERZl+7FYq7uOe6Pme7iYiIiIg0j4k3URHGS8WJiIiIiAo/PlyNiIiIiIiISIOYeBMRERERERFpEBNvIiIVvHv3Dt9++y2srKxgZGSE1q1bIyws7JPrPHz4EAEBAShevDhkMhnevXuXJ/smIiIiosKDiTcRkQq+++477N27F0FBQbhz5w6EEGjVqhVSUlI+qc7YsWNhYmKCSZMm5em+iYiIiKjw4MPViIhyEBUVhVWrVmHNmjWoVq0aAOCPP/6Ag4MD9uzZg7Zt2+a6zubNmwEAW7ZsybN9ExEREVHhwhlvIqIcnD9/HqmpqWjcuLFUVqZMGZQrVw5nzpzJszqabIeIiIiICg5nvImIchAREQEAsLa2ViovXry4tC0v6uRVOwqFAgqFQlqPi4tTeX9ERERElPc4401ElEtCCMhkMo3XUbedwMBAmJmZSYu9vf0n74+IiIiIco+JNxFRDmxtbQEAL1++VCp/+fIlbGxs8qxOXrUTEBCA2NhYaQkPD1d5f0RERESU95h4ExHloE6dOtDW1sbRo0elssePH+P+/fvw8PDIszp51Y5cLoepqanSQkREREQFh4k3EVEOrKys0KtXL/z444+4evUqnj17hkGDBqFixYrw9vaW4qpUqYJ+/fqpVSev9k1EREREhRcTbyIiFSxcuBCtWrVCkyZN4OTkBJlMhn379kFXV/eT6gwaNAgymQydO3cGABgYGEAmk2H//v2ftG8iIiIiKjzUSrwfPHiAoUOHokqVKnB2dka3bt1w7949pZg5c+bAyspKaSlXrlyGtnbv3g0PDw+UKlUKjRs3xsmTJz/9aIiINERfXx+LFi1CVFQU3r59iz179qBMmTJKMdevX8eff/6pVp0lS5ZACJFhadmypVrtEBEREVHhpVbi3bNnT1SpUgUbN27E9u3b8e7dOzRo0ACRkZFSzNu3b+Hg4IBbt25JS0hIiFI7J0+eRPv27dGpUyccO3YMHh4e8PLyQmhoaN4dGREREREREVEhoNZ7vE+cOKH0+po1a9bA1NQUBw4cQPfu3f+/UR0dWFlZZdnOtGnT4OXlhZEjRwIAfvvtN+zZswezZ8/GihUrcnckRERERERERIWQWjPeH78zNjExEUII6OvrK5XfuHEDjo6OqFixInr27ImwsDCl7SdPnkTz5s2Vyry8vHi5OREREREREX12PunhauPHj4eVlRW8vLykMjMzM/z22284ePAg1qxZg5cvX6J27drS5ejx8fGIj4/P8P5ZGxsbPH/+PMt9KRQKxMXFKS1EREREREREhZ1al5p/aPbs2fj777+xb98+mJmZSeXfffedUtyWLVvg6OiIJUuW4KeffoIQAgCgra2t3BEdHaSlpWW5v8DAQEyZMiW33SUiIiIiIiIqELma8V6wYAF++OEHbNu2DU2aNMk21tDQEJUqVcKtW7cAAMbGxtDX18fLly+V4l6+fAlra+ss2wkICEBsbKy0hIeH56brRERERERERPlK7cR70aJFGDNmDLZu3Qpvb+8c41NTU/HgwQMpqdbS0kLt2rVx6tQppbjjx4/D3d09y3bkcjlMTU2VFiIiIiIiIqLCTq3Ee8mSJRg1ahS2bt0KHx+fTGMGDhyI0NBQCCEQFxeHYcOGISIiAr1795Zihg0bhn///Rd79+5Famoq/v77b5w7dw7ffvvtpx8RERERERERUSGi1j3eI0aMQFpaGnr27KlUPnbsWIwdOxYA0Lp1a3Tv3h23b99GamoqatasiaCgILi5uUnxnTp1Qnh4OLp37474+HhYWFhgxYoVaNCgQV4dFxEREREREVGhoFbi/eTJE+nhaB8yNDSU/u3r6wtfX18oFAro6elleAVZuhEjRuD7779HQkICTExMctN3IiIiIiIiokJPrcTb0tJS5Vi5XJ5jjEwmY9JNRERERCpJTEzErl27cOvWLRQvXhxt2rRByZIlM8QdOHAA586dg5mZGTp16gQ7O7sC6S8RUbpPeo83EREREVF+uHr1KqpXr44dO3YgNTUVBw8ehKOjI3bt2qUUN2jQIHTr1g2xsbE4cuQIKlWqhJCQkALrNxERPuU93kRERERE+cXCwgJnzpyBhYWFVNatWzf8+uuv8PX1BQCcOXMGS5cuxZkzZ1CvXj0AQMeOHfHtt9/i/PnzBdZ3IiLOeBMRERFRoWdnZ6eUdANASkqK0m2L27ZtQ/ny5aWkGwB69+6N4OBgPH36NF/7S0T0Ic54ExEREVGRMWfOHDx79gzXrl1DUlISli9fLm27c+cOnJyclOLT1+/cuYNSpUplaE+hUEChUEjrcXFxGu0/EX2ZOONNREREREWGiYkJTExMoKenh/v37yM8PFza9ubNG5iamirFm5mZSdsyExgYCDMzM2mxt7fX8BEQ0ZeIM95EREREVGT0799f+veoUaPQtWtXPHv2DDKZDMbGxoiNjVWKj4mJAQAYGxtn2l5AQABGjhwprcfFxTH5JqI8xxlvIiIiIiqSPD09ERERgaioKABAxYoVcfv2baWY9HUXF5dM25DL5TA1NVVaiIjyGhNvIiIiIir0goODkZycrFS2c+dO2NnZwdLSEgDQqVMnPHz4EEFBQQAAIQSWL1+OBg0awNbWtkD6TUQEXmpOREREREXBtWvX0KdPH9SsWRMmJiY4d+4cnjx5gnXr1kEmkwEAatWqhTFjxqBjx47o0KED7t+/jxs3buDo0aMF3X0i+sIx8SYiIiKiQq9v377w8fFBUFAQoqOj8dVXX6FFixbQ19dXipsxYwY6duyIs2fPokGDBmjTpo00I05EVFCYeBMRERFRkWBrawt/f/8c49zd3eHu7p4vfSIiUgXv8SYiIiIiIiLSICbeRERERERERBrExJuIiIiIiIhIg5h4ExEREREREWkQE28iIiIiIiIiDeJTzYmIVPT27VucOHECiYmJqFevHmxtbfOkjioxL168wKVLl6BQKODi4gJnZ+c8Oy4iIiIi0izOeBMRqeDatWtwcnLCuHHjMH/+fJQrVw7r1q375DqqxMyfPx+Ojo6YOXMmVq5ciVq1asHf3x9paWkaOVYiIiIiyltMvImIVNCzZ094eHjg8uXLOHr0KKZOnYr+/fvjxYsXn1Qnp5g3b95g1KhRCAwMRFBQEHbs2IETJ05g/fr1OHz4cL4cOxERERF9GibeREQ5uHnzJi5duoThw4dDJpMBAAYOHAiZTIZ///0313VUiUlJSYEQAvb29lLbpUuXlrYRERERUeHHe7yJiHJw7do1AECVKlWkMkNDQ5QtW1balps6qsSYmZlh7ty5mDBhAh4+fAgjIyP8/fff6NWrF1q2bJnpvhUKBRQKhbQeFxf3ScdPRERERJ+GM95ERDmIjY0FAJibmyuVW1hYSNtyU0fVdsuXLw9tbW3s3r0be/bswdOnT1GtWjVoaWU+hAcGBsLMzExaPpwtJyIiIqL8xxlvIqIcGBgYAO/vtzY2NpbK4+PjpW25qaNKzOPHj9G2bVssXrwYffr0Ad5fol69enWUKlUKnTt3zrDvgIAAjBw5UlqPi4tj8k1ERERUgDjjTUSUg7JlywIAwsLCpLK0tDSEh4dL23JTR5WY8+fPIykpCR07dpRiKlasiIoVK+L48eOZ7lsul8PU1FRpISIiIqKCo3birVAocOHCBZw9ezbLSywB4M6dOzh06BAePXr0STFERAWtTp06sLa2xj///COVBQUF4dWrV/Dx8ZHKdu/ejXPnzqlcR5WY9JnqGzduSDEJCQkICwvjLDYRERFREaHWpebTp0/H/PnzUaJECWhrayM0NBS//vorhg0bJsWkpKTA398f+/btQ9WqVXH58mX06tULCxculJ7aq0oMEVFhoaOjg7lz56J3795ITEyElZUVZs+ejQEDBsDV1VWKGz9+POrWrYu6deuqVEeVGHd3d3h7e6Nz584YNmwYTExMsHr1ahgZGaFfv34F9pkQERERkerUmvHW19fH9evXceHCBZw/fx4rVqzA999/j4sXL0oxv//+O4KCgnD16lWcPn0ap0+fxooVK7Bhwwa1YoiIChN/f38cO3YMCoUC9+7dw7x587BkyRKlGF9fX9SrV0+tOjnFyGQy7Nq1C7NmzUJERASuXbsGf39/3LhxA5aWlvlw5ERERET0qdSa8R4+fLjSeufOndG9e3dcvHgRNWvWBACsWbMGXbp0gYODAwDAzc0NX331FdasWYOuXbuqHENEVNh4eHjAw8Mjy+2BgYFq11ElRktLC9988w2++eYbNXtMRERERIXBJz1cLTg4GElJSXBxcQHeX0J+48YNVKtWTSnOzc0NV65cUTkmMwqFAnFxcUoLERERERERUWGX68Q7NjYWvXv3hpeXFxo2bAi8f+BPamoqLCwslGItLS0RExOjckxm+F5aIiIiIiIiKopylXi/efMGrVu3hlwux8aNG6VyPT09AMDbt2+V4t++fSttUyUmMwEBAYiNjZWW8PDw3HSdiIiIiIiIKF+pdY833ifdPj4+iIuLw5EjR1CsWDFpm6GhIYoXL44nT54o1QkPD4ejo6PKMZmRy+WQy+XqdpeIiIiIiIioQKk14/327Vv4+PggOjoaQUFBmT5Rt2XLlti+fTuEEACApKQk7Nq1Cy1btlQrhoiIiIiIiOhzoNaMd7t27XDx4kUsXLgQ586dk8orVKiAChUqAAB++ukn1KpVC9988w18fHywfv16pKWlYdSoUVK8KjFEREREREREnwO1ZryNjY3RqFEjbN68GUuWLJGWCxcuSDHlypXDxYsXUaJECWzfvh3VqlVDSEgIrK2t1YohIiIiIiIi+hyoNeO9bds2leLKli2LuXPnfnIMERERERERUVH3Se/xJiIiIiIiIqLsMfEmIiIiIiIi0iAm3kREREREREQaxMSbiIiIiIiISIOYeBMRERERERFpEBNvIiIiIiIiIg1i4k1ERERERESkQUy8iYiIiIiIiDSIiTcRERERERGRBjHxJiIiIiIiItIgJt5EREREREREGsTEm4iIiIiIiEiDmHgTERERERERaRATbyIiIiIiIiINYuJNREREREREpEFMvImIiIiIiIg0iIk3ERERERERkQYx8SYiIiIiIiLSICbeRERERERERBqkU9AdICIqKnbv3o2N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f/58bN++Hc2bN8egQYMAAKGhoShXrhycnZ3x6tUr3L59G9OnT1d6pdiIESNw5swZVKtWDW5ubggJCcE333yD7t275+WxERERERERERU4tRJvGxsbfP311wAg/ReA9LoGAJg2bRrGjBmDS5cuwdDQEJUqVcpw77aenh527NiBK1eu4PHjx3ByckLFihU//WiIiIiIiIiIChm1Eu/ixYujU6dOOcZZWlqiefPmOcZVq1YN1apVU6cLREREREREREVKnt/jTURERERERET/j4k3ERERERERkQYx8SYiIiIiIiLSICbeRERERERERBrExJuIiIiIiIhIg5h4ExEREREREWkQE28iIiIiIiIiDWLiTURERERERKRBTLyJiIiIiIiINIiJNxEREREREZEGMfEmIiIiIiIi0iAm3kREREREREQaxMSbiIiIiIiISIOYeBMRERERERFpEBNvIiIiIiIiIg1i4k1ERERERESkQUy8iYiIiIiIiDSIiTcRERERERGRBjHxJiIiIiIiItIgJt5EREREREREGsTEm4hIDWlpaUhKSsrzOqq2m5SUhJiYGCQnJ6vVByIiIiIqOEy8iYhUkJCQgG7dusHAwABGRkbw9PTE7du3P7mOOu0mJyejYcOGKFasGLZu3Zqnx0dEREREmsPEm4hIBQMHDsR///2HO3fuICoqCiVLloS3tzcUCsUn1VGn3R9++AGOjo4aO0YiIiIi0gwm3kREOXjx4gU2btyIKVOmoEyZMjA1NcW8efPw8OFD7Nq1K9d11Gn34MGD2LZtG+bPn58vx0xEREREeSdXibcQAgkJCUhJSck2TpV7EHmfIhEVdiEhIUhLS0ODBg2kspIlS8LJyQnnz5/PdR1V233x4gX69OmDv//+GyYmJho6SiIiIiLSFLUS7+joaMydOxcuLi4wMTHBxo0bM41bvHgxSpYsCX19fTg4OGDTpk25iiEiKgwiIyMBAJaWlkrlxYsXl7blpo4qMUIIdO/eHf369UO9evVU6q9CoUBcXJzSQkREREQFR63E+59//kFYWBh27NiRZcyOHTswfPhwLFy4EG/fvsWECRPg7++Ps2fPqhVDRFTYCCGU1lNSUiCTyT65TnYx8+bNQ2RkJL777jvExMQgNjYWAPD27VskJCRkus/AwECYmZlJi729vRpHSURERER5Ta3Ee+DAgZg3bx5cXFyyjJk3bx7atm2LDh06QC6XY8CAAahdu7bSfYmqxBARFRalSpUC3l/y/aHIyEiULFky13VUibl16xYePXqEcuXKwcHBAc7OzgCA7777Dr6+vpnuOyAgALGxsdISHh6eq+MmIiIioryRpw9XE0Lg/PnzaNiwoVJ5kyZNcO7cOZVjiIgKE3d3d+jq6iIoKEgqu3//Ph4+fAhPT0+pLD4+HomJiSrXUSVm6dKliImJkZaIiAgAwIoVK3D06NFM+yuXy2Fqaqq0EBEREVHB0cnLxtJPOq2trZXKra2tpfsVVYnJjEKhUHq9Du9ZJKL8Ym5ujsGDB+OHH35A2bJlYWVlhSFDhqB69er46quvpLh69eqhbt26+PPPP1Wqo2q7RERERFS05WninS4tLS3D+sf3NKoS86HAwEBMmTIlj3tKRKSaWbNmwdjYGL1790ZiYiKaNGmCjRs3QltbW4oxNTWFoaGhWnVUifmQTCaDmZkZ9PT0NHzERERERJRX8jTxNjExgbGxcYaZ68jISJQoUULlmMwEBARg5MiR0npcXBwfGERE+UZXVxe//vorfv311yxjzpw5o3YdVWI+JJfLERMTo0bPiYiIiKig5ek93jKZDPXr11e6XxEADh06JN2vqEpMZnjPIhERERERERVFas14p6amSg8Owvv7rhMSEqCrqwu5XA4AGDt2LLy8vPDHH3/A19cXf/31F27cuIG//vpLqqdKDBEREREREdHnQK0Z75MnT8LW1ha2trYwMjLC8OHDYWtri1GjRkkxTZs2xaZNm7B8+XK4ublhz5492LNnD1xdXdWKISIiIiIiIvocqDXj3bhxYyQkJOQY17FjR3Ts2PGTY4iIiIiIiIiKujy9x5uIiIiIiIiIlDHxJiIiIiIiItIgJt5EREREREREGsTEm4iIiIiIiEiDmHgTERERUZGSnJyM5OTkbGPS0tLyrT9ERDlh4k1EREREhV5aWhr27t0LX19f6Ovro3PnzpnGXblyBfXq1YOenh7Mzc0xYsQIpKSk5Ht/iYg+pNbrxIiIiIiICkJYWBgWLlyIQYMGQUdHB0KIDDGxsbHw8vJC27ZtsX//fty7dw8+Pj6Qy+WYNm1agfSbiAic8SYiIiKiosDR0RF79+5FmzZtoK2tnWnMunXrkJCQgHnz5sHMzAw1a9bE6NGj8ccff0ChUOR7n4mI0jHxJiIiIqLPwtmzZ1GrVi0YGhpKZU2aNEF8fDxu3LhRoH0joi8bLzUnIiIios/CixcvYG1trVRWvHhxaVtmFAqF0mx4XFychntJRF8izngTERER0Wfj46eZp6/LZLJM4wMDA2FmZiYt9vb2+dJPIvqyMPEmIiIios9CiRIlEBkZqVSWvm5ra5tpnYCAAMTGxkpLeHh4vvSViL4svNSciIiIiD4Lnp6e2LRpE+Lj42FiYgIACAoKgrm5OSpXrpxpHblcDrlcns89JaIvDWe8iYiIiKhIUCgUePfuHdLS0pCWloZ3794p3Z/9zTffoHjx4hgwYAAeP36MI0eOYMaMGRgxYgR0dXULtO9E9GXjjDcRERERFQllypRBTEyMtG5ubg5zc3NEREQAAIyNjXH48GEMHz4crq6uMDMzw/DhwzFx4sQC7DURERNvIiIiIioi0hPs7FSoUAH79u3Ll/4QEamKl5oTERERERERaRATbyIiIiIiIiINYuJNREREREREpEFMvImIiIiIiIg0iIk3ERERERERkQYx8SYiIiIiIiLSICbeRERERERERBrE93gTEano9evXOHjwIBITE9GgQQM4OTnlSR1VYi5fvowrV67AwsICDRo0gLm5eZ4dFxERERFpFme8iYhUEBwcDCcnJ/zxxx/YuXMnXF1dsWTJkk+uk1PMkydP4OHhgT59+uDIkSOYOXMmypYtiwMHDmjsWImIiIgob+X5jPd///2H4OBgpTK5XI7evXsrlaWlpeHYsWMICwtD+fLl4enpmdddISLKM71794aPjw/+/vtvAMCyZcswbNgwtG7dGnZ2drmuk1NMamoq5syZg7p160rtDhs2DD169MCLFy/y4ciJiIiI6FPl+Yz33r17MWnSJFy+fFlarl27phTz9u1bNG7cGL169cL+/fvRqVMntGvXDikpKXndHSKiT3bt2jWEhoZiyJAhUlmPHj2gq6uL7du357qOKjFlypRRSroBoHnz5oiMjMTr16/z/FiJiIiIKO9p5B5vR0fHbC/BnDFjBu7fv48rV67AysoKDx8+hKurK1asWIGBAwdqoktERLkWGhoKAKhYsaJUpq+vD0dHR2lbburkpl0A2LlzJxwcHGBhYZHpdoVCAYVCIa3HxcWpfKxERERElPc0co93XFwc1q1bh61bt+Lhw4cZtm/cuBF+fn6wsrIC3ifq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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, axes = plt.subplots(1, 3, figsize=(10, 4))\n", "for ax, column in zip(axes, pca, strict=True):\n", " values = seeds[column]\n", " low, high = values.mean() - values.min(), values.max() - values.mean()\n", " ax.bar(\n", " [\"X_pca\", \"X_harmony\"],\n", " [pca[column], values.mean()],\n", " yerr=[[0, low], [0, high]],\n", " capsize=6,\n", " color=[\"grey\", \"steelblue\"],\n", " )\n", " ax.set_title(column)\n", "fig.tight_layout()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "fig014", "metadata": {}, "source": [ "Left to right: the mean spread of the site centroids, the cross-source mAP and the compounds significant of 301, for PCA and for Harmony. PCA is deterministic and has one value; the Harmony bar is the mean over five seeds and its whisker the range." ] }, { "cell_type": "markdown", "id": "c020", "metadata": {}, "source": [ "Across five seeds, the spread of Harmony's site centroids runs from 277 to 422, against 418 for PCA, so most seeds pull the\n", "sites closer and one barely moves them. Harmony's cross-source mAP spans 0.014 to 0.016, against 0.016 for PCA, and it\n", "calls 37 to 44 compounds significant, against 54. Harmony does not improve retrieval here, and the batch-mixing side\n", "of the heatmap above disagrees with the spread: iLISI falls sharply.\n", "\n", "The compounds that lose retrieval under Harmony are the ones PCA already retrieves best, so its default\n", "diversity penalty (`theta`) takes part of the compound signal along with the differences between laboratories. A\n", "smaller `theta` corrects less, and on this screen it keeps those compounds.\n", "\n", "iLISI asks whether a well's nearest neighbors come from several sites. Harmony aligns the sites\n", "globally without mixing local neighborhoods, so a well stays surrounded by wells from its own\n", "site while the site clouds move together. Both observations hold, and retrieval is the one that\n", "answers the screen's question.\n", "\n", "Harmony can return the embedding unchanged. `pp.harmony` compares its\n", "output with its input and warns when they are identical, so that uncorrected numbers do not\n", "pass unnoticed through the rest of the pipeline." ] }, { "cell_type": "markdown", "id": "c023", "metadata": {}, "source": [ "## Which compounds reproduce across sites?\n", "\n", "The results above are aggregates: one mAP for the screen, one LISI per representation. Follow-up\n", "work needs to know which compounds reproduced, which the page has not yet shown.\n", "\n", "`tl.transport` answers that. It computes each perturbation's effect as its profile minus the\n", "control centroid of its own setting, so a baseline offset does not count as disagreement, and\n", "measures how well those effect vectors agree across settings. `by=` takes a list from coarsest\n", "to finest level, and each pair of plates is assigned to the coarsest level at which the two\n", "differ, so every comparison belongs to exactly one level.\n", "\n", "With one plate per laboratory, as so far, laboratory and plate effects are the same comparison\n", "and cannot be separated. The next cell loads twelve of the 141 plates `jump_target2` pins: three\n", "sources, two batches each, two plates per batch.\n", "\n", "This section uses only the per-plate `mad_robustize` normalization from earlier, without\n", "`rank_int`, Harmony or the other corrections evaluated above. Its numbers are an uncorrected\n", "baseline on a different set of plates and are not comparable with the eleven-plate mAP values\n", "earlier on this page." ] }, { "cell_type": "code", "execution_count": 21, "id": "c024", "metadata": { "execution": { "iopub.execute_input": "2026-11-11T02:36:05.642181Z", "iopub.status.busy": "2026-11-11T02:36:05.641995Z", "iopub.status.idle": "2026-11-11T02:36:26.561592Z", "shell.execute_reply": "2026-11-11T02:36:26.560668Z" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "UserWarning: 67 of 3616 features have no spread in at least one group of 'Metadata_Plate' among the rows selected by reference='negcon' (Cells_RadialDistribution_FracAtD_mito_tubeness_Overflow, Cells_RadialDistribution_MeanFrac_mito_tubeness_Overflow, Cells_RadialDistribution_RadialCV_mito_tubeness_Overflow, Cytoplasm_RadialDistribution_FracAtD_mito_tubeness_10of20, Cytoplasm_RadialDistribution_FracAtD_mito_tubeness_11of20 and 62 more). They cannot be scaled there, so their values in those groups are set to NaN. They are flagged in var['degenerate_scale'], and pp.feature_select drops them by default; to drop them now, adata = adata[:, ~adata.var['degenerate_scale']].copy(). A variance or outlier cut does not catch a feature that varies across a plate but is constant among its control wells; the flag does.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "UserWarning: 24 selected feature(s) hold values more than outlier_cutoff=500 robust standard deviations from their own median (Cells_AreaShape_Area, Cells_AreaShape_Compactness, Cells_AreaShape_EulerNumber, Cells_Correlation_Manders_DNA_ER, Cells_Intensity_MinIntensity_DNA and 19 more). They can dominate distances and PCA. Add 'drop_outliers' to operations to drop them, or check where the extreme values come from; on single cells, before aggregation, since a median profile hides a few extreme cells.\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
compoundsagreementreproduce
level
Metadata_Plate3010.47475
Metadata_Batch3010.36375
Metadata_Source3010.13561
\n", "
" ], "text/plain": [ " compounds agreement reproduce\n", "level \n", "Metadata_Plate 301 0.474 75\n", "Metadata_Batch 301 0.363 75\n", "Metadata_Source 301 0.135 61" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hierarchy = mt.ds.jump_target2(\n", " plates=[\"JCPQC051\", \"JCPQC052\", \"JCPQC053\", \"JCPQC054\"]\n", " + [\"BR00121438\", \"BR00121439\", \"BR00126113\", \"BR00126114\"]\n", " + [\"110000294936\", \"110000296682\", \"110000296339\", \"110000296356\"]\n", ")\n", "mt.pp.normalize(hierarchy, method=\"mad_robustize\", by=\"Metadata_Plate\", reference=\"negcon\")\n", "hierarchy = hierarchy[:, ~hierarchy.var[\"degenerate_scale\"].to_numpy()].copy()\n", "mt.pp.feature_select(hierarchy, na_cutoff=0.0)\n", "hierarchy = mt.pp.subset_features(hierarchy)\n", "\n", "mt.tl.transport(hierarchy, by=[\"Metadata_Source\", \"Metadata_Batch\", \"Metadata_Plate\"])\n", "by_level = hierarchy.uns[\"mantispy\"][\"transport\"]\n", "by_level.groupby(\"level\", observed=True).agg(\n", " compounds=(\"group\", \"size\"),\n", " agreement=(\"agreement\", \"median\"),\n", " reproduce=(\"is_significant\", \"sum\"),\n", ").round(3).reindex([\"Metadata_Plate\", \"Metadata_Batch\", \"Metadata_Source\"])" ] }, { "cell_type": "code", "execution_count": 22, "id": "fig011", "metadata": { "execution": { "iopub.execute_input": "2026-11-11T02:36:26.563955Z", "iopub.status.busy": "2026-11-11T02:36:26.563717Z", "iopub.status.idle": "2026-11-11T02:36:26.660997Z", "shell.execute_reply": "2026-11-11T02:36:26.660015Z" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxYAAAGGCAYAAADmRxfNAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjExLjIsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvgI3uAAAAAAlwSFlzAAAPYQAAD2EBqD+naQAARCtJREFUeJzt3XlcVmX+//E3myAoIhIqgoCCoqikjmIuKa6Zms6kYjPlVDiZ3zGzcsrMSsdpMscpJ22qGROjZcwFl0zTsSRBzV3TXNEUt0pFARW9Fa7fHz850x2QwEFxeT0fDx8P73Ouc12fc4AL3vdZbhdjjBEAAAAA2OBa0QUAAAAAuPkRLAAAAADYRrAAAAAAYBvBAgAAAIBtBAsAAAAAthEsAAAAANhGsAAAAABgG8ECAAAAgG3uFV0Abk75+fk6duyYqlatKhcXl4ouBwBsMcYoJydHQUFBcnW1/54bcySAW0Vp5keCBcrk2LFjCgkJqegyAKBcHT58WMHBwbb7YY4EcKspyfxIsECZVK1aVbryTebr61vR5QCALdnZ2QoJCbHmNruYIwHcKkozPxIsUCYFp/Z9fX35pQngllFely0xRwK41ZRkfuTmbQAAAAC2ESwAAAAA2EawAAAAAGAbwQIAAACAbQQLAAAAALYRLAAAAADYRrAAAAAAYBvBAgAAAIBtBAsAAAAAthEsAAAAANhGsAAAAABgG8ECAAAAgG3uFV0Abm6/fm2Z3L28K7qMW8KyF3tVdAkAylnbNx+Rm5dHRZcBoIS2jZpV0SXc1DhjAQAAAMA2ggUAAAAA2wgWAAAAAGwjWAAAAACwjWABAAAAwDaCBQAAAADbCBYAAAAAbCNYAAAAALCNYAEAAADANoIFAAAAANsIFgAAAABsI1gAAAAAsI1gAQAAAMA2ggUAAAAA2wgWAAAAAGwjWAAAAACwjWABAAAAwDaCBQAAAADbCBYAAAAAbCNYAAAAALCNYAEAAADANoIFAAAAANsIFgAAAABsI1gAAAAAsI1gAQAAAMA2ggUAAAAA2wgWAAAAAGwjWAAAAACwjWABAAAAwDaCBQAAAADbCBYAAAAAbCNYAAAAALCNYAEAAADANoIFAAAAANsIFgAAAABsu6WCxa5du7Rnz56KLgMAAAC47biXpvHu3bv1/fffKzw8XKGhoU7rjh8/rj179sjf31/NmjUrcZ/bt29X5cqVFRERUZpSivTKK6/Iy8tL06dPr5Dxf+7QoUP64YcfVK9ePQUEBJR7/wAAAMCNolRnLCZOnKi4uDg99thjhdY9++yziouL07PPPluqAp5//nlNmzatVNuUp2sx/rfffqsWLVqoZcuWeuKJJ9S0aVN16dJF27ZtK9dxAAAAgBtFqc5YSNKdd96pr776ShkZGapbt64k6cyZM0pOTlarVq2K3Obw4cM6evSo6tWrp8DAQGv57t27derUKXl5eSklJUWS1Lp1ax05ckTHjh2TJNWoUUORkZHy8vIq1G9eXp62bdumqlWrqn79+oXW79279xf7sTt+cR544AFFRkbq66+/VqVKlSRJX331lb777jvFxMQ4td2zZ48yMzMVFRWl6tWrO63buHGjatasqZCQEGvZzp075ebmpoYNG0qStf/BwcHasWOH3NzcrDGMMdq9e7cuXLigJk2ayMPDw6n//Px87dy5Uw6HQw0bNpSPj0+J9xEAAAD4qVIHi5o1ayosLEwzZ87USy+9JEn66KOP1LJlS9WtW1cnT5602mZlZemhhx7S6tWrVb9+fe3bt0+9evXSjBkzVKlSJS1YsEB79+7V4cOHre2SkpK0ePFiLVq0SJL0ww8/6Mcff1RiYqLuu+8+q+9Dhw6pR48eOn36tAIDA5Wfny9fX19FR0dbba7Wj53xi3PhwgVt375dzz33nBUqJKljx45O7Y4ePap+/frpwIEDCg4O1r59+/TCCy/ohRdesNoMGTJEDz74oEaNGmUt+/Of/6wqVapYl3s988wzcnV11YEDB+Tn56f27dtrypQp2rBhg377298qOztbQUFBys7O1kcffaQ2bdpIV0LLoEGDZIyRn5+f9u/fr0mTJhV5NgoAAAC4mlIHC0lKSEjQE088oRdffFEuLi5677339OSTT+q///2vU7vHH39c7u7uOnLkiCpXrqwzZ86oU6dOmjRpksaOHavRo0crLS1NERERmjJlirXd008/raefftp6nZSUpEcffVQHDx5UlSpVJEkjRoxQcHCwtm3bJk9PT33yyScaNGiQU7C4Wj92xi+Ol5eXIiIiNG3aNDVq1EjNmzeXi4tLoXZPPPGEvLy8lJGRIR8fH61YsUI9evTQ3XffrQ4dOpTiqyGlpaVp3bp1atq0qXTlDNK9996rAQMGaOrUqXJzc9ORI0es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/0OGDDF33nmnycnJMcYY89133xk/Pz/z1ltvWW0SEhKMl5eX2bVrlzHGGIfDYcLDw42Pj49JT083xhiTm5tratWqZd59912n7SSZ5cuXG3Nl/vzNb37jND+VZPySBgsvLy8rSOTn55tu3bqZwYMHW20eeeQR06ZNG3P+/HljjDE7duwwlSpVsvq5fPmy8fLyMkuWLLG22bdvn/nmm2+KPLYJCQnGzc3NbNy40VrmcDhMWFiYeeONN6xlP/74o6ldu7b5z3/+Yy2rUaOGCQ0Ntf4oP378uKlVq5bTHFSjRg3TpEkTk52dbS1LS0szLi4uJjU11Tqm999/v2ndurU1561atcqpLofDYeLi4kodLArGmjt3rtXmwIED1vEoLliMHTvWav/hhx8aT09P65h/+eWXhWrr2rUrwcIm7rEAblCRkZGKi4uTJLm4uCg2NlZNmjRR27ZtJUmurq5q3bq19u7da22TmJiomJgYLV++XHPmzNHs2bPl7++v9evX69y5c5Kk2bNnKyEhQf7+/pKkoKAgPfTQQ1etp+ASrLlz5yotLU116tTR+vXrndpERESoa9eu1utOnTppz549tvqdO3euU721atUqst6QkBD169fPer13716tWbNG9erV07x58zRnzhwtXrxY9evX18qVK0vcpsDAgQPl5+dnHbPQ0FANGjRIvr6+kqR69eopMDDQ+nqUtu+C/atcubJiY2OvetyAm8nly5f10UcfadSoUU6XR/bt29f6/yeffKIRI0aoSpUqkqSwsDA9+OCD1iWABe6++25FRUVJkjw8PNSyZUt16dLFusTHy8tLd955p9PcKEl33nmnunXrJl2ZP0eNGqVVq1bphx9+KNX4JdGhQwfrskcXFxd17NjR6Wd6zpw5Gj58uHW5TXR0tHXpUkF9np6e2rFjh/Lz86Ur8+vPL836qbZt26ply5bW65UrV+rQoUMKDAzU3LlzNWfOHK1cubLIOeiRRx5RQECAdGWOHTx4sGbPnl2ozU8vHZs1a5Y6dOig9u3bWzU///zzWr9+vb777jvrmMbFxVl1eXh46Kmnnir18UxKSlJsbKzT5VLh4eG/eDwkadiwYdb/O3XqpIsXL+rQoUPSld8tP69t5MiRpa4NzrjHArhB/fx6XE9PzyKXXbhwwXp98OBBVatWrdCNvgMHDlRubq58fHyUkZGhsLAwp/Xh4eG/WMvXX3+tfv36yd/fXxEREfL29lZmZqZ+/PFHp3YFfxwXV19Z+j18+HChen/+WpJq167t9PrgwYOSpFWrVsnNzc1aXqlSJTVo0KDEbQqU9utRmr5Le9yAm82pU6d0/vz5Qt/7BTIzM5WTk6N69eo5La9fv74WLVrktKyonzsfH59Cy37+M1TcvHfo0CF5eHiUePyS+KWf6czMTJ09e7bIerZu3SpdCSMffvihRo4cqUmTJunuu+9WfHy8de9YUYqaAytVqlSo/jp16hT6OhRVywcffPCL/R86dKjI4/XTdWX5fVOUjIyMYr93fslPvw4F918UfB1K+rsFpUOwAG4hvr6+6tOnj8aMGVNsmxo1auj06dNOy37++ueeffZZxcfH6x//+Ie1rE2bNjLG2Kq3JP36+/vrzJkzV6335zcEFpxJGD9+vBo3blzk+CVpU1bXsm/gZlO1alW5uroW+4jRatWqycPDQ5mZmU7LMzMzrXfS7Spu3gsICCjx+K6urtYZhAKlfRPA19dX7u7uV52He/furd69eys9PV1Lly7V448/roMHD+rZZ58tst+i5kCHw6Hp06dbZ2GKU1QtPz/uP+8/ICCg0Nez4PgVbFuS3zclOaZ+fn7l+nhaleJ3C0qHS6GAW8g999yjxMREXbx40Wn50aNHrf+3b99eCxYssF4bYzR//vxf7Pf77793eprGgQMHrKcj2VGSftu1a6eFCxc61fvpp59ete8WLVooMDBQ77zzTqF1x44dK3GbsirPvqtUqcIZDNzUvL291b59eyUlJTktP3HihCRZT0NLTk621uXn5ys5Odm61Maur7/+Wt9//731Ojk5WcHBwQoNDS3x+HXq1FF6erpTm6+++qpUdbi7u6tNmzZO8/CFCxe0ZMkSp9cFf6RHREToiSee0K9//Wt9/fXXJR6nU6dOqlSpkv71r385Lc/Ly7Mu/ypQ1O+Edu3a/WL/7du318qVK53+GJ8zZ44CAwOtswvt27fXF198oZycHKvNT4+xrhzT3Nxcp3nx55dqde/eXV9++aWOHDliLcvPz7cVNtq1a6cvvvhCZ8+etZb99HcNyoYzFsAt5NVXX1WHDh3UunVrPfLII/Lw8NDq1auVnZ2txYsXS5JefPFF/epXv9LAgQPVtWtXLVq0SIcPHy7ysbUF+vXrpwkTJujy5cvKy8vTlClTyuVRfCXpt6DeBx54QJ07d9Znn32mAwcOWPc7FKdSpUqaPn26BgwYoB9++EFdu3bVyZMntWjRIg0ePFjDhg0rUZuyKs++f/WrX2nWrFlq2LChKleuzONmcVN68803FRcXp169eum+++7T0aNHtXTpUm3YsEGSNHnyZHXs2FEeHh5q06aN5s6dq8zMTL3wwgvlMr6Pj4+6du2qYcOG6fDhw/r73/+uxMRE61LFkoz/4IMPql27dnrmmWfUqFEjzZs3T0ePHlWNGjVKVctf//pXdenSRe7u7mrevLmSkpJ0+fJla/25c+cUGxurPn36qGnTpjp27Jhmz56td999t8Rj1KpVS1OmTNETTzyh3bt3KzY2VkeOHNG8efP017/+1emejm+//Vb9+/dX9+7dtXjxYqWnp1/1s3N+//vf65133lGnTp00dOhQZWRk6I033tC///1v67KjwYMHa8qUKercubMSEhK0a9euQves3HnnnWratKkGDhyoRx55RHv37tV//vMfpzYPPfSQZs2apbvuuktPPPGEvL299cknn2jChAnWY35L6/e//73eeOMNdenSRY888oj27Nmjjz/+WCri7AxKjmAB3ICio6MLnXVo1qyZKlWq5LSsRYsWCgoKsl7Xrl1bW7duVVJSkjZu3KgqVaqoX79+6t+/v9WmQYMGWr9+vd59911t3rxZ999/v5566imnswA//4C8V199VZGRkVq7dq18fHyUmJiojRs3Ot2EWVTNISEhTjfb/VxJ+o2KitL69ev1r3/9S5s2bVLfvn0VGxurOXPm/OLYktSnTx/t2LFDH3zwgdLS0hQSEqKpU6fqV7/6Vana9OjRo9DlTD179iz0TPQ+ffo4PSO+rH3fddddTp+HMWbMGPn7+2vVqlXKzc1Vz549CRa46cTExGjHjh167733tHbtWjVo0EDLly+31rdu3VqbN29WYmKi0tLS1KFDB33wwQcKDAx0avPzs3c//3nRlZunf36fQ7du3fTYY49p8eLFysnJ0eLFi9WjR49SjR8bG6uvvvpKs2bN0vbt2zV8+HBlZ2frwIEDv1hjVFSU7rnnHqf60tLSNHPmTO3YsUNPPfWU8vPztW/fPunKJUSbNm3SzJkztXr1alWvXl1Lly4t9uxNUWNK0uOPP67Y2Fh98sknWrVqlerVq6c5c+YUmrumTJmic+fOadOmTWrQoIHeeOMN1a1b11r/m9/8RqGhoU7buLm5KSUlRdOnT9f69etVtWpVrVixQh06dLDaeHh4aNWqVZo6darWr1+vqKgorVq1Si+//LK8vb2d+nnzzTe1du1aRUdH64svvtCLL75otXF3d9dnn32m//znP/rqq69UtWpV/e1vf1ObNm2kIj4g74477lB8fLzT/W2enp6Kj4+37tGpVKmS0tLS9Oabb1q1ffDBB+rRo0ehzzdBybkYuxdJA8A1lJeXp3Pnzln3LEhSXFycIiIi9O9//7tCawNwcxgyZIjOnj1bpic83eoCAgI0bdo0DRo0qKJLue4yMzOdAui4ceP00UcfWQEPpccZCwA3tEuXLqlTp07q37+/atSooUWLFumbb77R22+/XdGlAQBuYkOHDlVYWJiioqK0adMmzZgxQzNmzKjosm5q3LwN4Ibm5eWl5ORkXbp0SevXr1e7du20c+dO6zn2AHA1rVu3tj4DCM6KuszpdpGYmKjg4GCtXbtW1atX19q1a/Xb3/62osu6qXEpFAAAAADbOGMBAAAAwDaCBQAAAADbCBYAAAAAbCNYAAAAALCNYAEAAADANoIFAAAAANsIFgAAAABsI1gAAAAAsI1gAQAAAMC2/wfMpIcJ2Qi7xAAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "levels = [\"Metadata_Plate\", \"Metadata_Batch\", \"Metadata_Source\"]\n", "summary = (\n", " by_level.groupby(\"level\", observed=True)\n", " .agg(\n", " agreement=(\"agreement\", \"median\"),\n", " reproduce=(\"is_significant\", \"sum\"),\n", " )\n", " .reindex(levels)\n", ")\n", "fig, axes = plt.subplots(1, 2, figsize=(8, 4), sharey=True)\n", "axes[0].barh(levels, summary[\"agreement\"], color=\"steelblue\")\n", "axes[0].set_xlabel(\"median agreement\")\n", "axes[1].barh(levels, summary[\"reproduce\"], color=\"seagreen\")\n", "axes[1].set_xlabel(\"compounds reproducing\")\n", "fig.tight_layout()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "fig012", "metadata": {}, "source": [ "Left: median effect agreement at each level. Right: compounds reproducing at q < 0.05. Agreement falls from plate to batch to source." ] }, { "cell_type": "markdown", "id": "c025", "metadata": {}, "source": [ "Read the table row by row. A compound's effect agrees at +0.474 between two plates of one\n", "batch, at +0.363 between batches of one laboratory, and at +0.135 between laboratories. Each\n", "step up the hierarchy lowers agreement, and the step between laboratories costs about twice\n", "as much as the step between batches.\n", "\n", "A single aggregate cross-source mAP shows that the sites disagree, but not whether to fix\n", "plate handling or the protocol. The gap between levels does.\n", "\n", "The `reproduce` column counts the compounds whose agreement beats the null at q < 0.05. The\n", "null uses every mismatched pair of compounds at that level instead of a sample. A sampled null\n", "would not give Benjamini-Hochberg enough resolution: its smallest possible p-value is one over\n", "the number of draws, so the count would reflect the number of draws rather than the screen.\n", "\n", "`pl.setting_agreement`, in the figure below, reads the same effect vectors by plate instead of\n", "by compound: it shows which of the twelve plates agree with each other. Annotating by source\n", "draws a line at each laboratory boundary, so a laboratory that disagrees with itself appears as\n", "a broken block. Its cells are an activity-weighted mean over compounds, while the table's\n", "per-level number is an unweighted median, so the heatmap reads higher than the table for the\n", "same pair of settings. Use it to see which settings differ from each other, not to compare\n", "absolute levels with the table." ] }, { "cell_type": "code", "execution_count": 23, "id": "c026", "metadata": { "execution": { "iopub.execute_input": "2026-11-11T02:36:26.663440Z", "iopub.status.busy": "2026-11-11T02:36:26.663303Z", "iopub.status.idle": "2026-11-11T02:36:26.794536Z", "shell.execute_reply": "2026-11-11T02:36:26.792538Z" } }, "outputs": [ { "data": { "text/html": [ "
\n", "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "mt.pl.setting_agreement(hierarchy, by=\"Metadata_Source\");" ] }, { "cell_type": "markdown", "id": "c027", "metadata": {}, "source": [ "## Summary\n", "\n", "- \"Site\" is ambiguous in this field. JUMP's source is a laboratory; CellProfiler's\n", " `Metadata_Site` is a field of view.\n", "- Judge a correction by the question your screen asks. On this data iLISI\n", " and retrieval disagreed about Harmony, and the corrections that pooled the sites left no\n", " compound significant.\n", "- Reproducibility has levels. `tl.transport` separates them, and the gap between two levels\n", " is more actionable than either value alone. It is an observational measure: it supports\n", " \"this effect did not reproduce at the other site\", but not \"this effect would have been\n", " *x* at the other site\".\n", "\n", "Next: [Learned embeddings against CellProfiler](learned_embeddings.ipynb), the same question asked of six\n", "feature sets." ] } ], "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.13.15" } }, "nbformat": 4, "nbformat_minor": 5 }