{ "cells": [ { "cell_type": "markdown", "id": "md-intro", "metadata": {}, "source": [ "# Correcting plate position for hit-calling and profiling\n", "\n", "Position effects are real. Edge wells evaporate, corners sit at a different temperature, and dispensing drifts\n", "along a row. `mt.pp.correct_plate_position` removes a plate's row and column effects with a two-way median\n", "polish (Tukey), which a few extreme wells cannot distort. Whether you should correct depends on what you\n", "measure. A single readout is one number per well, as in a biochemical hit screen. A multivariate profile is\n", "hundreds of morphology features per well.\n", "\n", "The default method, `b_score` ({cite:t}`Brideau_2003`), divides the median-polish residual by the plate's\n", "median absolute deviation (MAD), which gives a robust position-corrected z-score per plate. The `median_polish`\n", "method subtracts the effects and keeps the data's units. On a single readout the correction recovers hits that a\n", "gradient hides. On a multivariate profile it lowers compound retrieval. The correction helps for hit-calling\n", "against a gradient, and it does not help for multivariate profiling." ] }, { "cell_type": "code", "execution_count": 1, "id": "code-imports", "metadata": { "execution": { "iopub.execute_input": "2026-10-21T01:27:48.422349Z", "iopub.status.busy": "2026-10-21T01:27:48.421968Z", "iopub.status.idle": "2026-10-21T01:27:52.498160Z", "shell.execute_reply": "2026-10-21T01:27:52.496531Z" } }, "outputs": [], "source": [ "import warnings\n", "\n", "import anndata as ad\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import pandas as pd\n", "\n", "import mantispy as mt\n", "\n", "warnings.filterwarnings(\"ignore\")" ] }, { "cell_type": "markdown", "id": "md-positive", "metadata": {}, "source": [ "## Hit-calling on a single readout\n", "\n", "On a single readout a gradient can hide real hits. An active well in a cool corner reads lower than an inactive\n", "well in a warm corner. The plate below is synthetic. It has a strong row and column gradient, six real hits\n", "placed at random, and otherwise-inactive wells. We score the result by how many of the six hits land in the top\n", "six wells, which we call precision at six." ] }, { "cell_type": "code", "execution_count": 2, "id": "code-positive", "metadata": { "execution": { "iopub.execute_input": "2026-10-21T01:27:52.502497Z", "iopub.status.busy": "2026-10-21T01:27:52.502229Z", "iopub.status.idle": "2026-10-21T01:27:53.324610Z", "shell.execute_reply": "2026-10-21T01:27:53.323236Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "n_rows, n_cols = 8, 12 # a 96-well plate is 8 rows (A-H) by 12 columns\n", "names = [f\"{r}{c:02d}\" for r in \"ABCDEFGH\" for c in range(1, n_cols + 1)]\n", "rows = np.array([r for r in range(n_rows) for _ in range(n_cols)], dtype=float)\n", "cols = np.array([c for _ in range(n_rows) for c in range(n_cols)], dtype=float)\n", "rng = np.random.default_rng(0)\n", "\n", "gradient = 6.0 * rows / rows.max() + 4.0 * cols / cols.max()\n", "readout = gradient + rng.normal(0.0, 0.3, len(names))\n", "hits = rng.choice(len(names), size=6, replace=False) # six real hits, scattered at random\n", "readout[hits] += 3.0 # a randomized layout, as B-score assumes\n", "\n", "plate = ad.AnnData(\n", " X=readout.reshape(-1, 1).astype(np.float32),\n", " obs=pd.DataFrame(\n", " {\"Metadata_Plate\": \"demo\", \"Metadata_Well\": names},\n", " index=[str(i) for i in range(len(names))],\n", " ),\n", " var=pd.DataFrame(index=[\"readout\"]),\n", ")\n", "mt.io.stamp(plate, resolution=\"well\", feature_kind=\"measurement\")\n", "scored = mt.pp.correct_plate_position(plate, method=\"b_score\", reference=None, copy=True)\n", "\n", "\n", "def hit_precision(values, k=6):\n", " \"\"\"Share of the true hits among the top-k wells -- how we measure whether correction helped.\"\"\"\n", " return len(set(np.argsort(values)[::-1][:k]) & set(hits.tolist())) / k\n", "\n", "\n", "raw_precision = hit_precision(readout)\n", "b_precision = hit_precision(np.asarray(scored.X, dtype=float)[:, 0])\n", "\n", "fig, axes = plt.subplots(1, 2, figsize=(10, 3.6), layout=\"constrained\")\n", "mt.pl.plate(plate, color=\"readout\", plate=\"demo\", ax=axes[0])\n", "axes[0].set_title(f\"raw (hit precision@6 = {raw_precision:.2f})\", fontsize=10)\n", "mt.pl.plate(scored, color=\"readout\", plate=\"demo\", ax=axes[1])\n", "axes[1].set_title(f\"B-score (hit precision@6 = {b_precision:.2f})\", fontsize=10)\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "md-positive-read", "metadata": {}, "source": [ "Raw, the gradient lifts warm-corner background above hits in cool wells, so some hits miss the top six. After\n", "the B-score the gradient is gone and the six hits are the top six, with the precision shown in the panel titles.\n", "The B-score works here because four conditions hold. First, the data is a single readout. Second, the task is\n", "hit-calling. Third, the layout is randomized. Fourth, most wells are inactive. On a profile the conditions do\n", "not hold, which the rest of the page shows." ] }, { "cell_type": "markdown", "id": "md-negative", "metadata": {}, "source": [ "## Multivariate profiling\n", "\n", "A morphological profile is different. It is hundreds of correlated features per well, where position is a small\n", "part and the biology is each compound's full multivariate shift. The shift has to stay comparable across plates\n", "and laboratories. The plates below are five from one laboratory (source_4) that carry a real position artifact\n", "and five from other laboratories that do not. Each plate is normalized against its DMSO negative controls\n", "(`negcon`) with `mad_robustize`, which centres on the median and scales by the MAD. `detect_plate_position`\n", "scores each plate by cross-validation. It fits the row and column effects on part of the control wells and\n", "checks how well they predict the held-out controls, reported as `cv_r2_median`. The column\n", "`frac_features_positive` is the share of features where that prediction beats the plate mean. A score above zero\n", "means the pattern generalizes." ] }, { "cell_type": "code", "execution_count": 3, "id": "code-setup", "metadata": { "execution": { "iopub.execute_input": "2026-10-21T01:27:53.328821Z", "iopub.status.busy": "2026-10-21T01:27:53.328608Z", "iopub.status.idle": "2026-10-21T01:28:26.805210Z", "shell.execute_reply": "2026-10-21T01:28:26.803807Z" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Downloading file '2021_08_23_Batch12__BR00126115__BR00126115.parquet' from 'https://cellpainting-gallery.s3.amazonaws.com/cpg0016-jump/source_4/workspace/profiles/2021_08_23_Batch12/BR00126115/BR00126115.parquet' to ''.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 0%| | 0.00/13.3M [00:00'.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 0%| | 0.00/13.3M [00:00'.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 0%| | 0.00/13.2M [00:00'.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 0%| | 0.00/55.5M [00:00'.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 0%| | 0.00/55.6M [00:00'.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 0%| | 0.00/55.5M [00:00\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", " \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", "
groupn_controlscv_r2_medianfrac_features_positivesource
2BR00126113640.7840.823source_4
5BR00126116640.7540.789source_4
4BR00126115640.7120.795source_4
6BR00126117640.7100.793source_4
3BR00126114640.5040.651source_4
8GR00003394256-0.1290.307source_9
7CP1-SC1-2564-0.5450.153source_7
9JCPQC05164-0.6590.169source_3
1ACPJUM01264-0.8250.026source_5
0105360067465-0.8390.084source_2
\n", "" ], "text/plain": [ " group n_controls cv_r2_median frac_features_positive source\n", "2 BR00126113 64 0.784 0.823 source_4\n", "5 BR00126116 64 0.754 0.789 source_4\n", "4 BR00126115 64 0.712 0.795 source_4\n", "6 BR00126117 64 0.710 0.793 source_4\n", "3 BR00126114 64 0.504 0.651 source_4\n", "8 GR00003394 256 -0.129 0.307 source_9\n", "7 CP1-SC1-25 64 -0.545 0.153 source_7\n", "9 JCPQC051 64 -0.659 0.169 source_3\n", "1 ACPJUM012 64 -0.825 0.026 source_5\n", "0 1053600674 65 -0.839 0.084 source_2" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "flagged = [\"BR00126113\", \"BR00126114\", \"BR00126115\", \"BR00126116\", \"BR00126117\"]\n", "clean = [\"JCPQC051\", \"ACPJUM012\", \"1053600674\", \"GR00003394\", \"CP1-SC1-25\"]\n", "jump = mt.ds.jump_target2(plates=flagged + clean)\n", "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", "mt.pp.detect_plate_position(jump, reference=\"negcon\")\n", "detection = jump.uns[\"mantispy\"][\"plate_position_detection\"].copy()\n", "source = jump.obs.drop_duplicates(\"Metadata_Plate\").set_index(\n", " jump.obs.drop_duplicates(\"Metadata_Plate\")[\"Metadata_Plate\"].astype(str)\n", ")[\"Metadata_Source\"]\n", "detection[\"source\"] = detection[\"group\"].map(source.to_dict())\n", "detection.drop(columns=\"reason\").sort_values(\"cv_r2_median\", ascending=False).round(\n", " {\"cv_r2_median\": 3, \"frac_features_positive\": 3}\n", ")" ] }, { "cell_type": "code", "execution_count": 4, "id": "code-cvbar", "metadata": { "execution": { "iopub.execute_input": "2026-10-21T01:28:26.808495Z", "iopub.status.busy": "2026-10-21T01:28:26.808173Z", "iopub.status.idle": "2026-10-21T01:28:26.975043Z", "shell.execute_reply": "2026-10-21T01:28:26.973694Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "scored = detection.dropna(subset=[\"cv_r2_median\"]).sort_values(\"cv_r2_median\")\n", "palette = dict(zip(sorted(scored[\"source\"].unique()), plt.cm.tab10.colors, strict=False))\n", "\n", "fig, ax = plt.subplots(figsize=(6, 4), layout=\"constrained\")\n", "ax.barh(range(len(scored)), scored[\"cv_r2_median\"], color=[palette[s] for s in scored[\"source\"]])\n", "ax.axvline(0.0, color=\"black\", lw=1)\n", "ax.set_yticks(range(len(scored)), scored[\"group\"], fontsize=7)\n", "ax.set_xlabel(\"cross-validated R² of the row/column fit (cv_r2_median)\")\n", "ax.legend(\n", " handles=[plt.Line2D([], [], marker=\"s\", ls=\"\", color=c, label=s) for s, c in palette.items()],\n", " fontsize=7,\n", " loc=\"lower right\",\n", " title=\"source\",\n", ")\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "md-detect-read", "metadata": {}, "source": [ "The five source_4 plates score well above zero and the others score below it. The artifact is real and specific\n", "to one laboratory. A positive score means the row and column pattern is stable across control wells. It does not\n", "mean correcting the plate will help the biology, which the retrieval test below settles. A high score is also a\n", "quality-control signal, so on a profiling screen, excluding or inspecting the plate is usually better than\n", "correcting it. Only a few plates carry the artifact, so correcting every plate would change them all to address\n", "a few." ] }, { "cell_type": "markdown", "id": "md-heatmap-intro", "metadata": {}, "source": [ "The scores summarize the plates, and the figure below shows the structure itself. We average the most\n", "position-correlated features into one signal and show the control wells only, because on treated wells the\n", "compound moves the signal and hides the field. The flagged plate has coherent spatial structure, a clean plate\n", "from another laboratory has scattered noise, and median polish flattens it." ] }, { "cell_type": "code", "execution_count": 5, "id": "code-heatmap", "metadata": { "execution": { "iopub.execute_input": "2026-10-21T01:28:26.978042Z", "iopub.status.busy": "2026-10-21T01:28:26.977846Z", "iopub.status.idle": "2026-10-21T01:28:27.776879Z", "shell.execute_reply": "2026-10-21T01:28:27.775851Z" } }, "outputs": [ { "data": { "image/png": "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sEBKSgosLCyURl9mN2rUKHTo0AHOzs4wMDCAra2t0hIDNWrUgK+vL6pXr44qVapg3rx56NSpU77X6NKlC0aOHIl69erBxcUFKSkpaNWqlaz3qaDXoW69R44ciQYNGsDZ2RmCIBQ4mn327NmIjo6Gi4sLHB0dER4eDn9/f7HzX0dHB1WqVEHlypXx4sULNG3aNM9d24mIiMoDhSBleAMREVE5kJiYiCdPnsDNzS3XNMS3b98iPDw817mXL18iJiZGqTPj0aNHMDIygoODAwAgJSUFISEhiI2NRb169fD27dtcebI8f/4cqampcHFxUZoa+ODBA5iZmaFSpUp51v/58+d48+aNOBoqNTUV165dQ7Vq1cSpmtnFxMQgNDQUbm5uSh0ZOa+l6tqxsbF4+vQpHB0dlaattmvXDtOmTUP79u1V1vH+/fuwtLSEnZ0dACA5ORk3btxA48aNxdcbGhqKlJQUuLq6SqovAISHh+P169dwc3NDWloanj17Jq5zl/OaAHDlyhXUrFkTpqam+b6fqj6LsLAwJCUlFbjeY0xMDJ48eQKFQoG6detKrkd+rzM/QUFBqFWrFszNzXO9jujoaNSsWRP6+vp55i/MZ5PXe4V8/lZUvUc5BQQEoGvXrhg/fjwePnyIypUr53p96l5f1d91zvrk9f8ur+up+7eGzCnlUVFRudaM1dT1MjIy8OTJE+jr66Nq1ari8YSEBNy9e1fpZkpKSgoePHgAExMTuLi44M6dO7C3txengwuCgMePH+PNmzdwdXUVj+d1jSxv375FREQE3NzcEB4enu//o6CgINStWzfXmqT5XUPdeoeHhyMhIQGurq4ICwsT/8bj4uLw4MEDNGjQIFf9kpKS8PjxYzg4OOT6u86qR8WKFZU+GyIiovKIHY9ERESkMTdv3lTZgUSkjqyOx0mTJhV3VYiIiIhIDVzjkYiIiDSGnY5ERERERJSFIx6JiIiIqERSNZWYiIiIiEoPdjwSERERERERERGRxnGqNREREREREREREWkcOx6JiIiIiIiIiIhI49jxSERERERERERERBrHjkciIiIiIiIiIiLSOHY8EhERERERERERkcax45GIiIiIiIiIiIg0jh2PREREREREREREpHHseCQiIiIiIiIiIiKNY8cjERERERERERERaRw7HomIiIiIiIiIiEjj2PFIREREREREREREGseORyIiIiIiIiIiItI4djwSERERERERERGRxrHjkYiIiIiIiIiIiDSOHY9ERERERERERESkcex4JCIiIiIiIiIiIo1jxyMRERERERERERFpHDseiYiIiIiIiIiISOPY8UhEREREREREREQax45HIiIiIiIiIiIi0jh2PBIREREREREREZHGseORiIiIiIiIiIiINI4dj0RERERERERERKRx7HgkIiIiIiIiIiIijWPHIxEREREREREREWkcOx6JiIiIiIiIiIhI49jxSERERERERERERBrHjkciIiIiIiIiIiLSOHY8EhERERERERERkcax45GIiIiIiIiIiIg0jh2PREREREREREREpHHseCQiIiIiIiIiIiKNY8cjERERERERERERaRw7HomIiIiIiIiIiEjj2PFIREREREREREREGseORyIiIiIiIiIiItI4djwSERERERERERGRxrHjkYiIiIiIiIiIiDSOHY9ERERERERERESkcex4JCIiIiIiIiIiIo1jxyMRERERERERERFpHDseiYiIiIiIiIiISOPY8UhEREREREREREQax45HIiIiIiIiIiIi0jh2PBIREREREREREZHGseORiIiIiIiIiIiINI4dj0RERERERERERKRx7HgkIiIiIiIiIiIijdMr7goQEZUXSUlJSElJkZXHwMAARkZGWqsTERGRVHLjGGMYERGVFGyLFR92PBIRFYGkpCTYGJshAemy8lWqVAkhISEMeEREVKzUiWOMYUREVBKwLVa82PFIJUpCQgKmTZuGpUuXQl9fv7irU6Js27YNx44dQ1JSEgDA1dUVc+bMKe5qqXT79m2sXr0ay5YtQ1paGiZNmoSFCxfCzMysuKtWbFJSUpCAdHyAKjCQuMpFCjLwa3goUlJSGOyISrC3b99i9uzZWLp0KXR0uIqNFEOGDMHXX3+NKlWqaP1aycnJmDJlCpYsWQJDQ0OtX6+skhvHGMOISq4ffvgB3t7eaNq0qaT00dHRWL58OR49eoRJkybB09NT63XUphkzZqB3797w8vIq7qoUaMeOHYiKisKoUaNk5928eTOSk5MxdOhQlee3bt0KMzMzdO3aVQM1LdnYFite/HVMJcqSJUsgCAI7HXPYsWMHZsyYgYYNG8Lf3x96enrYu3dvcVcrT2FhYdi2bRsAQE/v//c3Fi9eXMy1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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "flagged_plate, clean_plate = \"BR00126113\", \"JCPQC051\"\n", "controls = jump[(jump.obs[\"Metadata_Plate\"].astype(str) == flagged_plate) & jump.obs[\"Metadata_Control\"].to_numpy()]\n", "cv = np.asarray(controls.X, dtype=float)\n", "crows = controls.obs[\"Metadata_Row\"].to_numpy(dtype=float)\n", "ccols = controls.obs[\"Metadata_Col\"].to_numpy(dtype=float)\n", "\n", "\n", "def position_score(column):\n", " \"\"\"Combined absolute correlation of a feature's control values with well row and column.\"\"\"\n", " row_r = np.corrcoef(crows, column)[0, 1] if np.ptp(column) > 0 else 0.0\n", " col_r = np.corrcoef(ccols, column)[0, 1] if np.ptp(column) > 0 else 0.0\n", " return abs(np.nan_to_num(row_r)) + abs(np.nan_to_num(col_r))\n", "\n", "\n", "# average the 40 most position-correlated features into one signal, so single-feature outliers do not dominate\n", "top = np.argsort([position_score(cv[:, j]) for j in range(cv.shape[1])])[::-1][:40]\n", "\n", "\n", "def signal(adata):\n", " \"\"\"Mean of the most position-correlated features, as one position signal per well.\"\"\"\n", " return np.asarray(adata.X, dtype=np.float64)[:, top].mean(axis=1)\n", "\n", "\n", "jump.obs[\"position signal\"] = signal(jump)\n", "corrected = mt.pp.correct_plate_position(\n", " jump, method=\"median_polish\", reference=\"negcon\", plates=[flagged_plate], copy=True\n", ")\n", "corrected.obs[\"position signal\"] = signal(corrected)\n", "\n", "\n", "# show the control wells only: on treated wells the compound itself moves the signal, which hides the position field\n", "def controls_of(adata, plate):\n", " \"\"\"The control wells of one plate.\"\"\"\n", " return adata[(adata.obs[\"Metadata_Plate\"].astype(str) == plate) & adata.obs[\"Metadata_Control\"].to_numpy()]\n", "\n", "\n", "limit = float(np.nanpercentile(np.abs(controls_of(jump, flagged_plate).obs[\"position signal\"]), 95))\n", "style = {\"color\": \"position signal\", \"cmap\": \"RdBu_r\", \"vmin\": -limit, \"vmax\": limit}\n", "\n", "fig, axes = plt.subplots(1, 3, figsize=(13, 3.6), layout=\"constrained\")\n", "mt.pl.plate(controls_of(jump, flagged_plate), plate=flagged_plate, ax=axes[0], **style)\n", "mt.pl.plate(controls_of(jump, clean_plate), plate=clean_plate, ax=axes[1], **style)\n", "mt.pl.plate(controls_of(corrected, flagged_plate), plate=flagged_plate, ax=axes[2], **style)\n", "axes[0].set_title(f\"{flagged_plate} (source_4, flagged)\", fontsize=9)\n", "axes[1].set_title(f\"{clean_plate} (source_3, clean)\", fontsize=9)\n", "axes[2].set_title(f\"{flagged_plate} (after median polish)\", fontsize=9)\n", "fig.suptitle(\"control wells, mean of the 40 most position-correlated features\", fontsize=9)\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "md-measure", "metadata": {}, "source": [ "Median polish removes the gradient, as the last panel shows. Whether removing it helps depends on the readout.\n", "For compounds we measure cross-source retrieval, which asks whether a compound run at different laboratories is\n", "found again. We report it as mean average precision (mAP) against a shuffled null, and we count how many\n", "compounds clear the null. The table shows retrieval before and after correcting only the flagged plates." ] }, { "cell_type": "code", "execution_count": 6, "id": "code-ladder", "metadata": { "execution": { "iopub.execute_input": "2026-10-21T01:28:27.779616Z", "iopub.status.busy": "2026-10-21T01:28:27.779425Z", "iopub.status.idle": "2026-10-21T01:29:28.592935Z", "shell.execute_reply": "2026-10-21T01:29:28.591619Z" } }, "outputs": [ { "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
0normalize only0.01638
1+ median_polish (only the flagged plates)0.01525
2+ b_score (only the flagged plates)0.01421
\n", "
" ], "text/plain": [ " pipeline cross-source mAP \\\n", "0 normalize only 0.016 \n", "1 + median_polish (only the flagged plates) 0.015 \n", "2 + b_score (only the flagged plates) 0.014 \n", "\n", " significant of 301 \n", "0 38 \n", "1 25 \n", "2 21 " ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def cross_source_map(adata):\n", " \"\"\"Mean cross-source compound mAP, and how many compounds clear the corrected null.\"\"\"\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", " null_size=500,\n", " seed=0,\n", " )\n", " scores = treated.uns[\"mantispy\"][\"map\"]\n", " return round(float(scores[\"score\"].mean()), 3), int(scores[\"is_significant\"].sum())\n", "\n", "\n", "passing = list(detection.loc[detection[\"cv_r2_median\"] > 0, \"group\"])\n", "n_treated = int(jump.obs.loc[~jump.obs[\"Metadata_Control\"].to_numpy(), \"Metadata_Perturbation\"].nunique())\n", "\n", "ladder = {\"normalize only\": cross_source_map(jump)}\n", "for method in (\"median_polish\", \"b_score\"):\n", " corrected = jump.copy()\n", " mt.pp.correct_plate_position(corrected, method=method, reference=\"negcon\", plates=passing)\n", " ladder[f\"+ {method} (only the flagged plates)\"] = cross_source_map(corrected)\n", "\n", "pd.DataFrame(\n", " [\n", " {\"pipeline\": name, \"cross-source mAP\": value, f\"significant of {n_treated}\": hits}\n", " for name, (value, hits) in ladder.items()\n", " ]\n", ")" ] }, { "cell_type": "markdown", "id": "md-ladder-read", "metadata": {}, "source": [ "Correction lowers retrieval. The mAP changes are small, from 0.016 to 0.015 to 0.014 at this seed, but the number of\n", "compounds clearing the null falls from 38 to 25 to 21. The correction did what it promises and the gradient is gone,\n", "yet it is a bad trade on a profile. The row and column fit comes from only a few dozen control wells, so\n", "subtracting it adds noise to every treated well. The B-score then rescales each plate by its own MAD on top of\n", "the normalization already applied, so a compound is shifted by a different amount on each plate, and cross-source\n", "retrieval needs the same amount everywhere. For profiling, normalize per plate, run `pp.harmony` on the batch,\n", "and use `detect_plate_position` to flag the rare plate worth excluding instead of correcting." ] }, { "cell_type": "markdown", "id": "md-decision", "metadata": {}, "source": [ "## Which method to use\n", "\n", "| situation | method |\n", "| --- | --- |\n", "| hit-calling a single readout against a gradient, randomized layout | `correct_plate_position(method=\"b_score\")` |\n", "| removing a gradient while keeping the data's units | `correct_plate_position(method=\"median_polish\")` |\n", "| building multivariate profiles | do not position-correct; normalize per plate and run `pp.harmony` on the batch |\n", "| a plate scoring `cv_r2_median > 0` on a profiling screen | treat it as a QC flag and exclude or inspect it |\n", "\n", "For a profiling pipeline:\n", "\n", "```python\n", "import scanpy as sc\n", "\n", "mt.pp.normalize(adata, method=\"mad_robustize\", by=\"Metadata_Plate\", reference=\"negcon\")\n", "mt.pp.detect_plate_position(adata, reference=\"negcon\")\n", "flagged = adata.uns[\"mantispy\"][\"plate_position_detection\"].query(\"cv_r2_median > 0\")[\"group\"]\n", "adata = adata[~adata.obs[\"Metadata_Plate\"].isin(flagged)].copy()\n", "sc.pp.pca(adata, n_comps=50)\n", "mt.pp.harmony(adata, batch_key=\"Metadata_Batch\")\n", "```\n", "\n", "A few caveats sit behind the table.\n", "\n", "- Nonrandom layouts. Both methods assume position is independent of treatment. Controls down whole columns, or a\n", " dose gradient across columns, is itself the position signal, and correcting it removes the design\n", " ({cite:t}`Brideau_2003`; median polish fits a column effect only where control wells sit).\n", "- High hit rates. Median polish and the MAD assume most wells are inactive. Many active wells bias the robust\n", " centre, and the B-score then compresses real signal.\n", "- The B-score also normalizes. It rescales each plate by its MAD, so run it instead of a separate per-plate\n", " normalization, or use `median_polish` to keep your own.\n", "- Learned correctors are a separate case. For genetic perturbations with deep features, methods like cpDistiller\n", " correct well position where the linear correction here does not.\n", "\n", "Correct a single readout against a gradient, and do not correct a whole profile. The within-plate mechanics are\n", "in {doc}`the artifacts tutorial `." ] } ], "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 }